community italiana di domotica personale
 
Riprogrammare e usare ITEAD Sonoff ZigBee Bridge (ZB Bridge) con firmware Tasmota

Riprogrammare e usare ITEAD Sonoff ZigBee Bridge (ZB Bridge) con firmware Tasmota

Scopi DELLA GUIDA
  • Installare il firmware Tasmota (con declinazione ZigBee2Tasmota) su Sonoff ZigBee Bridge per renderlo BRIDGE/Gateway ZigBee↔︎TCP/IP autonomo oppure antenna coordinator remota per ZHA (non per ZigBee2MQTT)
  • Livello di difficoltà: medio/alto
  • Costo: basso
Concetti affrontati:
  • Flash firmware
  • Configurazione firmware
Componenti software utilizzate:
  • Firmware Tasmota (versioni dalla 6.7 in poi, per la funzionalità Z2T)
  • Raspberry Pi OS / Linux
Dispositivi fisici utilizzati:
GUIDA maggiormente indicatA per:

Raspbian - Linux

NOTE E DISCLAIMER
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata e realizzata SOLO da personale qualificato;
  • qualsiasi modifica non prevista attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno infatti puro scopo didattico) e fa decadere garanzia, omologazioni e certificazioni di qualità; dei dispositivi interessati;
  • tutte le tecniche descritte si intendono applicate a software e firmware aggiornati alle ultime versioni disponibili;
  • gli articoli di inDomus sono totalmente indipendenti e non sponsorizzati. Se mai questo cambiasse, verrà segnalato chiaramente sulle pagine oggetto di sponsorizzazione;
  • questa pagina è materialmente scritta e manutenuta da più individui: non ci si aspetti né si pretenda un supporto personale. In caso di difficoltà, chiedere supporto alla community sul nostro forum o sulla nostra chat;
  • se hai bisogno di orientarti, c'è la mappa.
Revisione guida: 2.1

SONOFF ZBBridge - Smart Zigbee Bridge - Tasmota

Abstract

Il Sonoff ZigBee Bridge di ITEAD è – di base – un piccolo componente che funge il 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 che traduca le comunicazioni da e per i componenti basati su questo standard verso uno standard direttamente comprensibile dall’HUB personale in uso.

Le soluzioni più efficacemente battute sono, solitamente:

zigbee2mqtt logo ZigBee2MQTT (Z2M) tramite l’utilizzo di diverse antenne coordinator

è un BRIDGE/Gateway ZigBee↔︎MQTT
trasforma le comunicazioni ZigBee in telemetrie MQTT via TCP/IP utilizzabili da qualsiasi HUB personale, in primis Home Assistant

 
Home Assistant Official Logo v3 ZHA via Home Assistant tramite l’utilizzo di diverse antenne coordinator

è in BRIDGE/Gateway ZigBee↔︎API Home Assistant
trasforma le comunicazioni ZigBee in telemetrie gestite direttamente e solo da 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 il sopraelencato ZHA, ma non ZigBee2MQTT), 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.

Tasmota Logo ZigBee2Tasmota (Z2T) installato direttamente su antenne coordinator compatibili ESP32/ESP8266

BRIDGE/Gateway ZigBee↔︎MQTT 
trasforma le comunicazioni ZigBee in telemetrie acquisite in messaggi MQTT

Una volta installato su un’antenna coordinator compatibile, può anche essere usato come “antenna remota”  per ZHA.

Nello specifico andremo infatti a utilizzare 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 ZHA (non ZigBee2MQTT).

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

ITEAD Sonoff ZigBee Bridge

In questa guida vedremo quindi come installare ZigBee2Tasmota su un Sonoff ZigBee Bridge (ZB Bridge) 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 ZHA (non ZigBee2MQTT).

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: in caso non si voglia utilizzare un Sonoff Zigbee Bridge (per motivi propri, di reperibilità o altro), la stessa identica cosa descritta in questo progetto è possibile ottenerla tramite questo progetto volto alla realizzazione in autonomia di un economico ma funzionale BRIDGE/Gateway di questo tipo.

Nota finale

A differenza del modello superiore Sonoff ZigBee Bridge Pro, il modello che andiamo a riprogrammare, Sonoff ZigBee Bridge è inferiore, in quanto basato su SOC ESP8266 e sul chip ZigBee MG21, mentre il modello superiore è un ESP32 con il più apprezzato chip ZigBee CC2652. Inoltre, mentre la versione oggetto della presente guida non può essere utilizzata come antenna remota per ZigBee2MQTT, quella superiore supporta anche quest’ultimo BRIDGE/Gateway software.

Anche per il modello superiore abbiamo messo a disposizione una guida ad hoc analoga alla presente.

Si parte

Procedimento

La procedura non è particolarmente difficile e si sviluppa in due parti. Il Sonoff ZigBee Bridge è dotato di un SOC ESP8266 (il quale è il cuore del dispositivo, oltre a fornire la necessaria connettività Wi-Fi) e un chip MG21(EFR32) per la gestione delle comunicazioni ZigBee.

La prima parte della guida riguarda la riprogrammazione del SOC ESP8266, la seconda quella del chip MG21.

Riprogrammazione ESP8266

Per programmare il cuore del dispositivo, il SOC ESP8266, è necessario un computer di appoggio e un’interfaccia USB/TTL la quale, connessa a specifici pin del componente, permette appunto di riprogrammarne il firmware.

La procedura è quella standard ed è descritta nella nostra MASTERGUIDE di riprogrammazione di questo tipo di componenti; per la modalità di connessione fisica tra l’interfaccia USB/TTL e l’impostazione del dispositivo in modalità flash si faccia riferimento al paragrafo relativo di quest’altra guida.

N.b. Purtroppo i punti di contatto sono sparpagliati per la board, cosa che impone, nei fatti, di saldarvi i cavetti di connessione Dupont che, dall’altro capo, andranno all’adattatore USB/TTL.
TASMOTA

Il firmware da utilizzare abbiamo detto essere Tasmota (versione minima 6.7). Per gli scopi descritti in questa guida è necessario utilizzarne una versione precompilata specifica, ovvero tasmota-zbbridge.bin, la quale è scaricabile qui.

Vetrina - Offerte del giorno

Una volta completata la riprogrammazione del firmware e alimentato il dispositivo, collegarsi alla Wi-Fi da esso prodotta (chiamata Tasmota-XXXX) e, una volta apertasi l’interfaccia web, impostare le credenziali di accesso alla propria Wi-Fi domestica. Una volta riavviato, il Sonoff ZigBee Bridge così riprogrammato e configurato si collegherà alla propria rete domestica.

A questo punto collegarsi via web all’indirizzo IP del Sonoff e provvedere alla configurazione.

CONFIGURAZIONE

Ultimo step lato Tasmota è quello di configurare il firmware in modo appropriato. Una volta collegati all’interfaccia web, accedere alla voce “Console” ed eseguire il seguente comando:

Backlog Weblog 3; Module 0; Template {"NAME":"Flash ZBBridge","GPIO":[56,208,0,209,21,22,0,0,0,158,0,0,17],"FLAG":0,"BASE":18}

dopodiché attivare i log estesi tramite il comando:

Weblog 3

infine eseguire il comando:

TCPStart 8888

per aprire in ascolto la porta 8888 sul dispositivo.
Una volta terminata la procedura, il dispositivo sarà, per lo meno per la parte ESP8266, pronto.

Riprogrammazione MG21

A questo punto dobbiamo mettere mano su un computer di appoggio dotato di sistema operativo Linux. I comandi che elencheremo in realtà sono dedicati a Raspberry Pi OS (Raspbian) o Linux Debian, ma in buona sostanza i comandi sono pressoché gli stessi su qualunque distribuzione Linux.

I comandi vengono eseguiti via terminale (da CLI, via SSH oppure con control-alt-t da interfaccia desktop).

Iniziamo con l’installazione del tool lrzsz:

sudo apt-get install lrzsz -y

Cloniamo poi Tasmota:

git clone https://github.com/arendst/Tasmota.git

Elencando i contenuti tramite questi comandi:

cd Tasmota/tools/fw_zbbridge/
ls -all

noteremo la presenza di due file:

  • ncp-uart-sw_6.5.5_115200.ota
  • ncp-uart-sw_6.7.6_115200.ota

i quali rappresentano un bivio rispetto a come il componente si comporterà in termini di integrabilità domotica.

Il primo file, se usato, consentirà, una volta installato sul Sonoff, di integrarne le funzioni di coordinato ZigBee direttamente all’HUB personale Home Assistant sfruttando la piattaforma d’integrazione ZHA (Zigbee Home Automation).

Il secondo, diversamente, attiva le funzioni più generiche zigbee2tasmota, le quali possono essere utilizzate analogamente per l’integrazione con Home Assistant e più genericamente molti altri HUB personali tramite MQTT, come spieghiamo più in dettaglio in coda alla presente guida.


Tornare dunque alla pagina principale dell’interfaccia web di Tasmota e, accertandosi che il tasto “Relay 2” sia a OFF, portare a ON, poi OFF, poi nuovamente ON il tasto “Relay 1“. Questo imposterà il bootloader in modalità flash; nel log offerto sotto “Console”, sempre presso l’interfaccia web, dovrebbero apparire più righe di log come segue:

05:11:23 TCP: from MCU: XXXXXXXXXXXXXXXXXXXX

In caso non appaiano righe come questa, c’è qualcosa che non va; in caso, resettare il chip MG21 mettendo brevemente in cortocircuito i pin Z_RST e GND presenti sul retro della board (ovviamente sempre con la board alimentata via UBS) e riprovare la procedura tramite il tasto “Relay 1” come sopra spiegato.

ITEAD Sonoff ZigBee Bridge - Board - Back - Reset Zigbee MG21
i due contatti per il reset del chip MG21.

Ora, sempre da terminale e sempre dall’interno della cartella Tasmota/tools/fw_zbbridge/, eseguire il seguente comando:

sx -vv -X -b --tcp-client INDIRIZZO_IP_DISPOSITIVO:8888 NOME_FILE.ota

dove ovviamente INDIRIZZO_IP_DISPOSITIVO è l’indirizzo IP assegnato al Sonoff e NOME_FILE.ota è il file a scelta tra ncp-uart-sw_6.5.5_115200.ota e ncp-uart-sw_6.7.6_115200.ota in base alla piattaforma di integrazione che si vorrà utilizzare. Noi assumeremo, per il resto della guida, di aver utilizzato il più agevole e supportato zigbee2tasmota, quindi il file ncp-uart-sw_6.7.6_115200.ota.

A questo punto il terminale dovrebbe riportare un output di questo tipo:

Sending ncp-uart-sw_6.7.6_115200.ota, 1486 blocks: Give your local XMODEM receive command now.
Xmodem sectors/kbytes sent: 0/ 0kRetry 0: Got 0d for sector ACK
Retry 0: Got 0d for sector ACK
Retry 0: NAK on sector
Bytes Sent: 190336 BPS:807
Transfer complete

il che conferma l’avvenuta riprogrammazione del chip.

CONFIGURAZIONE

Un ultimo step prevede di recarsi, sempre presso l’interfaccia web di Tasmota, alla voce di menu “Configuration” > “Configure Other“, modificando il Template del firmware in:

{"NAME":"Sonoff ZBBridge","GPIO":[56,165,0,166,215,0,0,0,0,158,0,0,17],"FLAG":0,"BASE":18}

Salvare: così facendo il Sonoff si riavvierà. Una volta ricollegati all’interfaccia web, accedere alla voce di menu “Configuration” > “Configure Module” e infine impostare Sonoff ZbBridge (75).

Congratulazioni, il vostro BRIDGE/Gateway è così pronto.

Uso

Il BRIDGE/Gateway così realizzato è pronto per l’uso quotidiano: come antenna coordinator “remota” per ZHA oppure come BRIDGE/Gateway ZigBee↔︎MQTT Tastmota.

Come coordinator remoto (per ZHA)

Per l’uso in questo senso è necessario attuare un’ultima configurazione.
Recarsi alla voce di menu “Configuration” > “Configure other” e inserire, alla voce “TEMPLATE”, la seguente configurazione:

{"NAME":"ZHA ZBBridge","GPIO":[56,208,0,209,59,58,0,0,0,0,0,0,17],"FLAG":0,"BASE":18}

Cliccare su “Activate” e infine su “Save“.

Creare poi la seguente rule:

Rule1 ON System#Boot do TCPStart 8888 endon

Avviare poi la Rule1 e riavvare il bridge.

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 (ZHA) che via wireless lo “aggancerà” per usarlo come antenna coordinator remota.

ATTENZIONE: l’indirizzo IP di Tasmota, ovvero quello assunto dal Sonoff ZigBee Bridge deve essere fisso e non variare mai. Impostare quindi sul router un binding associato al MAC address del device.
Configurazione zha

Per usarlo con ZHA, impostare la seguente configurazione:

  • tipologia radio: EZSP;
  • 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.