どうも、CHASUKEです。
Node-REDでNature Remoを使ってみました!!
前回は、Alexaからの呼び出しでNode-REDフローを実行する方法を説明しました。
https://chasuke.com/wp/alexa_nodered1/
全3回に渡り、Alexaスマートホームスキル『Node-RED』を使うことで、自然な音声操作で家電制御したり、温度や湿度を取得することを目指します。
今回(2回目)は、前回に引き続き、Node-REDフロー内で、Nature Remoノードを使用する方法を説明していきます^^
▼今回のトライで、こんな感じでNode-REDからNature Remoを簡単に扱えるようになります。(※10秒ほど)
それでは、Let's Node-RED!!
『Nature Remo』ノードの使用方法
Nature Remoアクセストークンを発行
まずは、Nature Remoから赤外線を発するためのAPIを利用するために「アクセストークン」を発行します。APIアクセスするために必要です。
ちなみに、アクセストークンとは
認証済みユーザーを識別するための文字列のこと
▼アクセストークンはコチラからGETできます
▼ログインメールを送ります。
任意のEメールを送信します。
▼許可する
▼Go!!
▼こんな画面に遷移するので、一番下「Generate access token」を選択
▼これで、発行できました。
コピーして忘れないように覚えておきましょう。
Nature Remoノードを追加
さて続いて、Node-RED側に特別なノードをインストールします。
▼右上メニューから「パレットの管理」を選ぶ
前回Alexaノードを取得した時と同様なやり方です。
▼ノードを追加から「nature-remo」と入力して、ノードを追加します。
「node-red-contrib-nature-remo」が目的のやつです。
これで「Nature Remo」ノードが一覧に追加されました!!
▼IoTというところに、ノードが追加されているので、パレットに載せましょう。
中身を設定していきたいところですが、その前に、このノードを利用するために必要なアプライアンスファイルを取得します。
Appliances(アプライアンス)を取得
アプライアンスを取得するために、以下のコマンドをターミナル(Mac)またはコマンドプロンプト(Windows)で実行します。
▼下記は、Macターミナルでのコマンド例。先ほど取得したアクセストークンに置き換えてください。(※Windowsでcurlコマンドを使うには別途インストールが必要になります!!)
/usr/bin/curl -X GET "https://api.nature.global/1/appliances" -H "Authorization: Bearer [アクセストークンを入力]" >> memo.json
これで、実行した場所に『memo.json』というファイルが出来上がります。
取得したjsonファイルの一部を整形して、見てみると、
"model": null,
"nickname": "電気",
"image": "ico_light",
"type": "IR",
"settings": null,
"aircon": null,
"signals": [
{
"id": "aaaaaa-bbbb-cccc-dddd-dddddddddddd",
"name": "テレビの照明ON",
"image": "ico_lightup"
},
{
"id": "aaaaaa-bbbb-cccc-dddd-dddddddddddd",
"name": "テレビの照明OFF",
"image": "ico_lightdown"
},
{
"id": "aaaaaa-bbbb-cccc-dddd-dddddddddddd",
"name": "パソコンの照明ON",
"image": "ico_lightup"
},
{
"id": "aaaaaa-bbbb-cccc-dddd-dddddddddddd",
"name": "パソコンの照明OFF",
"image": "ico_lightdown"
}
]
アプライアンス取得完了です!!
家電操作のNode-REDフローを作成
先ほど、設置した『Nature Remo』ノードをダブルクリックして中身を設定していきます。
▼鉛筆ボタンをタップします。
▼上で発行して保存しておいた、アクセストークンを入力します。
▼残りの部分を入力します。
「Appliances」は、先ほど取得したアプライアンスファイルをNode-REDをインストールしている端末にコピーしてパスを設定します。僕の場合は、ラズパイに置いてパスを設定してます。
「Delay」は、複数の赤外線リモコンを指定した場合に、送信する間隔です。
「Name」は、ノードの名前なので任意でOKです。
▼続いて、『Nature Remo』ノードに渡すため情報を作成します。
changeノードを利用します。
▼「msg.payload」にJSON形式で値を設定します。
▼中身は以下のフォーマットで入力します。
取得したアプライアンスの中にある「nickname」と「name」を拾ってきて作成してやればOKです。僕の場合、照明をつけるための赤外線情報を指定してます。
▼以下をコピペして作成してみてください。
{
"commands":
[
{
"nickname": "電気",
"name": "パソコンの照明ON"
}
]
}
これで完成です!!!!!
ちなみに「テレビON→入力切替」みたいに連続実行したい場合は、このように記述します。
{
"commands":
[
{
"nickname": "電気",
"name": "パソコンの照明ON"
},
{
"nickname": "電気",
"name": "パソコンの照明OFF"
}
]
}
実行してみた
さぁ、ノード間を繋げて、「デプロイ」しましょう。
ボタンを押して指定したリモコン情報が流れれば、成功です。
最後に
今回は、Node-REDで利用できるNature Remoノードを利用してみました。とても簡単にリモコン操作が可能になったかと思います。
次回は、前回のAlexa連携と合体させて、Alexaから「アレクサ、電気をつけて」を実現させたり、温度や湿度情報を取得してみます^^
https://chasuke.com/wp/alexanoderemo/
それでは