foresta profonda

眠くない日はない。

Raspberry Pi Zero + IRKit + homebridgeで家電コントロール

かなり前に購入したIRKitだが、iPhoneにインストールした公式アプリでエアコンを操作するくらいにしか使っていなかった。
(これだったらエアコン付属のリモコンで十分...)

そんななか、siriで家電コントロールという記事をしばしば見かけ、ふと思い立って自分も試してみることにした。

HomeKitとhomebridge

家電コントロールにはHomeKitをエミュレートするhomebridgeというソフトウェアを使う。

HomeKitはAppleが提唱するスマート家電用のプラットフォームのこと。HomeKit対応機器はiPhoneiPad上のHomeアプリやsiriで操作できる。

そして、homebridgeはHomeKitをエミュレートするNode.jsサーバのこと。IRKitのほかにもPhilipsのスマート照明Hueなど、様々な家電と連携するためのプラグインが公開されているので、Raspberry Piなどにインストールして運用する例がよく見られる。

環境

今回はRaspberry Pi Zeroにhomebridgeをインストールする。

自宅の家電で赤外線で操作できるのはエアコン、オーディオアンプ、そしてお掃除ロボ。こやつらをiPhoneから制御できるようにする。

また、過去の記事にもあるようにRaspberry Pi Zeroには温度センサを接続中。homebridgeのプラグインには温度を取得するものもあり、これを使うとiPhoneiPadの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"
        }
    ]