HomebridgeのIRKitプラグインを色々便利にしました

IRKitをSiri、Appleのホームアプリから使う方法としてはHomebridgeとhomebridge-irkitプラグインを使う方法がメジャーです。我が家でもこの組み合わせでAppleホームアプリから家電を操作して便利に使っていました。

homebridge-irkitプラグインの問題

しかしこの組み合わせでは、ホームアプリからシーン(複数のデバイスを同時の切り替える機能)で一度に複数デバイスを操作するとうまく動かないことがありました。

例えば、我が家ではすべての家電をシャットダウンする「不在中」というシーンを作っていて、そこではIRKitデバイスとして「テレビ」「赤外線プラグにつながったフロアランプ」「エアコン」を同時にオフにしていますが、たいていはどれか1つかうまくオフになっていませんでした。ホームアプリ上では正常にシーンが切り替わったように見えるにもかかわらず、です。


これはおそらく、IRKitが赤外線信号を送る際には一定の時間が必要なため、依頼が殺到すると処理しきれずにうまく信号が発信されないためだと思います。特にエアコンの信号は、「動作モード」「風向き」「ターゲット温度」等の情報を毎回すべて送信する仕組みなので信号がかなり長くなり、赤外線信号の送出にも1秒以上かかってしまいます。このため、エアコン信号の直後に届いた指示はうまく発信されないことがあります。

homebridge-irkit-modプラグインの作成

とはいえIRKitは相当古いデバイスで、既に時代は後継といえるNature Remoに移っています。homebridge-irkitプラグインも最終メンテナンスは5年以上前であり、修正を期待するのも難しいです。よって今回、homebridge-irkitプラグインをForkして修正版を自作することにしました。以下に公開しています。

https://github.com/burabura714/homebridge-irkit-ext

このプラグインでは、送信する赤外線信号の長さを自動判定し、長さに応じてIRKitへの依頼を一定時間待つように修正しています。これにより、シーンで複数のIRKitデバイスを利用する場合でも、少なくとも私の環境ではうまく動作するようになりました。

コンフィグファイルの記述は既存のIRKitプラグインとほぼ同じなので、accessoryプロパティだけIRKitからIRKitModに変更すれば、同じIRKitMod管理下のデバイスは同期して動作するようになります。

       {
           "accessory": "IRKitMod",
           "name": "Switch device",
           "irkit_host": "irkitxxxxx.local",
           "on_form": {"format":"raw","freq":38,"data":[]},
           "off_form": {"format":"raw","freq":38,"data":[]}
       },
本家と完全に互換性を維持することもできたのですが、そうすると本家プラグインと同居できなくなるのでやめました。

エアコン、照明タイプへの対応

また、元のプラグインではONとOFFを切り替えるSwitchというタイプにしか対応していませんでしたが、拡張プラグインでは「照明」タイプと「エアコン」タイプに対応しました。以下の画像のリビングのエアコンとリビングのフロアランプがIRKitデバイスです。

照明タイプはホームApp上で自動的に照明アイコンになる程度の違いしかありませんが、エアコンタイプはホームAppでエアコン専用のコントロールパネルが使えるようになり、暖房、冷房、自動、オフの切り替えや現在温度の確認を1つのデバイスアイコンで扱えるようになるため、結構便利です。


こんな感じで設定をかけば動きます。temperature_fileプロパティはなくても動きますが、その場合は温度が20度固定表示になります。

       {
           "accessory": "IRKitMod",
           "name": "Aircon device",
           "irkit_host": "irkitxxxxx.local",
           "type": "aircon",
           "heat_target": 22,
           "cool_tareget": 27,
           "temperature_file": "/dev/shm/room_temp.txt",
           "heater_form": {"format":"raw","freq":38,"data":[]},
           "cooler_form": {"format":"raw","freq":38,"data":[]},
           "auto_form": {"format":"raw","freq":38,"data":[]},
           "off_form": {"format":"raw","freq":38,"data":[]}
       },

いまもIRKitを使っている人は相当少ないでしょうし、それをHomebridge経由で使っている人はさらに少なく、またシーンで同時に3つ以上のアクセサリを扱っている人となると天文学的少なさな気がしていますが、自分がConfig UI X経由でサクッとインストールする目的もあり、一般公開しています。homebridge-irkit-modの名前でnpm登録してあり、Config UI X上からインストールできますので、興味があれば使ってみてください。

何か要望がありましたら、Github、Twitter、ブログ上でリクエストしてもらえれば対応できるかもしれません。まぁ、ないと思いますが。

コメント

このブログの人気の投稿

3大家計・資産管理サービス Money Forward、Moneytree、Zaimの機能比較とおすすめの使い方

Raspberry pi+Homebridge+IRKitで自宅をスマート化し、Google Home/Android/HomeKitから操作する

ふるさと納税攻略(というほどでもない話)