そこらへんのパパの独り言

そこらへんにいるパパの独り言をツラツラと。 子供とガジェット関連でいくよ

【IoT】9.「function」ノードを使ってすっきりさせる

すっかり生活にAlexaがなじんできた今日この頃。
あまり追加するネタも思い浮かばないので、この間宿題にしていた「function」ノードを使った
チャンネル切り替えスッキリ化でIoTシリーズをいったん閉めようと思う。

1.準備

まず、おさらいとして必要な準備を確認。
 A.Raspberry PiでNode-REDを起動する
 B.Raspberry PiのNode-REDをブラウザで開く(例:http://192.168.XX.XXX:1880
 C.Node-RED Alexa Home Skill Bridgeを開く
 E.https://alexa.amazon.co.jpを開く

2.やりたいこと

 

TVの操作を行うにあたり、「switch」のみで作ると、すっごい見づらいので
「function」を使ってすっきりさせる。

【function使用前】
チャンネルごとにスイッチを分けるので視認性が悪い。
f:id:sokoranopapa:20180217121525p:plain


【function使用後】
チャンネル変更をfunctionにまとめてすっきりする。
f:id:sokoranopapa:20180217121737p:plain

3.最初の準備

TVのチャンネル変更コマンドを「TV.○ch」という形で保存しておく。
 ※○にはチャンネル番号が入る。こんな感じ。
  f:id:sokoranopapa:20180217122848p:plain

次に、node-red上に「Alexa Home」と「switch」を設置する。
f:id:sokoranopapa:20180217124225p:plain

 

4.switchの設定

switchの中身は下記のように設定

f:id:sokoranopapa:20180217124728p:plain

 プロパティ:「msg.command」
1つめ  :「TurnOnRequest」(テレビをつける)
2つめ  :「TurnOffRequest」(テレビを消す)
3つめ  :「SetPercentageRequest」(チャンネルを変える)※今回セットするところ
4つめ  :「IncrementPercentageRequest」(ボリュームを上げる)
5つめ  :「DecrementPercentageRequest」(ボリュームを下げる)

ここでのポイントは「command」にすること。

4.functionの設定

続いて「function」の設定。
まず、switchの隣にfunctionを設置。
先ほどの3つめとつなぐ。

f:id:sokoranopapa:20180217125532p:plain

つぎに、functionノードを開いて下記のように設定する。
f:id:sokoranopapa:20180217125844p:plain

名前 :「add Num」(ここは何でもいいです)
コード:(return msg; は最初から入ってるかも)
 msg.payload = `TV.${msg.payload}ch`;
 return msg;

ここのコードの意味は
「switchから受け取った数字を、「TV.○ch」という形に変えてmsgに再格納しなさい。」
という意味だと思ってます。
なので、 `TV.${msg.payload}ch`の赤字部分を変えればほかにも応用できるはず。

全部入れ終わったら「完了」を押す。

5.functionの設定

最後に「exec」の設定。
functionの隣にexecを配置。
f:id:sokoranopapa:20180217130926p:plain

中身はこんな感じ。

f:id:sokoranopapa:20180217131236p:plain
コマンド:「sudo /home/pi/python-broadlink/cli/room.sh」(赤外線コードを保存している場所)
引数  :「msg.payload」にチェックを入れる
名前  :なんでもいい

これで完成。
あとは電源とかボリュームとかつなぐとこんな感じになる。
f:id:sokoranopapa:20180217162034p:plain

6.まとめ

赤外線で動作させられる機械って意外と少ないなぁ。というのが印象。
あと追加できるものとしてはエアコンぐらいか。
せっかくのAlexa、次はこの辺を参考にしてIFTTT使ってみようかな。


今日はここまで。