Zigbeeとは簡単に言えば、Bluetoothより通信速度が遅く、距離が短め、消費電力が低く、同時接続台数が多いもの。
特にスマート家電等はスイッチとしての役割が多いためBluetoothよりZigbeeが利便性が高いと言うわけだ。
大体のZigbeeデバイスにはハブが必要となっており、デバイス単体では動かすことができない。
これはHomeKitを構築する際もホームハブが必要なのと同じだ。
今回はZigbee2MQTTをRaspberry Piにインストールし、メーカーの垣根を超えた様々なZigbeeデバイスを使えるようにするのが目的だ。
ちなみにZigbee2MQTTを使うことで対応できるZigbeeデバイスは以下のリンクより。
もちろん、Homebridgeを導入前提なのでまだの方は以下から。
できるだけ簡単にを意識して書いてみたが、やや難度は高いのでご注意。
事前準備
Zigbeeの電波を送受信できるUSBアダプタが必要なので以下のようなものを準備する必要があるので買っておこう。
もちろんZigbee2MQTTに対応するZigbeeデバイスも予め用意しておこう。
例えば以下のようなものだ。
Mosquittoをインストールする
Zigbee2MQTTを動かすにはMosquittoという橋渡し的なものが必要なのでインストールする。
ターミナル等からラズパイにログインしよう。
この辺りは以前Homebridgeを構築した時と同様だ。
ssh ユーザー名@ホスト名.local
ログイン後、以下を実行する。
sudo apt install mosquitto mosquitto-clients
インストール完了後、以下で起動する。
sudo systemctl start mosquitto
あとはラズパイ起動時に自動起動するように設定もしておく。
sudo systemctl enable mosquitto.service
Zigbee送受信機USBをRaspberry Piに接続する
まずは接続したUSBを見つける。
sudo dmesg
すると、以下のような文字列があるはずだ。
usbcore: registered new interface driver ch341
usbserial: USB Serial support registered for ch341-uart
ch341 3-1:1.0: ch341-uart converter detected
usb 3-1: ch341-uart converter now attached to ttyUSB0
「usbcore: registered new interface driver ch341」あたりで検索をかければ見つかるはずだ。
このattached to の後に書かれた文字列をメモしておく。
大体「ttyUSB0」か「ttyACM0」らしいよ。
Zigbee2MQTTをインストールする
npmとnode.jsは予めインストールされていると思うので省略する。
していない場合は以下のリンクよりしておく。
Zigbee2MQTT用ディレクトリを作成する。
sudo mkdir /opt/zigbee2mqtt
ディレクトリの所有者変更。
sudo chown -R ${USER}: /opt/zigbee2mqtt
Zigbee2MQTTリポジトリをクローン。
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
ディペンデンシーをインストール。
cd /opt/zigbee2mqtt
npm ci
アプリをビルド。
npm run build
続いてZigbee2MQTTの設定ファイルを編集する。
vim /opt/zigbee2mqtt/data/configuration.yaml
エディタを選ぶように言われたらvim.basicを選ぼう。
すると編集できるようになるので、以下のテキストの色でラインを引いた箇所を編集した後にコピペする。
# MQTT settings
mqtt:
# MQTT base topic for Zigbee2MQTT MQTT messages
base_topic: zigbee2mqtt
# MQTT server URL
server: 'mqtt://localhost'
# MQTT server authentication, uncomment if required:
# user: my_user
# password: my_password
# Serial settings
serial:
# Location of the adapter (see first step of this guide)
port: /dev/ttyUSB0
#adapter: ezsp
advanced:
network_key: GENERATE
frontend: true
ペースト及び編集が完了したら、Escキーを押して「:wq!」を入力、保存して終了する。
一度試しに起動してみよう。
cd /opt/zigbee2mqtt
npm start
エラーが出なければOKだ。Ctrl + Cで停止。
続いて自動起動を作成する。
sudo vim /etc/systemd/system/zigbee2mqtt.service
以下のテキストの色でラインを引いた部分を編集した後にコピペする。
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
Environment=NODE_ENV=production
ExecStart=/usr/local/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
# Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
StandardError=inherit
Restart=always
RestartSec=10s
User=pi
[Install]
WantedBy=multi-user.target
完了後、「:wq!」で保存して終了。
試しに起動させてみる。
sudo systemctl start zigbee2mqtt.service
うまく起動するようならば有効にする。
sudo systemctl enable zigbee2mqtt.service
Homebridgeにプラグインを入れる
HomebridgeのWeb管理ページのプラグインから検索ボックスに「Homebridge Zigbee2MQTT」と入力し検索後、Homebridge Zigbee2MQTTをインストールする。
恐らく特別なことをしていなければ設定項目を特に書き換える必要はないと思う。
インストール後、Homebridgeの再起動をしておこう。
Zigbee対応製品をペアリングしてみる
Zigbee2MQTTが動いているIPアドレス等を指定してWeb管理ページを開く。
私は「http://ラズパイのホストネーム.local:8080」でアクセスした。
うまくアクセスできると以下のような画面が表示される。(私は既に登録済みなのでペアリング済み製品が表示されている)
ペアリングする時には、上部のDisable joinの部分をクリックしてカウントダウンが始まるとペアリングが許可された状態になる。
カウントダウン状態になっている最中にZigbee製品のペアリング操作を行うとペアリングが行われる。
これでペアリングが完了すると「ホーム」にも反映されるはずだ。
終わりに
一度環境を作ってしまえば非常に簡単にペアリングもでき、普通に使った時よりも「ホーム」で使える機能が多かったり、様々なハブを介すことなく一括で管理もでき便利だ。
環境づくりが少し手間だがチャレンジしてみるのも良いかもしれない。
コメント