enterWIFI_OTA_iUP_v07
návod k zariadeniu
je projekt enterWIFI doplnený o funkciu OTA a iUP
enterWIFI – prostredníctvom tejto časti kódu sa ESP8266 pripája k WiFi sieti
OTA – (OverTheAir) umožňuje aktualizáciu kódu na ESP8266 bezdrôtovo v lokálnej WiFi sieti (PC aj ESP musia byt na spoločnej WiFi)
iUP – (internetUPDATE) zabezpečuje možnosť aktualizácie kódu na ESP8266 cez internet na diaľku pokiaľ je ESP pripojené k WiFi sieti (PC a ESP nemusia byt na spoločnej WiFi)

Pri prvom zapnutí je doska ESP8266 prepnutá v AP režime nakoľko nemá v pamäti EEPROM uložené žiadne SSID ani PASS čo indikuje svietiaca LED_BUILTIN.
Postup pripojenia zariadenia k vybranej WiFi sieti:
- zapneme zariadenie, pokiaľ LED_BUILTIN rýchlo zabliká a ostane svietiť, znamená to, že zariadenie je v AP režime – čo je OK a môžeme pokračovať.
- na mobile/tablete otvoríme „fotoaparát“ alebo apku na čítanie QR kódov a naskenujeme priložený tag s QR kódom. Po chvíli by sa mal automaticky zobraziť prihlasovací formulár pre zadanie prihlasovacích údajov k WiFi.
- zadáme názov a heslo WiFi siete, ku ktorej sa chceme pripojiť a potvrdíme tlačidlom CONNECT (tlačidlo je neaktívne kým SSID neobsahuje aspoň 1 znak).
- zobrazí sa ďalšia stránka s textom: „Reštartujem ESP…pripájam sa k Wi-Fi“ ESP sa pokúsi pripojiť k zadanej WiFi po dobu 15s – LED_BUILTIN bliká.
- ak sa úspešne pripojí LED_BUILTIN zasvieti na 2s a zhasne – potom už len každých 10s urobí rýchly dvojblik čo značí, že je zariadenie online.
- ak sa nepripojí do 15s LED_BUILTIN rýchlo zabliká a zostane svietiť co znamená, ze sa ESP preplo do AP režimu – (zrejme boli zadané nesprávne údaje alebo je nedostupná WiFi…)
- zároveň sa snaží každú minútu opätovne pripájať k WiFi pre prípad, že by to bol len dočasný výpadok internetu a zadané údaje boli správne.
Funkčnosť zariadenia po pripojení sa k WiFi sieti:
Pokiaľ už bolo zariadenie pripojené k nejakej WiFi sieti uloží si do EEPROM pamäti prihlasovacie údaje a opätovnom zapnutí vždy najskôr pokúša pripojiť k tejto WiFi sieti, ktorú má ako poslednú uloženú v pamäti (pokiaľ neboli nastavenia resetované tlačítkom BUTTON_PIN na GPIO_0). Ak sa do 15s nepripojí, zariadenie automaticky prejde do AP režimu (LED_BUILTIN rýchlo zabliká a ostane svietiť) a je potrebné sa k sieti pripojiť zadaním prihlasovacích údajov (SSID, PASS) spôsobom popísaným hore. V prípade, že boli prihlasovacie údaje vymazané z pamäti resetovacím tlačítkom po zapnutí sa zariadenie automaticky prepne do AP režimu.
Pokiaľ je zariadenie pripojené k WiFi a náhodou nastane výpadok elektriky, zariadenie po obnovení dodávky znova nabehne do cca 5s, avšak anténa a router potrebujú dlhší čas na obnovenie internetového spojenia a spravidla to trvá dlhšie než 15s, počas ktorých sa zariadenie pokúša pripojiť k WiFi. V takom prípade po neúspešnom pripojení k WiFi zariadenie štandardne prejde do AP režimu, no i v tomto režime sa pokúša opakovane pripojiť k WiFi, ku ktorej bolo pripojené v pravidelných 60s intervaloch.
Zariadenie je osadené čipom ESP8266, na ktorom je nahratý zdrojový kód (program). Ten je možné vďaka funkcii OTA aktualizovať bezdrôtovo cez lokálnu sieť prostredníctvom PC, ktorý musí byť pripojený na rovnakú WiFi ako naše zariadenie. Tu je postup:
- otvoríme si v Arduino IDE kód, ktorý chceme nahrať do zariadenia.
- zvolíme Nástroje > Port > (Sieťový port) enterWIFI_OTA_iUP a nahráme kód!
- pokiaľ nevidíme (Sieťový port) je potrebné do PC nainštalovať software od Apple s názvom „Apple Bonjour“ (mDNS služba pre Windows) – treba to stiahnuť, nainštalovať a reštartovať PC. Potom by už mal byť port viditeľný v Arduino IDE.
- po nahratí sa ESP reštartuje a nový kód by mal začať fungovať.
Pozor! Pokiaľ nahráme iný kód, ktorý neobsahuje funkciu OTA, znemožníme si použitie tejto funkcie. Preto by mala OTA slúžiť skôr len na aktualizáciu pôvodného firmvéru. Cez OTA port nie je dostupný Sériový monitor.
Na zmenu firmware tu máme ešte jednu funkciu iUP (internetUPDATE), prostredníctvom ktorej to vieme urobiť taktiež bezdrôtovo avšak na diaľku cez internet, nemusíme byť teda v jednej sieti, stačí, že bude zariadenie pripojené k WiFi a náš PC kľudne aj na druhom konci sveta. Táto aktualizácia „firmware“ je trošku zložitejšia:
- otvoríme si v Arduino IDE súbor .ino, ktorý chceme nahrať do zariadenia.
- pokiaľ ide o naše zariadenie „enterWIFI_OTA_iUP“ a jeho upravenú verziu, je potrebné zistiť aká je aktuálna verzia „firmware“. To zistime buď na serveri a to otvorením súboru „version.txt“ kde je číslo verzie zapísané alebo sa pozrieme do WebAplikácie (klikni pre náhľad), kde je aktuálna verzia uvedená pod tlačítkom „RESTART“
Server FW verzia: v01
ESP FW verzia: v01 - keď vidíme aká je aktuálna verzia FW je potrebné urobiť 2 úpravy.
- č.1 v kóde „enterWIFI_OTA_iUP.ino“ a to zadefinovat novu verziu napr. v02 (na začiatku kódu zmeň: #define FW_VERSION „v01“ na „v02“).
v pripade, že chceme nahrať do zariadenia akýkoľvek iný súbor .ino ako je ten náš „enterWIFI_OTA_iUP.ino“, tak sa nás táto úprava č.1 netýka - č.2 v súbore „version.txt“ (je nahratý na serveri v pirečinku „OTA“ spolu s ďalšími súbormi súvisiacimi s projektom), kde je potrebné ho editovať, zmeniť súčasnú verziu „v01“ na verziu „v02“ a uložiť. Táto úprava sa musí vykonať pri nahrávaní akéhokoľvek kódu. (Je potrebné dodať, že pokiaľ sa nahrá kód bez „OTA funkcie“ nebude už možné zariadenie updatovať bezdrôtovo – jedine fyzicky cez USB kábel!)
- č.1 v kóde „enterWIFI_OTA_iUP.ino“ a to zadefinovat novu verziu napr. v02 (na začiatku kódu zmeň: #define FW_VERSION „v01“ na „v02“).
- keď máme tieto úpravy za sebou, nový prípadne upravený súbor .ino musíme previesť prostredníctvom Arduino IDE do binárneho tvaru. Najskôr vyberieme správnu dosku, pre ktorú súbor chceme kompilovať (napr. WeMOS D1 mini) a potom zvolíme:
Projekt > Export kompilovaného Binárneho tvaru
IDE začne súbor kompilovať a uloží ho rovno do adresára k súboru .ino, ktorý máme otvorený, pod názvom napr: „enterWIFI_OTA_iUP.ino.d1_mini.bin“
tento súbor .bin je v podstate nový „firmware“ ktorý nahráme do nášho zariadnenia. - v ďalšom kroku je potrebné tento náš súbor premenovať z pôvodného názvu „enterWIFI_OTA_iUP.ino.d1_mini.bin“ na „firmware.bin“ a prekopírujeme ho na server, do už zmieňovaného priečinku s názvom „OTA“. Keďže súbor s takýmto názvom tam už je, dáme ho prepísať.
- keď to máme, zariadenie treba reštartovať (POZOR! nie reset WiFi nastaveni) reštartovať ho môžeme buď fyzicky alebo na diaľku cez internet. Stačí keď prejdeme do WebAplikácie kde kliknutím na zelené tlačítko „RESTART“, zariadenie reštartujeme, čím sa spustí „UPDATE FW“ (pre kód iný ako je náš „enterWIFI_OTA_iUP“ tu návod končí)
- v prípade nášho projektu „enterWIFI_OTA_iUP“ si po reštarte zariadenie kontroluje svoju verziu „firmware“ s verziou na serveri. My sme zadefinovali do nového „firmware“ ako aj do súboru „version.txt“ verziu „v02“ co znamená, že WebAplikácia vypíše toto:
Server FW verzia: v02 (vyčíta zo súboru „version.txt“)
ESP FW verzia: v01 (vyčíta z aktuálnej verzie kódu z ESP)
OTA Stav: Dostupný nový FW – Reštartuj pre update! (keďže verzie sú rozdielne je dostupný nový FW)
V tomto stave sa po kliknutí na tlačítko „RESTART“ spustí proces updatovania, nahrá si nový firmware a opäť sa reštartuje. Teraz už budú obe verzie zhodné a vo WebAplikácii sa zmení OTA Stav: Firmware je aktuálny a zariadenie začne pracovať.


