Smart HomeをDIYする

Apple HomeKit は対応製品が少なくて高価なのでHomebridgeでがんばります

IKEAのZigbee製品TRÅDFRIスイッチ

ikea.comから引用)

IKEAZigbee製品は、技適も通っていてお手頃価格です。中でもシーソースイッチである「ワイヤレス調光器」は税込799円で買えます。Zigbee2MQTTでサポートされているので、Homebridge経由でHomeKitアクセサリとして使用できます。

IKEAZigbee製品

IKEAはTRÅDFRI(トロードフリ)というシリーズで、電球、スマートプラグ、人感センサ、シーソースイッチ、押しボタンスイッチ、リモコンスイッチなどのZigbee製品をお手頃価格で供給してくれてます。FYRTUR, KADRILJなどの名前のロールカーテンも使えるようです。こちらにZigbee2MQTT対応一覧があります(日本では扱っていない製品もあるようです)。

4,999円のゲートウェイ(下の写真の丸い製品)を買ってEthernet接続すればApple HomeKitにも接続できます。ゲートウェイは、Homebridgeに相当する機能を果たします。Ikea製品とHomeKit (HAP)のブリッジをしてくれます。これにより、Ikea製品がHomeKit画面に現れて、電源on/off、調光・調色などの操作が可能になります。

ikea.comから引用)

TRÅDFRIゲートウェイを使ってHomeKitに接続する方法はweb上にたくさん紹介されています。ですが、ゲートウェイは、TRÅDFRIの一部の製品の橋渡ししかしません。電球などはHomeKitからアクセスできますが、スイッチや人感センサはHomeKitから見えません。

Ikea製品の公式方法では、スイッチや人感センサ製品は、電球やカーテンなどの製品と1:1にペアリングして、使用することになってます。なのでスイッチや人感センサはHomeKit側には公開されないようです。

Zigbee2MQTTにペアリングする

Zigbee2MQTTとHomebridgeでZigbeeバイスをすでに活用している環境ならば、TRÅDFRIゲートウェイを使わずに直接IKEAバイスをコントロール可能です。そうすれば、スイッチや人感センサもHomeKitから使用できますし、ゲートウェイの費用も節約できます。IKEA TRÅDFRI製品はペアリングをするだけで、Zigbee2MQTTから使えるようになります。

Zigbee2MQTTのペアリングモードがoffに設定してある場合は、webインタフェース右上のPermit join (All)のメニューをクリックしてペアリングを許可します。すると5分間、ペアリングが可能になります。

 

 

一方、TRÅDFRIスイッチやセンサーの裏側には、ペアリングボタンが付いています。鎖マークが書かれたボタンです。このボタンを4回クリックするとペアリングモードに入ります。

電球の場合は、6回off/onを繰り返して、最後にonの状態で待ちます。ペアリングモードに入るための方法を説明したIKEAらしいお洒落な動画がこちらにあります。ペアリングを成功させるためには、Zigbee2MQTTが使っているアンテナを近づけた方が良いです。ただ、他にペアリングしようと競合する装置がなければ、2-3mくらい離れていてもペアリングしました。

mosquittoコマンドでサブスクライブしてけばペアリングの様子を確認できます。

mosquitto_sub -h localhost -t zigbee2mqtt/# -v

これはmosquittoがlocalhostで動き、ユーザ名・パスワードを設定していない場合の例です。色々メッセージが出てくるので、ペアリングの様子を確認できます。

ペアリングを切り離す方法(web方式)

Zigbee2MQTTでwebインタフェースを使用している場合、ペアリングしたデバイスを切り離す操作は簡単です。デバイス一覧からゴミ箱アイコンをクリックするだけです。

この後、オプションが表示されます。

Zigbee接続中のデバイスはこのままDeleteボタンを押します。接続していないデバイスを取り外すには、Force removeをonにしてからDeleteボタンを押します。次に接続した時にも切り離した状態にしたい場合は、Block from joining againをonにします。これで工場出荷状態の関係に戻ります。

ペアリングを切り離す方法(MQTT方式)

ペアリングしたデバイスは、MQTTのメッセージを使っても切り離せます。Zigbee2MQTTの本来の方式です。Webインタフェースも、内部ではMQTTメッセージ経由で操作してます。

MQTT経由でデバイスを切り離すためには、

mosquitto_pub -h localhost -t zigbee2mqtt/bridge/request/device/remove -m "0x9999999999999999"

のようなトピックス・メッセージをMQTTブローカーに流します。

mosquitto_pub -h localhost -t zigbee2mqtt/bridge/request/device/remove -m '{"id":"0x9999999999999999"}'

でも良いです。9999...の部分は、ZigbeeのIDです。mosquitto_subしたメッセージを見ていれば確認できますし、/opt/zigbee2mqtt/data/configuration.yamlファイルにも書かれています。ペアリングを切り離す操作も、別のターミナルウィンドウから、mosquitto_subしておけば動作確認できます。

ただ、この方法は、デバイスがペアリングして動いている時にしか使えません。デバイスからの応答が無いとエラーが表示されます。スリープしている場合は起動させる必要があります。

バイスが既にペアリングされていない、工場出荷時状態に戻してしまった、もしくは手元にないなどの場合は、強制的にremoveします。forceという項目をtrueにして送ります。

mosquitto_pub -h localhost -t zigbee2mqtt/bridge/request/device/remove -m '{"id":"0x9999999999999999","force":true}'

forceオプションをつけてremoveをしても、デバイスがペアリング状態のまま復活するとまた接続されます。

HomeKitから設定する

Zigbee2MQTTとペアリングができれば、Homebridgeの設定は不要で、そのまますぐにiPhone/Macのホーム.appにIKEA製品が表示されます。電球なら

こんな感じで、スイッチなら以下のようです。

スイッチをクリックすると、設定画面が現れます。以下は、押しボタン壁スイッチであるTRÅDFRIショートカットボタンの例です。物理的には押すだけのボタンが一つあるだけですが、設定画面には、論理的なボタンを4個、ボタン1からボタン4までのボタンを備えているように見えてます。

IKEAの押しボタンは、on、off、長押しの開始、長押しの終了の4個の操作を識別しているようで、それぞれがこの論理ボタンに対応するようです。試したところ、短くクリックするとボタン2が、長押しを開始するとボタン4が対応していました。この2操作の識別が容易だと考えたので、これらを使用することにしました。

IKEAボタンには、付属の「おやすみなさい」ラベルを取り付けて使うことにしました。

そこで、短くクリックすると照明やエアコンが停止するように設定しました。試したところ、ボタン2の1回押しが「短いクリック」に相当するようです。なのでこれを以下のように設定します。

さらに、長押しすると、照明が点灯してエアコンが始動するように設定しました。試したところ「長押し」はボタン4の1回押しに相当するようです。なのでこれを以下のように設定しました。

まとめ

IKEAのTRÅDFRIシリーズを、HomeKitに接続しました。通常はIKEAゲートウェイ製品を使ってHomeKitに接続しますが、Zigbee2MQTTとHomebridgeを使って使用しました。ゲートウェイ経由だと橋渡しされないスイッチ、リモコン、人感センサなども、この方式でHomeKitから使えるようになります。