Tasmota na spínači Sonoff: otvorený firmvér pre IoT

7. 7. 2020
Doba čtení: 8 minut

Sdílet

 Autor: Ľubomír Patek
Dnes sa oboznámime so spínačom Sonoff Basic založenom na čipe ESP8266, firmvérom Tasmota a pridám informácie o tom, čo si máte objednať, aby ste si nabudúce mohli do spínača nahrať nový firmvér.

V prvej časti miniseriálu sa oboznámime s otvoreným firmvérom Tasmota, ktorý bol pôvodne vyvinutý práve pre spínače Sonoff, ale čoskoro sa rozšírila podpora aj na ďalšie zariadenia so známym čipom (tiež SoC, System on Chip) ESP8266. Je na ňom postavených mnoho zariadení využívaných v domácej automatizácii (spínačov, svetiel, snímačov apod.) od rôznych výrobcov a niekoľko typov vývojových dosák (napr. Wemos, NodeMCU, Adafruit HUZZAH, SparkFun ESP8266 Thing…).

V dnešnom dieli sa stručne oboznámime s hardvérom a firmvérom, nabudúce nainštalujeme firmvér Tasmota, v ďalšom pokračovaní sa s ním zoznámime a neskôr naučíme zariadenia komunikovať pomocou protokolu MQTT.

V druhej časti seriálu sa budeme venovať prepojeniu viacerých zariadení do jedného celku a vytvoríme si jednoduché užívateľské rozhranie na ich ovládanie a zobrazovanie nameraných údajov pomocou nástroja Node Red. Napríklad takéto:


Ukážka UI vytvoreného v Node Red – porovnanie troch snímačov vlhkosti v kúpeľni a sledovanie chladničky.

Sonoff Basic

Na oboznámenie sa so zariadeniami ovládanými cez internet som si vybral jednoduchý spínač Sonoff Basic čínskeho výrobcu Itead. Spínače Sonoff (presnejšie tie, ktoré sú ovládané prostredníctvom WiFi) sú založené na známom čipe ESP8266. Tento SoC bol pôvodne vyvinutý ako prídavný WiFi modul k mikroprocesorom, ale čoskoro sa začal využívať výkon jeho procesora najprv v amatérskych zariadeniach a neskôr aj v sériovo vyrábaných. Viac o ňom si môžete prečítať napríklad v úvode článku o jeho nástupcovi ESP32.

Spínač Sonoff Basic je základný spínač obsahujúci jeden spínací prvok (relé), ktorým môžete spínať spotrebič napájaný 230V s odberom do 10A (teda s príkonom do 2,3 kW).Od tohoto spínača sú odvodené ďalšie, ktoré obsahujú viac spínacích prvkov (napr. Sonoff Dual, Sonoff 4CH, Sonoff IFan03), alebo obsahujú ďalšie funkcie, napr. spínač Sonoff TH ponúka navyše meranie teploty a vlhkosti, spínač Sonoff Pow meria energiu spotrebovanú spínaným zariadením, aby som vymenoval aspoň tie najzaujímavejšie z ponuky výrobcu.


Obrázok spínača Sonoff Basic R2

Zariadenia Sonoff sú vybavené firmvérom, ktorý je možné ovládať cez mobilnú aplikáciu EWelink (Android, IOS). Tento FW a aplikácia sú funkčné, umožňujú pripojenie všetkých výrobkov Sonoff a ich spoluprácu aj vytvárane automatizácií. Najnovšie pribudla možnosť používať spínač s aplikáciou EWelink lokálne, bez nutnosti pripojenia na neznáme servery, či dokonca integrovať spínač Sonoff s pôvodným firmvérom do aplikácie Home Assistant.

Stále však existuje niekoľko dôvodov na použitie alternatívneho firmvéru: dôvodom môže byť to, že chcete zariadenie ovládať pomocou nejakého štandardného protokolu (MQTT, HTTP), rozšíriteľnosť a konfigurovateľnosť, či nedôvera k uzatvorenému softvéru, komunikujúcemu prostredníctvom neznámych protokolov, navyše pochádzajúceho z krajiny, kde nemajú príliš v úcte ochranu nášho súkromia.

Výrobca Itead sa použitiu svojich výrobkov s alternatívnym FW nebráni, spínače sú na jeho nahratie pripravené a výrobca o nich zverejnil aj niekoľko málo informácii na wiki o Sonoff. Do niektorých novších zariadení pridal aj možnosť prvotného flashovania alternatívneho firmwaru cez WiFi/OTA – napr. aj do verzie R3 spínača Sonoff Basic. (V seriáli však budeme používať verziu R2 a bezdrôtovú metódu nahrávania/aktualizácie budeme používať až s novým FW Tasmota.)

Spínač Sonoff Basic som vybral kvôli tomu, že je asi najdostupnejší (kúpite ho v slovenských a českých e-shopoch, ale aj kamenných predajniach), je vyrobený kvalitne a bezpečne. Výrobca disponuje certifikátom zhody s európskymi normami týkajúcimi sa bezpečnosti a elektromagnetickej kompatibility. Certifikované sú aj ďalšie výrobky Sonoff, ale nie všetky.

Čitateľ si samozrejme môže zvoliť akékoľvek iné zariadenie obsahujúce čip ESP8266, aj od iných výrobcov, vrátane vývojových dosák – v takom prípade si však bude musieť vedieť sám poradiť s jeho prepojením s prevodníkom USB a nahratím nového firmvéru. V prípade zariadení podporovaných projektom Tasmota mu v tom výdatne pomôže dokumentácia.

Tasmota

Tasmota je voľne šíriteľný firmvér (GNU GPL) určený pre zariadenia založené na čipe ESP8266. Alebo aj Theo Arends' Sonoff-MQTT-OTA-Arduino firmware. Autor ho začal písať práve pre spínače Sonoff, ale pôvodný zámer sa mu akosi vymkol spod kontroly a v čase písania článku Tasmota podporuje už takmer tisíc štyristo zariadení.


Snímka obrazovky webového rozhrania Tasmota

Firmvér Tasmota využíva projekt Arduino Core for ESP8266 (LGPL), ktorý pridáva do prostredia Arduino podporu procesora ESP8266, takže je na ňom možné spúšťať programy napísané pre Arduino. Arduino Core je založené na Espressif SDK od výrobcu SoC Espressif (licencia Espressif MIT).

Firmvér je dostupný na GitHube a je v aktívnom vývoji, čo znamená, že funkcie pribúdajú, občas niečo ubudne, menia sa predvolené nastavenia – je preto vhodné si pred aktualizovaním pozrieť najnovšie zmeny v súbore code>tasmota/CHANGELOG.md.

Tasmota disponuje grafickým webovým rozhraním, cez ktoré je možné zariadenie ovládať a nastavovať a cez ktoré poskytuje aj údaje zo snímačov. Zariadenie možno ovládať aj prostredníctvom konzoly (sériovej aj webovej), protokolov MQTT, HTTP, alebo KNX. Tasmota umožňuje lokálne automatizovanie činností pomocou časovačov a pravidiel (rules), bezdrôtovú aktualizáciu (OTA, Over The Air), poskytuje podporu veľkého množstva snímačov, rôznych druhov LED svetiel (ovládanie farieb, intenzity), zobrazovacích displejov, alebo infračerveného ovládania.

Viac o projekte sa dozviete v dokumentácii k projektu Tasmota, ktorú nájdete na GitHube.

Poznámka: Dokumentácia bola nedávno premiestnená z adresára tasmota/docs na tasmota.github.io/docs/, preto odkazy z mnohých, aj nedávnych článkov a tutoriálov na internete odkazujú na staré umiestnenie.

Čo budete potrebovať?

Ak si chcete možnosti firmvéru Tasmota prakticky vyskúšať, do budúceho pokračovania si pripravte spínač Sonoff Basic (alebo iné zariadenie s čipom ESP8266), prevodník úrovní USB na TTL a nejaké konektory a vodiče. Neuškodí ak budete mať poruke aj spájkovačku, ale pri troche trpezlivosti to pôjde aj bez nej.

1. Spínač Sonoff Basic R2

Spínač je možné objednať priamo na webe výrobcu a tiež vo všetkých známych e-shopoch ponúkajúcich tovar z Azie. V našich končinách spínač ponúka napr. GM electronic (v ČR si prepíšte doménu na cz, v e-shope som nenašiel prepínanie krajiny ani meny), ktorý má aj kamenné predajne.

V seriáli budem opisovať verziu R2 (ktorá nahradila v roku 2018 verziu R1) a je v súčasnosti asi najrozšírenejšia, aj keď postupne ju nahrádza verzia R3. Ak už máte doma spínač staršej verzie R1, alebo si chcete objednať najnovší vo verzii R3, rozdiely nájdete v dokumentácii Tasmota. Z hľadiska flashovania firmwaru tieto rozdiely nie sú zásadné. Vývody na programovanie majú vyvedené všetky verzie, rozdiel je len v ich umiestnení. Verzia R3 ich má navyše ťažšie dostupné, preto pre ňu autori odporúčajú metódu programovania bez spájkovania. Zásadnejšie rozdiely medzi verziami sú v možnosti neskoršieho rozšírenia – napríklad ak by ste v budúcnosti chceli k spínaču pripojiť nejaký snímač.

Jedným z rozdielov je, že verzie R2 a R3 sú riadené SoC s iným označením: ESP8285. Je to rovnaký SoC ako ESP8266, len má navyše integrovanú pamäť FLASH s veľkosťou 1 MB. Pokiaľ nepôjde o špecifiká, budem používať označenie ESP8266 pre oba. Pri doterajších verziách spínača Basic nie je tento rozdiel podstatný, pretože všetky majú rovnakú veľkosť pamäte.

2. Prevodník z USB na logický signál s úrovňou 3,3 V

Na nahratie FW budete potrebovať prevodník signálu USB na signál TTL s úrovňou 3,3 V na dátových vodičoch s vyvedeným napájacím napätím 3,3 V.Ak viete, môžete použiť čokoľvek čo spĺňa tieto parametre. Ak si nie ste istí, vyberte si niektorý z prevodníkov odporúčaných v sekcii Getting Started dokumentácie, najviac sa mi pozdáva tento (predáva sa aj s káblikom):


Prevodník z čínskych e-shopov

Ja som použil iné vyhotovenie, ktoré je určené na programovanie modulu ESP01. Modul sa zasúva priamo do konektora a preto k nemu nedodávajú káblik, ten si budete musieť vyrobiť sami.


USB adaptér pre nahrávanie firmvéru do ESP-01

Prevodníky na obrázkoch obsahujú obvod CH340G, ktorý je spoľahlivý a prevodníky s ním sú lacné a dostupné v čínskych e-shopoch, v tých našich sa mi žiaľ podarilo nájsť len USB adaptér pre ESP-01 (ten na druhom obrázku), ale možno budete v hľadaní úspešnejší.

Prevodníky s obvodom CH340G sa používajú v mnohých typoch vývojových dosák, napr. v klonoch Arduino, doskách Wemos, alebo NodeMCU. Podobne bezproblematické by mali byť aj prevodníky s originálnymi obvodmi FT232RL od výrobcu FTDI. Problém by mohol nastať s prevodníkmi obsahujúcimi falzifikáty obvodu FT232RL alebo obvody bez označenia.

3. Kábliky a konektory

Podľa vlastného výberu si objednajte aj kolíky, dutinkovú lištu, či káblik. V núdzi ich môžete vybrať z nejakého starého zariadenia.


Konektory a kábliky s rôznymi ukončeniami

Ak plánujete použiť metódu nahrávania firmvéru bez spájkovania, na strane spínača budete potrebovať buď zakončenie káblika s kolíkmi, alebo do dutiniek vložte štvoricu kolíkov, ktorých druhú stranu potom zasuniete do dierok dosky plošného spoja.

K USB adaptéru pre ESP-01 si budete musieť káblik vyrobiť sami. Ja som ho vyrobil zo starého kábla na pripojenie periférií k základnej doske PC a kryty som vyrobil vrstvením materiálu technológiou podobnou 3D tlači. Ako vidíte na obrázku, ani esteticky to nemá zase až tak ďaleko od vzhľadu výrobkov z bežnej 3D tlačiarne (oproti ktorej táto technológia navyše umožňuje zaliať iné trojrozmerné objekty – vodiče a konektory). Napriek tomu, ako to vyzerá, slúži to dobre a spoje sú pri manipulácii dostatočne chránené proti odtrhnutiu alebo skratovaniu.

bitcoin_skoleni


Vyrobený káblik

Ak sa rozhodnete pre výrobu káblika, spájkovanie konektora, alebo dočasné naspájkovanie vodičov priamo na dosku plošného spoja spínača, budete potrebovať ešte spájkovačku, spájku (cínová spájka, spájka PbSn, cín) a nejaké tavidlo (kolofóniu). V ČR radšej hľadajte pájku a kalafunu. Na výrobu špeciálnych 3D krytov sa vám zase zíde takéto dômyselné zariadenie. Autor článku by ocenil aj dobrý zrak a pevnú ruku, ale určité výsledky sa dajú dosiahnuť aj bez toho. Aj keď s nimi asi nezískate prvé miesto v súťaži o najkrajší výrobok.

Okrem toho budete potrebovať už len binárny súbor s firmvérom Tasmota a nástroj ktorým ho nahráte do spínača, ale o tom až nabudúce. Ukážeme si, ako prepojiť spínač a prevodník, prepojenie otestujeme a nahráme do spínača nový firmvér.

Autor článku

Priaznivec open source, ktorý rád skúma, ako veci fungujú.