【Home Assistant(Hass.io)】
SONOFF Zigbee 3.0 USB Dongle Plusに切り替える
「Home Assistant(Hass.io)でホームオートメーション 再起動!」シリーズです。
zigbeeデバイスで家の隅々の戸締り、人の移動、電灯の点け消し、降雨関係などの状況の把握に努めております。が、特に外のデバイスや明るさセンサーあたりが時々脱落する傾向を見せております。今使っているCC2531ベースのデバイスは、電波が弱いので既に「Not Recommended(非推奨)」と言われており、このあたりが原因かと。
ということで、少しは接続が強く、まあお安いコーディネーター/ルーターであるSONOFF Zigbee 3.0 Dongle Plusに置き換えてみたいと思います。
曰く「Can use ZHA in Home Assistant or Zigbee2MQTT(HomeAssistatのZHAやZigbee2MQTTで使えます)」だそうです。すばらしい。
- 【Home Assistant(Hass.io)】 SONOFF Zigbee 3.0 USB Dongle Plusに切り替える
- 1. 準備
- 2. アダプタ準備
- 3. Zigbee2mqttアドオン設定変更
- 4. デバイス再接続
- 5. ビフォーアフター
- 6. おわりに
この記事の前提条件 | |
---|---|
Home Assistant core | 2022.3.5 |
Home Assistant OS | 7.5 |
Server | Raspberry Pi 4(2GB) |
上記バージョンを前提とした手順です。 (最新版では動かないこともあるかもしれませんが、私が使っている限り、備忘録を兼ねて最新化してゆきたいとは思っています)
1. 準備
SONOFF Zigbee 3.0 USB Dongle Plus
CC2531はもはや推奨ではないので、お薦めのCC2652Pベースのドングルです。電波の飛びはピカイチとまではいきませんが、金属ケース付きでいいかんじです。
そもそも綺麗な箱に入っていて「製品」という感じがします。いままでのCC2531は静電袋に入ったジャンク屋で見つけたパーツみたいでしたから雲泥の差です。
価格:Aliexpressで1500~1800円ぐらい。(10 US$ちょっとぐらいと言っているので、いまの円の実勢は160, 170円/$ぐらいなのか…)
2. アダプタ準備
CC2351からCC2652への変更ではいろいろ頑張ると再ペアリングしなくても大丈夫、とか言っていますが、折角なので綺麗にペアリングしてゆきたいと思います。
2.1. コーディネーター準備
前述のとおり、実はSONOFFのこのアダプタは、最初からZigbee2MQTTで使えます。「Pre-flashed with Z-Stack 3.x.0 coordinator firmware」という事で、Zigbee2MQTTのコーディネーター(Coordinator)として使えるようになっています。が、いつの版のコーディネーターが入っているかは接続してみないとわかりません。面倒なので最新のコーディネーターに入れ替えてしまいましょう。
Zigbee2MQTTのコーディネーターファームウェアの入れ替え方法などは、下記のサイトが参考になります。
notenoughtech.com
(ちなみに、上記記事では「デバイスにうまくペアリングできない!」とか言っていますが、同じ人が「最新のファームウェアに入れかえたら出来ました」と言っています。SONOFFのこのアダプタは、互換性や性能面でベストではないが、価格を考えると魅力的選択肢、とのこと。)
notenoughtech.com
手順は下記のとおり。
- USBドライバ導入
このSONOFFのドングルで使っているUSB2.0のデバイスはCH341SERのようです。いろんな安いデバイスで活躍している石みたいですね。ここからデバイスドライバをダウンロードしてインストールしておきます。 - SONOFF USBドングルを分解
ネジを2本外すとケースから本体を取り出すことができます。 - SONOFF USBドングルを挿入
ブートボタン(USBコネクタに近い方のボタンスイッチ)押しながらPCに差し込む。 - 「 SmartRF Flash programmer」から「FLASH-PROGRAMMER-2」( CC2531の時は「2 / V2じゃないほう」と言いましたが今回は、2の方)をダウンロードしてインストールします。TI(Texus Instruments)のアカウントであるmyTIアカウントを作ることを求められますが、以前つくっているのでそれでログイン。
- Z-stack 3.x.0 Coordinator Firmwareリンク先のフォルダの中のCC1352P2_CC2652P_launchpad_coordinator_20211217.zipをダウンロードして解凍しておきます。
- Flash Programmer2を起動。左側のdevice欄にいろいろ出てきたら、silicon lab(先ほど導入したUSBドライバ)を選択してその下のドロップダウンリストで「CC2652P」を選択。次にFlash Imageに先ほど展開したファイルを指定。Action欄は、「Erase」「Program」「Verify」にチェックを入れる。最後に再生ボタンを押すと書き込みが始まります。OKとなったら良し。
- Zigbee USBアダプターの接続状況の確認
ファームウェアを入れ替えたUSBアダプタを稼働中の(Home Assistantを実行中の)Raspberry Pi 4BにUSB延長ケーブル越しに接続します。
次にZigbee2mqttアドオンの設定に記述するためにUSBがどこに刺さっているかを調べます。左側のサイドバーで「設定」画面を開き「アドオン、バックアップ、Supervisor」を選択して「システム」タブを開きます。Hostパネルの右下の3つ点でHardwareを選びます。
ざっとみてゆくと今回は/dev/ttyUSB0
にSonoffのZigbee USBアダプターが刺さっているということがわかります。
2.2. USBアダプター(ルーター)用ファームウェアの導入
ルーターにファームウェアの書き込む手順は上記のコーディネイター(Coordinator)と同じです。 違いはファームウェアです。下記のサイトからCC1352P2_CC2652P_launchpad_router_20210128.zipをダウンロードし展開して、CC1352P2_CC2652P_launchpad_router_20210128.hexをUSBアダプタに書き込みます。 github.com
3. Zigbee2mqttアドオン設定変更
Zigbee2mqttアドオンを一旦停止して、設定タブのserial:
を下記の様に記述してアドオンを再起動します。
(前略) serial: port: /dev/ttyUSB0 ←ここを書き換える (以下略)
4. デバイス再接続
zigbee2mqttを接続モードにして、ルーターの電源を入れる(USB電源に刺し込む)とルーターは多分自動的にペアリングされると思います。そのほかのデバイスは再度ペアリングが必要なので、下記記事の「3. デバイスの接続手順」に従って、チミチミと設定してください。
5. ビフォーアフター
Z-Stack coordinator firmwaresの記載によれば、下記のような状況らしい。CC2531デバイスの時は、ルーターの配下の最大デバイス数も20ぐらいだったのでどんどんルーターを増やす必要があった(結局、余裕を見て4ルーターで運用してました)が、どうやら今回のものは結構接続できそう。
Z-stack | ver. | デバイス | コーディネーター 直下 |
ルーター当たりの デバイス最大数 |
---|---|---|---|---|
Z-Stack_Home_1.2 (source_routing) |
1.2HA | CC2531 | 5 | 21 ? |
Z-Stack_3.x.0 | 3.0 | 今回のもの CC2652P |
50 | ? 全体で200? |
ネットワーク図と接続状況の対比を下記に纏めておきます。
LQI(Link Quality Index)がどの程度の参考になるかはわかりませんが、20前後だったのが、100越えの数値に改善しました。
CC2531 コーディネーター |
Sonoff zigbee 3.0 USB Dongle Plus | |
---|---|---|
ネットワーク図 |
⇒ | |
接続状況 |
⇒ |
6. おわりに
依然、脱落するデバイスが無いわけではありません。どうやらしばらく反応が無いときに脱落状態になったりします。ただ以前はそうなると完全に復旧は見込めないのですが、今は、再度反応があったときに再接続される可能性が高くなりした。