Scopi DELLA GUIDA
Concetti affrontati:
|
Componenti software utilizzate:
Dispositivi fisici utilizzati:
|
GUIDA maggiormente DEDICATA A utenti: |
|
NOTE E DISCLAIMER
|
|
Revisione guida: 1.3 |
Abstract
Il Sonoff ZigBee Bridge Pro (o ZB Bridge-P) di ITEAD è – di base – un piccolo componente col ruolo di BRIDGE/Gateway ZigBee↔︎TCP/IP per la linea prodotti ITEAD Sonoff Smart Home. In sostanza permette, in accoppiata con la classica app Sonoff eWeLink (per Android e iOS), di gestire più componenti della linea Sonoff bastati su standard ZigBee (vedi esempi).
D’altro canto, chi decida di adottare ZigBee per la propria domotica personale basata su HUB personali quasi certamente opterà per l’adozione di un BRIDGE/Gateway software (una sorta di “jolly”) che traduca le comunicazioni da e per i componenti (di qualsiasi brand) basati su questo standard verso uno standard direttamente comprensibile dall’HUB personale in uso.
Le soluzioni più efficacemente battute sono, solitamente:
ZigBee2MQTT (Z2M) tramite l’uso di diverse antenne coordinator
è un BRIDGE/Gateway ZigBee↔︎MQTT |
|
ZHA via Home Assistant tramite l’uso di diverse antenne coordinator
è in BRIDGE/Gateway ZigBee↔︎API Home Assistant |
Tali soluzioni consentono l’integrazione di un’ampissimo numero di componenti ZigBee presso gli HUB personali più diffusi come Home Assistant, openHAB, Domoticz e così via; la caratteristica comune è quella di installare l’antenna sul computer (solitamente quello sul quale è in esecuzione l’HUB) e installare un software che provveda, utilizzandola, al servizio in questione.
Solitamente, il fulcro della rete ZigBee è rappresentato dall’antenna (il coordinator) la quale, ovviamente, ha una specifica copertura radio legata ovviamente alle condizioni strutturali dell’ambiente in cui è posta; quando la copertura radio è limitata, la soluzione è solitamente quella di introdurre dei componenti ZigBee alimentati a rete elettrica, i quali fungono (proprio perché alimentati a rete elettrica) da ripetitori (router). Questo, solitamente, basta e avanza per garantirsi una copertura sufficiente: in questi frangenti di solito si utilizzano lampadine ZigBee (tipo le Philips HUE, per capirci).
Quando, per motivi diversi, tale escamotage non fosse sufficiente, allora si avrebbe un bel grattacapo da risolvere. Pensiamo infatti ad appartamenti multi-livello: talvolta muri e i solai schermano il segnale ZigBee (ma magari non il Wi-Fi) e la soluzione “delle lampadine usate come repeater” per diversi motivi può non essere sufficiente.
Come risolvere?
La soluzione ci può venire dall’adozione di uno o più BRIDGE/Gateway del tutto autonomo/i rispetto al computer dove sia in esecuzione l’HUB (come nei casi di ZigBee2MQTT e ZHA sopra elencati), degli elementi da posizionarsi in casa dove meglio si creda, così da ottenere una sufficiente copertura in tutti gli angoli della casa: l’unica esigenza, in questa logica, sarà che il BRIDGE/Gateway realizzato venga poi posizionato in un punto dove sia almeno garantita la copertura Wi-Fi, standard che utilizzerà per le trasmissioni verso l’HUB personale in uso.
Uno di questi BRIDGE/Gateway “autonomi” è rappresentato dal firmware ZigBee2Tasmota.
ZigBee2Tasmota (Z2T) installato direttamente su antenne coordinator compatibili ESP32/ESP8266
BRIDGE/Gateway ZigBee↔︎MQTT Una volta installato su un’antenna coordinator compatibile, ma può anche essere usato come “antenna remota” per ZigBee2MQTT e ZHA. |
Nello specifico andremo infatti a configurare un BRIDGE/Gateway ZigBee↔︎MQTT, ovvero un BRIDGE che trasformi le comunicazioni da/per i componenti ZigBee in telemetrie MQTT. Sostanzialmente quello che fa anche ZigBee2MQTT, con la differenza che in questo caso il BRIDGE/Gateway non è in esecuzione su un computer ma su un’antenna coordinator opptunamente riprogrammata, posizionata dove meglio si crede.
Interessante poi la possibilità di utilizzare ZigBee2Tasmota (sempre installato su un’antenna coordinator compatibile) come “antenna remota” per ZigBee2MQTT e ZHA.
N.b. La soluzione proposta può essere realizzata e introdotta nel proprio ambiente anche in presenza di uno o entrambi i due sistemi precedentemente elencati. Ovviamente ogni componente ZigBee potrà essere abbinato a uno e un solo BRIDGE/Gateway, non a più d’uno contemporaneamente. |
La lista dei componenti ZigBee compatibili con questo BRIDGE/Gateway basato su Zigbee2Tasmota è disponibile qui.
SONOFF ZIGBEE BRIDGE Pro (ZB Bridge-P)
In questa guida vedremo quindi come installare ZigBee2Tasmota su un Sonoff ZigBee Bridge Pro (ZB Bridge-P) di ITEAD in modo da “liberarlo” dal proprio ecosistema nativo e utilizzarlo così, alternativamente, come BRIDGE/Gateway ZigBee↔︎MQTT “autonomo” oppure utilizzarlo come coordinator (antenna) remoto per soluzioni BRIDGE/Gateway software molto apprezzate come ZigBee2MQTT e ZHA.
Ovviamente, la riprogrammazione rimuove il precedente firmware originale, rendendo impossibile il successivo uso del componente con l’app mobile eWeLink di ITEAD. Per avere l’opportunità di tornare sui propri passi, vedremo anche come realizzare un backup del firmware originale.
Nota finale
A differenza del modello inferiore Sonoff ZigBee Bridge, il modello che andiamo a riprogrammare, Sonoff ZigBee Bridge Pro è estremamente più potente e versatile, in quanto basato su SOC ESP32 e sull’apprezzato chip ZigBee CC2652 (lo stesso di Sonoff ZBDongle-P), mentre il modello inferiore è un ESP8266 con chip ZigBee MG21.
Comunque, anche per il modello inferiore abbiamo messo a disposizione una guida ad hoc analoga alla presente.
Si parte
- Procedimento
- Riprogrammazione ESP32
- Modalità flash
- Esptool
- Backup
- Riprogrammazione
- Tasmota
- Configurazione di base
- Partizione file system
- Riprogrammazione ZigBee
- Uso
- Come coordinator remoto (per ZigBee2MQTT / ZHA)
- Come BRIDGE/Gateway autonomo ZigBee↔︎MQTT Tasmota
Procedimento
La procedura non è particolarmente complessa ma può rivelarsi insidiosa, pertanto è necessario portare la giusta concentrazione a ciò che si fa.
Il Sonoff ZigBee Bridge Pro è dotato di un SOC ESP8266 (il quale è il cuore del dispositivo, oltre a fornire la necessaria connettività Wi-Fi) e un chip CC2652 per la gestione delle comunicazioni ZigBee.
La prima parte della guida riguarda la riprogrammazione del SOC ESP32, la seconda quella del chip CC2652; ciò che andremo a fare, in ordine, è:
- collegarci via TTL alla board del Sonoff Bridge Pro;
- salvare da parte il firmware originale (per eventuali ripristini futuri);
- installare il firmware ZigBee2Tasmota;
- garantirgli accesso alla Wi-Fi domestica;
- installare un pacchetto software utile a ridimensionare (ampliandolo) il filesystem del fimware;
- caricare i file di riprogrammazione del chip ZigBee;
- installare il mini-firmwre del chip ZigBee;
- attivare il BRIDGE/Gateway ZigBee↔︎MQTT oppure la possibilità di utilizzare Sonoff Bridge Pro come antenna remota per ZigBee2MQTT o ZHA.
Riprogrammazione ESP32
Per programmare il cuore del dispositivo, il SOC ESP32, è necessario un computer di appoggio e un’interfaccia USB/TTL la quale, connessa a specifici pin del componente, permette appunto di riprogrammarne una tantum il firmware.
La riprogrammazione viene effettuata con qualsiasi tool adatto alla riprogrammazione di un SOC ESP32; noi abbiamo testato con successo ESP Flasher (scaricare da qui la versione adatta al proprio computer d’appoggio), pertanto documenteremo quest esperienza.
Come firmware precompilato utilizzeremo il file tasmota32-zbbrdgpro.bin, scaricabile da qui (primo elenco).
Modalità flash
Utilizzare dunque l’adattatore USB/TTL (impostato sui 3,3v) per collegarsi alla board come spiegato nell’abstract di questa breve scheda di riferimento, utilizzando le piazzole presenti sulla board:
collegando tramite cavetti di connessione Dupont come segue:
Lato board Sonogg Bridge Pro | Lato adattatore USB/TTL |
3v3 | VCC/3,3v |
GND | GND |
RX | TX |
TX | RX |
Una volta effettuati tali collegamenti, collegare tramite un ulteriore cavo Dupont “volante” il pin GPIO0 presente sulla board col polo GND sull’adattatore. Infine, collegare la porta USB dell’adattatore al computer d’appoggio, attendere un paio di secondi e disconnette il cavo “volante” poc’anzi collegato tra GPIO0 e GND.
La procedura è spiegata anche qui.
N.b. Dato che Sonoff ZigBee Bridge Pro offre delle piazzole contigue, è possibile evitare saldature utilizzando cavetti Dupont e un connettore a cinque punte, come nell’esempio che segue, da appoggiarsi a contatto delle piazzole: |
esptool
Ora, sul computer di appoggio installiamo esptool:
dopodiché, una volta operativo, eseguiamo il comando:
esptool.py flash_id
il quale provvede a verificare se, sul computer, sia connesso correttamente un ESP32/ESP8622 in modalità flash.
Se l’esecuzione non andrà a buon fine, la risposta sarà la seguente:
esptool.py v4.7-dev
Found 1 serial ports
Serial port XXXXXXXX
Connecting...
XXXXXXXX failed to connect: [Errno 25] Inappropriate ioctl for device
A fatal error occurred: Could not connect to an Espressif device on any of the 1 available serial ports.
e quindi la procedura di impostazione modalità flash andrà ripetuta.
Diversamente, se la risposta è quella che segue, allora il Sonoff Bridge Pro sarà collegato correttamente e in modalità flash:
esptool.py v4.7-dev
Found 2 serial ports
Serial port XXXXXXXX
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting...
Detecting chip type... ESP32
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 3c:e9:0e:89:9b:2c
Uploading stub...
Running stub...
Stub running...
Manufacturer: 5e
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
Backup
A questo punto eseguiamo un backup di sicurezza tramite il comando:
esptool.py --baud 115200 --port XXXXXXX read_flash 0x0 0x400000 sonoff-zigbee-bridge-pro.bin
avendo cura di sostituire a XXXXXXX la porta ricevuta come risposta nel comando eseguito in precedenza (eg. /dev/ttyUSB0 o COM4).
Al termine della procedura, disconnettere l’adattatore USB/TTL dalla porta USB del computer di appoggio e salvare da parte il file di backup sonoff-zigbee-bridge-pro.bin così prodotto.
Riprogrammazione
Ora provvediamo alla riprogrammazione del SOC ESP32 tramite il tool ESP Flasher.
Eseguire i seguenti step:
- rimettere nuovamente la board di Sonoff ZigBee Bridge Pro in modalità flash;
- esguire ESP Flasher;
- selezionare la porta di comunicazione corretta;
- selezionare il file tasmota32-zbbrdgpro.bin scaricato in precedenza;
- avviare la riprogrammazione.
Al termine della procedura, disconnettere l’adattatore USB/TTL sia dalla porta USB del computer di appoggio sia dalla board, la quale ora è pronta ad essere governata wireless.
Tasmota
Arrivati a questo punto, alimentiamo Sonoff ZigBee Bridge Pro come di consueto, ovvero tramite porta microUSB e alimentatore USB esterno.
Una volta avviato (il tempo di qualche secondo), il firmware Tasmota appena installato genererà un access point Wi-Fi (con SSID tasmota-xxxxxx-xxxx) al quale collegarsi via cellulare/portatile. Tramite l’interfaccia che apparirà (in caso non appaia, collegarsi via browser a http://192.168.4.1), fornire al device le coordinate per accedere alla propria Wi-Fi domestica:
Al termine, il device si riavvierà e si collegherà alla Wi-Fi indicata.
Configurazione di base
Scoperto quale IP abbia assunto una volta collegatosi alla Wi-Fi (consultando il router o in altro modo), collegarsi via browser a quell’indirizzo per accedere all’interfaccia di base.
A questo punto recarsi alla voce di menu “Configuration” > “Configure other” e inserire, alla voce “TEMPLATE”, la seguente configurazione:
{"NAME":"Sonoff Zigbee Pro","GPIO":[0,0,576,0,480,0,0,0,0,1,1,5792,0,0,0,3552,0,320,5793,3584,0,640,608,32,0,0,0,0,0,1,0,0,0,0,0,0],"FLAG":0,"BASE":1}
Cliccare su “Activate” e infine su “Save“.
Partizione file system
La configurazione di base prevede un filesystem di soli 320KB, troppo pochi per ospitare il mini-firmware ZigBee che ci serve per riprogrammare il chip CC2652.
Scaricare questo file (cliccando sull’icona donwload, in alto a destra), dopodiché accedere a “Console” > “Manage File system” e caricare il file appena scaricato. Ora, riavviare il Sonoff ZigBee Bridge Pro (togliendo alimentazione o via menu).
Al riavvio, accedere alla voce “Console” > “Partition Wizard” e cliccare poi su “Start migration“.
Il device si riavviera più volte e non sarà disponibile per qualche minuto. Quando finalmente sarà tornato operativo, recarsi nuovamente sotto “Console” > “Partition Wizard” e impostare come valore di “Resize FS” a 1152.
Completata la configurazione, riavviare nuovamente il device.
Riprogrammazione ZigBee
Scaricare i seguenti file (sempre cliccando l’icona download in alto a destra):
recarsi dunque alla voce “Console” > “Manage File system“, cancellare il file Partition_Wizard.tapp e caricare i quattro appena scaricati.
Recarsi alla voce “Console” > “Berry Scripting console” e inserire:
import sonoff_zb_pro_flasher as cc
cc.load("SonoffZBPro_coord_20230507.hex")
cc.check()
eseguire e attendere. Al termine, la risposta dovrebbe essere:
11:01:11.342 FLH: Starting verification of HEX file 11:10:29.110 FLH: Verification of HEX file OK
a indicare il nulla osta alla riprogrammazione del chip CC2652.
A questo punto avviare la riprogrammazione col comando:
cc.flash()
e attendere il termine della procedura, che potrebbe prevedere qualche minuto di attesa.
Al termine recarsi presso “Consoles” > “Console“, dovre bisognerebbe trovare un log del tipo:
11:15:31.112 FLH: Flashing completed: OK
11:15:33.234 FLH: Flash crc32 0x000000 - 0x2FFFF = bytes('1598929A')
a indicare la corretta riprogrammazione.
Riavviare un’ultima volta il device, poi recarsi di nuovo sotto “Consoles” > “Console” dove finalmente dovrebbe apparire:
11:16:02.214 RSL: RESULT = {"ZbState":{"Status":3,"Message":"Configured, starting coordinator"}}
11:16:03.001 RSL: RESULT = {"ZbState":{"Status":40,"NewState":9,"Message":"Started as coordinator"}}
11:16:03.123 RSL: RESULT = {"ZbState":{"Status":0,"Message":"Started"}}
a indicare il completamento della procedura.
Complimenti!
Il Sonoff ZigBee Bridge Pro è finamente riprogrammato e pronto all’uso.
Uso
Il BRIDGE/Gateway così realizzato è pronto per l’uso quotidiano: come antenna coordinator “remota” per ZigBee2MQTT e ZHA oppure come BRIDGE/Gateway ZigBee↔︎MQTT Tastmota.
Come coordinator remoto (per ZigBee2MQTT / ZHA)
Per l’uso in questo senso è necessario attuare un’ultima configurazione.
Recarsi presso la voce di menu “Configuration” > “Auto configuration” e selezionare “Sonoff ZBPro TCP“:
infine cliccare su “Appy configuration” e riavviare.
Da qui in poi l’host risponderà su porta 8888 TCP/IP, “girando” tutto il traffico da e per la rete ZigBee verso il BRIDGE/Gateway software in uso (ZigBee2MQTT, ZHA eccetera) che via wireless lo “aggancerà” per usarlo come antenna coordinator remota.
ATTENZIONE: l’indirizzo IP di Tasmota, ovvero quello assunto dal Sonoff ZigBee Bridge Pro deve essere fisso e non variare mai. Impostare quindi sul router un binding associato al MAC address del device. |
Configurazione ZigBee2MQTT
Per usarlo con ZigBee2MQTT, impostare la seguente configurazione:
port: tcp://indirizzo_ip_tasmota:8888
Configurazione zha
Per usarlo con ZHA, impostare la seguente configurazione:
- tipologia radio: ZNP;
- percorso del dispostivo seriale: socket://indirizzo_ip_tasmota:8888
- controllo del flusso dati: software;
- velocità: 115200.
Come BRIDGE/Gateway autonomo
Per far sì che i componenti ZigBee che si vuole coordinare tramite il BRIDGE/Gateway Tasmota è necessario attivare la modalità di pairing. Effettuato il pairing, è possibile utilizzarlo normalmente, integrandolo verso gli HUB personali.
PAIRING
Per attivare tale modalità necessario eseguire un comando MQTT direttamente in “Console” Tasmota o pubblicando tale comando sul broker, in modo che il client (il nostro dispositivo) lo riceva e lo esegua.
Il comando per attivare la modalità di pairing per 60 secondi è il seguente:
cmnd/sonoff-z2t/ZbPermitJoin 1
oppure, per attivarlo perennemente (almeno fino al successivo reboot del dispositivo):
cmnd/sonoff-z2t/ZbPermitJoin 99
Per disattivarlo manualmente, invece:
cmnd/sonoff-z2t/ZbPermitJoin 0
Attenzione: il comando può variare in base al nome client MQTT impostato presso la voce “Topic” nella sezione del menu Tasmota “Configuration” > “MQTT”: se per esempio il nome client fosse pippo, il comando cambierebbe come di seguito:
cmnd/pippo/ZbPermitJoin 1
INTEGRAZIONI
Una volta effettuato l’associazione di un componente ZigBee col nostro BRIDGE/Gateway noteremo da subito – sempre presso la “Console” di Tasmota, oppure mettendoci in ascolto sul broker – dei topic telemetrici di questo tipo:
MQT: tele/sonoff-z2t/SENSOR = {"ZbReceived":{"0x8987":{"Voltage":3.015,"Battery":100,"AqaraUnknown":0,"Power":on, "LinkQuality":26}}}
Ognuno di essi contiene un payload JSON che contiene le letture provenienti dal componente associato (in questo caso in sensore identificato da “0x8987“).
Tasmota, purtroppo, ha il vizio (per ora) di inviare un unico topic telemetrico e accettare in ingresso un unico topic di comando per tutti i componenti ZigBee tramite esso integrati, differenziandoli appunto tramite i contenuti del payload JSON in essi contenuti. Vada sé che l’integrazione presso gli HUB personali preveda di iscriversi/inviare tali topic e, tramite l’uso di template, modellare delle entità specifiche presso l’HUB.
Esempio
Poniamo di aver associato un sensore di apertura varchi della Xiaomi/LUMI al nostro BRIDGE/Gateway. Per integrarlo come sensore binario presso Home Assistant (uno dei tanti, possibili HUB personali in uso), il codice sarebbe il seguente:
mqtt: binary_sensor: - name: "Sensore apertura finestra" state_topic: "tele/sonoff-z2t/SENSOR" availability_topic: "tele/sonoff-z2t/LWT" payload_available: "Online" payload_not_available: "Offline" value_template: > {% if '0x8987' in value_json.ZbReceived and 'Power' in value_json.ZbReceived['0x8987'] %} {{ value_json.ZbReceived['0x8987'].Power }} {% else %} {{ false if states('binary_sensor.sensore_apertura_finestra') == "off" else true }} {% endif %} payload_on: true payload_off: false device_class: "window"
Si sfrutta il blocco “value_template” per analizzare la presenza dello specifico codice del sensore (“0x8987“) e, quindi, per verificare se il suo stato (campo “Power”) sia acceso o spento, esportando tale stato al sensore su Home Assistant.
N.b. Data l’ampiezza degli scenari di integrazione, eventualmente dedicheremo a tale tema delle guide specifiche che linkeremo qui sotto. L’esempio è proposto è per far capire quale sia la strada da battere in fase di integrazione verso gli HUB personale dei componenti associati al BRIDGE/Gateway. |
Questa pagina è redatta, manutenuta e aggiornata dallo staff di inDomus, un gruppo di persone molto diverse tra loro che trovi, per domande e supporto, sul forum e sulla chat del sito. Alcuni link sono taggati in qualità di affiliati Amazon e riceviamo un compenso dagli acquisti idonei, utile al sostenimento del sito, ma le nostre recensioni sono tutte indipendenti e non sponsorizzate. Se ti sei perso, a tua disposizione c'è la mappa. |