[Integromat] IFTTTから値を渡してNature APIを叩く方法

CHASUKEの記事をシェアする..

どうも、CHASUKEです。

本日も『Integromat』ネタです。Google HomeからIFTTT経由で設定温度などをIntegromatへ渡し、Remoのエアコン操作APIを叩いてみました。

AlexaやGoogle HomeのRemoスキルで「Remoを使って、暖房を26度でつけて」とか言えば簡単に実現できる内容ですが、IFTTTからIntegromatに値を渡す方法を知りたいというリクエストをいただきましたのでやってみました。

『Integromat』はサーバーレス、ノンプログラミングで複雑な自動化が実現できる凄いサービスです。フリープランも充実してます。サインアップやシナリオの作成部分は、前回の記事と合わせてどうぞ。

Nature Remo連続実行を『Integromat』で実現する方法
どうも、CHASUKEです。 前回の記事で、Alexaスキル『Node-RED』で家電操作する方法をアップしたところ、 「Go...

今回、やったことは以下の通り。

『OK, Google!! 部屋が寒い!!』

こんな具合で伝えてやると、「ピコッ」と設定した温度で起動します。

ポイントは、IntegromatのWebhooksへの初回リンク時に、実際のデータを含んだHTTPリクエストをすることです。これで簡単に飛んできたデータを利用する事ができます。

それでは、やっていきます!!

SPONSORED LINKS

こんな仕組み

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(赤枠)を含みます。

URLhttps://api.nature.global/1/appliances/[赤外線信ID]/aircon_settings
MethodPOST
Body typeApplication/x-www-form-urlencoded

赤外線信号IDは、Remoアプリ内で登録した信号に割り振られているIDです。

IDの取得方法は過去記事のアプライアンスの取得を参考にしてください。

Node-REDで『Nature Remo』ノードを使う方法
どうも、CHASUKEです。 Node-REDでNature Remoを使ってみました!! 前回は、Alexaからの呼...

▼取得した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で実現してみます!!

それでは。

コメント

  1. Chabiichi より:

    Actions on GoogleによるNature Remoのエアコン制御は1台までなので、複数のエアコンを制御するにはIFTTTに頼るしかないが、IFTTTはトークンを送る仕組みが無いので、Integrmatで制御できるようになるとすごく便利になります。
    理想は「**部屋の温度を上げて/下げて」のフレーズからGET applianceでエアコンの温度を取り込んで演算後、POST aircon_settingsができればと考えております。長々と失礼しました。

  2. Chabiichi より:

    CHASUKEさま
    できました!
    Edit状態でRun onceを実行してからIFTTTを実行すると無事パラメータを受け取る事ができました。ありがとうございました!

  3. tom より:

    はじめまして。
    Googlehome,IFTTT,integromat,Natureremoで任意の回数指定をしたいのですが具体的な方法が分かりません。
    具体的には「テレビのボリュームを_上げて」(_が数字)のような事をしたいのですが、作り込み方が分かりません。特にIFTTTからintegromatへの変数の渡し方が分かりません。
    ご教示頂けませんでしょうか。

  4. tom より:

    返信遅くなりました。
    ifttt→integromatへ受け渡す変数がなかなか表示されなくて試行錯誤しましたが、できました。
    ありがとうございました。