Sympapaの日記

スマートなんとかはスマートじゃない方法でつくられている

Home Assistant: 500円のZigBeeドングルでZigbee2mqttを導入する

Home Assistantを使い始めて3ヶ月くらいになりましたが、まだまだわからんことだらけのSympapaです。

現在、Home AssistantにZigbeeバイスを接続するコーディネーターにはNortecのHUSBZB-1というUSBドングルを使用してZHAを使っています。
チップがうんぬんとかさっぱりわかりませんが、Home AssistantでZigBeeコーディネーターを使う場合そのほとんどはファームを書き換えなくてはいけないようです。
ファームの書き換えが私にはなかなかハードルが高そうで、HUSBZB-1はファームを書き換えなくても使えるとのことだったのでHome Assistant導入時に米Amazonで購入しました。
実際導入は簡単だったし電波の飛びもすこぶる良好で安定稼働しています。
しかし送料と合わせて8000円くらいする上にZHAでしか使えないので簡単さを考慮してもコスパ的には...

今回、Zigbee2mqttを触ってみたかったのでITEADのZigbee CC2531 USBドングルを買ってみました。
こちらのドングル、なんと500円前後で売っていてファームの書き換え無しで使用でき、ZHAでもZigBee2MQTTでも使えるというシロモノです。
CC2531は電波があまり飛ばないので非推奨とのことですが、実際このチップが載ったドングルを使っている人も多そうですし今回はZigbee2mqttを触ってみたいというだけなのでいいでしょう。
f:id:sympapa:20210926114905j:plain
itead.cc

Aliexpressのこちらのお店で購入しました。
さすがにこれ単体だと数百円の送料は取られるので、いくつかの発送方法の中から2番目に安かったSpecial Line-YWを選択。送料込みで788円でした。
Yanwenとかきっと忘れた頃にしか届かないだろう...と思っていたら9月14日夜にポチって中国からダイレクトに日本へやって来て9月25日に我が家へ届きました。
最近のシンガポール経由のAliexpress Standardだと2週間~3週間で届いたら早い方なので、これは早かったです。たまたまかもしらんけど。
ja.aliexpress.com

Zigbee2mqttを導入する

そんなわけでZigBee2MQTTを導入・設定していきます。
ZHAはドングルを挿してインテグレーションをインストールすれば直感で設定からデバイス追加まで出来るレベルでしたが、今回は難しくはないけど直感でわかるレベルではないので手順を書いておきます。

1.USBドングルを挿す
ITEAD Zigbee CC2531 USBドングルを袋から取り出したら、そのままHome Assistantが稼働しているラズパイにぶっ挿します。
一応、認識されているか確認するため、Supervisor>システム>Hostのメニューからハードウェアを選びます。
"ttyACM0/dev/serial/by-id/usb-Texas_Instruments_TI_CC2531_USB_CDC___0X..."ってのが表示されてれば無事認識されてます。

2.Mosquitto brokerアドオンをインストールする
Supervisor>アドオンストアと進み「Mosquitto brokerアドオン」をインストールします。
インストールが完了したらMosquitto brokerアドオンの[設定]を開いて、usernameとpasswordを設定し保存します。
f:id:sympapa:20210926081913p:plain
そしてMosquitto brokerアドオンの[情報]を開いて[開始]を押して稼働させます。

3.Mosquitto brokerインテグレーションをインストールする
Home Assistantの設定>インテグレーションと進んでインテグレーション追加を押し、「Mosquitto broker」を検索してインストールします。
設定画面が表示されたら以下のように設定します。
Broler: localhost
Port: 1883
Username: さっきの
Password: さっきの
f:id:sympapa:20210926082945p:plain
後から設定を変える場合はMosquitto brokerインテグレーションの設定を押し、MQTT settingsの[Re-configlation]を押します。

4.ZigBee2MQTTアドオンをインストールする
Home AssistantのSupervisor>アドオンストアと進み右上のメニューボタンを押してリポジトリを押します。
https://github.com/danielwelch/hassio-zigbee2mqttリポジトリに追加します。
Zigbee2mqttアドオンをインストールします。
Zigbee2mqttの設定を開き以下のように設定します。

server: mqtt://192.168.xx.xx:1883 (Home Assistantを動かしてるラズパイのIP、ポートは1883)
user: さっきの
password: さっきの
f:id:sympapa:20210926101309p:plain


Zigbeeバイスをペアリングする

Zigbee2mqttアドオンにはWEB UIが用意されてます。
Home AssistantのSupervisor>ダッシュボード>Zigbee2mqttと進んで[Web UIを開く]ボタンを押します。
Web UIが開いたら[Permit join(ALL)]ボタンを押して、Permit joinモード=ペアリングモードにします。
ちょっとややこしいですが、Disable join(ALL)が表示された状態だとPermit joinモードになっていて、Permit join(ALL)が表示された状態だとDisable joinモードになってます。
f:id:sympapa:20210926101914p:plain

あとは接続したいZigbeeバイスをリセットボタンを押すなりなんたりしてペアリングモードにしてやれば、画面の右下に赤い窓が飛び出してきて"device xxxxx left the network"と通知され、そのまま数十秒待てばデバイスが登録されます。赤い窓が飛び出さない時もありますが、それでも数十秒待っていれば登録されていたりします。進捗が見えないのでほんとにデバイス登録中なのかわかりにくいですね。
UIはデバイスの写真まで表示されるしZHAより洗練されてます。
あとZHAでは表示されないパラメータが表示されたり対応していればOTAによるファームアップまで出来るようです。
f:id:sympapa:20210926105931p:plain

それにしてもZHAは登録時に名前を付けられるのですがZigbee2mqttはFriendly nameがIEEEアドレスになってしまうのでUIから変更しようとしてもグレーアウトしていて出来ないし、Home Assistant側でデバイス名の変更をしてもZigbee2mqttアドオン上では変更されません。
f:id:sympapa:20210926112923p:plain
どうやら/config/zigbee2mqtt/の中にあるdevices.yamlをファイルエディタで開いてFriendly nameを編集しZigbee2mqttを再起動すると反映されるよってことのようです。
何台も一気にデバイス登録したい時に面倒だなこれ。

というわけで、やっぱりZigbee2mqttのが出来ることは多そうですがZHAのが使いやすいですね。

あと噂通りCC2531の電波の飛びはよろしくないようで、木造の1Fにラズパイがあってほぼ真上の2FにあるAqura Door sensorの場合、HUSBZB-1ではLQI(電波強度みたいなもん)が255なのにCC2531は50~60だったりします。まぁでもZigbee電球などのリピーターがあれば問題無い気もしますが。

ということで今回はここまで。
500円ドングルとZigbee2mqttを触ってみたというお話でした。
では。