Projekt WiFi termostat vznikol pôvodne pre mikrokontrolérovu WiFi platformu ESP8266 od Espressifu ako ekvivalent k Ethernet termostatu, ktorý bol postavený na AVR mikrokontroléri ATmega328P použitom v Arduine UNO, na ktorý je možné nasunúť Ethernet shield. Termostat umožňuje riadenie GPIO výstupu na základe nameranej teploty zo senzora Dallas DS18B20 (s 12-bitovým rozlíšením), cieľovej teploty a hysterézy. Cieľová teplota i hysteréza je konfigurovateľná cez webové rozhranie v HTML, ktoré na mikrokontorléri beží.
Pre WiFi mikrokontróler ESP8266 vznikla aj experimentálna verzia firmvéru termostatu s možnoťou manuálneho ovládania GPIO, čím je možné termostat deaktivovať a používať ho celoročne, napríklad ako teplomer dostupný na sieti na svojej link-local IP adrese, alebo na doménovom mene cez mDNS záznam. WiFi termostat obsahuje aj validáciu číselných vstupov pre cieľovú teplotu a hysterézu. Validácia sa vykonáva po odoslaní HTML formulára. V prípade, že používateľ zadá iný dátový typ ako číslo, zápis do emulovanej EEPROM sa nevykoná.
WiFi termostat existoval už takmer rok pod mikrokontrolérom ESP8266, pokým bola vytvorená podpora pre ESP32. Implementácia bola problémová, nakoľko knižnica WiFiManager je navrhnutá pre ESP8266. Vývojová vetva na Githube však obsahovala aj experimentálnu implementáciu pre podporu ESP32, ktorú som využil. WiFiManager pod ESP32 funguje spoľahlivo, správa sa rovnako ako pri ESP8266.
Úpravou niekoľkých hlavičkových súborov sa mi podarilo použiť identický zdrojový kód z pohľadu funkcií, ktorý je spustiteľný so správnymi hlavičkovými súbormi knižníc na oboch WiFi platformách bez nutnosti úprav v programe. Pre služby webservera som využil triedu Webserver, pozor, často si ju používatelia zamieňajú za WiFiServer, ktorá má pokročilé funkcie pre handling pripojenia ale aj pre prevzatie argumentov, podobne ako pri mikrokontroléri ESP32.
Firmvér pre WiFi termostat pod ESP32 je rovnako ako firmvér pre ESP8266 dostupný v skompilovanom kóde, ktorý stačí nahrať do mikrokontroléru cez nástroj ESPTOOL. Nástroj je možné spustiť ako .py script, alebo ako spustiteľnú .exe aplikáciu cez príkazový riadok, ktorá je dostupná v tomto prípade v priečinku každého firmvéru.
Určitou zmenou je aj počet argumentov, ktoré sa pre mikrokontróler pri nahrávaní vyžadujú. Pri ESP8266 stačil samotný firmvér, v prípade ESP32 je to však komplikovanejšie a vyžadujú sa 2 binárne súbory bootloadera, tabuľka partícii a samotný firmvér. Každý súbor je zapísaný na určitý (štandardný ofset). Bootloader na 0x1000, tabuľka partícii na 0x8000 a aplikácia na ofset 0x10000. Keďže sa používa tabuľka partícii bez OTA partícii, iné aplikačné partície nie sú do flash pamäte zapísané.
Z pohľadu stability sa mi zdal WiFi termostat pod ESP8266 stabilnejší, nakoľko jeho dynamická pamäť HEAP nekolísala a mala stálu hodnotu. U ESP32 HEAP mierne kolíše v rádoch desiatok bajtov, avšak nakoľko má tento mikrokontróler až 500 kB RAM pamäte, nestalo sa mi, žeby termostat vykazoval známky zaseknutia, nakoľko by ho reštartoval HW watchdog a vynuloval by sa aj uptime na webstránke termostatu, ktorý je viazaný na funkciu millis(), ktorá vracia počet milisekúnd od štartu procesora.
Od verzie termostatu 1.0.2.X z dôvodu, že prehliadač Google Chrome nedokáže v input poli HTML formulára rozlíšiť desatinné číslo a na mobilných zariadeniach neumožní vložiť čiarku (resp. bodku) pre desatinnú reprezentáciu čísla, využíva termostat naďalej dátový typ text pre pole, aby bol používateľ schopný zadať desatinné číslo.
Na webových stránkach WiFi termostatu pribudol preklik priamo na firmvér v časti "Spustenie WiFi termostatu" na základe cieľovej platformy ESP8266 / ESP32. Firmvér je plne pripravený na použitie, stačí si vybrať jednu z troch podporovaných verzií a postupovať podľa inštrukcií na stránke. Firmvér je validný pre Standalone ESP32 čipy, devkity a vývojové dosky osadené napr. s najpopulárnejším ESP-WROOM-32 / ESP32-S atď...
Aj s WiFi termostatom na ESP32 je možné využiť podporovaných JSON klientov pre pripojenie k tomuto termostatu a získané dáta pushovať na MQTT Broker, alebo do domácej automatizácie (Hassio, Domoticz, Loxone a iné...).
Viac o projekte WiFi a Ethernet termostat, vrátane inštrukcií s popisom možností termostatu môžete nájsť na jeho stránkach: https://martinius96.github.io/WiFi-termostat/ Na stránke sú dostupné aj fragmenty zdrojového kódu termostatu. Firmvér pre termostat je dostupný vo forme skompilovaného programu - bin.