Sympapaのスマートホーム日記

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

Home Assistant: ZigbeeコーディネーターをSonoff Dongle-PからSLZB-06に乗り換える

Sympapaです。

Home Assistantでセンサー類を使用する上でZigbeeは必須です。
Matter over Threadに対応したセンサー類もぼちぼち増えては来ましたが、Zigbee対応のものと比べるとまだ高価なのですよね。


私がHome Assistantを使い始めた2021年の夏頃はまだ、買って繋いだらそのままZigbee2MQTTやZHAで使えるZigbeeコーディネーターは皆無に近く、何やらファームウエアを焼くためのデバイスを接続してカスタムファームウェアに書き換えるだとか、そのためにハンダ付けが必要な場合もあるとか、ハードルが高くてマニア向けだったんですよね。
その頃にもSonoffのZigbee CC2531 USB Dongleってのがあって、そいつは数少ない「挿せばそのままZigbee2MQTTでもZHAでも使える」モノだったんですが、非力すぎて接続できるデバイスの上限が20台くらいとかなんとかかんとかでした。
そんな中で私が最初に買ったコーディネーターはNortec HUSBZB-1ってやつでAliexpressでは手に入らなかったので米Amazonで買ったんですが、こいつはこいつで買って挿せば使えるもののZHAでしか使えませんでした。


しかしその数ヶ月後、挿せばそのままZigbee2MQTTでもZHAでも使えてZigbeeチップは強力なCC2652Pを搭載しているSonoff USB Zigbee Dongle Plusが登場したことによって、Home Assistant導入のハードルは一気に下がりました。しかもSonoff USB Zigbee Dongle PlusはPCのUSBソケットに挿してファームウェアを焼くことも可能です。その後、使用しているチップの異なるモデルも発売されました。現在は、もともとのCC2652Pを搭載したモデルがDongle-Pという名前に変わり、新しく登場したEFR32MG21を搭載したモデルがDongle-Eという名前で、Home Assistant界隈で鉄板のZigbeeコーディネータとなっています。


そして2024年にSonoff Dongle-P,-Eを超える勢いで鉄板になってきたZigbeeコーディネーターがSMLight SLZB-06シリーズです。

SLZB-06シリーズはUSB接続の他、有線LANやWi-FiでもHome Assistantサーバーと接続できるコーディネーターで、有線LANはPOE(Power over Ethernet)にも対応しています。
smlight.tech
機能面でみると、LANで接続できるためVM環境でHome Assistantを稼働する場合は、USBパススルーを設定しなくてもよいというメリットがあります。
そして、LANケーブルが来ているところであればHome Assistantのサーバーの場所に関係なくコーディネーターを設置できる、必要であればインターネット経由で遠隔地にコーディネーターを設置することすら可能になります。
また、なんと言ってもWEB UI上で設定が出来てインターネット経由でファームウェアの更新が出来るため、初心者やめんどくさがりの人にはサイコーにラクチンです。私の使っているSonoff Dongle(-P)は元々入っていたファームウェアが古く、あるバージョン以降のファームウェアはTI純正Windows用ソフトウェアのバグで焼けない問題があり、違うソフトウェアを使えば焼けるようなのですが調べるのが面倒で放置していました。


さて、私の環境ではSLZB-06が現時点で必要だという状況では無いのですが、今年度のスマートホーム的抱負のひとつに「Home Assistantの何かが壊れた時にすぐに復旧できる環境を構築する」があります。
私はHome AssisntをRaspberry PI 4上で稼働しているので、物理的に壊れるものとしては、ラズパイ、ストレージ、Zigbeeコーディネーターがあります。
この内、ラズパイはテスト機として予備を持っているし、ストレージも単純に予備を買えば済みます。
しかし、Zigbeeコーディネーターについては、予備があったとしても再ペアリング無しで移行できるのかという不安を抱えていたのですが、面倒なので移行を試すことなく本日まで来てしまいました。
ようやく重い腰を上げて、Sonoff Dongle-PからSLZB-06へ移行を試みて、どのくらい手間なく移行できるのか、それを踏まえてどのように速攻で復旧できる環境を構築するかを考えていこうってのが今回の記事になります。

■SLZB-06シリーズとは

いつ登場したのか定かではありませんが、ファームウェアの初回リリースは2022年10月だそうです。
github.com
実際にHome Assistant界隈でチラホラ見かけるようになったのは2024年の始めくらいからだったと思いますが、Home AssistantにSMLIGHT SLZB 統合が組み込まれたのは2024年9月のようです。
www.home-assistant.io


現在では、Sonoff Dongle-P,-Eと並んで、あるいはそれを超える鉄板コーディネータになっています。
"designed, developed and tested in Ukraine. Ukrainian quality guaranteed."ってことでウクライナで開発されているそうですが、"We have excellent knowledge and experience in dealing with different IC, and we produce own-developed devices. Contact: Shenzhen Baishi Video Technology Co., Ltd."ってことでメイドイン中華のようです。まぁ中華に頼らざるを得ないのがこの世界ですが。


前述したとおり、SLZB-06シリーズはUSBの他、有線LANやWi-FiでもHome Assistantサーバーと接続でき、有線LANはPOE(Power over Ethernet)にも対応しています。
smlight.tech
特徴は以下のとおりです。
・LANで接続できるためVM環境でHome Assistantのサーバーとする場合は、USBパススルーを設定しなくてもよいというメリットがあります。私はHome AssistantのサーバーにRaspberry PI 4を使っているので現状関係は無いのですが、将来的にVM環境へ移行するのもラクになります。
・LANケーブルが来ているところであればHome Assistantのサーバーの場所に関係なくコーディネーターを設置できます。ノイズを避けるためコーディネーターはUSB延長ケーブルでサーバーから離して接続しろって話をチラホラみかけますが50mだって離せます(笑) POE対応なので環境さえ構築すればLANケーブル1本で接続できますね。
・必要であればインターネット経由で遠隔地にコーディネーターを設置することも可能です。
・WEB UI上で設定が出来てインターネット経由でファームウェアの更新が出来る点ため、初心者やめんどくさがりの人にはサイコーにラクチンです。


そして、チップ違いなどたくさんのバリエーションが用意されてます。2025年3月末現在は6種類。
ベースモデルはチップにCP2652Pを搭載したSLZB-06(無印)と、EFR32MG21を搭載したSLZB-06Mです。
SLZB-06p7とSLZB-06p10はSLZB-06(無印)のパワーアップ版で、チップはCP2652Pのメモリを増やしたCP2652P7、CP2652P10がそれぞれ搭載されているそうです。
SLZB-06MG24はSLZB-06Mのパワーアップ版で、チップはEFR32MG21のメモリを増やしたEFR32MG24が搭載されているそうです。
今のところ、後発のパワーアップ版はバグがあるので、ファームウェアがこなれているベースのSLZB-06(無印)かSLZB-06Mが良いってウワサです。
私は今回はSLZB-06(無印)を購入しました。

弱点としては、LANネットワークが不調になるとそれに引っ張られてしまう点と価格ですかね。SLZB-06はAliexpressでの実勢価格が4500円~5000円です。Sonoff Dongle-Pが2500円~3000円なので倍近くします。
ちなみに私が2021年末ごろに最初にDongle-Pを購入した時は1320円だったのですよね。。。ほぼ倍です。インフレ円安超怖い(汗)

■とりま使ってみる

とりあえずLANケーブルと電源(USB-C)を繋ぐと、Home Assistantの統合のページの「発見」に"SMLIGHT SLZB”が現れました。
設定のためのWEB UIには直接アクセスできるはずなのでこの統合をインストールする必要は無いと思っていますがとりまインストールしました。
統合するとこんなエンティティが現れます。


そしてこの画面の左上の「開く」を押すとSLZB-06のWeb UIが開きます。まぁ開かんかったら"http://192.168.11.xx”で開きます。
事前に又はこの時点でMACアドレスを確認して、IPアドレスを固定してしまった方が良いと思います。


まず、ファームウェアを最新のものにアップデートをしました。OSとZigbeeの2つのファームウェアがあるようです。ボタンひとつでファームウェアアップデートが完了するというラクチンさよ。
ただ、コレってインターネットで中華のサーバーに接続してるんですもんねー。Home Assistantを使っている人は結構「ローカル」に拘っている方が多いのに、インターネットに接続して何やらやってるコイツが鉄板として人気があるのは少し違和感を感じますが。。。ファームウェアアップデートをする時以外はルーターで遮断しちゃった方が良いかもですね。


モードは下図のようになっています。

動作モードは「Zigbeeコーディネーター」「Zigbeeルーター」「Matter-over-Thread(beta)」「Zigbee Hub (beta)」の4つが選べます。
そう、まだBetaですがSLZB-06はMatter-over-Threadのコーディネーター(?)としても機能するのです。(※現在のところSLZB-06(無印)のみの機能のようですが)
Zigbee Hub (beta)」は調べたところ、SLZB-06が直接Zigbeeネットワークを作ってくれるモードらしく、少ないデバイスであれば独立してZigbeeネットワークが構築できるらしいです。
接続モードは、前述のとおりEthernetWi-FiとUSBが選べます。
面白いのは、Bluetooth Proxy (ESPHome based)]が実装されている点です。Bluetooth Proxyについてはこちらの記事で書いてます。
sympapa.hatenablog.com


あとSLZB-06の中でScriptが使えるようです。使わなさそうですが、例えば設定した時間に再起動するとかそんなことが出来るみたいです。

■Sonoff Dongle-PからSMZB-06へ移行する

メーカーのマニュアルによると以下の手順によって、CC26xx搭載のZigbeeコーディネーターからだと基本的にIEEEアドレスをコピペしなくても移行できると説明されています。

別の CC26xx Zigbee アダプターから切り替える場合、ほとんどの場合、次の手順に従えば Zigbeeバイスを修復する必要はありません。
1. Zigbee2MQTT/ZHA をシャットダウンし、以前の Zigbee コーディネーターの電源をオフにします。
2. すべての Zigbee ルーターの電源を少なくとも 15 秒間オフにします。建物全体の電源をオフにすることで、これを一度に実行できます。
3. すべての Zigbee ルーターの電源を入れます。
4. 新しい SLZB-06/06p7/06p10 アダプタの電源を入れます。
5. Zigbee2MQTT または ZHA を起動します。
新しい Zigbee コーディネーターで Zigbeeバイスが再びオンラインになるまでには、多少時間がかかる場合があります (例: 5 ~ 10 分)。
これが機能しない場合にのみ、このコーディネーターの IEEE アドレスを以前のコーディネーターと一致するように変更し、手順 1 ~ 5 を繰り返してください。
しかし中身を見るとCC26xxからでかつSLZB-06/06p7/06p10に限定されているので、Sonoffの場合だと同じCC2652Pを使用しているDongle-PからSLZB-06(無印),P7,P10へはIEEEアドレスのコピペ無しで移行できるってことでしょうか?
しかし、Sonoff Dongle-EからSLZB-06(無印),P7,P10への移行とか、Dongle-PからSLZB-06M,M24への移行がIEEEアドレスをコピペすれば出来るとは書かれていないのですよね。このあたりは色々不明な点が多いです。
smlight.tech


私の場合、Dongle-PからSLZB-06(無印)への移行なのでIEEEアドレスのコピペは不要そうではありますが、元のDongle-PのIEEEアドレスをSMZB-06にコピペして移行することにしました。


まず、Zigbee2MQTTで上にある歯車マークを押して"about"タブを選んで、そこに表示されている"Coordinator IEEE Address"をコピーします。
参考にしたあるYoutube動画では頭の0xを除いてコピーしコロンを足すと説明されていましたが、私の環境では0x含めそのままコピペすればOKでした。


次にSLZB-06のWeb UIを開いて、左側メニューの"Z2M and ZHA"ボタンをクリックし、一番下へスクロールして"Flash custom IEEE address"のところに元のDongle-PのIEEEアドレスをペーストして"Write IEEE adress"ボタンを押します。ファームウェアから焼き直しになるようで暫く時間はかかります。


次にZigbee2MQTTの設定をします。
SLZB-06のWeb UIを開いて、左側メニューの"Z2M and ZHA"ボタンをクリックし、一番上にある「Zigbee2MQTT」「ZHA」「USB」の選択肢から「Zigbee2MQTT」ボタンをクリックします。
すると、その下にZigbee2MQTTの設定の.yamlのサンプルが表示されるので、"serial:"の部分をコピーします。


次にHome Assistantで[設定]>[アドオン]を開いてZigbee2MQTTを選び、Zigbee2MQTTを停止した後に「設定」を開いて"Serial:"にペーストして保存します。


その後、USB Dongle-Pを抜いて、Home Assistantをサーバーごと再起動しました。
取説の手順にあったZigbeeルーターバイスの再起動(電源オフオン)は大変なのでしませんでした。
結果としては(ひょっとすると全部確認し切れていないかもしれませんがほぼほぼ)全てのデバイスが再ペアリングなしで接続されました。
Zigbee2MQTTのマップを見ると、最初は見かけ上接続されていないデバイスもありましたが実際には既に接続されていました。数時間経過後はマップ上でも全て接続されている図になりましたが、何故かSLZB-06に直接接続されているエンドデバイスのLQIが"0"になってしまうのですよね。デバイスのリストの方ではそうなっておらず正常な値を示しているのですが。。。何か間違ってるのかな。。。
とりあえず実際にはちゃんと接続されているのでまぁいっか。ぼちぼち再ペアリングしてマップのLQI表示が正常になるのかを確認したいと思います。

トラブルっぽいものはそんなところです。移行して2日間が経過しましたがZigbeeネットワーク自体は問題なさそうですね。しばらくはLAN側の安定性を注視したいと思います。


レスポンスもDongle-Pと変わらんように思います。ってかそんなことあるのかどうか判りませんが、Home Assistantのダッシュボード上でたくさんの照明を一度にオンにするボタンを押した場合、照明への反映は以前より早くなった気がしていて、でも、ダッシュボード上のアイコンへの反映は遅くなった気がします。まぁ誤差範囲ではありますが。。。


尚、SLZB-06を元のUSB Dongleと異なる場所に設置する場合、接続先を近くのルーターに自動的に変更してくれないエンドデバイスが一部存在する(AqaraのZigbee 3.0に対応していないセンサーなど)ので、この手のデバイスは再ペアリングが必要になるかもしれません。

■まとめと今後

少なくとも今回の結果では再ペアリング不要で簡単に移行できることがわかったので、もしSLZB-06が壊れても元のSonoff をDongle-Pを使ってZigbee2MQTTの設定を戻してやれば復旧できる状況にはなりました。
そのうち、予備のSLZB-06を購入して持っておこうかなと考えています。そうすれば、万一稼働しているSLZB-06が壊れた場合、IPアドレスを同じに設定してやればあとはIEEEアドレスの書き換えだけで復旧できることになりますので。
あと、現状、Tuya系のミリ波レーダー人存在センサーが5台あってそれらが1秒に2回ほどレポートして負荷が掛かっているので、Zigbee2MQTTとZHAを併用して負荷分散をしています。しかし、ZHAはZigbee2MQTTと比べるとデバイスの設定可能な項目が少ない場合が結構あるのですよね。
調べたところ、Zigbee2MQTTを2つ(2インスタンス)インストールして2つのコーディネータを使い2系統に分けることが出来るらしいので、GWの連休に暇があれば、2つめのZigbee2MQTT+2つめのSLZB-06を立ち上げてZHAに接続しているデバイスを移行してやろうかなと思っています。


それでは。