Smart home in pratica · intermedio

Meglio ZHA o Zigbee2MQTT?

Come ZHA e Zigbee2MQTT differiscono per architettura, supporto dei dispositivi e dipendenza da MQTT, e come scegliere e posizionare un coordinatore Zigbee.

Close-up of a USB device on a white surface

Foto: Barry A / Unsplash

Dopo aver letto questo articolo saprai:

  • Spiegare come ZHA e Zigbee2MQTT collegano un coordinatore Zigbee a Home Assistant
  • Scegliere un coordinatore USB o di rete e verificare che entrambi supportino il suo firmware
  • Ridurre le interferenze con una porta USB 2.0, una prolunga e un canale scelto bene
In questa pagina
  1. Che cos’è un coordinatore Zigbee, e di che tipi esiste?
  2. In pratica, in che cosa differiscono i due stack?
  3. Quale dei due supporta più dispositivi?
  4. Che cosa comporta la dipendenza da MQTT?
  5. Come si evitano le interferenze?
  6. Si può cambiare in seguito?
  7. Per continuare

Usa ZHA quando vuoi la configurazione più semplice: è integrato in Home Assistant, non richiede altri servizi e gestisce bene i dispositivi Zigbee più comuni. Usa Zigbee2MQTT quando ti servono i suoi convertitori per i singoli dispositivi e la sua interfaccia web, quando vuoi che la rete Zigbee continui a girare indipendentemente da Home Assistant, o quando anche altri software oltre a Home Assistant devono leggere i dispositivi via MQTT. Entrambi pilotano gli stessi tipi di coordinatore Zigbee, entrambi funzionano in locale, ed entrambi sono una scelta solida per una rete domestica di qualche decina di dispositivi.

La differenza è nell’architettura. ZHA è un’integrazione di Home Assistant che parla direttamente con la radio. Zigbee2MQTT è un programma separato che parla con la radio e pubblica ogni dispositivo su un broker MQTT, a cui poi Home Assistant si iscrive. La tabella riassume le conseguenze.

ZHAZigbee2MQTT
Dove giraDentro Home AssistantServizio separato: app di Home Assistant, Docker o qualsiasi host Linux
Servizi aggiuntiviNessunoUn broker MQTT, per esempio Mosquitto
Dispositivi non standardQuirk di ZHA Device HandlersConvertitori di zigbee-herdsman
InterfacciaPagine dispositivo di Home AssistantFrontend web proprio, più Home Assistant tramite MQTT discovery
Usabile da altri softwareNoSì, da qualsiasi client MQTT

Che cos’è un coordinatore Zigbee, e di che tipi esiste?

Ogni rete Zigbee ha esattamente un coordinatore. Crea la rete, assegna gli indirizzi e custodisce la chiave di rete; i dispositivi alimentati da rete elettrica fanno poi da router ed estendono la mesh. In Home Assistant il coordinatore è un adattatore radio più il firmware che ci gira sopra, ed è quel firmware a decidere quali stack software possono usarlo.

Esistono due forme fisiche. Gli adattatori USB si collegano alla macchina di Home Assistant; il Connect ZBT-2 del progetto è uno di questi, e la documentazione di ZHA elenca adattatori di terze parti testati basati su chip Silicon Labs (EmberZNet), Texas Instruments (Z-Stack) e dresden elektronik (deCONZ). I coordinatori di rete mettono la stessa radio in un piccolo box collegato via Ethernet, così può stare al centro della casa mentre il server resta in un armadio. Il collegamento seriale tra software e radio tollera male ritardi e perdita di pacchetti, ed è per questo che ZHA sconsiglia di farlo passare su Wi-Fi, WAN o VPN, e la guida agli adattatori di Zigbee2MQTT avverte che gli adattatori collegati via Wi-Fi possono essere meno stabili e suggerisce l’Ethernet cablata.

La guida di Zigbee2MQTT indica anche i propri livelli di firmware: gli adattatori Z-Stack, EmberZNet e deCONZ sono raccomandati, ZiGate non è più mantenuto e il supporto ZBOSS è sperimentale. Verifica che l’adattatore che compri compaia nell’elenco dei supportati di entrambi i progetti, così ti resta la possibilità di cambiare più avanti.

In pratica, in che cosa differiscono i due stack?

Come ZHA e Zigbee2MQTT collegano i dispositivi Zigbee a Home Assistant Due percorsi. Nel percorso ZHA i dispositivi Zigbee raggiungono un coordinatore e l'integrazione ZHA dentro Home Assistant pilota direttamente il coordinatore. Nel percorso Zigbee2MQTT il coordinatore è pilotato da Zigbee2MQTT, un servizio separato con una propria interfaccia web, che pubblica su un broker MQTT; Home Assistant e qualsiasi altro client MQTT si iscrivono al broker. ZHA: UN SOLO PROCESSO Dispositivi sensori, luci Coordinatore USB o di rete Home Assistant Integrazione ZHA: libreria radio, quirk, entità ZIGBEE2MQTT: TRE PROCESSI Dispositivi sensori, luci Coordinatore USB o di rete Zigbee2MQTT interfaccia web Broker MQTT es. Mosquitto Home Assistant integrazione MQTT anche altri client MQTT possono iscriversi Entrambi pilotano gli stessi coordinatori; Zigbee2MQTT aggiunge un broker tra radio e Home Assistant.
ZHA pilota il coordinatore dall’interno di Home Assistant. Zigbee2MQTT lo pilota come servizio separato e pubblica i dispositivi su un broker MQTT, letto da Home Assistant e da qualsiasi altro client MQTT.

Con ZHA, pairing, rinomina e rimozione dei dispositivi avvengono nella normale interfaccia di Home Assistant, e un dispositivo Zigbee appare come qualsiasi altro dispositivo. Riavviare Home Assistant riavvia insieme lo stack Zigbee. Gli aggiornamenti arrivano con le release di Home Assistant.

Zigbee2MQTT ha un frontend proprio per il pairing, una mappa della rete e le impostazioni dei dispositivi. Si collega a Home Assistant tramite MQTT discovery: una volta configurata l’integrazione MQTT, i dispositivi compaiono automaticamente nel registro dispositivi di Home Assistant. Essendo un processo separato, puoi riavviare Home Assistant senza toccare la rete Zigbee, eseguire Zigbee2MQTT su un’altra macchina più vicina al centro della casa, o mandare gli stessi dispositivi direttamente a Node-RED o a un database di serie temporali.

Quale dei due supporta più dispositivi?

Entrambi supportano i dispositivi che seguono la specifica Zigbee. Le differenze emergono con i dispositivi che usano cluster specifici del produttore o si comportano in modo anomalo. ZHA li gestisce con i quirk, piccoli handler Python del progetto ZHA Device Handlers, e la sua documentazione nota che Zigbee2MQTT usa un meccanismo equivalente, i convertitori di zigbee-herdsman.

Zigbee2MQTT pubblica un elenco consultabile dei dispositivi supportati, che al momento della verifica per questa guida contava 5.798 dispositivi di 608 produttori; ogni scheda mostra quali funzioni il convertitore espone. ZHA non pubblica un conteggio equivalente. Il Zigbee Device Compatibility Repository, mantenuto dalla community, riporta la compatibilità dei dispositivi con ZHA, Zigbee2MQTT e altri gateway. Prima di comprare un dispositivo insolito cercalo in entrambi i posti: il supporto della funzione base è comune, ma funzioni extra come la regolazione della sensibilità o un secondo canale relè possono essere supportate da uno solo dei due stack.

Che cosa comporta la dipendenza da MQTT?

Zigbee2MQTT ha bisogno di un broker MQTT; la sua guida introduttiva raccomanda Mosquitto. Su Home Assistant OS questo significa due app in più (il broker e Zigbee2MQTT stesso, che si installa dal suo repository) e l’integrazione MQTT. Su Home Assistant Container li esegui entrambi come container separati.

È più roba da configurare, aggiornare e includere nei backup, e un componente in più che può guastarsi. In cambio ottieni un’interfaccia pulita: ogni dispositivo ha topic che puoi leggere e scrivere, utile per il debug e per integrare qualsiasi cosa parli MQTT. Se questa flessibilità non ti serve, il processo unico di ZHA è più semplice da mantenere.

Come si evitano le interferenze?

Molti problemi Zigbee che sembrano guasti software si rivelano problemi radio, e i due progetti danno consigli simili. La documentazione di ZHA raccomanda di collegare l’adattatore a una porta USB 2.0 invece che USB 3.x, perché porte, computer e periferiche USB 3 sono fonti note di interferenza, e di montarlo su una prolunga USB schermata lontano dal computer. La guida alla portata della rete di Zigbee2MQTT nota che una prolunga di 50 cm basta già a ridurre le interferenze e sconsiglia di mettere l’adattatore vicino a porte USB o HDMI.

Zigbee condivide la banda dei 2,4 GHz con il Wi-Fi. ZHA raccomanda in generale i canali Zigbee 15, 20 o 25 e sconsiglia di cambiare canale una volta costruita la rete; cambiarlo in Zigbee2MQTT può richiedere di rifare il pairing di alcuni dispositivi. Tieni il coordinatore lontano dagli access point Wi-Fi, e aggiungi router alimentati da rete (prese, interruttori da incasso con il neutro) prima di dare la colpa a un sensore che si disconnette.

Si può cambiare in seguito?

Sì, ma va pianificato come un piccolo progetto. Un coordinatore può essere usato da un solo stack alla volta, quindi il passaggio avviene tutto insieme e non un dispositivo alla volta, e i dispositivi rientrano in Home Assistant come nuove entità, quindi le automazioni e le dashboard che li richiamano vanno aggiornate. Scegliere un adattatore supportato da entrambi i progetti mantiene l’hardware utilizzabile in qualunque direzione tu vada.

Per continuare

Argomenti: Zigbee, Home Assistant, Zigbee2MQTT, ZHA, MQTT, confronto

Diagramma