どうも、CHASUKEです。
今回もAlexaスマートスキル「Node-RED」ネタです。
前々回は、デバイスを追加して、Alexaでスマートスキル『Node-RED』の呼出方法。
https://chasuke.com/wp/alexa_nodered1/
前回は、『Node-RED』でNatureRemoノードの使い方。
https://chasuke.com/wp/noderemo/
今回は、上記でやってきた内容を組み合わせて「アレクサ、電気をつけて/消して」のように、より自然な家電操作ができるようになりました。
また、Nature Remoに搭載されたセンサー情報(温度と湿度)を取得して、ディスプレイ表示させてみました!!
今回は、こちらの実現方法を紹介していきます^^
完成したものがコチラ
まずは結果から。動画は約45秒。
※自分の声は恥ずかしいのでAWSのPollyの声を拝借してますw
最後の「センサーをオン」で、Nature Remoに搭載された温度/湿度センサー情報を取得してディスプレイガジェット『LaMetric Time』にティッカー表示させてます^^
https://chasuke.com/wp/lametric/
Alexaノード『alexa home resp』を利用することでAmazon Echoへレスポンスを返せるようなのですが、うまく動いてくれなかった..
動画では簡単にするため、「電気をオン」と言ってますが、「電気をつけて」や「電気を消して」でももちろんOKです!!
Alexaスキル『Node-RED』を使った家電制御
▼照明をON/OFFするために、作成したフローがこちら。
基本的には、前々回のAlexaノードの呼び出し、前回のNature Remoノードを使った家電操作を合体させました。
ポイントは、2つを接続しているswitchノード。これにより、「アレクサ、電気をつけて」と「アレクサ、電気を消して」を分岐させています。
▼例えば、Amazon Echoに向かって「アレクサ、電気をつけて」と言うと、
msg.payloadの値が「true」となって、Alexaノードから次のノードに渡されます。
▼同じように「アレクサ、電気を消して」と言うと、
msg.payloadの値が「false」となります。
オン/オフの音声操作に従い、次のノードに「true/false」が渡されます。
▼Alexaノードの次にswitchノードを仕込んで「payload」の値で分岐させてやります。
↑switchノード設定値
これで、ばっちり利用できるようになります!!!
▼Alexaアプリからもしっかり反応しますよ^^
『Nature Remo』からセンサーデータを取得
続いて、Nature Remoの温度/湿度センサー値を取得します。
▼作成したフローがこちら。
「センサー」というデバイスを追加して呼び出すと、「温度」と「湿度」がデバッグエリアに表示されます。
▼センサー情報は『Nature Remo』ノードではできないので、自力でhttpリクエストして情報を取得します。
httpヘッダー編集用に「swichノード」とhttpリクエスト用に「http requestノード」を利用しています!!
▼httpヘッダー編集用の「swichノード」設定
msg.headers.accept | application/json |
msg.headers.Authorization | 前回のNatureRemoアクセストークン |
▼続いて、httpリクエスト用に「http requestノード」を設定
メソッド | GET |
URL | https://api.nature.global/1/devices |
これでセンサー値が入ったデバイス情報が取得できました。あとは煮るなり焼くなり好きにしてください。僕の場合、最初の動画の通り、ドット表示のLaMetricにティッカー表示させてみました^^
本当は、Amazon Echoで上手いこと返事が作れたらよかったんですが..残念。Google Homeであれば強引に喋らせることができます(※以下リンク)が、Amazon Echoに話しかけて、Google Homeが返事するので全く実用性がない..
https://chasuke.com/wp/ghnotifier/
最後に
全3回に渡って、Alexaスマートホームスキル『Node-RED』を実験してきました。
Nature Remoノードを使って遊びましたが、以前紹介したNetatmoのノードもあったので置き換えて別のセンサー情報やAPIを使っても面白いです。
https://chasuke.com/wp/netatmo/
それでは。