#HomebridgeをDockerで導入してRM mini3を動かすまで
はじめに
RM mini3を使ってiosのhomeアプリからhomebridge経由で家電を操作する方法について備忘録としてまとめました。同様の記事は山ほどあるのですが、Dockerを使った環境構築の記事がなく、またRM mini3の最初の設定関連でハマる箇所が多かったので記事にしました。
##必要なもの
- RM mini3
Broadlink社が製造するスマートリモコンです。国内ではLink Japanがe Remote miniという名前で販売していますが、高いです(6000円くらい)。今回はgearbestで17ドルくらいで買いました。
- PC
raspberry piを使う人が多いです。今回は普通のデスクトップpcでosはubuntu18.04です。 - iPhoneもしくはiPad
##RM mini3の設定
専用のアプリからRM mini3の設定をすることになります。
国内向けのBroadlink e-controlというアプリは使うことができず、代わりのアプリを使うことになります。以前はIntelligent Home Centerというアプリをダウンロードする必要があったのですが、現在はIntelligent Home Center for EUが使えるので、これをダウンロードしました。
https://apps.apple.com/jp/app/intelligent-home-center-for-eu/id1384362587
ihcをダウンロードしたらwifiを2.4GHzのものに接続します。RM mini3は5Ghzのwifiに対応していないので、注意してください。
アプリを起動したらアカウントを適当に作成し、ihcのホーム画面からデバイスを追加を選択します。
上手くいかない場合はRM mini3のデバイスをリセットする必要がある場合があります。その場合は後ろのリセットボタンを5秒以上押してください。(ちゃんと5秒以上長押しするとランプの点滅の仕方が変わります。)
これで設定完了です。このままihcアプリを使って赤外線リモコンを学習させていくこともできます。今回はhomeアプリからRM mini3を動かしたいので次に進みます。
Homebridgeの設定
Homebridgeの設定は
https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Docker
を参考にしました。
Dockerを使って環境構築します。Dockerが入ってない人は↓
https://docs.docker.com/
Dockerを入れたら,Docker Composeが入っているか確認します。
$ docker-compose --version
入ってなかったので公式から入れました。
https://docs.docker.com/compose/install/
Dockerの準備ができたらdocker-compose.ymlという名前のファイルを作ります。中身は次の内容にします。
version: '2'
services:
homebridge:
image: oznu/homebridge:latest
container_name: homebridge
restart: always
network_mode: host
environment:
- TZ=Australia/Sydney
- PGID=1000
- PUID=1000
- HOMEBRIDGE_CONFIG_UI=1
- HOMEBRIDGE_CONFIG_UI_PORT=8080
volumes:
- ./homebridge:/homebridge
上のファイルがあるディレクトリでコンテナを立ち上げます。
$ docker-compose up -d
次にRM mini3用のプラグインを用意します。今回使用したのは
https://github.com/lprhodes/homebridge-broadlink-rm
です。プラグインをインストールします。
$ docker exec homebridge npm install homebridge-broadlink-rm
このとき、-gオプションはつけなくて良いです。
次にhomebridgeにあるconfig.jsonを書き換えます。書き方は次のような感じです。
{
"bridge":{
"name":"Homebridge",
"username":"XX:XX:XX:XX:XX:XX",
"port":XXXXX,
"pin":"XXX-XX-XXX"
},
"description":"Homebridge",
"accessories":[
],
"platforms":[
{
"hosts": [
{
"address": "XXX.XXX.XX.XX",
"mac": "XX:XX:XX:XX:XX:XX",
"isRFSupported": true
}
],
"platform":"BroadlinkRM",
"name":"Broadlink RM",
"hideScanFrequencyButton": false,
"hideLearnButton": false,
"hideWelcomeMessage": false,
"accessories":[
{
"name":"Auto-off Switch",
"type":"switch",
"enableAutoOff": true,
"onDuration": 5,
"data":{
"on":"2600500000012...",
"off":"2600500000012..."
}
},
{
"name":"TV On/Off",
"type":"switch",
"data":{
"on":"2600500000012...",
"off":"2600500000012..."
}
},
{
"name":"Channel Up",
"type":"switch",
"data":"2600580000012...",
"enableAutoOff": true,
"onDuration": 1
},
{
"name":"Channel Down",
"type":"switch",
"enableAutoOff": true,
"onDuration": 1,
"data":"2600580000012a..."
}
]
}
]
}
一番最初にある"bridge"のvalueはデフォルトのままで良いです。
"hosts"は公式ではRM miniの一台使用なら必要ないとされているので書かなくても良いですが、上手くいかないことが多いので記述することをオススメします。"address"はRM mini3のIPアドレス、"mac"はRM mini3のMACアドレスです。IPアドレスの確認はwifiルーターの設定画面からの確認が最も簡単だと思います。MACアドレスの確認方法はihcアプリから行うことができ、
デバイス→RM mini3→右上の…→device infoでMACアドレスを確認することができます。様々なやり方があるみたいなので参考までに載せておきます。
https://qiita.com/canadie/items/3110a0f0ff4f4749e039
config.jsonを編集し終えたらHomebridgeを再起動してください
$ docker restart homebridge
config.jsonが更新されていれば成功です。
成功しているかの確認のためにログを確認します。
$ docker logs -f homebridge
このとき次のようなエラーが出てきたら、下を試してみてください。
Error: Cannot find module 'hap-nodejs'
Error: The requested platform 'BroadlinkRM' was not registered by any plugin.
$ docker exec homebridge npm install hap-nodejs
##homeアプリとの連携
iPhone(もしくはiPad)にhomeアプリをダウンロードします。
Homebridge側ではペアリング用のコードを表示します。
$ docker logs -f homebridge
homeアプリを起動し、表示されたQRコード、もしくはコードを入力するとペアリングできます。
アプリの表示画面にlearnというアイコンがあり、これをタップすると赤外線リモコンの学習モードになります。学習モード中はRM mini3のライトが白く光るので、この間にリモコンのスイッチをRM mini3に向けて押してください。
学習できるとHomebridge側では赤外線のHex codeが表示されます。
[4/19/2020, 11:23:34 PM] [Broadlink RM] [RESULT] Learn Code (learned hex code: 2600500000012a91151015351536151015351511151015111535153515351511153515111535151015111510151115351535151115101511143615351535151115101536143615351500052200012a4815000d050000000000000000)
このcodeを対応するconfig.jsonの"data"の値に入れて、準備完了です。
config.jsonを更新したら、homebridgeを再起動します。
$ docker restart homebridge
これで使えるようになりました。
##おわりに
config.jsonファイルを書き換えればスイッチの数や種類を増やしたり、細かい設定を付け加えることができます。詳細については公式を参照してください。
https://lprhodes.github.io/slate/#advanced-setup
設定はHomebridge Config UI Xから確認することもできます。http://<ip of machine>:8080で設定画面に入れます。プラグインの確認には便利なので見てみてください。
https://github.com/oznu/homebridge-config-ui-x
あとこの手法の問題点なんですが、wifiが再接続されるとbridgeの情報が更新されて上手くいかないことがあります。その場合は最初からセットアップするしかないです。別の良い方法があったら教えていただけると嬉しいです。m(_ _)m