エアコンのオン・オフをHomeKitで操作出来るようにした

ちょっと前にPhilips Hueを買ってHomeKitでオン・オフ出来るようにしていて便利さを体感していたのと、夏なので会社から家に帰る時にエアコンを予めオンに出来たら便利だなと思ってやってみた。
ちなみに、IRKitのiOSアプリだけでも屋外からエアコンは操作出来る模様。

エアコンの操作はIRKitで行い、IRKitとHomeKitの連携は、買うだけ買って放置していたRaspberry PiにHomebridgeを入れて行う。

やったこと

  • Raspberry PiでHomebridgeを動かす
  • IRKitのHomebridge-plugin入れる
  • IRKitセットアップ

手順

公式サイトや先人の知恵を拝借。

知見やハマリポイントなど

Raspberry PiのOSイメージ書き込み時間

デスクトップなしRaspbian 1.7GBをclass4のmicroSDに書き込むのに大体15分くらいかかった。

systemdの設定をミスってHomebridgeが起動しなかった

凡ミスして、/etc/default/homebridgeを以下のように書いていたためエラーが出ていた。

.
.
HOMEBRIDGE_OPTS=-U /home/pi/.homebridge/config.json
.
.

エラー

Error: ENOTDIR: not a directory, mkdir '/home/pi/.homebridge/config.json/persist'

/home/pi/.homebridgeにすれば動くんだろうが、homebridgeユーザーで動かすこともあるので、もともと書かれていた設定通り、/var/lib/homebridgeにしてディレクトリを作成し、所有者もhomebridgeとしておいた。configもコピーして配置。

IRKitへのHTTPクリエストはX-Requested-Withヘッダ必須

$ http http://192.168.0.xxx/messages
HTTP/1.0 400 Bad Request
Access-Control-Allow-Origin: *
Content-Type: text/plain
Server: IRKit/3.0.0.0.g85190b1

$ http http://192.168.0.xxx/messages X-Requested-With:HTTPie
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Content-Type: text/plain
Server: IRKit/3.0.0.0.g85190b1

IRKitのファームウェア書き換え時のシリアルポート

/dev/tty.usbmodemXXXXを指定せよとのことだったが、Arduino IDEからは/dev/cu.usbmodemXXXXしか見えなかった。
ターミナルからだとttyも見える。MacBookのUSB-Cアダプタ経由で接続しているとか理由あるんだろうか?

$ ll /dev/*usbmodemXXXXX
crw-rw-rw-  1 root  wheel   20,   5  7 24 04:00 /dev/cu.usbmodemXXXXX
crw-rw-rw-  1 root  wheel   20,   4  7 24 04:00 /dev/tty.usbmodemXXXXX

書き込んでみたら問題なくファームウェア更新出来て、青色ランプが消えるようになった。