読者です 読者をやめる 読者になる 読者になる

ワタナベ書店

読んだ本の感想とか美味しかったお店の紹介とかLinuxの知見とか好きなことを好きなだけ書くブログです。

IFTTT Maker ChannelでWebhook送受信ができるようになった。

テクノロジー

f:id:iuyui:20150620103620g:plain

IFTTT Maker ChannelでWebhookの送信・受信両方ができるようになったので試してみた。
インターネットに接続できるほとんどのデバイスからIFTTTを使えるようになったので夢が広がるなぁ。
Raspberry Piにセンサをつけて、センサが反応したらIFTTTで自分に通知を送ったり、逆にIFTTTのGPS機能で家の近くまできたらIRKitにWebhookを送ってクーラーをONにしたりできそう。

ifttt.com

IFTTTのWebhookを叩く方法

普通にcURLコマンドを叩くことでできる。
チャンネルを登録すると、To trigger an Eventというページがあるので、基本的にそれに従えば良い。
{event}はそれぞれのレシピにて設定するイベント名。{secret key}はMaker Eventページにあるものをそのまま引用。

https://maker.ifttt.com/trigger/{event}/with/key/{secret key}

JSON形式で3つまで変数を送ることができる。

{ "value1" : "", "value2" : "", "value3" : "" }

curlコマンドで叩くとこうなる

curl -X POST -H "Content-Type: application/json" -d '{"value1":"aaa"}' https://maker.ifttt.com/trigger/{event}/with/key/{secret key}

試しにIFTTTにcurlコマンドを叩くことによってPushbulletに通知するレシピを作ってみた。

IFTTT Recipe: Maker Event to Pushbullet connects maker to pushbulletifttt.com

成功なら、「Congratulations! You've fired the {event} event」 って帰ってくる。

f:id:iuyui:20150620103620g:plain

IFTTTからWebhookを叩く方法

手元にIRKitが転がっていたので、それをIFTTTから叩いてみる。
「#おはよう」 ってハッシュタグ付きでつぶやいたら、部屋の電気がつくように設定してみる。

IFTTT Recipe: when #hashtag Tweet send IRKit connects twitter to makerifttt.com

チュートリアル通り、IRKitと同じネットワークにあるPCから、インターネットから手元のIRKitを叩くKeyを取得

~ ❯❯❯ curl -i "http://10.0.10.2/keys" -d ''
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.0.2.0.g838e0ea
Content-Type: text/plain

{"clienttoken":"XXXXXXXXXXXXXXXXX"}%
~ ❯❯❯ curl -i -d "XXXXXXXXXXXXXXXXX" "https://api.getirkit.com/1/keys"
HTTP/1.1 200 OK
Server: ngx_openresty
Date: Fri, 19 Jun 2015 19:14:49 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 94
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
X-Content-Type-Options: nosniff

{"deviceid":"AAAAAAAAAAA","clientkey":"BBBBBBBBBBB"}%

電気をつける赤外線をIRKitにむけて送り、messagesをたたいてJSONを取得

~ ❯❯❯ curl -i "http://10.0.10.2/messages"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.0.2.0.g838e0ea
Content-Type: text/plain

{"format":"raw","freq":38,"data":[5048,5049,1679,1679,1679,1679,1679,1679,1679,3504,1679,3704,1679,2704,1679,3704,1679,1679,1679,65536,0,4171,5049,5049,1679,1679,1679,1679,1679,1679,1649,3704,1679,3704,1679,3704,1679,3704,1679,1679,1679]}%

IFTTTのMakerは次のように設定
curlで-dで何個もつなげるタイプは&でつなげていく。
載せてあるレシピは各自変更が必要なBodyのみ記入すれば良い。

URL

https://api.getirkit.com/1/messages

Method

POST

Content Type

application/x-www-form-urlencoded

Body

clientkey=BBBBBBB&deviceid=AAAAAAAAA&message={"format":"raw","freq":38,"data":[5049,5049,1679,...,1679]}

f:id:iuyui:20150620113320p:plain

IFTTTの{secret key}をリセットする方法

ブログを書いたり、あ、っべー。IFTTT の {secret key}見せてしまった!って時はReconnect Channelを押して新しいsecret keyを取得。
この時、curlを叩いているスクリプトのkeyもちゃんと変更しないと通知がされないので注意が必要。