読者です 読者をやめる 読者になる 読者になる

ワタナベ書店

読んだ本の感想とか美味しかったお店の紹介とかLinuxの知見とか好きなことを好きなだけ書くブログです。

赤外線リモコンで操作する家電をHomekit対応にする、homebridge-irkitの使い方

テクノロジー ガジェット

WiFi機能の付いたオープンソースな赤外線リモコンデバイスIRKitをHomekit対応にして、部屋中の家電を操作しちゃおうぜという野望の元作った、homebridge-irkitの解説です。
ひとまず問題となってた不具合も解決したので簡単な解説を書きます。(バージョン0.5から設定の書き方も少し変わったので、そのお知らせも兼ねてます。)

プラグインの解説の前に、簡単な単語解説。

Homekitとは

Appleが提唱する家電やホームセキュリティの管理システムです。
iOS機器(iPhoneiPad)をハブとして、部屋中の家電を管理することができます。

Homekitに対応した製品はSiriから操作出来たり、iPhoneGPS機能を使って、家から離れた時に電源をオフにしたり、近づいた時にオンにしたり、他社のHomekit対応製品と組み合わせて操作することも可能になります。

IRKitとは

WiFi機能の付いたオープンソースな赤外線リモコンデバイスです。
単体でもiPhoneAndroidアプリと組み合わせて、赤外線リモコンで操作する家電を外から操作することが出来ます。

homebridgeとは

Homekitのオープンソース実装となります。homebridge-irkitはIRKitをhomebridge上で動かすためのプラグインです。
homebridgeは常に動いている必要があるのでRaspberry Piに載せたりする人が多いようです。常に起動しているのであればMacでも可能です。Windowsでも動かせるようですが、ちょっとハードルが高そうです。

homebridge-irkitの使い方

homebridgeをインストールしている前提で話を進めます。もしインストールしていないのであればインストールしてから次に進んで下さい。

% sudo npm install -g homebridge-irkit

普通にnodejsのnpmコマンドからインストールできます。

  • 赤外線情報取得
% curl -i "http://irkitxxxxx.local/messages" -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/2.1.3.13.gbe33d36
Content-Type: text/plain

{"format":"raw","freq":38,"data":[18031,8755,1190,1190,1190,3341,1190,3341,1190,3341,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,1190,1190,3341,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,65535,0,9379,18031,4400,1190]}

公式の方法と同じ手法にて取得します。家電をオンにする信号とオフにする信号、2つを取得して下さい。
もし、オンとオフが同じボタンであるなら、赤外線信号が同じ場合があります。
その場合はオフで家電がオンになったりするので注意して下さい。もし別のボタンで代替が可能であればそちらのボタンで取得して下さい。

homebridgeがインストールされた環境ではBonjour機能が搭載されているのでlocalドメインが有効になっています。
よって、所持しているirkitの製品名が判明すればそれにlocalを付けるだけで通信が可能になります。とても便利ですね。

  • 設定ファイルの書き方例
# cat .homebridge/config.json
{
    "bridge": {
        "name": "Homebridge",
        "username": "CD:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-156"
    },
    
    "description": "The SAMPLE",

    "platforms": [],

    "accessories": [
        {
            "accessory": "IRKit",
            "name": "エアコン",
            "irkit_host": "irkitxxxxx.local",
            "on_form": {"format":"raw","freq":38,"data":[長いので省略]},
            "off_form": {"format":"raw","freq":38,"data":[長いので省略]}
        }
    ]
}

var0.5からはirkit_urlではなくirkit_hostになりました。よって、irkitのlocalDNS名もしくはIPアドレスだけ記載することになりました。
設定ファイルを保存したら、homebridgeを起動しなおして下さい。設定に問題がなければHomekit対応アプリに[name]で登録した名前で家電が登録されているはずです。

  • 操作方法
    Homekit対応アプリからボタンでオン・オフが可能になります。
    またはSiriから「○○をオンにして」「○○をオフにして」と操作が可能になります。

Q&A

  • 赤外線情報が長いとエラーになるのだけど
    直しました 次のコマンドでパッケージをインストールし直して下さい。
% sudo npm uninstall -g homebridge-irkit
% sudo npm install -g homebridge-irkit

設定ファイルを書き換えることを忘れずに。

  • siriに言葉が通じない時があるのだけど
    基本的にnameで設定した名前が優先されるようですが、Homekitにて別の機能の名前になっているものがあり、その名前で家電を登録すると動かない場合があります。例としてエアコンがあります。
    homebridge-irkitはHomekit内部ではスイッチと定義されており、エアコンという名称はHomekit内部のThermostatに定義されているのでためSiriでの命令が実行されないときがあります。
    対応策としては別な名前で登録するしかないので、自分はエアコンは冷房って登録し、干渉を避けています。

  • エアコンの温度を○○度にしてって命令したいのだけど
    素敵なプラグインを誰か書いてください頼む。

応援してます

IRKitの開発者が作った次世代IRKit、Nature Remoがクラウドファンディングで募集中だよ!みんな買おう。

自分はキックスターターで応募したので到着が楽しみです。