Zigbee2MQTTを利用してHome AssistantにZigbeeデバイスを統合
前回の記事でHome Assistant Supervisedをインストールしました。今回はSupervisedの機能の一つ、アドオンを使ってZigbeeデバイスを統合します。
Zigbeeについて
Zigbeeは低電力・低遅延の無線通信規格で、メッシュネットワーク(各デバイスが信号を中継してくれるので広範囲で利用できる)にも対応とIoTデバイスに向いているので、Philips Hueをはじめ多くのメーカーに採用されています。しかしオープンな規格でありながら、基本的には各メーカーが用意するハブやアプリを用意しなければいけません。
Home AssistantではUSB接続のZigbeeドングルが一つあれば各メーカーのデバイスを統合することができます。
こちらのドングルは新型のZBDongle-Eと旧型ZBDongle-Pがありますが、旧型の方が推奨されているみたいです。
Home AssistantにZigbeeデバイスを統合する方法
Home AssistantにZigbeeデバイスを統合するにあたって、Zigbee Home Automation (ZHA) を利用する方法とZigbee2MQTTを利用する方法の2つがあります。それぞれの特徴はこんな感じ。
- Zigbee Home Automation (ZHA)
- ZigbeeデバイスをHome Assistantに直接統合
- 設定・管理が簡単
- Zigbee2MQTT
- 対応デバイスが多く、新しいデバイスのサポートが比較的早い
- ZigbeeデバイスとHome AssistantをMQTTというプロトコルを介して統合
- Zigbeeデバイス ↔︎ Zigbee2MQTT ↔︎ MQTTブローカー ↔︎ Home Assistantというイメージ
- 設定・構成が複雑(その代わりカスタマイズ性が高い)
ZHAの方が簡単でシンプルな構成になるのですが、経験上Zigbee2MQTTじゃないと使えないデバイスがあったりします。そうすると結局ZHAだけでは完結せずにZigbee2MQTTも必要になってくるので、はじめからZigbee2MQTTを採用します。
Mosquitto brokerのインストール
Zigbee2MQTTをインストールする前に、Mosquitto brokerというMQTTブローカーをインストールします。Zigbee2MQTTとHome Assistantを繋ぐサーバーのような位置付けです。
Home Assistantの設定からアドオンを選択し、右下の「アドオンストア」をクリックします。
Mosquitto brokerを検索。
インストールをクリック。
インストールが完了したら、開始をクリック。
無事に立ち上がりました。ユーザー名やパスワードを設定することもできますが、Home Assistant内でMQTTにアクセスする場合は不要なのでそのままにしておきます。
MQTTインテグレーションの追加
MQTTブローカー(サーバー)が立ち上がったので、Home AssistantとMQTTブローカーを繋ぐ準備をします。設定から「デバイスとサービス」を選択すると「MQTT」の項目が出てきていると思うので設定をクリックします。
送信。
完了。かんたんです。
追加されたMQTTインテグレーションを開くと、先ほどインストールしたMosquitto brokerがエントリーとして認識されていることが確認できます。
Zigbeeドングルのパスの確認
USB Zigbeeドングルを接続して dmesg
コマンドでカーネル出力すると、以下のようにUSBデバイスの情報が確認できます。
$ dmesg
[ 312.272886] usb 1-1.4: new full-speed USB device number 3 using xhci_hcd
[ 312.378342] usb 1-1.4: New USB device found, idVendor=10c4, idProduct=ea60, bcdDevice= 1.00
[ 312.378377] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 312.378392] usb 1-1.4: Product: Sonoff Zigbee 3.0 USB Dongle Plus
[ 312.378404] usb 1-1.4: Manufacturer: Silicon Labs
[ 312.378416] usb 1-1.4: SerialNumber: 0001
[ 312.532723] usbcore: registered new interface driver usbserial_generic
[ 312.532960] usbserial: USB Serial support registered for generic
[ 312.536662] usbcore: registered new interface driver cp210x
[ 312.537005] usbserial: USB Serial support registered for cp210x
[ 312.537111] cp210x 1-1.4:1.0: cp210x converter detected
[ 312.545546] usb 1-1.4: cp210x converter now attached to ttyUSB0
パスは /dev/ttyUSB0
ですね。ただ公式のドキュメントによると /dev/tty*
以下のパスは変わることがあるため、可能であれば/dev/serial/by-id/
以下のパスを指定するのが良いそうです。
確認したところ、IDのパスを取得できました。こちらを指定するのが良さそうです。
$ ls /dev/serial/by-id/*
/dev/serial/by-id/usb-Silicon_Labs_Sonoff_Zigbee_3.0_USB_Dongle_Plus_0001-if00-port0
Zigbee2MQTTのインストール
アドオンストアを再度表示し、右上のメニューからリポジトリを選択します。
リポジトリのURL https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
を入力し、追加をクリックします。
追加できたらダイアログを閉じます。
Zigbee2MQTTを検索し、「Zigbee2MQTT」を選択します。
インストール。
インストール後すぐに開始せず、設定タブを開きます。
serialの欄に port: 先ほど確認したドングルのパス
を入力して保存します。IDが取得できなかった場合は port: /dev/ttyUSB0
のように指定すれば良いはずです。
情報タブに戻って開始します。サイドバーに表示をオンにしておきましょう。
ログを開いて、MQTTサーバーに接続したこととZigbee2MQTTが開始されたことを確認します。
サイドバーからZigbee2MQTTの画面を開いたところです。この画面でZigbeeデバイスとのペアリングや設定などを行なっていきます。
長くなってきたので、ペアリング作業は別の記事でご紹介していきます。