Espandere e Stabilizzare la Rete Zigbee: Guida al Multi-Coordinator con Zigbee2MQTT su Orange Pi Zero 2W

Creare un sistema multi-coordinator in Home Assistant con Zigbee2MQTT (Z2M) consente di gestire più reti Zigbee indipendenti, ciascuna con il proprio coordinatore. Questo approccio è utile per separare dispositivi su diverse reti, migliorare la copertura in aree estese o gestire un numero elevato di dispositivi. Tuttavia, è importante notare che ogni coordinatore gestisce una rete Zigbee separata e i dispositivi non possono comunicare direttamente tra reti diverse.

Nei sistemi Zigbee tradizionali, il coordinatore può gestire direttamente un numero limitato di dispositivi finali (end devices), spesso fino a 32. Per aumentare questa capacità, si utilizzano dispositivi router che estendono la rete e consentono di aggiungere più dispositivi finali. Tuttavia, l’affidabilità della rete dipende dalla qualità e dalla posizione di questi router.

In sintesi, l’uso di un sistema multi-coordinator con Z2M offre flessibilità nella gestione di reti Zigbee complesse, ma richiede una configurazione attenta per garantire una comunicazione efficace tra i dispositivi. Nel nostro caso, andremo a realizzare un coordinator Zigbee2MQTT utilizzando un Orange Pi Zero 2W come dispositivo host e un Sonoff ZBDongle-E basato su chip EFR32 come coordinatore Zigbee. Questa combinazione è compatta, economica ed efficiente dal punto di vista energetico. Il dongle ZBDongle-E offre buone prestazioni e stabilità per la gestione della rete Zigbee, mentre l’Orange Pi, tramite Docker, consente un’integrazione fluida con Zigbee2MQTT e Home Assistant, anche in scenari multi-coordinator.

Fase preliminare

Orange Pi Zero 2W necessita di un sistema operativo per funzionare, pertanto opteremo per la versione ARMbian Bookworm, scaricabile a questo LINK.

Scarichiamo ora un tool chiamato Rufus [LINK], utile per caricare su una MicroSD l’immagine che poi installeremo sulla single-board computer. Rufus non necessita installazione e, una volta avviato, richiede di selezionare il dispositivo di destinazione, ossia la MicroSD, l’immagine del OS (Selezione boot) e di assegnare l’etichetta del volume. Fatto ciò, premiamo AVVIA e il programma inizierà a caricare tutto sulla memoria esterna.

Quando avrà terminato, scolleghiamo la memoria da computer e inseriamola nel lettore di MicroSD posto sul lato della nostra single-board computer a dispositivo spento. Accendiamolo, inserendo il connettore di alimentazione nella porta USB Type-C e si avvierà il sistema operativo da MicroSD.

Seguite la procedura guidata per creare la password del root, generare un nuovo utente e relativa password, connettere al Wi-Fi la SBC, impostare regione e lingua.

Terminata la configurazione guidata, installiamo SSH per poter lavorare sulla Orange Pi Zero 2W dal nostro computer.

sudo apt install ssh

Riavviamo la single-board computer e segniamoci il suo indirizzo IP.

Firmware ZBDongle-E

Per lavorare con Zigbee2MQTT, il Sonoff ZBDongle-E necessita di un cambio del firmware. Possiamo effettuarlo velocemente tramite interfaccia web sul sito Silabs Firmware Flasher e seguendo le istruzioni. Esistono anche altri modi per cambiare il firmware del Sonoff ZBDongle-E, ma sono meno semplici. L’unica raccomandazione è di installare i driver del chip CP2102 sul vostro PC con Windows o MacOS, se il vostro Sonoff ZBDongle-E ne è dotato, scaricandoli a questo LINK.

Entrando sul sito Silabs Firmware Flasher, identifichiamo il nostro Sonoff ZBDongle-E, poi colleghiamolo al PC e premiamo il pulsante CONNECT.

Si aprirà un pop-up che vi chiederà di selezionare la porta di comunicazione sulla quale è montato il Sonoff ZBDongle-E. Nel nostro caso è la porta COM5. Se non apparisse nulla, vuol dire che il dispositivo non è stato riconosciuto dal PC e necessita dell’installazione dei driver, oppure la porta non funziona correttamente. Selezioniamo la voce del nostro dispositivo e poi clicchiamo su Connetti.

Attendiamo il caricamento e ci apparirà una finestra che ci chiede se vogliamo aggiornare il firmware alla versione più recente o cambiarlo. Selezioniamo quest’ultima voce.

Dobbiamo ora scegliere il firmware che desideriamo. Visto che vogliamo lavorare su Zigbee2MQTT, selezioniamo la voce Zigbee (EZSP) e poi clicchiamo su INSTALL.

Si avvierà l’installazione del firmware che si concluderà con un messaggio di avvenuta installazione. Vi raccomandiamo di non estrarre il Sonoff ZBDongle-E dalla porta USB o di chiudere il browser durante questa procedura. Alla fine dell’installazione potete disconnettere il Sonoff ZBDongle-E dal PC.

Installazione Multi-Coordinator

Passiamo all’installazione di Zigbee2MQTT e la configurazione del Multi-Coordinator. Accediamo alla SBC da computer utilizzando PuTTY, inserendo l’indirizzo IP e digitando, quando richiesto, nome utente e password che abbiamo creato poco prima.

Iniziamo aggiornando il sistema operativo di ARMbian:

sudo apt update
sudo apt upgrade -y

Colleghiamo il Sonoff ZBDongle-E alla Orange Pi Zero 2W, adoperando un cavo USB Femmina – USB Type-C Maschio.

Lavoriamo come sempre da terminale per identificare il nostro Sonoff ZBDongle-E, che abbiamo inserito in una delle porte USB del nostro Orange Pi Zero 2W. Il comando da dare sarà:

ls /dev/ttyUSB*

Apparirà una lista di dispositivi USB connessi, ma quello che interessa a noi è il /dev/ttyUSB0.

Andiamo a creare una cartella per ospitare la configurazione di Zigbee2MQTT. Al posto di [utente] inserite il vostro nome utente.

mkdir -p /home/[utente]/zigbee2mqtt

Entriamo adesso nella cartella appena creata:

cd zigbee2mqtt

Spostiamoci adesso su Home Assistant per creare un utente dedicato a questa nuova comunicazione, pertanto, dalla Plancia, andiamo su Impostazioni -> Persone -> Aggiungi persona. Inserisci un nome e attiva la voce Consenti l’accesso.

Inserisci il nome da visualizzare, il nome utente, e la password. Consentite l’accesso solo locale.

Torniamo sul terminale di Orange Pi Zero 2W e con il comando nano andiamo a creare il file di configurazione per l’installazione di Zigbee2MQTT con Docker.

sudo nano configuration.yaml

All’interno del file copiamo quanto segue:

serial:
  port: /dev/ttyUSB0
  adapter: ember
mqtt:
  base_topic: zigbee2mqtt_orangepi
  server: 'mqtt://'
  user: mqtt-z2m
  password: ***********
  version: 5
  reject_unauthorized: true
  include_device_information: true
permit_join: false
frontend:
  port: 8080
homeassistant:
  legacy_triggers: true
  legacy_entity_attributes: false
ota:
  update_check_interval: 1440
  disable_automatic_update_check: false
advanced:
  cache_state: true
  cache_state_persistent: true
  cache_state_send_on_startup: true
  channel: 19
  transmit_power: 20
  legacy_api: false
  legacy_availability_payload: false
  log_level: info
  log_namespaced_levels:
    z2m:mqtt: warning

Dobbiamo attenzionare alcuni aspetti:

  • base_topic che abbiamo nominato zigbee2mqtt_orangepi. Potete modificare questo parametro come volete, purché non venga configurato come zigbee2mqtt, altrimenti il nuovo coordinator si sovrapporrà al precedente e i dispositivi zigbee impostati sulla rete smetteranno di funzionare.
  • server inseriamo l’indirizzo IP di Home Assistant, senza specificare la porta.
  • user va inserito il nome utente creato in precedenza.
  • password è la password dell’utente locale creato in Home Asssistant in precedenza.

Salviamo tutto premendo CTRL + X e confermiamo con INVIO. Adesso usciamo dalla cartella zigbee2mqtt.

cd ..

Passiamo all’installazione di Docker. Abbiamo già visto in altre occasioni questa procedura, un po’ lunga.

curl -fsSL get.docker.com | sh

Al termine della installazione di Docker, passiamo all’installazione di Zigbee2MQTT su Orange Pi Zero 2W. Avviamo l’installazione di Zigbee2MQTT con Docker, impostando la time zone di Roma e indicando come dispositivo /dev/ttyUSB0.

sudo docker run --init -d --name="zigbee2mqtt" -e TZ=Europe/Rome -v ~/zigbee2mqtt:/app/data --device=/dev/ttyUSB0 --network host --restart always koenkk/zigbee2mqtt

Al termine dell’installazione, verifichiamo che non ci siamo problemi con il comando:

sudo docker logs zigbee2mqtt

Se non ci sono errori avremo una schermata simile a questa.

Un ultimo passo sarà impostare Docker come programma da eseguire all’avvio del sistema, per evitare di doverlo avviare manualmente ad ogni riavvio del sistema.

sudo systemctl enable docker

Non ci resta che avviare Zigbee2MQTT aprendo un browser da PC e andare all’indirizzo del nostro Orange Pi Zero 2W ( nel nostro esempio è http://192.168.1.202:8080). Possiamo provare a integrare sin da subito i dispositivi Zigbee sul nostro sistema multi-coordinator ed utilizzarli sul nostro Home Assistant OS.