ZigBee ve zkratce
Co se dozvíte v článku
ZigBee je bezdrátová komunikační technologie standardizovaná od roku 2004 jako IEEE 802.15.4, pracuje na frekvencích 868, 902 až 912 MHz a 2,4 GHz a patří do skupiny Personal Area Networks. V těchto tzn. osobních sítích můžeme najít také známý protokol Bluetooth, neboli standard IEEE 802.15.1. Protokol ZigBee však není konkurence pro Bluetooth a ani pro Wi-Fi, jak se může na první pohled zdát z jedné používané frekvence.
ZigBee vyniká svou jednoduchou implementací, minimálními nároky na hardware a hlavně nízkou spotřebou energie. Například v běžných pokojových čidlech teploty a vlhkosti udávají výrobci průměrnou výdrž 3V baterie CR2450/CR2477 až dva roky. Vzhledem k nízké spotřebě je protokol schopen zajistit bezdrátovou komunikaci maximálně na desítky metrů. To ale ve skutečnosti není problém, protože ZigBee kromě topologie typu hvězda, tedy přímého spojení zařízení s centrálním bodem, podporuje ještě dvě další topologie.
Tou první je topologie typu strom, která umožňuje pomocí opakovačů prodloužit vzdálenost mezi koncovým a centrálním bodem. Druhá se nazývá mesh síť, která navíc přidává redundantní spojení mezi zařízeními a eliminuje tak nedostupnost vzdálenějších zařízeních, které by byly závislé na některém uzlu po cestě. Spojení mezi uzly se navíc sama průběžně transformují podle úrovně signálu a nebo na základě toho, jak zařízení přidáváme či naopak odebíráme.
V ZigBee síti se tedy setkáme se třemi typy zařízení.
- Koordinátor se může vyskytovat v síti právě jeden. Jedná se o centrální jednotku, která uchovává kompletní informace o síti. Může se jednat o bránu konkrétního výrobce, který nabízí kompletní řešení chytré domácnosti (Philips HUE, IKEA Tradfri, Silvercrest, Sonoff apod.) a nebo tzv. Zigbee USB dongle, který přináší universální použití a který rozebereme v dalších kapitolách.
- Směrovač (router) prodlužuje dosah sítě a předává tak data dalším zařízením. Jedná se o jakékoliv zařízení, které je pod trvalým napětím a tudíž se nevypíná – žárovky, řídící zásuvky, relé.
- Koncové zařízení komunikuje pouze s nadřazeným uzlem (koordinátorem nebo směrovačem), ale nepřenáší data z jiných zařízeních. Taková zařízení navíc nemusí neustále komunikovat a díky tomu, že často přechází do režimu spánku, dochází zde k již zmíněné úspoře energie. Do této skupiny patří všechna zařízení napájená bateriemi – čidla, sensory, spínače/vypínače.
Zigbee USB dongle
Pokud máme v domácnosti zařízení různých výrobců, což nebývá tak neobvyklé a nechceme od každého výrobce provozovat vlastní bránu pro Zigbee, můžeme využít tzv. Zigbee USB dongle doplněný o obslužný software. Samozřejmě to znamená náročnější zprovoznění, než pouhé zapojení brány Zigbee výrobce a spuštění obslužné mobilní aplikace. Ale také nutnost takové řešení udržovat a průběžně aktualizovat, což ale pro čtenáře tohoto článku nebude jistě překážka. Výhodou je, že nebudeme závislí na konkrétním výrobci a jeho zařízení, ale hlavně budeme mít v domácnosti jen jednu síť Zigbee, což je výhodné pro větší instalace a pokrytí.
Na trhu je k dispozici několik druhů USB zařízení. Ukazuje se, že nejčastěji používané jsou výrobky obsahující čipy od Texas Instruments nebo Silicon Labs EmberZnet. Konkrétně čipy CC2531
, CC2652P
a EFR32MG21
. Čip CC2531
spíše nedoporučuji, protože v některých případech je nutné jej nejdříve naflashovat na vhodný firmware, současně má vysílací výkon jen 5 dBm a podporuje maximálně 20–30 připojených zařízení.
Mnohem lepší je čip CC2652P
s vysílacím výkonem až 20 dBm, zvládá více připojených zařízení a obsahuje jej produkt Sonoff Zigbee 3.0 USB Dongle Plus ZBDongle-P. Nejvíce doporučuji (a sám jej používám) nástupce tohoto modelu, který již obsahuje čip EFR32MG21
a jedná se o produkt Sonoff Zigbee 3.0 USB Dongle Plus ZBDongle-E. Výrobce udává, že na tento USB dongle je možné připojit více než 100 zařízení. Mám připojeno přibližně 50 zařízení ve vícepodlažním domě, včetně jeho okolí. Funguje skutečně spolehlivě a cenově se např. na Aliexpresu pohybuje mezi 500 a 600 Kč. Pro další ukázky budu uvažovat právě tento.
Zigbee dongle ZBDongle-E se po připojení detekuje takto:
# dmesg usb 2-3: Product: SONOFF Zigbee 3.0 USB Dongle Plus V2 [ 25.124418] cdc_acm 2-3:1.0: ttyACM0: USB ACM device [ 25.124540] usbcore: registered new interface driver cdc_acm [ 25.124545] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters # lsusb Bus 002 Device 002: ID 1a86:55d4 QinHeng Electronics SONOFF Zigbee 3.0 USB Dongle Plus V2 # ls -all /dev/serial/by-id/ total 0 drwxr-xr-x 2 root root 60 Jun 26 21:21 . drwxr-xr-x 4 root root 80 Jun 26 21:21 .. lrwxrwxrwx 1 root root 13 Jun 26 21:21 usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221202083439-if00 -> ../../ttyACM0
Nyní můžeme přistoupit k softwarové implementaci brány Zigbee. Nejčastěji se používají dvě – Zigbee Home Automation a Zigbee2Mqtt. Pro obě varianty si ukážeme konkrétní postup instalace s přidáním jedné žárovky. Pro účely tohoto článku jsem si připravil testovací lab – síť Zigbee s několika zařízeními, abych vám mohl ukázat, jak to v praxi vypadá a zda bude možné všechny zařízení připojit a ovládat. Závěrem zkusím krátce shrnout výhody a nevýhody obou implementací.
Testovací lab se skládá s těchto zařízení:
- USB Zigbee 3.0 Sonoff ZBDongle-E Plus
- Žárovka IKEA TRADFRI E27 bílá 1000lm, teplé světlo
- Žárovka Philips Hue White A60 E27 1100lm, teplé světlo
- Dveřní a okenní sensor Xiaomi Aqara
- Zásuvka IKEA TRADFRI
- Zásuvka s měřením spotřeby Tuya TS011F
- Vnitřní pohybový sensor Philip Hue motion s měřením teploty
- Vnitřní pohybový sensor IKEA TRADFRI motion
- Bateriový vypínač Philips Hue dimmer switch v1
- Sensor teploty a vlhkosti Sonoff SNZB-02
Zigbee Home Automation
Zigbee Home Automation neboli ZHA je integrace obsažená přímo v Home Assistantu. Výhodou je, že pro zprovoznění Zigbee USB dongle není potřeba instalovat či nastavovat cokoliv dalšího. Instalaci provedeme v menu Nastavení → Integrace → Přidat integraci → Zigbee Home Automation a zvolíme sériový port s připojeným USB donglem. V tomto případě je to /dev/ttyACM0
.
Poté zvolíme volbu „Vymazat nastavení sítě a vytvořit novou síť“, pokud byl USB dongle již v minulosti použit. V seznamu automatizací se objeví nová integrace a kliknutím na „1 zařízení“ se dostaneme do profilu našeho nového koordinátora. Zde volíme volbu „Přidat zařízení prostřednictvím tohoto zařízení“ – pozor, může být překrytá. V tuto chvíli se začnou vyhledávat nová zařízení v dosahu.
Vždy je potřeba každé zařízení uvést do režimu párování. Tento režim je aktivní přímo z výroby, takže pokud zařízení připojujeme poprvé, není potřeba nic resetovat. Pokud již bylo zařízení použito, je potřeba vyhledat na internetu, jakým způsobem se párování provádí. Některé zásuvky či bateriové vypínače mívají malé zapuštěné resetovací mini tlačítko na špendlík, některé žárovky (např. IKEA TRADFRI) se resetují tak, že se musí 6× za sebou zhasnout a rozsvítit. Jiná zařízení, např. různé senzory, mají mini tlačítko, které pro vynucení režimu párování stačí několik sekund podržet.
Po úspěšném přidání se objeví v sekci „Připojená zařízení“ a po rozkliku se zobrazí podrobnější informace o zařízení, ovládací prvky či další nastavení specifická pro daný typ zařízení.
Seznam všech zařízení je pak vidět v detailu koordinátora.
U každého zařízení, včetně koordinátora, můžeme v poli informace o zařízení kliknutím na tři svislé tečky vstoupit do pokročilejšího nastavení kliknutím na „Správa Zigbee zařízení“. Další volbou je pak „Zobrazit síť“, kde uvidíme graficky znázorněno, jaké zařízení jsou mezi sebou spárovaná, včetně typu a síly signálu.
Zigbee2Mqtt
Zigbee2Mqtt je softwarová brána, která přímo komunikuje se zařízeními Zigbee a data z nich získaná, např. informace o teplotě, posílá do MQTT Message Broker k dalšímu zpracování. Samozřejmě komunikuje i opačně, tedy že požadavky na zařízení Zigbee, např. rozsvícení žárovky, poslané do MQTT Message Broker odebírá a následně provádí. Jak název napovídá, ke zprovoznění budeme potřebovat dvě služby.
Instalace MQTT Message Broker
Tou první službou, bez které by se to neobešlo, je Message Broker, konkrétně Eclipse Mosquitto. S největší pravděpodobností budeme chtít provozovat Mosquitto na stejném serveru, jako Home Assistant. Z minulého dílu již víme, že existuje několik variant instalace a tak probereme postup pro ty nejčastější z nich.
Postup pro Home Assistant Container
Jelikož máme zprovozněný Home Asisstant v Dockeru, nainstalujeme Mosquitto také jako dockerový kontejner. Připravíme adresářovou strukturu a konfigurační soubor. Jelikož služba bude dostupná pouze z vnitřní síti, můžeme klidně využít anonymního přihlášení. Pokud bychom provozovali Mosquitto na jiném serveru, určitě je potřeba přihlašovací údaje nastavit.
# mkdir -p /opt/mqtt/{config,data,log}
Konfigurace /opt/mqtt/config/mosquitto.conf
allow_anonymous true listener 1883 persistence true persistence_location /mosquitto/data/ log_dest file /mosquitto/log/mosquitto.log
Nyní již stačí spustit kontejner na standardním portu 1883
, případně jako službu v systemd.
# docker run -d --name mqtt -p 1883:1883 -v /opt/mqtt/config:/mosquitto/config -v /opt/mqtt/data:/mosquitto/data -v /opt/mqtt/log:/mosquitto/log eclipse-mosquitto:latest
Postup pro Home Assistant OS/Supervisor
Instalaci v tomto případě provedeme jednoduše pomocí Doplňků. Přejdeme do menu Nastavení → Doplňky → Obchod s doplňky → Mosquitto broker a zvolíme „Nainstalovat“. Po úspěšné instalaci zkontrolujeme, že je zaškrtnuto pole „Spustit při spuštění“ a klikneme na Spustit. Nastavení (viz menu nahoře) můžeme ponechat standardní.
Tím to ale nekončí, protože Mosquitto jako doplněk neumožňuje využít anonymního přihlášení. Vytvoříme tedy nový uživatelský účet přímo v Home Assistant v menu Nastavení → Lidé → Přidat osobu. Uživatele pojmenujeme např. „mqtt“, zaškrtneme „Povolit osobě se přihlásit“, vyplníme heslo a zvolíme „Může se přihlásit jen z místní sítě“.
Instalace Zigbee2Mqtt
Instalaci si předvedeme opět pro nejčastější varianty instalace Home Assistant.
Postup pro Home Assistant Container
Podobně jako v případě instalace Mosquitto, spustíme Zigbee2Mqtt jako dockerový kontejner. Připravíme opět adresářovou strukturu a konfigurační soubor.
# mkdir /opt/zigbee2mqtt/data
Mosquitto server bude v případě docker instance díky docker-proxy typicky poslouchat na 172.17.0.1:1883
. IP adresu dockerového rozhraní můžeme zjistit přímo z operačního systému:
# ip a | grep "inet.*docker0"
Konfigurace /opt/zigbee2mqtt/data/configuration.yaml
vypadá následovně, cestu k USB dongle pro atribut port
již známe z předchozích kapitol. Případně je možné využít i /dev/ttyACM0
. Důležité je uvést i atribut adapter
, protože jinak Zigbee2Mqtt s tímto USB donglem nenastartuje.
advanced: log_level: debug mqtt: server: mqtt://172.17.0.1:1883 base_topic: zigbee2mqtt serial: port: >- /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221202083439-if00 adapter: ezsp frontend: true homeassistant: true
Nyní již stačí spustit dockerový kontejner na standardním portu 8080
, případně jako službu v systemd. I v rámci spuštění kontejneru je nutné definovat parametr --device
stejnou hodnotou, jako v konfiguračním souboru výše.
# docker run -d --name zigbee2mqtt -p 8080:8080 --device=/dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221202083439-if00 -v /mnt/docker/zigbee2mqtt/data:/app/data -v /dev/serial/by-id:/dev/serial/by-id -v /run/udev:/run/udev:ro -e TZ=Europe/Prague koenkk/zigbee2mqtt:latest
Postup pro Home Assistant OS/Supervisor
Instalaci provedeme opět pomocí Doplňků, jako v případě Mosquitto Message Broker. Zde s tím rozdílem, že pro Zigbee2Mqtt musíme přidat vlastní repozitář. V okně „Obchod s doplňky“ klikneme vpravo nahoře na tři tečky, zvolíme „Repozitáře“ a zadáme URL https://github.com/zigbee2mqtt/hassio-zigbee2mqtt
.
Po přidání stačí provést reload prohlížeče a možnost pole Zigbee2Mqtt se objeví. Po kliknutí nainstalujeme doplněk standardním způsobem. Před spuštěním je ale potřeba provést jednoduché nastavení. Do pole mqtt
zadáme:
server: mqtt://localhost:1883 user: mqtt password: password
Do pole serial
zadáme stejně jafko při ruční instalaci port: /dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20221202083439-if00
. Nyní již stačí Zigbee2Mqtt spustit a zaškrtnout „Zobrazit v postranním panelu“, abychom mohli jednodušeji přistoupit k webovému rozhraní.
Spuštění
Webové rozhraní Zigbee2Mqtt je dostupné na adrese http://ip_adresa:8080
v případě ruční instalace a nebo jako proklik v menu Home Assistant. Začneme tím, že stiskneme tlačítko „Povolit připojení (vše)“ a pokud jsou zařízení v režimu párování, začnou se automaticky připojovat podobně, jako v případě ZHA.
Projekt Zigbee2Mqtt má na svém oficiálním webu seznam všech podporovaných zařízení, včetně podrobné dokumentace. Nemusíme tedy oproti ZHA hledat na internetu, jestli je naše zařízení podporované, jaké entity nabízí a jak se např. nastavuje režim párování. Všechny tyto informace jsou detailně popsány, včetně pokročilých voleb či různých omezení.
Webové rozhraní je oproti ZHA rozsáhlé a umožňuje velké množství nastavení, projdeme si jej trochu podrobněji. Základní obrazovka po přidání všech testovacích zařízení vypadá následovně.
Všimněme si rozklikávacího odkazu ve sloupci „Model“, který automaticky přesměruje na dokumentaci k danému zařízení. Tam se můžeme např. dočíst, jak se přepíná zařízení do režimu párování. Ve sloupci „Napájení“ je zřejmé, zda-li se jedná o typ směrovač (napájení ze sítě) či koncové zařízení (ikonka baterie).
Každé zařízení po rozkliku zobrazuje další možnosti. V menu „Vystavuje“ je uveden seznam všech entit, které zařízení nabízí, některé lze přímo ovládat. V menu „Hlášení“ je možné upravovat různé atributy, např. intervaly odezvy, v menu „Nastavení (specifické)“ pak např. kalibraci teplot, přesnost na desetinná místa apod.
Pomocí menu „Vývojářská konzole“ můžeme dle dokumentace nastavit opravdu pokročilé parametry, např. vynulovat čítač spotřebované energie u měřící zásuvky. V menu „Svázat“ je možné propojit dvě Zigbee zařízení přímo mezi sebou. Typické použití je propojení vypínače a žárovky (takto je mimochodem z výroby svázán vypínač Philips HUE prodávaný v sadě se žárovkou). Toto je ideální pro případ výpadku Home Assistanta, Zigbee2MQTT či Mosquitto brokeru.
Nastavení je jednoduché. Zvolíme požadovaný vypínač, menu „Svázat“, vybereme „Zdrojový koncový bod“, „Cíl“ bude požadovaný žárovka a ve sloupci „Clustery“ zaškrtnout kromě „OnOff“ také „LevelCtrl“. To umožní i regulovat jas žárovky přímo vypínačem.
Z dalších voleb je užitečné menu „Ovládací panel“, zobrazí jednoduchý dashboard, kde je možné všechny zařízení ovládat pro případ, že nefunguje Home Asisstant.
Menu „Nastavení“ nabízí velké množství voleb, nechám na každém, aby si prostudoval. Ve většině případů totiž není potřeba zde cokoliv dalšího nastavovat, pokud vše funguje dle očekávání.
V menu „Skupiny“ můžeme zařadit více zařízení do vlastních skupin a ovládat je tak najednou. V mém případě takto sdružuji více světel na jednotlivých chodbách do jednoho zařízení. Samozřejmě se takto vytvořené skupiny objeví i v Home Assistant.
V menu „OTA“ můžeme zkontrolovat aktualizace firmware zařízení, které tuto možnost podporují (např. vše od IKEA, Philips nebo Tuya). Stačí kliknout na tlačítko „Zkontrolovat vše“. Pokud by se kontrola na nový firmware u nějakého zařízení neprovedla, typicky u vypínačů či senzorů pohybu, stačí zmáčknout vypínač resp. projít okolo senzoru. Pokud existuje nový firmware, stačí jen potvrdit tlačítkem „Aktualizovat firmware zařízení“. Upload firmware a samotná aktualizace trvá dlouho, přece jen protokol Zigbee není určen na rychlý přenos dat. Jakákoliv žárovka se může aktualizovat i 30 minut.
Na závěr moje nejoblíbenější menu „Mapa“. Podobně jako v případě ZHA je možné vizualizovat naší síť Zigbee.
MQTT integrace
Nyní, když máme vše připraveno v Zigbee2Mqtt, je potřeba ještě předávat data ze zařízení do Home Assistant, aby bylo možné je z tohoto prostředí také ovládat. Jelikož se všechny zprávy posílají do připraveného Mosquitto Message brokera, stačí přidat integraci MQTT. To provedeme standardně v menu Nastavení → Integrace → Přidat integraci → MQTT.
Pokud jsme Mosquitto Message Broker instalovali ručně jako dockerový kontejner pro variantu Home Assistant Container, do pole „Broker“ vyplníme IP adresu a port běžící služby. Tedy stejné údaje, jaké jsme použili v konfiguraci Zigbee2Mqtt, tj. 172.17.0.1:1883
. Jelikož nepoužíváme žádnou autentizaci, zbylá pole ponecháme prázdná. V případě, že používáme Home Assistant OS/Supervisor, je postup stejný, jen není nutné vyplňovat připojovací údaje, protože Home Assistant sváže integraci přímo s Mosquitto Message Brokerem.
Po úspěšném připojení se vyhledají všechna nová zařízení a instalaci je možné dokončit. Všechna zařízení jsou pojmenována na základě jejich IEEE adresy. Přejmenování je možné provést editací zařízení v Zigbee2Mqtt rozhraní. Pokud zaškrtneme pole „Aktualizovat ID entity v Home Assistant“, dojde k přejmenování i v Home Assistant.
ZHA nebo Zigbee2Mqtt
Na závěr jsem ponechal srovnání jednotlivých implementací a shrnutí, zdali se podařilo vybraná zařízení v mé testovací Zigbee síti plně zprovoznit.
V zásadě se dá říci, že jak v ZHA, tak v Zigbee2Mqtt se povedlo připojit všechna zařízení. U ZHA byl však pouze problém s dveřním sensorem Xiaomi Aqara, jehož výrobce a model vůbec nebyl rozpoznán, fungovala alespoň detekce otevření a zavření, ale stav nabití baterie a provozní teplotu nebylo možné zobrazit. U zásuvky IKEA byly k dispozici navíc entity pro nastavení jasu žárovky. V případě Zigbee2Mqtt fungovalo vše na jedničku.
Proč vybrat ZHA?
- vhodné pro začátky a seznámení s problematikou
- přímá integrace v Home Assistant, jednoduché použití
- pro provoz není potřeba žádný další software, o který je potřeba se starat
- nepoužíváme nestandardní zařízení, pro které není podpora
Proč vybrat Zigbee2Mqtt?
- aktuálně podporuje přes 3000 zařízení, včetně velmi podrobné dokumentace, aktivní vývoj
- větší podpora OTA aktualizací firmware
- větší množství různých specifických nastavení
- samostatné webové rozhraní nezávislé na Home Assistant, včetně ovládání jednotlivých zařízení
- detailnější mapa sítě
- fungující propojení dvou Zigbee zařízení (u ZHA se mě to nepodařilo nastavit)
Jakou implementaci brány Zigbee brány a koordinátor používáte? Budu rád za vaše komentáře, současně se v diskuzi rád podělím o další zajímavá zařízení. V příštím díle se podíváme na automatizace, skripty, pomocníky a tvorbu vlastních senzorů.
(Autorem všech obrázků je Václav Steiner.)