Riprogrammare un ITEAD Sonoff usando la modalità DIY via OTA

7 minuti di lettura
SCOPI DELLA GUIDA:
  • Riprogrammare un dispositivo ITEAD Sonoff di nuova generazione (spiegato nell’abstract) tramite la modalità DIY via OTA (quindi senza connessioni fisiche e/o adattatori)
  • LIVELLO DI DIFFICOLTÀ: variabile
CONCETTI AFFRONTATI:
  • riprogrammazione firmware
Componenti software utilizzate:
Dispositivi fisici utilizzati:
  • il componente domotico ITEAD Sonoff da riprogrammare compatibile con l’architettura DIY di ITEAD (spiegato nell’abstract)
  • un computer di appoggio (Windows, Apple o Linux)
  • uno smartphone o un access point Wi-Fi
  • jumper cap header (solitamente in dotazione col Sonoff)
GUIDA MAGGIORMENTE INDICATA PER:

Tutti gli ambienti

Note e disclaimer
  • qualsiasi modifica all'impianto elettrico dev'essere effettuata da personale qualificato;
  • qualsiasi modifica attuata in proprio è a propria responsabilità personale nonché a proprio rischio e pericolo (la presente guida ha puro scopo didattico);
  • qualsiasi modifica attuata in proprio a un dispositivo ne fa decadere la garanzia.
Revisione guida: 1.1

Abstract

Ogni dispositivo elettronico contiene a grandi linee una piccola porzione software, chiamata firmware, che ne determina funzioni e comportamento. La nostra automobile è dotata di diversi firmware; ne possiede uno la lavatrice, il nostro telecomando, persino una radiosveglia è dotata di un proprio firmware.

I dispositivi basati su SOC ESP8266 (un processore dotato di Wi-Fi piuttosto in voga per il basso costo, le limitate dimensioni e la grande versatilità) non sono da meno: tutti montano un proprio firmware, solitamente scritto e compilato dal produttore. Un classico esempio viene dai dispositivi della linea ITEAD Sonoff “Smart Home” i quali, prevalentemente, montano tale processore.

Sonoff Mini
Sonoff Mini.

Usando una similitudine, riprogrammare (o flashare) il firmware di un dispositivo è come sovrascrivere per intero una videocassetta VHS. Bene: i dispositivi che montano l’ESP8266 si prestano facilmente a tale riprogrammazione, la quale, per lo più, viene effettuata allo scopo di dotare i componenti di funzionalità aggiuntive (o comunque diverse) da quelle di fabbrica.

È il caso di firmware alternativi come il Sonoff-Tasmota o l’ESPurna, firmware gratuiti scritti per dispositivi basati su ESP8266 (come i Sonoff, gli Shelly e molti altri): vengono implementati per “liberare” i dispositivi dal firmware di fabbrica e implementare, appunto, molte funzionalità aggiuntive.

La procedura, solitamente, è quella che prevede di collegarsi fisicamente al componente per provvedere alla riprogrammazione del firmware; nel 2019, però, ITEAD ha messo a disposizione degli utenti una modalità definita DIY (do-it-yourself) la quale consente di riprogrammare alcuni componenti compatibili (per ora solo gli ultimi modelli, i Sonoff Basic R3, Sonoff RF R3 e Sonoff Mini) senza il bisogno di connessioni fisiche.

La procedura è semplice (e adatta a tutti) qualora si utilizzi un computer di appoggio basato su Windows, mentre è più complessa e ostica per chi possegga un Mac o una macchina Linux. In alternativa a questa procedura, rimane la buona e vecchia procedura tramite connessione fisica.

Si parte

Descrizione procedimento

Il procedimento è abbastanza semplice, ma come ogni cosa prevede un minimo di manualità; ciononostante, cercheremo di illustrarlo in modo da renderlo attuabili al più inesperto degli utenti.

Le fasi sono a grandi linee le seguenti:

  • scaricare/personalizzare e compilare il firmware target;
  • collegare il dispositivo all’app mobile eWeLink;
  • aggiornarne il firmware;
  • spegnere il dispositivo;
  • effettuare un backup del firmware originale (facoltativo);
  • aprire il dispositivo e cortocircuitare i contatti OTA;
  • attivare un access point Wi-Fi (con caratteristiche ben precise, che vedremo più avanti);
  • accendere il dispositivo (il quale si collegherà all’access point di cui sopra);
  • collegare il computer di appoggio all’access point di cui sopra;
  • lanciare la procedura di riprogrammazione firmware;
  • spegnere il componente, rimuovere la connessione tra i due contatti OTA.

A questo punto il componete disporrà del nuovo firmware.

Firmware

Quale firmware utilizzare?
La questione è ampia e certamente non oggetto della presente guida. Ciò che è importante sapere è che al fine di riprogrammare il Sonoff in questione è necessario avere a disposizione il file .bin (quindi il compilato) del firmware scelto.

Sulla scelta, sulla modalità di download di firmware precompilati e compilazione di firmware personalizzati si rimanda alla voce “Firmware” della MASTERGUIDE di riprogrammazione dei dispositivi basati su SOC ESP8266.

ATTENZIONE: Utilizzando software precompilato Tasmota è strettamente necessario usare il file sonoff-basic.bin.

eWeLink

Primo passo è quello di collegare il componente all’app mobile eWeLink (per iOS e Android) allo scopo, unico, di aggiornare il firmware. Per ottenere il paring tra l’app e il componente è possibile far riferimento alla guida del produttore oppure al seguente video (il modello nelle immagini è il Sonoff Basic R2, ma la procedura è comunque sostanzialmente la stessa anche con i modelli nuovi):

Lo scopo è quello di aggiornare il firmware di fabbrica del componente. Per attuare la presente guida, infatti, è strettamente necessario che il componente disponga di una versione de firmware di base uguale o superiore alla 3.1.

Una volta collegato a eWeLink, cliccare nelle impostazioni del componente e verificare – e semmai aggiornare – il firmware.

Dopo l’avvenuto aggiornamento, il nostro consiglio è quello di effettuare il backup del firmware di fabbrica, utile un domani si volesse tornare indietro rispetto alla scelta fatta di riprogrammarlo. Per effettuare questa pratica è però necessario un adattatore USB/TTL (che un po’ vanifica il senso di questa guida, ma tant’è). La procedura di backup, nel dettaglio, è spiegata in quest’altra guida ad hoc.

Contatti OTA (modalità DIY)

I dispositivi Sonoff che supportino la modalità DIY sono dotati, sulla board, di due contatti che, quando cortocircuitati, attivano per l’appunto la modalità DIY che consente la riprogrammazione OTA (Over-The-Air, ovvero senza connessione fisica).

Per farlo, è sufficiente aprire il componente, identificare i contatti (sono indentificati da una piazzola etichettata “OTA“) e cortocircuitarli tra loro tramite il jumper in dotazione.

Sonoff Mini - OTA Contacts
Un esempio: i contatti “OTA” nel Sonoff Mini.
ATTENZIONE: Effettuare queste operazioni avendo sempre l’accortezza di eliminare qualunque tensione di alimentazione dal componente. L’elettricità non è un gioco: cautela, sempre!

Access Point Wi-Fi

A questo punto è necessario che nell’ambiente sia presente una rete Wi-Fi con un nome (SSID) e una password ben specifici. Queste coordinate, infatti, sono già note al componente che, quando acceso in modalità DIY, prova ad accedervi – sempre che sia in grado di trovare tale rete. È altresì necessario che il computer di appoggio (tramite e grazie il quale effettueremo la riprogrammazione) entri sulla medesima rete.

Per far sì che esista tale rete sono possibili più approcci; ne elencheremo qualcuno:

  • utilizzare il computer di appoggio (purché sia dotato di antenna Wi-Fi) come Access Point;
  • utilizzare lo smartphone/tablet come Access Point, purché il computer riesca poi a collegarsi a tale rete:
    • o direttamente tramite la propria antenna Wi-Fi;
    • o tramite un dispositivo che funga da bridge, ovvero che si colleghi alla rete esposta dallo smartphone/tablet e, tramite una sua porta ethernet, permetta al computer di collegarsi alla rete via cavo.

L’approccio più semplice è ovviamente il primo: permette di creare la rete al quale connettere il Sonoff e consente al computer di esservi direttamente collegato (in quanto è lui stesso a definirlo).

Per realizzare la rete che ci serve si faccia riferimento a questa guida (per Window, Mac e Linux).

Tale rete deve necessariamente possedere le seguenti caratteristiche:

  • SSID: sonoffDiy (attenzione alle maiuscole)
  • password: 20170618sn

Una volta definita la rete, accendere il componente Sonoff e verificare (in base al computer in uso) che sia tra i dispositivi collegati alla rete.

Sonoff DIY - Windows 10 Mobile HotSpot
Elenco dispositivi connessi su Windows 10.

Riprogrammazione

Arrivati a questo punto (Sonoff alimentato e in modalità DIY e computer connesso alla rete Wi-Fi specifica) siamo pronti per riprogrammare il firmware.

Nota per gli utenti Sonoff-Tasmota: attenzione a non usare il minimal firmware, e sopratutto di scegliere con attenzione il firmware completo da usare in base al dispositivo, avendo cura di scegliere quello corretto in base al dispositivo (basic per il basic, TH per il TH eccetera).

Su Windows

La procedura su Windows è la più semplice. È infatti sufficiente scaricare il Sonoff DIY Tool da GitHub ed eseguirlo.
Una volta in esecuzione, il tool dovrebbe rilevare il Sonoff connesso alla stessa rete del computer; selezionare “Firmware Flash” e selezionare il file .bin del proprio firmware.Selezionare dunque il componente dopodiché cliccare su “OK“. La riprogrammazione si avvierà fino a completarsi.

Saltare infine alla conclusione della procedura.

Su macOS e Linux

Su questi due sistemi operativi la procedura, come anticipato nell’abstract, è più complessa.

In primis è necessario che il computer possegga il tool curl e che siano attivi i servizi di network discovery (eg. mDNS per macOS o avahi-browse per Linux); in secondo luogo è necessario che sulla medesima rete dove siano attestati il computer e il dispositivo Sonoff sia presente un server web (no SimpleHTTPServer e affini). Quest’ultimo elemento è necessario per “appoggiarvi” il firmware da utilizzare per la riprogrammazione.

Per avviare la procedura è necessario, in primis, scoprire l’ID del dispositivo da riprogrammare. Per farlo è necessario eseguire un comando specifico per il proprio sistema operativo: nell’esempio che segue, ipotizziamo che l’ID sia 1000988699, giusto per capire dove, nel log, andare a guardare:

SU MACOS
dns-sd -B _ewelink._tcp

log di risposta d’esempio:

Browsing for _ewelink._tcp  
DATE: ---Mon 12 Aug 2019---  
20:19:31.956  ...STARTING...  
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name  
20:19:31.957  Add        2   5 local.               _ewelink._tcp.       eWeLink_1000988699
SU LINUX
avahi-browse -t _ewelink._tcp --resolve

log di risposta d’esempio:

+ wlp3s0 IPv4 eWeLink_1000988699 _ewelink._tcp local
= wlp3s0 IPv4 eWeLink_1000988699 _ewelink._tcp local hostname = [eWeLink_1000988699.local] address = [192.168.1.109] port = [8081] txt = ["data1={"switch":"off","startup":"off","pulse":"off","pulseWidth":500,"rssi":-47}" "seq=1" "apivers=1" "type=diy_plug" "id=1000988699" "txtvers=1"]

Scoperto l’ID, copiare il file .bin del firmware sul server web presente sulla propria rete. Ipotizziamo che il file sia chiamato sonoff-basic.bin e il server web sia in esecuzione sul computer d’appoggio stesso: la connessione dovrebbe essere ottenuta tramite il seguente indirizzo:

http://127.0.0.1/sonoff-basic.bin

A questo punto possiamo effettuare un primo test che evochi dal componente Sonoff delle info di servizio (comando uguale sia per macOS che Linux):

curl http://deviceIP:8081/zeroconf/info -XPOST --data '{"deviceid":"deviceID","data":{} }'

dove deviceIP è l’IP del componente Sonoff e deviceID è l’ID precedentemente scoperto.
Log di risposta d’esempio:

{"seq":2,"error":0,"data":"{"switch":"off","startup":"off","pulse":"off","pulseWidth":500,"ssid":"sonoffDiy","otaUnlock":false}"}

Se si ottiene questa risposta (o analoga), la comunicazione funziona, pertanto è possibile bloccare l’aggiornamento OTA tramite questo comando:

curl http://deviceIP:8081/zeroconf/ota_unlock -XPOST --data '{"deviceid":"deviceID","data":{} }'

il quale deve rispondere come segue:

{"seq":2,"error":0}

Ottenuta questa riposta, finalmente si può provvedere alla riprogrammazione vera e propria:

curl http://deviceIP:8081/zeroconf/ota_flash -XPOST --data '{"deviceid":"deviceID","data":{"downloadUrl": "http://webServer/nomefirmware.bin", "sha256sum": "<SHAsum>"} }'

Dove ovviamente webServer sarà l’indirizzo del nostro server web locale e nomefirmware.bin il nome del nostro firmware da esso ospitato.

Se si otterrà la seguente risposta:

{"seq":2,"error":0}

la riprogrammazione sarà andata a buon fine.

Conclusione

A questo punto è necessario spegnere il Sonoff, rimuovere il ponticello sui contatti OTA, dopodiché rimontarlo e riaccenderlo.
Ovviamente il comportamento sarà legato al firmware che si sarà montato: in caso di un Sonoff-Tasmota precompilato sarà necessario premere cinque volte il tasto sul Sonoff per resettarlo, far sì che esponga il proprio AP Wi-Fi, collegarvisi e configurarlo; se invece si sarà provveduto a preconfigurare il proprio file di configurazione e così compilarlo (usando poi il compilato per riprogrammare), certamente il Sonoff entrarà da solo nella propria rete Wi-Fi e sarà possibile cominciare ad utilizzarlo da subito.


ITEAD Sonoff BasicATTENZIONE: 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.


Please comment below