Riprogrammare e usare ITEAD Sonoff ZigBee Bridge con firmware Tasmota

8 minuti di lettura
Scopi DELLA GUIDA
  • Installare su un BRIDGE/Gateway ZigBee↔︎TCP/IP ITEAD Sonoff ZigBee Bridge il firmware Tasmota (con declinazione ZigBee2Tasmota)
  • Livello di difficoltà: medio
  • Costo: basso
Concetti affrontati:
  • Flash firmware
Componenti software utilizzate:
  • Firmware Tasmota (versioni dalla 6.7 in poi, per la funzionalità Z2T)
  • Raspbian / Linux
Dispositivi fisici utilizzati:
GUIDA maggiormente indicatA per:

Raspbian - Linux

Note e disclaimer
  • qualsiasi eventuale modifica agli impianti domestici dev'essere progettata ed realizzata SOLO da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (i contenuti della presenta pagina hanno puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere garanzia, omologazioni e certificazioni di qualità.
Revisione guida: 1.0

SONOFF ZBBridge - Smart Zigbee Bridge - Tasmota

Abstract

Chi decida di adottare ZigBee quale protocollo di comunicazione per alcuni componenti della propria domotica personale basata su HUB personali quasi certamente avrà optato per l’adozione di un BRIDGE/Gateway 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:

deCONZ Logo deCONZ con l’adozione delle antenne ConBee o RaspBee

BRIDGE/Gateway ZigBee↔︎TCP/IP
trasforma le comunicazioni ZigBee in servizi API rest via TCP/IP

   
zigbee2mqtt logo zigbee2mqtt con l’adozione dell’antenna CC2531

BRIDGE/Gateway ZigBee↔︎MQTT
trasforma le comunicazioni ZigBee in telemetrie MQTT via TCP/IP

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 (il coordinator) è rappresentato dall’antenna la quale, ovviamente, ha una specifica copertura radio legata ovviamente alle condizioni strutturali dell’ambiente in cui è calata; quando la copertura radio è limitata, la soluzione è solitamente quella di introdurre dei componenti ZigBee alimentati a rete elettrica (non a batteria), 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” 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 deCONZ e zigbee2mqtt sopra spiegati), 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.

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 elemento autonomo, posizionato dove meglio si crede.

La lista dei componenti ZigBee compatibili con questo BRIDGE/Gateway basato su Zigbee2Tasmota è disponibile qui.

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.
SONOFF ZIGBEE BRIDGE

ITEAD Sonoff ZigBee BridgeIn questa guida vedremo quindi come dotarci di un BRIDGE/Gateway di questo tipo sfruttando un componete molto semplice ed economico ma al contempo efficace: l’ITEAD Sonoff ZigBee Bridge. Nato proprio per supportare i componenti di tipo ZigBee della ITEAD (vedi articolo di presentazione), questo economico componente può essere facilmente riprogrammato al fine di integrarlo alla propria domotica basata su HUB personali. 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, si consiglia sempre di effettuare 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.

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.


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 con sistema operativo Raspbian, 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: per far sì che i componenti ZigBee che si vuole coordinare tramite esso è 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:

binary_sensor:
  platform: mqtt
  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.


ITEAD Sonoff Basic ATTENZIONE: ricorda che sul nostro community FORUM c'è una sezione ad hoc dedica ai Sonoff (e più generalmente ai dispositivi ESP8266), per qualsiasi dubbio, domanda, informazione nel merito specifico di queste componenti.


Telegram News Channel