Tasmota: nastavenie a oboznámenie sa s novým firmvérom

21. 7. 2020
Doba čtení: 13 minut

Sdílet

 Autor: Ľubomír Patek
Nový firmvér Tasmota, ktorý sme do spínača nahrali minule, dnes nastavíme, bližšie sa zoznámime s jeho webovým rozhraním, niekoľkými príkazmi, spôsobom zadávania príkazov pomocou HTTP a vyskúšame si aktualizáciu.

Na konci predchádzajúceho dielu som v krátkosti spomenul, že po nahratí nového firmvéru je potrebné najprv nastaviť prístupové údaje do WiFi siete, do ktorej sa potom spínač prihlási, aby nakoniec mohol ukázať svoje webové rozhranie. Poďme sa pozrieť na tieto dva kroky podrobnejšie.

Režimy práce WiFi rozhrania

WiFi rozhranie SoC ESP8266 je schopné pracovať v jednom z dvoch režimov – v režime prístupového bodu (AP, Access Point), v ktorom sa nastavujú prístupové údaje a v režime klienta (STA, Station), v ktorom sa pomocou nastavených údajov pripojí k sieti a v ktorom bežne pracuje.

Hneď po nahratí nového firmvéru naštartuje Tasmota WiFi rozhranie v režime AP a spustí webový server určený len na nastavenie prístupových údajov do WiFi siete. Počas tohoto režimu, ktorý Tasmota nazýva WiFi manager, LED pomaly bliká – zasvieti asi raz za sekundu.WiFi manager vytvorí prístupový bod s názvom tasmota_XXXXXX-#### (kde XXXXXX je posledných šeť znakov MAC adresy zariadenia a #### nejaké číslo) a spustí webový server s IP adresou 192.168.4.1 umožňujúci nahrať prístupové údaje. Udaje je okrem toho možné nastaviť aj zo sériovej konzoly, ktorá je už tiež prístupná.


Webové rozhranie prístupového bodu

WiFi Manager je aktívny tri minúty od štartu, potom sa reštartuje. Ak nič nenastavíte, spustí sa znova; inak sa pripojiť k WiFi sieti s novými nastaveniami. Ukončenie WiFi Managera a reštart SoC spôsobí aj stlačenie tlačítka na spínači – to však zapne aj relé a LED ostane svietiť.

Poznámka: Tasmota využíva LED na dva účely: indikáciu stavu pripojenia a indikáciu stavu spínača. Podľa predvoleného nastavenia sa LED správa tak, že trvalé svietenie (pri zopnutom spínači) zamaskuje prípadné blikanie, teda zobrazovanie stavu spínača má prednosť pred zobrazovaním stavu siete.

Nastavenie pomocou webového rozhrania

Na nový prístupový bod sa môžete pripojiť z PC (a potom si vo webovom prehliadači otvoriť jeho webové rozhranie), ale jednoduchšie je použiť zariadenie s Androidom – potom, ako si vyberiete WiFi sieť, Android automaticky ponúkne prihlásenie sa k nej a po odsúhlasení otvorí v prehliadači webové rozhranie na nastavenie prístupových údajov. Vo webovom rozhraní zadajte názov siete (SSID) a prístupové heslo k vašej domácej WiFi sieti (je možné nastaviť prístup až k dvom WiFi sieťam) a nastavenia uložte. Po uložení webové rozhranie oznámi reštart zariadenia, po ktorom prístupový bod tasmota_XXXXXX-#### zanikne a zariadenie s Androidom od neho odpojí.

Nastavenie pomocou konzoly

Kým máte spínač pripojený cez prevodník, existuje aj jednoduchšia možnosť nastavenia parametrov siete – môžete ich zadať z konzoly. Názov siete nastavíte príkazom SSID1 NazovSiete, heslo príkazom Password1 HesloWifi. Podobne môžete nastaviť aj prístupové údaje k druhej sieti príkazmi SSID2 a Password2.

Ak by ste nastavovali názov siete a heslo jednotlivo, po každom jednom príkaze sa spínač reštartuje (platí to len pri nastavovaní prístupových údajov). Preto je teraz vhodný čas zoznámiť sa s príkazom Backlog, ktorý umožňuje zadať v jednom riadku až 30 príkazov nasledovaných bodkočiarkou (na druhom brehu Moravy pokojne použite středník):

Backlog SSID1 NazovSiete1; Password1 HesloWifi1; SSID2 NazovSiete2; Password2 HesloWifi2;

Pri ďalších štartoch už bude spínač štartovať v režime klienta, v ktorom sa pripojí k nastavenej sieti pod názvom Hostname, zhodným s názvom prístupového bodu v režime nastavovania prístupových údajov (tasmota_XXXXXX-####). Počas pripájania k sieti bude LED blikať rovnako ako v režime AP a po pripojení zhasne.

Do režimu Wifi Manager sa dá dostať aj neskôr – z módu klienta ho môžete vyvolať šiestimi krátkymi stlačeniami tlačítka; počas takéhoto spustenia bude LED blikať rýchlejšie – asi dvakrát za sekundu.

Upozornenie: Vyvolanie nastavovacieho režimu šiestimi stlačeniami tlačítka je možné až od verzie 8.3.0. V predchádzajúcich verziách ho bolo možné vyvolať štyrmi stlačeniami tlačítka a šesť stlačení vyvolalo obyčajný reštart. Možnosť vyvolania reštartu tlačítkom bola od verzie 8.3.0 vypustená. Toto je jedna zo zmien, kvôli ktorým je dôležité si pred upgradom prečítať zoznam zmien, prinajmenšom tých významných (breaking changes).

Oboznámenie sa s webovým rozhraním Tasmota

Na rýchle oboznámenie sa s novým firmvérom dobre poslúži webové rozhranie, ktoré umožňuje pozrieť si údaje o zariadení, nastaviť jeho parametre a tiež ho ovládať.

Pripojte sa na webové rozhranie nového firmvéru spínača prostredníctvom jeho IP adresy (nájdete ju hneď na začiatku výpisu na konzolu, alebo zistíte príkazom IPAddress1). Mali by ste vidieť niečo podobné ako na nasledujúcom obrázku:


Webové rozhranie nového firmvéru

V prvom riadku rozhrania je zobrazený typ HW zariadenia (predvolený je Sonoff Basic), v druhom riadku je jeho názov (predvolený názov Tasmota neskôr zmeníme). Nasleduje zobrazenie stavu spínača (ON/OFF) a pod ním tlačítko slúžiace na prepnutie (Toggle). Toto zobrazenie môže pri iných zariadeniach vyzerať inak: ak má zariadenie viac spínačov, zobrazia sa vedľa seba; v prípade zariadenia bez spínačov sa tieto dva riadky nezobrazia. V závislosti od použitého HW môže UI v oblasti medzi názvom a tlačítkom Configure zobrazovať ešte namerané údaje, nastavovacie prvky svetla ako farba, jas, farebná teplota a pod. Obrázok zodpovedá spínaču Sonoff Basic, ktorý obsahuje len jednen spínač a nemeria žiadne údaje.

Nasleduje niekoľko tlačítiek predstavujúcich položky menu, pod ktorými je zobrazená stručná informácia o verzii firmvéru a meno autora.

Cez tlačítko Information sa dostanete k informáciám o hardvéri aj firmvéri, veľkosti programu, voľnej pamäti a tiež informáciám ako uptime, počet zápisov do pamäte FLASH, počet bootovaní, či dôvod posledného reštartu. Zídu sa aj informácie o sieťovom pripojení a neskôr aj o protokole MQTT.

Ďalšou užitočnou funkcionalitou webového rozhrania je konzola (Console). Webová konzola poskytuje podobnú funkcionalitu ako sériová (snáď len s výnimkou absencie výpisu niekoľkých riadkov hneď po štarte) a od verzie 8.3.0 v nej funguje aj rolovanie šípkami medzi poslednými príkazmi. Porovnajte si výpisy na webovej konzole s tými na sériovom termináli.

Tlačítkom Configuration sa dostanete k možnosti zmeniť mnohé z predvolených nastavení. Ak máte iné zariadenie ako predvolený Sonoff Basic, môžete ho teraz zmeniť pod tlačítkom Confugure Module.

Praktickou funkcionalitou, ktorú nájdete pod Configuration, sú časovače (Configure Timer) – Tasmota ich poskytuje šestnásť. Pri nastavovaní časovačov sa pekne ukazuje význam webového rozhrania – skúste si neskôr porovnať nastavenie a zobrazenie nastavených hodnôt pri ovládaní z konzoly.

Upozornenie: Použitie časovačov treba najprv povoliť (zaškrtnutím Enable Timers vo webUI alebo príkazom Timers 1) a potom treba každý časovač, ktorý chcete použiť, ešte aktivovať . Vo webUI stačí zaškrtnúť políčko Arm; ak by ste chceli nastaviť časovač príkazom, treba zadať celé nastavenie čítača vo formáte JSON.


Webové rozhranie časovačov

Asi by bolo zbytočné opisovať všetky možnosti konfigurácie – najlepšie sa s nimi zoznámite ak si ich prejdete sami. Mnohé z nich sú jednoduché a disponujú opisnými názvami (zálohovanie, nastavenie sieťového pripojenia, protokolov, logovania), k niektorým z nich sa vrátime neskôr (MQTT) a niektorými sa v seriáli nebudeme venovať vôbec.

Príkazy

Webové rozhranie uľahčuje zadávanie najviac používaných príkazov a zobrazenie informácií, ale stále ostáva veľké množstvo funkcií, ktoré je možné ovládať len prostredníctvom príkazov. Niekoľko z nich sme si už zbežne ukázali, poďme sa teraz pozrieť podrobnejšie na formát a pravidlá ich zadávania. Zatiaľ budeme príkazy zadávať zo sériovej alebo webovej konzoly, ale podobné pravidlá platia pre ich zadávanie prostredníctvom požiadaviek HTTP a protokolu MQTT.

Firmvér sa pri zadávaní príkazov chová k užívateľovi celkom benevolentne, napríklad nerozlišuje veľké a malé písmená, či umožňuje používať niekoľko ekvivalentov označenia zapnutého a vypnutého stavu.Napríklad príkaz Power on zapne prvý spínací prvok zariadenia. Zapnúť ho môžete aj príkazmi Power 1 alebo Power true. Vypnete ho príkazom Power off, Power 0 alebo Power false. Vyskúšajte si to a sledujte výpis na konzole a zmenu stavu LED na spínači. Potom provnajte so správaním pri stlačení tlačítka na spínači.

Súčasťou príkazu Power je aj poradové číslo spínacieho prvku zariadenia (index, píše sa za príkaz bez medzery), ale v prípade prvého spínacieho prvku je možné ho vynechať. Príkaz Power je ekvivalentom príkazu Power1 (podobne Power 1 je ekvivalentom Power1 1). V prípade zariadení s viacerými spínacími prvkami je potrebné označovať prvky od č. 2 aj indexom; napr. príkaz Power2 1 zapne druhý spínací prvok zariadenia.

Špeciálny význam má index 0: príkaz Power0 ovláda všetky spínacie prvky zariadenia naraz, teda napr. Power0 1 ich zapne a Power0 0 vypne.

Ak použijete príkaz bez voľby, zobrazí sa stav spínacieho prvku, ktorý je príkazom ovládaný (skúste si Power).

Pri zadaní neznámeho príkazu firmvér vypíše, že príkaz nepozná a na spínači blikne LED.

Pre príkaz Power existuje okrem zapnutia a vypnutia niekoľko ďalších volieb: Power 2 (rovnako aj Power toggle) prepne relé do opačného stavu, v akom sa práve nachádza.

Príkaz Power 3 ( tiež Power blink) prepne relé niekoľkokrát po sebe a vráti sa do stavu, v ktorom bolo pred zadaním príkazu. Neskôr vám to napr. môže pomôcť fyzicky lokalizovať zariadenie. Počet a trvanie prepnutí si môžete nastaviť príkazmi BlinkCount a BlinkTime, oba majú predvolené hodnoty 10. A nakoniec, príkaz Power Blinkoff takéto prepínanie zastaví.

Príkaz Status

Zaujímavé informácie o zariadení poskytuje príkaz Status. Ak ho zadáte bez voľby, ukáže niekoľko vybraných informácií. Pre podrobnejšie informácie skúste niektorú z nasledujúcich volieb (s medzerou medzi príkazom a voľbou):

  • 1 = zobrazí informácie o parametroch zariadenia (PRM)
  • 2 = zobrazí informácie o firmvéri (FWR)
  • 4 = zobrazí informácie o pamäti (MEM)
  • 5 = zobrazí informácie o nastavení siete (NET)
  • 7 = zobrazí informácie o čase (TIM)
  • 8 = zobrazí informácie o pripojených snímačoch (SNS)
  • 0 = zobrazí všetky dostupné informácie o zariadení

Asi ste si už všimli, že Tasmota poskytuje informácie vo formáte JSON.

Nastavenie pripojenia k sieti

Binárny súbor tasmota.bin je skompilovaný tak, aby po nahratí a prvom spustení použil na nastavenie pripojenia DHCP server. V prípade, že chcete mať nad prideľovaním adries plnú kontrolu, môžete ich nastaviť priamo na zariadení pomocou príkazov IPAddress1  – IPAddress4. Za príkazom nasleduje znak “ = ”, ktorý je možné vynechať (nahradiť medzerou) a želaná IP adresa.

IP adresu zariadenia nastavíte príkazom IPAddress1. V prípade, že chcete nastaviť dynamické prideľovanie IP adries (predvolené správanie), použite adresu 0.0.0.0. Po zadaní požiadavky na zmenu vypíše Tasmota dvojicu IP adries, pričom na prvom mieste je želaná adresa a na druhom aktuálne nastavená: {"IPAddress1":"192.168.1.45 (192.168.1.106)"}. Zmeny sa uplatnia až po reštarte zariadenia (napr. príkazom Restart 1).

Príkazom IPAddress2 nastavíte IP adresu brány (gateway), príkazom IPAddress3 masku siete a príkazom IPAddress4 IP adresu DNS servera.

Nastavenia jednotlivých IP adries zistíte ako obvykle – zadaním jednotlivých príkazov bez parametra. Podrobnejšie informácie o nastavení siete poskytne príkaz Status 5.

Podrobné nastavenia – príkaz SetOption

Príkazom SetOption je možné meniť ďalšie nastavenia firmvéru. Jeho súčasťou je poradové číslo príkazu (index, bez medzery), nasledované medzerou a nastavovanou hodnotou. Väčšina príkazov nastavuje bitové hodnoty 0/1, niektorými sa nastavuje hodnota bajtu (0–255). Od verzie FW 8.3.0 môžete používať namiesto príkazu SetOptions skratku SO.

Zoznam príkazov na Wiki stránke projektu venuje príkazu SetOptions celú sekciu.

Zoznam všetkých príkazov nájdete na Wiki projektu pod položkou Commands.

Bezdrôtová aktualizácia firmvéru

Nakoniec si môžete vyskúšať možnosť aktualizácie firmvéru cez WiFi pripojenie (OTA). Ak by niečo nefungovalo, stále máte v zálohe pripojenie cez prevodník.

Možnosť bezdrôtovej aktualizácie nájdete pod položkou (tlačítkom) hlavného menu Firmware Upgrade. Umiestnenie binárneho súboru s novou verziou firmvéru možno zadať jedným z dvoch spôsobov – z webového umiestnenia, alebo zo súboru umiestneného lokálne.

Zálohovanie konfigurácie

Pred aktualizáciou je vhodné uložiť si zálohu konfigurácie (Configuration – Backup configuration). Tasmota vytvorí zálohu konfigurácie do binárneho súboru s koncovkou .dmp, z ktorého je možné zálohu obnoviť (Configuration – Restore configuration). Ak by ste si chceli vytvoriť zálohu v čitateľnejšom formáte JSON, môžete použiť nástroj decode-config. Tento nástroj dokáže aj konvertovať súbory .dmp do tvaru JSON a samozrejme obnoviť nastavenia zo zálohy. Viac informácií obsahuje stránka projektu decode-config na GitHube.

Aktualizácia z webového umiestnenia

Z dvoch spôsobov aktualizovania cez webUI je jednoduchší ten prvý – z webového umiestnenia.Ak si chcete vyskúšať lokalizovanú verziu, pripájam umiestnenie súborov s českou a slovenskou lokalizáciou firmvéru verzie 8.3.1. Ak by vás preklad nenadchol, môžete sa vrátiť k anglickej verzii 8.3.1, prípadne prispieť k jeho vylepšeniu – súbory s lokalizáciou nájdete v adresári tasmota/language )

Upozornenie: Umiestnenie, ktoré je predvolené vo webovom rozhraní, odkazuje na najnovšiu anglickú verziu, ktorá môže byť v čase, keď článok čítate, novšia ako verzia 8.3.1, ktorá je aktuálna v čase písania. Nič vám nebráni aktualizovať na najnovšiu verziu, dôležité je však skontrolovať v súbore CHANGELOG.md, či nenastali zásadné zmeny v správaní firmvéru od verzie 8.3.1. Aktualizácia na najnovšiu verziu je vhodná aj z toho dôvodu, že dokumentácia projektu platí pre práve aktuálnu verziu (release).

Bezdrôtové nahrávanie trvá dlhšie ako nahrávanie cez konzolu (z webového umiestnenia 2 – 5 minút) a aj LED sa správa inak – nenechajte sa pomýliť a počkajte až na obnovenie stránky webového rozhrania.Ak prebehla aktualizácia úspešne, po obnovení webového rozhrania uvidíte v jeho spodnom riadku číslo aktualizovanej verzie.

Aktualizácia z lokálneho umiestnenia

Aktualizácia z lokálneho umiestnenia je komplikovanješia, pretože nahrávanie súboru väčšieho ako 500 kB vyžaduje medzistupeň – aktualizáciu na minimálnu verziu tasmota-minimal.bin, ktorá najprv uvoľní priestor v pamäti FLASH. Až potom je možné nahrať vami zvolený súbor. Platí to aj pre aktualizáciu z webového umiestnenia, tá to však zariadi automaticky.

Aktualizácia pomocou príkazov

Bezdrôtovú aktualizáciu z webového umiestnenia môžete spustiť aj pomocou príkazu Upgrade. Ak ho použijete s voľbou 1, stiahne firmvér z predvoleného umiestnenia, nahrá ho do zariadenia a zariadenie reštartuje. Ak ako voľbu použijete inú hodnotu, bude sťahovať len vtedy, ak je táto hodnota vyššia, ako číslo aktuálnej verzie. Ekvivalentom príkazu je príkaz Upload.

Predvolené umiestnenie binárneho súboru zistíte pomocou príkazu OtaUrl. Môžete ho zmeniť ak za príkaz zadáte nové umiestnenie (s dĺžkou max. 100 znakov), alebo vrátiť na predvolené v konfiguračnom súbore zdrojového kódu (a teda aj v skompilovanom súbore tasmota.bin) príkazom  OtaUrl 1.

Viac informácií o aktualizovaní nájdete na wiki stránke projektu v sekcii Upgrading.

Zloženie spínača

Po oživení a vyskúšaní spínača pripojeného cez sériové rozhranie je čas pripojiť ho na sieťové napätie 230V. Odpojte ho od prevodníka, zložte do krabičky a pripojte napájanie 230V a spotrebič, ktorý chcete ovládať. Podrobnosti neopisujem zámerne – ak si nie ste istí ako, zverte to radšej niekomu kvalifikovanému.

Upozornenie: Nepripájajte k napätiu elektrickej siete spínač, ktorý nie je zložený a tiež nie vtedy, pokiaľ je naň ešte pripojený prevodník, prípadne aj počítač!


Spínač Sonoff Basic s pripojenou žiarovkou

Ovládanie prostredníctvom požiadaviek HTTP

Všetky príkazy, ktoré sme dosiaľ zadávali prostredníctvom konzoly, je možné zadávať ešte ďalšími spôsobmi – prostredníctvom požiadaviek HTTP a prostredníctvom protokolu MQTT.

Zadávanie príkazov prostredníctvom požiadaviek HTTP je jednoduché – požiadavka sa skladá z reťazca ”http://”, za ktorým nasleduje IP adresa zariadenia, za ňou nasleduje reťazec ”/cm?cmnd=” a nakoniec samotný príkaz:

http://192.168.1.1/cm?cmnd=Power%20on

Na príklade vidno, že medzera za príkazom je nahradená reťazcom ”%20” predstavujúcim hexadecimálnu hodnotu znaku ASCII, pred ktorú je vložený znak ”%”. Podobne nahradí reťazec %3B bodkočiarku v príkaze Backlog.

Informácie o stave sa budú zobrazovať v okne prehliadača vo formáte JSON. Firefox vám ich pekne sformátuje aj graficky:


Zobrazenie HTTP požiadavky na zopnutie prvého spínača z dvoch

Na predchádzajúcom obrázku vidíte zobrazenie HTTP požiadavky na zopnutie spínača v zariadení s dvoma spínacími prvkami (použil som vývojovú dosku Wemos nakonfigurovanú ako spínač Sonoff Dual). Príkaz vidíte v príkazovom riadku prehliadača (prehliadač príkaz preformátoval a nahradil znak”%20” medzerou) a stav spínačov na spodku výpisu. V tomto formátovaní sa pekne ukážu rozsiahlejšie informácie, skúste si zobraziť napr. Status 0 .

O niečo viac o formáte webových požiadaviek nájdete na wiki stránke projektu.

bitcoin_skoleni

V dnešnom dieli sme sa stručne oboznámili s režimami práce WiFi rozhrania SoC ESP8266, pripojili spínač k WiFi sieti, zoznámili sa s webovým rozhraním nového firmvéru, formátom príkazov a niekoľkými príkazmi, možnosťou zadávať príkazy pomocou požiadaviek HTTP a ukázali si, ako je možné firmvér v budúcnosti aktualizovať cez WiFi pripojenie bez použitia prevodníka.

K ukončeniu tohoto úvodného oboznámenia sa s firmvérom Tasmota nám chýba ešte stručné oboznámenie sa s komunikačným protokolom MQTT a spôsobom jeho využitia v novom firmvéri, ale to si necháme až nabudúce.

Autor článku

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