どうも、CHASUKEです。
本日も『Integromat』ネタです。Google HomeからIFTTT経由で設定温度などをIntegromatへ渡し、Remoのエアコン操作APIを叩いてみました。
AlexaやGoogle HomeのRemoスキルで「Remoを使って、暖房を26度でつけて」とか言えば簡単に実現できる内容ですが、IFTTTからIntegromatに値を渡す方法を知りたいというリクエストをいただきましたのでやってみました。
『Integromat』はサーバーレス、ノンプログラミングで複雑な自動化が実現できる凄いサービスです。フリープランも充実してます。サインアップやシナリオの作成部分は、前回の記事と合わせてどうぞ。
https://chasuke.com/wp/remo_integromat/
今回、やったことは以下の通り。
『OK, Google!! 部屋が寒い!!』
こんな具合で伝えてやると、「ピコッ」と設定した温度で起動します。
ポイントは、IntegromatのWebhooksへの初回リンク時に、実際のデータを含んだHTTPリクエストをすることです。これで簡単に飛んできたデータを利用する事ができます。
それでは、やっていきます!!
こんな仕組み
IntegromatからNature RemoのAPIをキックします。
使用するAPIはリファレンスに載っている「/1/appliances/{appliance}/aircon_settings」を利用しました。
このAPIで設定できる以下のパラメーターを「IFTTT」から「Integromat」へ渡します。
- temperature(温度)
- operation_mode(運転モード)
- air_volume(風量)
- button(オン/オフ)
それでは、作っていきましょう。
IFTTTで指定した温度でエアコンをつける
Integromat側のWebhooksを作成
前回と同様に呼び出されるWebhooksモジュールを利用します。
▼Webhooks設定画面で「Add」を押して、適当な名前を設定します。
ここまでやったら、Integromatでの作業はストップし、呼出元となるIFTTTレシピを作成します。青表示のURLは後で使うので保存しておきましょう^^
IFTTTで呼出用レシピを作成
『部屋が寒い』と言ったら、Integromatへエアコン操作APIに必要なパラメータをIntegromatへ渡すレシピを作成します。
URLには、先ほど保存しておいたIntegromatのWebhooksのURLを設定します。
上の画像では切れちゃってますが、WebhooksのBodyには以下のように指定しました。
{"temperature": "25","operation_mode":"warm","air_volume":"1","button":""}
パラメータの意味はこちら。
- 設定温度:25度
- 運転モード:暖房
- 風量:1
- 起動ボタン:オン
作成したら、一度起動します。
「OK, Google!! 部屋が寒い!!」
▼IntegromatのWebhooksモジュールを確認して、URLが緑色に変わっていればOKです^^
IFTTTからの受取値でエアコン操作APIを起動
続いて、Remoで暖房を起動するためにHTTPモジュールを使います。
▼Webhooksモジュールの隣に新しいモジュールを作っていきます。
▼ACTIONSが「Make a request」のものを選びます。
▼リファレンスにある「/1/appliances/{appliance}/aircon_settings」を使ってエアコンを操作します。URL内には、エアコンのアプライアンスID(赤枠)を含みます。
URL | https://api.nature.global/1/appliances/[赤外線信ID]/aircon_settings |
---|---|
Method | POST |
Body type | Application/x-www-form-urlencoded |
赤外線信号IDは、Remoアプリ内で登録した信号に割り振られているIDです。
IDの取得方法は過去記事のアプライアンスの取得を参考にしてください。
https://chasuke.com/wp/noderemo/#Appliances
▼取得したJSONファイルの中には、IDという文字がたくさんありますが、エアコン情報のトップにある「id」がエアコン操作に必要なものです!!
"id": "62xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"device": {
"name": "Remo",
"id": "baxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"created_at": "2017-06-04T11:35:07Z",
"updated_at": "2018-02-13T12:18:20Z",
"firmware_version": "Remo/1.0.39-g41c1188",
"temperature_offset": 0,
"humidity_offset": 0
},
"model": {
"id": "13xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx",
"manufacturer": "toshiba",
"remote_name": "wh-xxx-x",
"series": "",
"name": "Toshiba AC 005",
"image": "ico_ac_1"
},
上の例だと、「62xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx」これをURLに仕込みます。
「URL」,「Method」,「Body type」を設定したら、「Advanced setting」にチェックして、クエリとHTTPヘッダーを設定していきます。
▼クエリには、Remoに渡すパラメーターをセットします。
Valueをクリックすると、WebhooksでIFTTTから受け取ったパラメータが選択できます。さきほどの初回URL起動した際に、飛んできたパラメータを自動で設定してくれています。いいね!!
HTTPヘッダーも前回同様に「Authorization」と「accept」を設定します。
▼クエリとヘッダー情報を全て設定したのがコチラ。
これで完成です。
「OK, Google!! 部屋が寒い!!」
「ピコッ♪」
暖房が「25度」「風量1」で起動すれば成功です!!
最後に
今回のように、IFTTTから値を渡すことができれば、Nature Remoの利用範囲がより広がりますね!!
今回は暖房をつけるだけでした。これでは面白くないので、次回はNature Remoの温度センサーを使って「部屋が20度以上だったら、暖房をつけない」「部屋が19度以下だったら、暖房をつける」といった、よりプログラムに近いことをIntegromatで実現してみます!!
それでは。