Sonoff POWR316 cu Tasmota: aceasta este combinația pe care o folosesc pentru a măsura consumul de energie al aparatului meu de aer condiționat. Să flashezi un Sonoff POWR316 cu Tasmota pare o treabă de zece minute. La mine a durat o după-amiază întreagă. POWR316, cunoscut și ca Sonoff POW Origin, are la bord un ESP32 și se comportă diferit la flashare față de modelele Sonoff mai vechi cu ESP8266. În acest articol îți arăt ce erori am întâlnit, ce înseamnă ele și ce metodă a funcționat până la urmă fiabil: o placă de dezvoltare ESP32 folosită ca adaptor USB-serial, împreună cu flasherul web esptool-js de la Espressif.
tasmota32.factory.bin la adresa 0x0. Cea mai frecventă problemă este alimentarea: multe adaptoare USB-TTL nu furnizează suficient curent pentru ESP32. La mine a funcționat fiabil o placă de dezvoltare ESP32 ca programator, împreună cu flasherul esptool-js.Testat în octombrie 2026 cu: Sonoff POWR316 (ESP32-D0WD-V3, 4 MB flash), Tasmota 16.0.0 (varianta germană tasmota32-DE), placă de dezvoltare ESP32-WROOM-32 cu cip CP2102, esptool-js în Chrome pe Windows.
De ce aleg Sonoff POWR316 Tasmota
Îmi extind casa inteligentă pas cu pas. De data aceasta vreau să măsor consumul de curent al aparatului meu de aer condiționat de tip split. Vreau să știu cât consumă de fapt vara la răcire și primăvara sau toamna la încălzire, iar valorile să le analizez în sistemul meu de smart home.
Pentru astfel de sarcini folosesc cu plăcere Sonoff. Dispozitivele sunt ieftine, se integrează ușor și se montează bine pe șina DIN. POWR316 comută până la 16 A și măsoară tensiunea, curentul, puterea și energia. Pentru un aparat de aer condiționat se potrivește foarte bine.
Cu firmware-ul original, dispozitivele depind însă de cloudul eWeLink. Eu vreau să îmi controlez dispozitivele local, fără ocolul printr-un server din străinătate. De aceea, pe fiecare dispozitiv Sonoff pe care îl am rulează Tasmota. Tasmota este un firmware liber, open source, pentru cipurile ESP. Are propria interfață web, comunică prin MQTT și se poate integra atât în soluția mea bazată pe OpenCCU, cât și în Home Assistant, ioBroker, openHAB sau FHEM.
Din păcate, este aproape de fiecare dată la fel: când plănuiesc o extindere, apare o nouă generație Sonoff, iar flasharea funcționează puțin altfel decât data trecută. Ca să nu pierzi și tu atât timp încercând, am documentat totul pe parcurs.
Ce se află în Sonoff POWR316?
Înainte să începi, ar trebui să știi cu ce hardware ai de-a face. Iată ce a citit esptool-js de pe dispozitivul meu în timpul flashării:
| Caracteristică | Valoare |
|---|---|
| Cip | ESP32-D0WD-V3 (revizia 3) |
| Nuclee / frecvență | Dual core, 240 MHz |
| Comunicație radio | Wi-Fi și Bluetooth |
| Memorie flash | 4 MB, mod DIO |
| Varianta Tasmota potrivită | tasmota32 (eu am folosit varianta germană tasmota32-DE) |
Diferența importantă față de ESP8266: ESP32 consumă mult mai mult curent la pornire și mai ales la activarea Wi-Fi, pentru scurt timp între 300 și 500 mA. Exact asta mi-a dat bătăi de cap, dar despre asta puțin mai târziu.
La prima conectare, verifică ce cip raportează flasherul. Dacă scrie „Dual Core”, folosești varianta normală tasmota32. Doar pentru un cip single-core (ESP32-SOLO1) ai nevoie de tasmota32solo1. Sonoff schimbă ocazional cipurile între reviziile hardware.
Siguranța pe primul loc: nu flasha niciodată la 230 V
POWR316 este un dispozitiv pentru tensiunea rețelei. Cât timp carcasa este deschisă, în niciun caz nu are voie să fie conectat la 230 V. În timpul flashării îl alimentezi exclusiv prin cei 3,3 V ai adaptorului. Dacă este conectat simultan și la rețea, acest lucru pune viața în pericol și îți poate distruge calculatorul.
Ai grijă și ca pe RX și TX să fie doar 3,3 V. Multe adaptoare USB-TTL au un jumper pentru 5 V și 3,3 V. Dacă este pus pe 5 V, și liniile de date au 5 V, iar ESP32 nu suportă acest lucru.
De ce ai nevoie pentru flashare
- un Sonoff POWR316 (deschis, fără conectare la rețea)
- o placă de dezvoltare ESP32 (de ex. ESP32-WROOM-32 DevKit) sau un adaptor USB-serial cu alimentare puternică de 3,3 V
- un header cu patru pini și cinci fire scurte
- un ciocan de lipit (foarte recomandat)
- browserul Chrome sau Edge, deoarece doar acestea suportă Web Serial
- fișierul firmware
tasmota32.factory.binde pe serverul oficial Tasmota (sau o variantă de limbă, de ex.tasmota32-DE.factory.bin) - opțional un multimetru pentru verificarea tensiunii
Erorile pe care le-am întâlnit – pe scurt
Înainte să intru în detalii, iată prezentarea generală. Dacă tocmai te uiți la unul dintre aceste mesaje, așa găsești rapid secțiunea potrivită din articol.
| Mesaj | Cauză | Soluție |
|---|---|---|
| Couldn’t sync to ESP | ESP32 nu răspunde: nu este în modul flash, RX/TX greșit conectate sau curent insuficient | alimentare mai puternică, ține butonul apăsat la pornire |
| Invalid head of packet (0x65) | ESP32 trimite textul normal de pornire în loc de răspunsul bootloaderului | forțează modul flash, ține butonul apăsat |
| POWERON_RESET la nesfârșit | tensiunea scade | placă de dezvoltare sau sursă externă de 3,3 V, lipește un header cu pini |
| invalid header: 0x20202020 | niciun bootloader valid în memoria flash | șterge și flashează din nou cu esptool-js, verifică suma de control |
| Repornire imediat după „WifiManager active” | pornirea Wi-Fi necesită mai mult curent decât poate furniza USB | reasamblează Sonoff și pornește-l cu propria sursă de alimentare |
Prima mea încercare cu adaptorul USB-TTL
Am încercat mai întâi varianta clasică: cu adaptorul meu USB-TTL cu cip CH340. Conectasem 3V3, GND și RX/TX încrucișat, adică TX de la adaptor la RX de la Sonoff și invers. Apoi am deschis Tasmota Web Installer, am selectat fișierul firmware, am apăsat butonul de pe Sonoff, am conectat cablul USB, am ales portul și am dat clic pe Install.
Rezultat: o eroare. La fel cu un al doilea adaptor cu cip FTDI. Nici inversarea RX și TX nu a schimbat nimic.
Eroarea 1: „Couldn’t sync to ESP”
Mesajul a fost:
Failed to enter bootloader mode: Couldn't sync to ESP.
Try resetting manually. Last error: Sync timeout or abandoned
La început am crezut că legătura s-a stabilit, pentru că după clic pe „Connect” installerul afișa un Device Dashboard. Asta înseamnă însă doar că portul COM al adaptorului a fost deschis. Nu spune nimic despre faptul că ESP32 din spatele lui răspunde sau nu.
„Couldn’t sync to ESP” înseamnă că ESP32 nu răspunde deloc. Cauzele obișnuite sunt:
- ESP32 nu este în modul flash, pentru că butonul nu a fost apăsat la pornire.
- RX și TX sunt conectate greșit.
- Alimentarea nu este suficientă.
La mine a fost alimentarea. Conform fișei tehnice, un adaptor FTDI cu cipul FT232RL furnizează pe pinul de 3,3 V doar aproximativ 50 mA. Nici multe adaptoare CH340 nu reușesc mult mai mult. Pentru un ESP32, asta este prea puțin. Tensiunea scade, iar cipul nici nu pornește corect.
Soluția: o placă de dezvoltare ESP32 ca programator
O placă de dezvoltare ESP32 sau ESP8266 are la bord două lucruri de care aveam nevoie: un cip USB-serial (la mine un CP2102) și un regulator de tensiune de 3,3 V puternic, care furnizează mult mai mult curent decât un adaptor ieftin.
Trucul: conectezi pinul EN al plăcii de dezvoltare ferm la GND. Astfel, ESP32 de pe placă rămâne permanent în reset și nu deranjează. Rămâne doar cipul USB-serial, care acum comunică direct cu Sonoff. Pe o placă ESP8266, cum ar fi NodeMCU, pinul se numește RST.
Conexiunile
| Placă de dezvoltare ESP32 | Sonoff POWR316 |
|---|---|
| EN | conectat la GND pe placa de dezvoltare |
| 3V3 | 3V3 |
| GND | GND |
| TX0 (GPIO1) | TX |
| RX0 (GPIO3) | RX |
Da, ai citit bine: aici liniile nu se încrucișează, ci TX merge la TX și RX la RX. Marcajele de pe placa de dezvoltare se referă la propriul ESP32. Cipul USB transmite pe linia RX a acestuia. Când ESP32-ul plăcii este scos din joc, rezultă deci o conexiune 1:1. Dacă nu funcționează așa, inversează de probă cele două linii. Nu se poate strica nimic.
Pe plăcile de dezvoltare ESP32-WROOM-32 obișnuite (DOIT DevKit V1 sau ESP32-DevKitC) găsești TX0 și RX0 unul lângă altul, între pinii D22 și D21. EN se află pe partea opusă, sus de tot, lângă 3V3.
Eu lipesc întotdeauna un header cu pini în dispozitivele mele Sonoff. Mulți conectează firele doar provizoriu, dar asta crește masiv riscul de erori. Un contact imperfect la 3V3 sau GND duce exact la erorile pe care ți le descriu aici și îți răpește inutil timp.
Eroarea 2: „Invalid head of packet (0x65)”
Cu placa de dezvoltare a apărut un mesaj nou:
Failed to enter bootloader mode: Invalid head of packet (0x65)
Acesta a fost un progres, pentru că acum soseau date. 0x65 este caracterul „e”. Installerul primea deci text normal în loc de un răspuns de la bootloader. Este tipic pentru începutul mesajului de pornire al ESP32 ets Jul 29 2019 …. ESP32 funcționa, dar nu în modul flash.
Consola te ajută să înțelegi
Am avansat cu adevărat abia când m-am uitat la ce afișa Sonoff în consolă. În Web Installer o găsești la „Logs & Console”. Acolo apărea această linie, iar și iar:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
Această linie îți spune două lucruri:
- boot:0x13 înseamnă: ESP32 pornește normal din memoria flash. Pentru modul flash ar trebui să apară boot:0x3 (DOWNLOAD_BOOT) și apoi „waiting for download”.
- POWERON_RESET într-o buclă fără sfârșit înseamnă: tensiunea scade atât de mult încât cipul repornește complet.
| Mesaj în consolă | Semnificație |
|---|---|
| nicio afișare | nicio conexiune: verifică firele sau alimentarea |
| boot:0x13 (SPI_FAST_FLASH_BOOT) | pornire normală, nu este în modul flash |
| boot:0x3 (DOWNLOAD_BOOT) / waiting for download | modul flash este activ, poți flasha |
| POWERON_RESET continuu sau linii întrerupte | alimentarea scade |
| invalid header: 0x… | niciun bootloader valid în memoria flash |
Trucul decisiv: nu da drumul butonului
Până la urmă, soluția pentru modul flash a fost simplă. Am ținut butonul de pe Sonoff apăsat pe tot parcursul flashării, de la conectarea cablului USB până la mesajul că instalarea s-a încheiat.
Explicația: butonul trage pinul GPIO0 la masă. Doar dacă se întâmplă asta la pornire, ESP32 intră în modul flash. În plus, adaptorul meu nu are linii DTR și RTS către Sonoff. Prin urmare, flasherul nu poate reporni singur ESP32 și nu îl poate trece în bootloader. Dacă cipul repornește între timp, de exemplu din cauza unei scăderi scurte de tensiune, fără butonul apăsat ajunge din nou în modul normal, iar conexiunea se întrerupe.
Eroarea 3: „invalid header: 0x20202020”
Web Installer raporta acum „gata”. Am repornit Sonoff fără să țin butonul apăsat și am văzut în consolă doar asta:
invalid header: 0x20202020
invalid header: 0x20202020
ets Jul 29 2019 12:21:46
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
„Invalid header” înseamnă că ESP32 nu găsește cod valid în locul din memoria flash unde ar trebui să se afle bootloaderul. 0x20 este caracterul spațiu. Acolo era deci text în loc de firmware. Există două cauze posibile:
- Fișierul firmware este corupt. Se întâmplă des când pe GitHub folosești „Salvează linkul ca” și descarci pagina HTML în locul fișierului propriu-zis. Un fișier
tasmota32.factory.binautentic are aproximativ 3 MB. Fișierul meu avea dimensiunea corectă. - Procesul de scriere nu s-a încheiat corect, fără ca installerul să observe.
Nici o a doua încercare cu firmware-ul online din Web Installer nu a ajutat. Ulterior, consola afișa mesaje de pornire întrerupte, un semn clar de alimentare instabilă. Care dintre cele două cauze a fost exact nu s-a mai putut stabili. Pasul următor a rezolvat însă problema în mod fiabil.
Sonoff nu se strică din cauza încercărilor de flashare eșuate. Bootloaderul din ROM-ul ESP32 nu poate fi suprascris, așa că poți flasha din nou oricând.
Metoda care a funcționat: esptool-js de la Espressif
Progresul decisiv a venit cu esptool-js, flasherul web al producătorului ESP32, Espressif. La fel ca Tasmota Web Installer, rulează direct în browser, dar afișează un jurnal detaliat. Mai ales, la final verifică prin sumă de control dacă datele au ajuns cu adevărat corect în memoria flash.
Pas cu pas: flasharea Sonoff POWR316 cu esptool-js
- Conectează placa de dezvoltare ESP32 așa cum am descris mai sus (EN la GND).
- Ține apăsat butonul de pe Sonoff și apoi conectează placa de dezvoltare prin USB la calculator.
- Deschide espressif.github.io/esptool-js în Chrome sau Edge.
- Setează rata de transfer la 115200 și dă clic pe „Connect”. Alege portul COM al plăcii de dezvoltare.
- Verifică jurnalul: ar trebui să apară „Chip is ESP32-D0WD-V3” și ID-ul memoriei flash.
- Dă clic pe „Erase Flash” și așteaptă până se încheie procesul.
- Introdu 0x0 ca Flash Address și selectează fișierul
tasmota32.factory.bin. - Dă clic pe „Program”. Ține în continuare butonul apăsat și nu mișca nimic.
- Așteaptă până apare în jurnal „Hash of data verified.”
- Deconectează USB, dă drumul butonului.
La mine, finalul jurnalului arăta așa:
Wrote 3153024 bytes (1964023 compressed) at 0x0 in 181.571 seconds.
File md5: 67622a083788b5ec91a4657ada1e0627
Flash md5: 67622a083788b5ec91a4657ada1e0627
Hash of data verified.
Cele două sume de control MD5 sunt identice. Astfel este sigur că firmware-ul se află corect în memorie, byte cu byte. La 115200 baud, procesul durează aproximativ trei minute. Este lent, dar stabil.
Linia „Hard resetting via RTS pin…” de la final o poți ignora. Fără o linie RTS conectată, nu se întâmplă nimic. Repornirea o faci singur, deconectând scurt cablul USB.
.factory.bin la adresa 0x0. Abia când apare „Hash of data verified” în jurnal, firmware-ul este sigur scris corect în memorie.Și firmware-ul original?
Odată cu ștergerea memoriei flash, firmware-ul eWeLink dispare. Singura cale înapoi este o copie de rezervă făcută dinainte. Dacă vrei să păstrezi această opțiune, citește memoria înainte de ștergere cu instrumentul în linie de comandă esptool, de exemplu cu esptool.py read_flash 0 0x400000 backup.bin. Eu am renunțat la asta, pentru că oricum nu mai vreau să folosesc firmware-ul cu cloud.
Tasmota pornește, dar nu apare nicio rețea Wi-Fi
După flashare am repornit Sonoff fără buton. Consola afișa în sfârșit Tasmota (în germană, pentru că flashasem varianta germană):
00:00:00.002 HDW: ESP32-D0WD-V3 v3.1
00:00:01.403 Projekt tasmota - Tasmota Version 16.0.0(release-tasmota32)
00:00:01.813 WIF: WifiManager aktiv für 3 Minuten
ets Jul 29 2019 12:21:46
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
Deci Tasmota funcționa. Dar exact în momentul în care voia să pornească Wi-Fi, ESP32 a repornit din nou. Modulul radio Wi-Fi consumă cel mai mult curent la pornire, iar asta nu reușește nici placa de dezvoltare prin USB. Pentru flashare alimentarea este suficientă, pentru funcționarea Wi-Fi nu.
Mesajele QPC: Count și FRC: Some settings have been reset sunt inofensive. Tasmota numără repornirile rapide și, după mai multe, resetează setările. Pe un dispozitiv proaspăt flashat nu se pierde nimic.
Soluția: Sonoff are nevoie de propria sursă de alimentare
- Îndepărtează toate firele către placa de dezvoltare.
- Reasamblează complet Sonoff și închide carcasa.
- Conectează Sonoff la 230 V în mod obișnuit.
- Caută cu smartphone-ul rețeaua Wi-Fi tasmota-XXXXXX-XXXX și conectează-te la ea.
- Dacă pagina de autentificare nu se deschide automat, accesează în browser 192.168.4.1.
- Alege rețeaua ta Wi-Fi, introdu parola și salvează.
După aceea, Sonoff se conectează la rețeaua ta de acasă. Adresa IP o găsești în lista de dispozitive a routerului.
Tasmota oferă hotspotul doar timp de trei minute. Dacă l-ai ratat, deconectează scurt Sonoff de la curent și conectează-l din nou.
Dacă la tine Tasmota funcționează stabil prin programator, poți introduce datele Wi-Fi și direct în consolă:
Backlog SSID1 ReteauaTa; Password1 ParolaTa
Configurarea template-ului Sonoff POWR316 Tasmota
După prima pornire, Tasmota încă nu știe la ce pini sunt conectate releul, butonul, LED-urile și cipul de măsurare a energiei. Pentru asta ai nevoie de un template. Pe POWR316-ul meu funcționează acesta:
{"NAME":"Sonoff POWR316","GPIO":[32,0,0,0,0,576,0,0,0,224,0,0,3104,0,320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"FLAG":0,"BASE":1}
Template-ul definește butonul, releul, cele două LED-uri de stare și pinul de recepție pentru cipul de măsurare a energiei. Iată cum îl aplici:
- Deschide interfața web a Sonoff prin adresa sa IP.
- Mergi la Tools → Console (în interfața în engleză).
- Scrie
Template, un spațiu și apoi template-ul complet, și confirmă cu Enter. - Apoi introdu
Module 0. Astfel activezi template-ul, iar Sonoff repornește. - După repornire, pagina principală afișează butonul pentru releu și valorile pentru tensiune, curent, putere și energie.
Template-uri pentru alte dispozitive găsești în baza de date de template-uri Tasmota de la blakadder.
Pentru o măsurare precisă a consumului merită apoi o calibrare cu un consumator cunoscut, de exemplu un bec cu incandescență sau o aerotermă. Cum se face, descrie documentația Tasmota despre calibrare.
Setări pentru măsurarea consumului aparatului de aer condiționat
La un aparat de aer condiționat vreau în primul rând să măsor, nu să comut. De aceea am ajustat câteva lucruri în consola Tasmota:
PowerOnState 1asigură că releul pornește întotdeauna cuplat după o pană de curent. Astfel, aparatul de aer condiționat nu rămâne oprit în mod nedorit.TelePeriod 60trimite valorile măsurate prin MQTT în fiecare minut. Valoarea implicită este de 300 de secunde.- La Configuration → Configure MQTT introduci brokerul tău MQTT. Home Assistant recunoaște apoi automat dispozitivele Tasmota prin integrarea Tasmota.
Apropo, actualizările viitoare ale Tasmota le instalezi comod prin interfața web, la Firmware Upgrade. Pentru asta nu mai trebuie să deschizi Sonoff.
Listă de verificare: flasharea Sonoff POWR316 Tasmota fără frustrare
- Alimentare: Un ESP32 are nevoie de până la 500 mA. Folosește o placă de dezvoltare ESP32 sau o sursă externă de 3,3 V, nu un adaptor USB-TTL slab.
- Conexiuni: Lipește un header cu pini și păstrează firele scurte. Cu placa de dezvoltare și EN la GND, conectezi TX la TX și RX la RX.
- Modul flash: Apasă butonul înainte de pornire și ține-l apăsat pe tot parcursul flashării.
- Verificare: În consolă trebuie să apară „DOWNLOAD_BOOT” sau „waiting for download”.
- Instrument: Folosește esptool-js cu „Erase Flash” și adresa 0x0. Urmărește mesajul „Hash of data verified”.
- Prima pornire: Pornește Sonoff reasamblat cu propria sursă de alimentare și configurează Wi-Fi prin hotspot.
- Browser: Folosește doar Chrome sau Edge; Firefox și Safari nu suportă Web Serial.
Întrebări frecvente despre Sonoff POWR316 Tasmota
De ce versiune Tasmota am nevoie pentru Sonoff POWR316?
POWR316 are un ESP32 dual-core (ESP32-D0WD-V3). Prin urmare ai nevoie de tasmota32 sau de o variantă de limbă, de exemplu tasmota32-DE pentru interfața în germană. Pentru flasharea prin cablu folosești fișierul cu terminația .factory.bin și îl scrii la adresa 0x0.
Pot flasha Sonoff POWR316 fără să lipesc?
În principiu da, cu fire apăsate pe pad-uri sau cu vârfuri de testare. Totuși, nu recomand acest lucru. La ESP32, contactele imperfecte duc rapid la scăderi de tensiune și la flashări întrerupte. Un header cu pini lipit îți economisește mult timp.
Ce înseamnă „Couldn’t sync to ESP”?
Flasherul nu primește niciun răspuns de la ESP32. De obicei, cipul nu este în modul flash, RX și TX sunt inversate sau alimentarea nu este suficientă.
De ce repornește ESP32-ul meu încontinuu?
Mesajele repetate „POWERON_RESET” arată că tensiunea de alimentare scade. ESP32 are nevoie pentru scurt timp de până la 500 mA, mai ales la activarea Wi-Fi. Majoritatea adaptoarelor USB-TTL nu reușesc să furnizeze atât.
Pot strica Sonoff în timpul flashării?
Nu printr-o flashare eșuată. Bootloaderul din ROM rămâne intact, așa că poți flasha din nou oricând. Devine periculos dacă aplici 5 V pe liniile de date sau dacă conectezi dispozitivul la 230 V cu carcasa deschisă.
Pot reveni la firmware-ul original?
Doar dacă ai făcut o copie de rezervă a memoriei înainte de flashare. Sonoff nu oferă firmware-ul eWeLink pentru descărcare.
Funcționează Tasmota Web Installer cu POWR316?
În principiu da. La mine, esptool-js a funcționat mai bine, pentru că afișează un jurnal detaliat și verifică datele scrise prin sumă de control. Astfel vezi imediat dacă firmware-ul se află corect în memorie.
Linkuri utile
- Tasmota: Getting Started – ghidul oficial pentru început
- Tasmota Web Installer
- esptool-js – flasher web de la Espressif
- Espressif: depanarea problemelor la flashare
- Firmware Tasmota pentru ESP32 (release)
- Baza de date de template-uri Tasmota
- Prezentarea comenzilor Tasmota
Metoda mea într-o singură frază
Pentru Sonoff POWR316 Tasmota, regula este: folosește o placă de dezvoltare ESP32 ca programator, ține butonul apăsat pe tot parcursul procesului, flashează cu esptool-js și apoi pornește Sonoff cu propria sursă de alimentare. Așa a funcționat la mine, după o după-amiază lungă. Acum POWR316 măsoară consumul aparatului meu de aer condiționat, complet fără cloud.
Ai avut alte experiențe sau te-ai blocat într-un punct pe care nu l-am descris aici? Scrie-mi în comentarii.
