zigbee2mqtt

#569

Zigbee2MQTT

zigbee2mqtt je sada nástrojů, které umožní propojit Zigbee periferie s MQTT. Ke zprovoznění je potřeba:

  1. Počítač – obvykle to jede na počítači, kde je nainstalovaný Shipard Node, který řídí LAN.
  2. Nějaký USB Zigbee dongle – používám CC2652RB, ale asi to jede s ledasčím. USB dongle musí být připojen přes USB kabel (prodlužku) – přímo v USB portu počítače to nefunguje!

Instalace

Instalace je popsaná na https://www.zigbee2mqtt.io/…nstallation/ respektive https://www.zigbee2mqtt.io/…1_linux.html.

Ve většině případů je na řídícím počítači již nainstalován nodejs, takže pro vlastní instalaci stačí dát pouze

cd /opt/
git clone https://github.com/Koenkk/zigbee2mqtt.git
cd /opt/zigbee2mqtt
npm ci

POZOR: celé to neběží pod uživatelem root – tj. nedělá se to pod sudo. Takže je třeba to pustit buď pod sebou samým, případně si na to udělat zvláštního uživatele (což je pro domácí podmínky asi zbytečné).

Základní nastavení

Nastavení se nachází v souboru /opt/zigbee2mqtt/data/configuration.yaml.

Pro základní nastavení by mělo stačit něco jako:

mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://localhost'
serial:
  port: /dev/ttyACM0
frontend:
  port: 8099
advanced:
  network_key: GENERATE
  1. frontend/port říká http port, na kterém bude běžet webové rozhraní, tj. v prohlížeči se zadá adresa typu http://10.x.y.z:PORT
  2. serial/port říká cestu na USB dongle. Ideální je použít plnou cestu, tj. něco jako /dev/serial/by-id/usb-Silicon_Labs_slae.sh_cc2652rb_stick_-_slaesh_s_iot_stuff_00_11_22_33_44_55_66_77-if00-port0. Pro zjištění cesty stačí pustit ls /dev/serial/by-id/ – obvykle tam bude jen jedno zařízení.

První spuštění

Pro otestování funkčnosti stačí pustit

cd /opt/zigbee2mqtt
npm start

Chvíli to trvá a průběžně se vypisují ladící hlášky. Nemělo by to skončit chybou a mělo by to zůstat běžet (přerušit se to musí pomocí ctrl+c).

Pokud to zafunguje, mělo by fungovat i webové rozhraní.

Zároveň by mělo jít sledovat pomocí mosquitto_sub -t "#" -F '@Y-@m-@d @H:@M:@S : %t : %p' provoz na MQTT serveru.

Spárování prvního zařízení

Ideální je začít žárovkou. V podstatě by mělo stačit:

  1. Ve webovém rozhraní povolit párování (nahoře je roletka Permit Join (All)).
  2. Zapnout žárovku v blízkosti USB donglu (blízkost je cca 20cm, ale jsou žárovky, kde to jede i na cca 3 metry – tohle je prostě různé). Úspěšné spárování je potvrzeno tím, že žárovka obvykle zabliká.

Spárované zařízení se objeví ve webovém rozhraní a jde si s ním hrát, tj. zapínat/vypínat, řídit jas apod.

Spuštění po startu

Pokud všechno funguje, je potřeba nastavit, aby se to celé spouštělo po staru počítače – tj. aby o běželo jako služba.

K tomu je potřeba vytvořit soubor /etc/systemd/system/zigbee2mqtt.service s obsahem

[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
User=USER
Group=USER
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always

[Install]
WantedBy=multi-user.target

V souboru je potřeba nastavit správně položky User a Group, tj. dát tam sám sebe, případně speciálního uživatele, kterého jsme vytvořili.

Službu nastartujeme pomocí

sudo systemctl start zigbee2mqtt

a funkčnost ověříme pomocí

systemctl status zigbee2mqtt.service

Pokud všechno běží, povolíme automatické spouštění služby po startu počítače:

sudo systemctl enable zigbee2mqtt.service