先日 のエアコン自動停止 不発問題。
2016年に購入したIRKit
IFTTTが不発 という事で善後策の検討していたのだが、iPhoneで家電を操作できるリモコンデバイス IRKit のアプリが実は直接叩いていて、そのDevice HTTP API も公開されている事がわかった。
なんと、curlコマンド一発で赤外線データをJSON形式で取得できて、それをまたcurlで送りつければいいらしい。
というわけで、2016年に調達 したIRKit を復活。
まずはBonjourを使ってIPアドレスを求める必要があるので、UbuntuではAvahiなツールを使って
yano@GT110b:~$ IRKIT=$(avahi-resolve -n $(avahi-browse -t _irkit._tcp | awk '{print $4"."$6}') | awk '{print $2}');echo ${IRKIT};
てな感じでIPアドレスを調べておく。
それから、IRKitに向けてリモコンボタンを押したあと、curlで
yano@GT110b:~$ curl -H "X-Requested-With: curl" -i "http://$IRKIT/messages"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/3.0.0.0.g85190b1
Content-Type: text/plain
{"format":"raw","freq":38,"data":[843,843,935,843,935,843,,,,,935,787,935]}
てな感じで赤外線データが採れる事を確認。
IRKitの赤外線データはGET応答と引き換えに消去される仕様なので、もう一度IRKitに向けて同じリモコン操作を行い
yano@GT110b:~$ curl -H "X-Requested-With: curl" "http://$IRKIT/messages" --output ${HOME}/IRKit/urusara_off.json
てな感じでボディだけをファイルに保存したあと、
yano@GT110b:~$ curl -i "http://${IRKIT}/messages" -H "X-Requested-With: curl" -d @${HOME}/IRKit/urusara_off.json
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/3.0.0.0.g85190b1
Content-Type: text/plain
yano@GT110b:~$
とする事で、Ubuntuのターミナルからエアコンの停止に成功。