blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
PHP, Arduino programátor
deadawp



WiFi termostat - Espressif Systems - ESP8266 / ESP32
pridal deadawp 24.12. 2021 o 13:28



Projekt WiFi termostatu bol vytvorený ako 1:1 klon ku projektu Ethernet termostat s identickou funkcionalitou. Využíva populárne IoT mikrokontroléry ESP8266 a ESP32 od firmy Espressif Systems, ktoré zastrešujú fungovanie WiFi termostatu a prinášajú radu možností rozšírenia pôvodného konceptu. Z toho dôvodu sa u ESP8266 a ESP32 nevyužívajú pokročilé implementácie webservera napr. s asynchrónnymi funkciami pre aktualizáciu dát v reálnom čase a pod...

Po hardvérovej stránke projekt využíva:

  • ESP8266 / ESP32
  • Teplotný senzor DS18B20 na OneWire zbernici
  • Relé SRD-5VDC-SL-C / OMRON G3MB-202P slúžiace na spínanie kotla (Active-LOW signál)


HTML stránky bežiace na ESP8266 / ESP32:

  • / - root stránka obsahujúca formulár, aktuálny výpis logického výstupu pre relé, aktuálnu a cieľovú teplotu teplotu, hysterézu
  • /action.html - spracúvava hodnoty z formulára, zapisuje ich do emulovanej EEPROM pamäte, presmeruje používateľa späť na root stránku
  • /get_data.json - distribuuje dáta o aktuálnej teplote, referenčnej teplote a hysteréza tretej strane (počítač, mikrokontróler, iný klient...) v JSON formáte - možno využiť s príkladom JSON klient, ktorý dáta vie odoslať na MQTT Broker, napríklad do domácej automatizácie

Z pohľadu klient-->server architektúry termostatu sa využíva identický HTML kód jednotlivých podstránok ako v prípade Ethernet termostatu. ESP pracuje ako webserver a prijíma požiadavky od klientov v LAN sieti, ktorým dokáže na požiadavku odpovedať HTML kódom / JSON štruktúrou dát a taktiež spustiť "backend" kód pre vykonanie funkčnosti. Meranie teploty a logika systému (rozhodovacia logika pre ovládanie relé) sa vykonáva nezávisle na webserveri a pripojení klientov.

Webové rozhranie WiFi termostatu umožňuje vizualizovať aktuálne nameranú teplotu, aktuálne nastavené hodnoty pre cieľovú (referenčnú) teplotu a hysterézu. Nastavené hodnoty je možné meniť prostredníctvom HTML formulára, kde ich je možné prepísať v input poliach a potvrdením spustiť presmerovanie a následne i "backend" kód, ktorý údaje permanentne uloží do pamäte EEPROM. Nakoľko mikrokontroléry ESP nemajú EEPROM pamäť, využíva sa časť flash pamäte, na ktorej je EEPROM softvérovo emulovaná.

Zápis do EEPROM sa realizuje iba pri zmene a odoslaní údajov cez HTML formulár jednorázovo, čím sa predlžuje životnosť emulovanej EEPROM, ktorá je na úrovni životnosti prepisu flash pamäte, cca 10-tisíc. V prípade, že sa cez formulár odošlú identické údaje ako sú zapísané v EEPROM, opätovný prepis údajov sa nevykoná. Arduino Core, v ktorom je implementácia navrhnutá umožňuje emulovať 4 až 4096 B flash pamäte na EEPROM.

Knižnica ESP8266Webserver pre ESP8266 a Webserver pre ESP32 umožňuje jednoduché prevzatie argumentov a hodnôt z HTTP POST requestu. Pôvodný Ethernet termostat z dôvodu náročnosti prevzatia argumentov z dôvodu nedostupnej implementácie v knižnici Ethernet využíva iba HTTP GET request pre prenos údajov. Ethernet termostat využíva mnou navrhnutý parser, ktorý GET request rozparsuje na základe kľúča a hodnoty. Na obrázku nižšie identické spracovanie requestu s dvomi kľúčmi: fname, fname2 a spracovanie im priradených hodnôt do premennej.

Konfigurácia WiFi termostatu
Nakoľko je WiFi termostat distribuovaný iba vo forme skompilovaného firmvéru (.bin), bolo nutné nájsť spôsob konfigurácie jeho WiFi adaptéru. Využil som knižnicu WiFiManager, ktorá je plne kompatibilná pre ESP8266 a ESP32. WiFiManager umožňuje spustiť mikrokontróler v režime AP (prístupový bod) v prípade, že sa do určitého času nepripojí k prednastavenej WiFi sieti. Po pripojení k WiFi sieti sa mikrokontróler prepne do STA (station) módu a začne sa vykonávať aplikačný program - WiFi termostat.

Aplikačný program je pozdržaný dokým nemá WiFi adaptér platnú konfiguráciu t.j. pokým nie je pripojený k WLAN sieti. WiFiManager zároveň po zápise SSID a hesla uchováva tieto informácie v energeticky nezávislej pamäti. Pri ďalšom spustení mikrokontroléra tak WiFiManager použije tieto údaje pre pripojenie k WLAN sieti. Keď je mikrokontróler v AP móde, začne vysielať SSID WiFi_TERMOSTAT_AP bez hesla ako otvorená sieť (možné zabezpečiť aj heslom so šifrovaním WPA/WPA2-PSK). Po pripojení klienta (počítač, smartfón) k prístupovému bodu získa klient IP adresu z rozsahu siete 192.168.4.0/24.


Na 192.168.4.1 je štandardne mikrokontróler, ktorý je zároveň vybavený aj webovým rozhraním - Captive Portalom na ktorý presmeruje HTTP komunikáciu klienta. Výzva na otvorenie Captive Portalu sa klientovi sprístupni aj v smartfóne notifikáciou. Vo webovom rozhraní je možné vybrať dostupnú WiFi sieť v dosahu mikrokontroléra a nakonfigurovať ju. Po úspešnom pripojení na WiFi sieť a prepnutí mikrokontroléra do STA módu získa WiFi termostat IP adresu zo štandardného rozsahu WiFi siete ku ktorej je pripojený cez DHCP.

Na tejto IP adrese je dosiahnuteľné webové rozhranie termostatu, kde ho je možné konfigurovať. Nakoľko sa IP adresa mení po prekročení Lease Time DHCP poolu, je častokrát termostat dostupný na rôznych IP adresách. Z toho dôvodu bola vytvorená aj implementácia pre mDNS záznam, ktorý umožňuje pristúpiť k termostatu cez doménové meno, ktoré je mapované na aktuálne pridelenú IP adresu DHCP službou.

Pri spustení termostatu sa automatizovane vykoná kontrola uložených údajov v emulovanej EEPROM pamäti. V prípade, že na preddefinovaných ofsetoch nie sú validné dáta (float / int), vykoná sa prvotné nastavenie riadiacich dát --> cieľová teplota 20,25 °C, hysteréza 0,25 °C, aby mohol termostat fungovať okamžite.

Experimentálna implementácia

WiFi termostat vychádza z pôvodného firmvéru pre Ethernet termostat. Cieľom termostatu bolo vždy ovládať výstup automatizovane na základe nameranej, cieľovej teploty a hysterézy. V letných mesiacoch však bolo zbytočné napájať relé pre ovládanie kotla. Z toho dôvodu bola vytvorená experimentálna implementácia, ktorá okrem štandardného automatického ovládania ponúka aj manuálny režim, ktorým je možné výstup natvrdo zapnúť / vypnúť.

Rozšírené HTML stránky v experimentálnej implementácii WiFi termostatu:

  • /zap.html - permanentné zapnutie výstupu v manuálnom režime
  • /vyp.html - permanentné vypnutie výstupu v manuálnom režime
  • /automat.html - zmena režimu na automatický (používa hysterézu a cieľovú teplotu)
  • /manual.html - zmena režimu na manuálny (permanentné ovládanie výstupu ZAP / VYP natvrdo)

Tento typ ovládania je vhodný aj pre permanentné vypnutie výstupu a prevádzku WiFi termostatu na spôsob teplomeru napríklad v lete, prípadne ho je možné použiť aj na klimatizovanie (chladenie), avšak s invertovanou logikou relé, t.j. pri zapnutom výstupe relé vypnuté, pri vypnutom výstupe relé zapnuté. Táto implementácia neobsahuje mDNS záznam. Implementácia má upravenú aj logiku oproti štandardnému firmvéru, nakoľko musí rozlišovať aj prevádzkový režim logiky - automatický / manuálny režim.

Jazykové mutácie
WiFi termostat má štandardný a rozšírený firmvér o mDNS záznam dostupný aj v anglickom jazyku vrátane výstupu na UART monitor. Experimentálny firmvér s manuálnym režimom nie je dostupný v anglickom jazyku.

Vyskúšajte WiFi termostat
Projekt WiFi Termostat je dostupný na Githube, kde nájdete kompletné inštrukcie pre stiahnutie firmvéru a jeho nahratie do mikrokontroleŕa ESP8266 / ESP32 cez nástroj ESPTOOL: https://martinius96.github.io/WiFi-termostat/. Termostat je aktuálne v poslednej plánovanej verzii - 1.0.4. K projektu existujú aj implementácie pre totožné mikrokontroléry / Arduino + Ethernet Wiznet s názvom JSON klient.

JSON klient sa dokáže pripojiť k termostatu, získať z neho aktuálne riadiace dáta, aktuálnu teplotu v JSON formáte. Dokáže dáta rozparsovať a následne ich prenášať do preddefinovaných topicov na MQTT Broker. Vzorovo sa využíva slovenský verejný MQTT Broker pre vývojárov IoT Industries Slovakia. K jednotlivým topicom je možné zadať odber a implementovať napr. do domácej automatizácie a systémov Loxone, Domoticz, Hassio pre vizualizáciu aktuálnej teploty aj vo vlastnom dasboarde so záznamom, napr. Grafana.



Prístupov 2124
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Ako spustiť neefektívny program efektívn...
[ 21.6.2022] (príspevkov 0)
Wokwi - simulátor pre Arduino projekty
[ 14.4.2022] (príspevkov 0)
Ovládanie DC motorov - NodeMCU V2 + moto...
[ 29.1.2022] (príspevkov 0)
Kde hľadať VIN - Zetor UR1
[ 12.1.2022] (príspevkov 0)
Počítadlo otáčok so zastavením motora
[ 7.1.2022] (príspevkov 0)
FreeRTOS v Arduino IDE - ESP32
[ 2.1.2022] (príspevkov 0)
WiFi termostat - Espressif Systems - ESP...
[ 24.12.2021] (príspevkov 0)
ULP aplikácie - ESP8266 / ESP32
[ 14.11.2021] (príspevkov 0)