HomebridgeとWiresharkでAPI非公開の学習リモコンをHomeKit (Siri) 対応してみた

  • 18
    いいね
  • 3
    コメント

HomeKitで快適な生活を目指したいけれど、HomeKitに対応している製品はあまりないです。。。

そこで、なんとかして対応させたという話をつらつらと書きます。
同じ志のある方の知見になればと思います。
(LTのネタです。https://speakerdeck.com/tattn/ri-yao-hackdehomekittoxi-retahua)

学習リモコン編

カスタマイズ性のある学習リモコンといえば、IRKitですが、なかなか定価では手に入りません。。。

できるだけ安く遊んでみたかったので、黒豆 (RM mini3)という格安(購入時は2500円)の学習リモコンをポチってなんとかすることにしました。(こちらも品薄です...)

アプリで操作するタイプの学習リモコンであれば大体なんとかできると思います。

Wireshark編

情報系の大学に行くと一回は使いそうな老舗フリーソフトです。
学習リモコンにAPIがないので、これを使って専用アプリと学習リモコンの通信を読み取り、エミュレートすることにしました。

Windowsでしか使ったことがありませんでしたが、brew caskで入りました。

$ brew cask install wireshark

次にXcodeを開き、MacとiPhoneをつなぎます。
Window->Devicesを開き、接続したiPhoneを選択して、iPhoneのIdentifierをコピーします。

次に下のコマンドで仮想インターフェースを作成し、Wiresharkで読み取れるようにします。

$ rvictl -s <コピーしたIdentifier>

ここからWiresharkの出番です。
iPhoneとMacは同一のWifiに接続しておきます。

Wiresharkを起動し、先ほど作成した仮想インターフェースのrvi0を選択し、キャプチャを開始します。

フィルタを利用してiPhoneのIPアドレスで絞り込みます。(iPhoneのIPアドレスは設定アプリから確認できます)

Kobito.86bTXx.png

ここまでできたら、学習リモコンを操作する専用アプリを起動します。
黒豆はBroadlinkの製品なので、e-Controlというアプリでした。

専用アプリから学習したデータを送信し、その時の情報をWiresharkで読み取ります。

Untitled1.png

黒豆の場合はQUICプロトコルのペイロードにデータを載せて通信をしていました。

Kobito.EXqZcx.png

ペイロードを16進数ストリームとしてコピーしてHomebridgeで利用しました。

Homebridge編

Homebridgeは、HomeKitのAPIをNode.jsでエミュレートしてくれる素晴らしいツールです。

npmで入ります。

$ sudo npm install -g --unsafe-perm homebridge

実行します。

$ homebridge

しかし、認識したい機器 (ここでは学習リモコン) が登録されていないので、まだ何もできません。

Homebridgeにはプラグインというアクセサリ (機器) を追加する仕組みが提供されています。

例えば、有名なIRKitの場合は、下記のコマンドでインストールして、設定を記述すると操作可能になります。

$ sudo npm install -g homebridge-irkit

他にもhomebridge-pluginでパッケージを検索すると、様々な機器用のプラグインが公開されています。

残念ながら、黒豆用のプラグインはなかったので自作しました。
https://github.com/tattn/homebridge-rm-mini3
(プラグインの作成手順は別途書こうと思っています...)

$ sudo npm install -g homebridge-rm-mini3

調べた学習リモコンのペイロードを設定ファイルに記述するとHomeKitからリモコン操作が可能になります。
設定ファイルのサンプルはこちら

$ vi ~/.homebridge/config.json

Homeアプリ編

iOS10で登場したHomeアプリで登録すると、学習リモコンを操作できるようになりました。
またHomeアプリで登録をするとSiriでも操作可能になりました!!!

home.001.jpeg

気づいたこと

機器を出来る限りこれで自動化したら楽しくなりそうだなぁというワクワク感がありました。

これを作って気が付きましたが、Homeアプリで機器を登録すると下を引っ張って出てくるコントロールセンターに3ページ目ができて、ここからも機器の操作ができました。
このショートカットはとても便利だと思います。

残念だった点はHomeKitのServiceCharacteristicを既存に用意されているものではなく、自作した場合 (今回はTVのチャンネル) は公式のHomeアプリでは認識できませんでした。(2016/10/30現在)
サードパーティ製のHomeKitアプリからは利用することができました。



こちらからは以上です。∠(`・ω・´)