IRKit と IFTTT でエアコンを決まった時間に自動でオフする

昨晩、エアコンをつけっぱなしだったので、設定中。

http://ifttt.getirkit.com と https://blog.hello-world.jp.net/irkit/3462/ を参考に。

* まず、操作した IRKit の `clientkey` と `deviceid` を取得する。これは、IRKitと同じネットワークにいる必要が有る。（つまり同じアクセスポイントにアクセスしている必要が有る。）

```
$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Sun 04 Sep 2016---
10:29:20.535  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
10:12:34.567  Add        2   4 local.               _irkit._tcp.         irkitFFFF
```

* この irkitFFFF の部分の名前から、IPアドレスを取得

```
$ dns-sd -G v4 irkitFFFF.local
ikeuchis-air:aws-iot-shadow-test ikeyasu$ dns-sd -G v4 irkitFFFF.local
DATE: ---Sun 04 Sep 2016---
10:34:56.678  ...STARTING...
Timestamp     A/R Flags if Hostname                               Address                                      TTL
10:34:56.789  Add     2  4 irkit42e7.local.                       192.168.1.4                                  10
```

* 192.168.1.4 と分かりました。

```
$ curl -i "http://192.168.1.4/keys" -d ''
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.2.0.g424fa95
Content-Type: text/plain

{"clienttoken":"0123456789ABCDEF"}
```

* これで、`clienttoken`が分かりました。これをもとに、api.getirkit.com に `clientkey` と `deviceid` を問い合わせます。

```
$ curl -i -d "clienttoken=0123456789ABCDEF" "https://api.getirkit.com/1/keys"
HTTP/1.1 200 OK
Server: openresty
Date: Sun, 04 Sep 2016 01:37:53 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":"ABCDEF0123456789","clientkey":"0123456789ABCDEF0123456789"}
```

* 次に、リモコンの信号を取得します。以下のコマンドは直前に受信したリモコン信号を返します。まずは、コマンドを何度か実行して、以下以外の文字が表示されないようにしてください。

```
$ curl -i "http://192.168.1.4/messages"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.2.0.g424fa95
Content-Type: text/plain
```

* 次に、操作したいリモコンのボタンを押し、再度実行します。

```
$ curl -i "http://192.168.1.4/messages"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.2.0.g424fa95
Content-Type: text/plain

{"format":"raw","freq":38,"data":[7371,3704,904,904,904,2813,904,904,904,2813,904,904,904,2813,904,1002,904,2718,904,1037,843,2813,935,935,935,2813,935,2813,935,935,935,2813,935,935,935,2813,935,2813,935,2813,935,2813,935,935,935,935,935,2813,935,2813,935,935,935,935,935,935,935,935,935,2813,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,843,1002,843,1002,1002,2718,935,935,935,935,935,935,935,935,843,2813,843,1002,843,1002,843,1002,1002,1002,843,1002,843,1002,843,1002,1002,843,1002,2813,935,935,935,935,935,2813,935,935,935,2813,935,935,935,935,935,935,935,935,843,1002,843,1002,843,2813,935,2813,935,935,935,2813,935,935,935,935,935,935,843,1002,843,2813,935,935,935,935,935,2813,935,935,935,2813,935,935,935,2813,935,2813,935,935,935,935,935,2813,935,935,935,935,935,935,935,2813,935,935,935,2813,935,935,935,2813,935,2813,935,2813,935,2813,935,1037,843,935,935,935,935,2718,935,935,935,935,935,935,935]}
```

ここで取得できた信号を使います。

* IFTTT で、create recipe をクリック。
https://ifttt.com/myrecipes/personal/new

* this をクリックし、date & time を選択。
![regular.png](https://qiita-image-store.s3.amazonaws.com/0/38555/18c4c97f-7d81-b435-b213-9456a9ea49a6.png "regular.png")

* 繰り返しの種別を選択。ここでは、Everyday at をクリック。

* 時間を設定。

* thatをクリック。

* Makerをクリック。(2017/10/13現在、Webhooks に名前が変わっています）
![regular-2.png](https://qiita-image-store.s3.amazonaws.com/0/38555/2040871e-2095-6543-0a67-f7a7a3f51ad8.png "regular-2.png")

* Make a web request をクリック。

* URL を入力。https://api.getirkit.com/1/messages

* Method を POST に

* Content Type を "application/x-www-form-urlencoded"に

* body は入力。clientkeyと、deviceid、messageを先ほど取得したものに置き換えてください。

clientkey=0123456789ABCDEF0123456789&deviceid=ABCDEF0123456789&message={"format":"raw","freq":38,"data":[7371,3704,904,904,904,2813,904,904,904,2813,904,904,904,2813,904,1002,904,2718,904,1037,843,2813,935,935,935,2813,935,2813,935,935,935,2813,935,935,935,2813,935,2813,935,2813,935,2813,935,935,935,935,935,2813,935,2813,935,935,935,935,935,935,935,935,935,2813,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,935,843,1002,843,1002,1002,2718,935,935,935,935,935,935,935,935,843,2813,843,1002,843,1002,843,1002,1002,1002,843,1002,843,1002,843,1002,1002,843,1002,2813,935,935,935,935,935,2813,935,935,935,2813,935,935,935,935,935,935,935,935,843,1002,843,1002,843,2813,935,2813,935,935,935,2813,935,935,935,935,935,935,843,1002,843,2813,935,935,935,935,935,2813,935,935,935,2813,935,935,935,2813,935,2813,935,935,935,935,935,2813,935,935,935,935,935,935,935,2813,935,935,935,2813,935,935,935,2813,935,2813,935,2813,935,2813,935,1037,843,935,935,935,935,2718,935,935,935,935,935,935,935]}

* create recipe をクリック

* 名前をつけて、create recipe をクリック