NOTE: Per la nuova versione dei Sonoff (Sonoff RF R2 POWER V1.0) seguire anche questa guida qui.
In questa guida andreamo a sostituire il firmware origianle del vostro Sonoff Basic con quello Tasmota su GitHub, utilizzando Arduino UNO come programmatore seriale.
Questo servirà per esempio per utilizzare il protollo MQTT per integrarlo in Home-assistant.
Ci serviranno:
Arduino UNO
Sonoff Basic
Saldatore
Fili colorati con pin maschio-maschio
per il software:
Python
ESPtool
Arduino IDE (se il pc non rileva arduino sulla USB)
Firmware Tasmota
per programmare il Sonoff dobbiamo saldare 4 fili come in foto che serviranno per il collegamento ad Arduino il PIO14 serve per provare poi lo switch.
di seuito i collegamenti:
1 2 3 4 5 6 |
Sonoff <-> Arduino ------------------ +3,3v <-> +3,3V TX <-> TX RX <-> RX GND <-> GND |
Dobbiamo collegare il reset di Arduino a GND, questo per impedire che eventuali software su Arduino vengano eseguiti e vadano ad interferire sulla seriale.
Installiamo il Python 64bit scaricandolo da qui (32bit per vcchi sistemi):
https://www.python.org/downloads/release/python-371/
oppure i link diretti al file:
64bit
https://www.python.org/ftp/python/3.7.1/python-3.7.1-amd64.exe
32bit
https://www.python.org/ftp/python/3.7.1/python-3.7.1.exe
ricordiamoci di selezionare aggiungi Python to Path durante l’installazione.
Installiamo anche il supporto Python per la seriale:
aprite un prompt dei comandi (cmd) e lanciate questo comando
1 2 3 4 5 |
C:\ python -m pip install pyserial Collecting pyserial Using cached https://files.pythonhosted.org/packages/0d/e4/2a744dd9e3be04a0c0907414e2a01a7c88bb3915cbe3c8cc06e209f59c30/pyserial-3.4-py2.py3-none-any.whl Installing collected packages: pyserial Successfully installed pyserial-3.4 |
Scarichiamo ESPTool da github con la funzione Clona o Download Zip (Download Zip):
https://github.com/espressif/esptool/releases
Estraiamo il contenuto del pacchetto zip esptool preso da GitHub in C:\
Scarichiamo il firmware del Sonoff, ho preso quello completo (sonoff.bin) perchè alla release attuale quello sonoff-basic.bin mi rimaneva in acquisizione indirizzo ip il client al momento della prima connessione.
https://github.com/arendst/Sonoff-Tasmota/releases/download/v6.3.0/sonoff.bin
copiamo il file sonoff.bin nella cartella di ESPTool.
Andiamo finalmente a caricare il firmware sul nostro Sonoff
per prima cosa colleghiamo arduino al pc e verifichiamo quale porta COM è stata assegnata (nel mio caso la COM2).
potete vederlo da Arduino IDE oppure da gestione periferiche.
Scollegare il pin dei +3,3V
Teniamo pigiato il tasto sul Sonoff tenendolo premuto e colleghiamo il pin dei +3,3V, dopo 2 secondi lasciate il tasto sul Sonoff ora si trova in modalità Flash pronto a ricevere il nuovo firmware.
NOTE: Non collegate mai il +3,3V ai +5V, causa danneggiamento del chip ESP8266.
E non collegate mai la tensione 220V quando è connesso ad Arduino UNO e PC, non ha un isolamento e potreste danneggiare tutto, anche il PC.
Da cmd, andiamo nella cartella dove si trova esptool e lanciamo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
C:\esptool-2.5.1\esptool.py --port COM2 write_flash 0x00000 sonoff.bin esptool.py v2.5.1 Serial port COM2 Connecting.... Detecting chip type... ESP8266 Chip is ESP8266EX Features: WiFi MAC: dc:4f:22:09:aa:aa Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 1MB Compressed 501424 bytes to 343631... Wrote 501424 bytes (343631 compressed) at 0x00000000 in 30.1 seconds (effective133.4 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... |
fatto questo stacchiamo tutti i cavetti saldati e colleghiamo il sonoff alla tensione 220v.
Il Sonoff basic non avendo nessuna wifi configurata, partirà come accesspoint, collegatevi sopra e aprite da browser l’indirizzo
http://192.168.4.1
Configuriamo la rete wifi inserendo il nome della vosrta wifi e la password, il vostro sonoff restarterà e si collegherà alla rete wifi principale.
Il Sonoff adesso partirà in DHCP quindi avrà un ip assegnato dal vostro router, per trovarlo, andate nel vostro router e cercatelo tra gli indirizzi assegnati.
Se volete impostare un indirizzo IP statico, una volta riaperta l’interfaccia web del sonoff, andate nella console web e inserite il seguente comando e date invio:
1 2 |
Ex. IPAddress1 192.168.1.12 |
Riavviate il sonoff cliccando su restart.
Il Sonoff ora risponderà all’indirizzo statico appena inserito nella console.
Se volete usare questo Sonoff come interruttore smart dentro una scatola con interruttore classico, andiamo a saldare due fili, uno su GND e uno su GPIO14 dove andrà poi collegato all’interruttore classico a parete.
Nel menu “Module parameters” configuriamo il GPIO14 come “Switch1” e salviamo.
Ora potete usare il vostro sonoff secondo le vostre necessità.
NOTA: se volete utilizzare il vostro Sonoff con dei deviatori, seguite anche questa guida molto importante per eliminare eventuali disturbi sul GPIO14 per evitare il fastidioso problema del lampeggio della luce.
ciao, ho seguito la tua guida passo passo, quando carico il firmware sul sonoff mi appare nel promt la seguente scritta:
a fatal error occurred: Failed to connect to Espressif device: timed out waiting for packet header
cosa sbaglio?
Sicuro di non avere invertito rx tx?
ciao, rifatto il tutto oggi, al momento è fermo alla riga
esptool.py v2.6
Serial port COM3
connecting…..
Detecting chip type… ESP8266
Chio is ESP8285
Features: Wifi, Embedded Flash
mac: …….
Uploading stub…..
Running stub…
ed è fermo li da un pochino
Se hai messo bene i collegamenti
Rx con rx
Tx con tx
Hanno le sigle scritte male.
Riprova con l’accensione.
Devi lasciare il bottone appena alimenti il sonoff.
Fai questo appena fai invio da esp tool.
Ciao. Alla fine sono riuscito a flashare i vari sonoff Basic. Volevo chiederti, dovrei caricare tasmota su un sonoff th 10. La procedura è la stessa?
Il th10 non l’ho mai avuto sottomano, ma la procedura è la stessa visto che il chip interno è sempre lo stesso.
Fatto, procedura la stessa. Bisogna solo impostare th nelle opzioni e il sensore. Grazie
Ciao cosa intendi impostare th nelle opzioni..cos’è da cambiare nella guida?? Grazie
Il metodo per caricare il firmware sul sonoff TH è identico, per impostare TH si intende selezionare sonoff TH anziche Sonoff Basic nel pannello di configurazione “Module Parameter” ma questa è una configurazione da fare una volta aperta l’interfaccia web del sonoff.
ciao, ho provato la tua guida ma mi esce scritta questa cosa:
c:\>esptool-2.5.1\esptool.py –port com4 write_flash 0x00000 sonoff.bin
usage: esptool write_flash [-h] [–flash_freq {keep,40m,26m,20m,80m}]
[–flash_mode {keep,qio,qout,dio,dout}]
[–flash_size FLASH_SIZE]
[–spi-connection SPI_CONNECTION] [–no-progress]
[–verify] [–compress | –no-compress]
[ …]
esptool write_flash: error: argument : [Errno 2] No such file or directory: ‘sonoff.bin’
cosa c’è che non va?
premetto che io uso un arduino mega 2560, devo cambiare in arduino ide la scheda e mettere “generic esp8266 module”?
c’è un passaggio che non capisco, creare la cartella sonoff in C e poi mettere il file sonoff.bin in esptool. io ho estratto la cartella esptool-2.5.1.zip in C e vi ho messo sonoff.bin va bene?
Se hai inserito il file sonoff.bin nella stessa folder di ESPtool e da li dentro lanci il comando come hai fatto dovrebbe trovarlo, l’errore che ti da è che non trova il file sonoff.bin, prova magari a dargli il path completo con gli apicetti esempio:
c:\>esptool-2.5.1\esptool.py –port com4 write_flash 0x00000 “C:\path_completo\sonoff.bin”
se il file sonoff.bin è nella posizione da dove lanci il comando esptool.py non è necessario.
per quanto riguarda Arduino Mega o UNO non dovrbbe cambiare nulla, semplicemente perchè in questa procedura viene utilizzato con un adattatore da usb a seriale.
Grazie della segnalazione, ho corretto l’laricolo togliendo di creare la cartella sonoff in C:
CIAO peppebytes, niente da fare ma risolto con atom e arduino da un altra guida. grazie lo stesso della disponibilità ciao.
Sì anche ATOM è ottimo, lo uso anche io, ti permette di compilare al momento e se serve puoi apportare modifiche al codice.
ciao a me da questo errore
C:\Users\Filionix>C:\esptool-2.6\esptool.py –port COM1 write_flash 0x00000 “C:\esptool-2.6\sonoff.bin”
esptool.py v2.6
Serial port COM1
Connecting…….._____….._____….._____….._____….._____….._____….._____
A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header
ciao a me da questo errore
C:\Users\Filionix>C:\esptool-2.6\esptool.py –port COM1 write_flash 0x00000 “C:\esptool-2.6\sonoff.bin”
esptool.py v2.6
Serial port COM1
Connecting…….._____….._____….._____….._____….._____….._____….._____
A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header