Raspberry Pi Zero + IRKit + homebridgeで家電コントロール
かなり前に購入したIRKitだが、iPhoneにインストールした公式アプリでエアコンを操作するくらいにしか使っていなかった。
(これだったらエアコン付属のリモコンで十分...)
そんななか、siriで家電コントロールという記事をしばしば見かけ、ふと思い立って自分も試してみることにした。
HomeKitとhomebridge
家電コントロールにはHomeKitをエミュレートするhomebridgeというソフトウェアを使う。
HomeKitはAppleが提唱するスマート家電用のプラットフォームのこと。HomeKit対応機器はiPhoneやiPad上のHomeアプリやsiriで操作できる。
そして、homebridgeはHomeKitをエミュレートするNode.jsサーバのこと。IRKitのほかにもPhilipsのスマート照明Hueなど、様々な家電と連携するためのプラグインが公開されているので、Raspberry Piなどにインストールして運用する例がよく見られる。
環境
今回はRaspberry Pi Zeroにhomebridgeをインストールする。
自宅の家電で赤外線で操作できるのはエアコン、オーディオアンプ、そしてお掃除ロボ。こやつらをiPhoneから制御できるようにする。
また、過去の記事にもあるようにRaspberry Pi Zeroには温度センサを接続中。homebridgeのプラグインには温度を取得するものもあり、これを使うとiPhoneやiPadのHomeアプリに温度を表示することもできるようだ。面白そうなので併せて試してみる。
インストール手順
というわけでまずはAvahiをインストールする。
sudo apt-get install libavahi-compat-libdnssd-dev
つぎにNode.jsをインストールする。
wget https://nodejs.org/dist/v4.0.0/node-v4.0.0-linux-armv6l.tar.gz tar -xvf node-v4.0.0-linux-armv6l.tar.gz cd node-v4.0.0-linux-armv6l sudo cp -R * /usr/local/
バージョンを確認。
node -v npm -v
いよいよhomebridgeをインストールする。
sudo npm install -g homebridge
続いてIRKitと温度取得用のプラグインをインストールする。
sudo npm install -g homebridge-irkit sudo npm install -g homebridge-temperature-file
これでインストールは完了。
設定
具体的にhomebridgeに何をさせるかは/home/pi/.homebridge/config.jsonに設定する。
config.jsonは以下のように設定した。
{ "bridge": { "name": "Homebridge", "username": "XX:XX:XX:XX:XX:XX", ※MACアドレス "port": 51826, "pin": "XXX-XXX-XXX" ※PIN番号 }, "description": "my homebridge", "platforms": [], "accessories": [ { "accessory": "IRKit", "name": "アンプ", "irkit_host": "192.168.1.200", "on_form": {"format":"raw","freq":38,"data":[17421,9061,968,1232,968,3341,1037,1150,1150,1150,1037,3341,1037,123$ "off_form": {"format":"raw","freq":38,"data":[17421,9061,968,1232,968,3341,1037,1150,1150,1150,1037,3341,1037,12$ }, { "accessory": "IRKit", "name": "ルーロ", "irkit_host": "192.168.1.200", "on_form": {"format":"raw","freq":38,"data":[6881,3458,843,843,843,2626,843,843,843,935,787,935,787,935,787,935,$ "off_form": {"format":"raw","freq":38,"data":[6881,3458,843,843,843,2626,843,843,843,935,787,935,787,935,787,935$ }, { "accessory": "TemperatureFile", "name": "温度", "description": "The temperature sensor in the livingroom", "file_path": "/var/log/temperature.dat" } ]