Repozitár projektu WiFi termostat so strojovými kódmi pre cieľovú platformu ESP8266 a ESP32: Firmvér
Firmvér WiFi_Termostat a WiFi_Termostat_mDNS je dostupný okrem slovenského, aj v anglickom jazyku. Experimentálny firmvér s manuálnym ovládaním výstupu je dostupný iba v slovenskom jazyku.
Podporte projekt WiFi termostat cez PayPal. Podpora umožní pridať nové funkcionality v budúcnosti a otvorenie zdrojového kódu aplikácie: PayPal donate
Naša programová implementácia je špeciálne navrhnutá pre mikrokontrólery od renomovaného výrobcu Espressif Systems, ktoré disponujú WiFi konektivitou. Podporujeme mikrokontroléry ESP8266 a ESP32 s WiFi (2,4 GHz) technológiou.
Náš WiFi termostat je ľahko prístupný prostredníctvom LAN siete, v ktorej sa nachádza. Je vybavený intuitívnym webovým rozhraním, ktoré umožňuje konfiguráciu všetkých parametrov termostatu a poskytuje vizuálny prehľad o aktuálnych stavoch.
Termostat efektívne riadi kotol na základe nameranej teploty, cieľovej hodnoty a definovanej hysterézy, pričom je nezávislý od webovej aplikácie. Webová aplikácia slúži výhradne na konfiguráciu a stanovenie rozhodovacích prahov termostatu.
Okrem jednoduchej dostupnosti termostatu na konkrétnej IP adrese je možné pridať mDNS záznam, ktorý vytvára lokálnu doménu (hostname.local). Táto doména je prístupná iba v rámci LAN siete, čo zvyšuje užívateľskú pohodlnosť v rámci multicastovej služby.
Konfigurácia termostatu pre domácu WiFi LAN sieť je jednoduchá vďaka WiFiManagerovi, ktorý bezpečne ukladá údaje o WiFi sieti (SSID a heslo) priamo do flash pamäte mikrokontroléra. Tieto údaje sú uložené permanentne, umožňujúc termostatu automatické pripojenie po získaní IP adresy od vášho routra v domácej WiFi sieti.
Náš HTTP webserver, bežiaci na mikrokontroléroch ESP8266 / ESP32, umožňuje simultánny beh viacerých nezávislých HTML stránok. Tieto stránky môžu slúžiť nielen informatívnym účelom, ale aj ako funkčné rozhranie, čím zvyšujú využiteľnosť nášho termostatu.
HTML stránky bežiace na platforme 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
Rozšírené o HTML stránky v prípadne experimentálnej verzie s manuálnym režimom:
/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)
Senzor DS18B20 s rozlíšením 12 bitov poskytuje presné merania s minimálnym krokom teploty 0.0625 °C. Dáta získané cez OneWire zbernicu môžu byť prenesené do mikrokontroléra za 500 až 1000 ms, pričom doba odpovede závisí od počtu pripojených senzorov a dĺžky zbernice.
V našom projekte využívame elektromagnetické relé SRD-5VDC-SL-C, ktoré dokáže spínať až 10A pri 230V, čo zodpovedá výkonu 2300W. Pre jednosmerný obvod je možné spínať 300W (10A pri 30V DC). V prípade potreby je možné použiť aj SSR relé OMRON G3MB-202P, ktoré je ideálne pre neindukčné záťaže a určené výhradne pre obvody so striedavým napätím. Jeho maximálny spínaný výkon je 460W (230V, 2A).
Termostat, vybavený týmito komponentmi, je vhodný na celoročné používanie. V prípade nevyžadovaného riadenia je možné fyzicky odpojiť výstup a využívať termostat ako WiFi teplomer pre monitorovanie teploty v danej miestnosti.
V prípade, že používate firmware s možnosťou manuálneho ovládania GPIO výstupu mikrokontroléru ESP, je možné termostat fyzicky vypnúť bez nutnosti odpojenia zo svorkovnice relé. Logika termostatu sa vykonáva každých 10 sekúnd nezávisle na webserveri a pripojených klientoch, čo eliminuje potrebu udržiavať keep-alive spojenie.
Po vykonaní každej logiky termostat vypíše informáciu o aktuálnej IP adrese a prípadne aj mDNS zázname (v prípade, že je firmware konfigurovaný s mDNS podporou). Týmto spôsobom poskytuje používateľovi údaje o dostupnosti termostatu so svojím webovým rozhraním v rámci LAN siete.
Termostat navyše informuje o aktuálnom stave výstupu, vrátane oznamu o akýchkoľvek zmenách. Dynamická voľná pamäť (HEAP) termostatu sa pohybuje v rozmedzí 40 až 44 kB.
Výstupná 3,3V operačná logika GPIO mikrokontrolérov ESP8266 a ESP32 postačuje pre digitálny signál zmeny. Je však dôležité mať na pamäti, že relé musí byť napájané 5V z VUSB alebo VIN pre správne fungovanie.
Webové rozhranie pre WiFi termostat umožňuje:
Prehliadať v reálnom čase teplotu zo senzora DS18B20, uptime zariadenia, hodnotu výstupu s dynamickou zmenou, aktuálne nastavené konfiguračné údaje pre termostat t.j. cieľovú teplotu a hysterézu
Modifikovať cieľovú (referenčnú) teplotu v rozsahu 5 až 50 °C s 0,25 °C krokom
Modifikovať hysterézu v rozsahu 0 až 10 °C s 0,25 °C krokom
Programová implementácia termostatu s automatickým i manuálnym režimom ovládania výstupu je experimentálna!
ZAP/VYP regulácia kotla - automatický režim:
Príklad ZAP/VYP regulácie vykurovania - VIZUALIZÁCIA NIE JE SÚČASŤOU PROJEKTU
Kotol je aktívny po dobu dostiahnutia cieľovej teploty + hysterézy
Na vizualizácii teplôt vody je patrný tzv. dobeh vykurovania a následné chladnutie vody až do opätovnej aktivity vykurovania, kedy je nameraná teplota pod nastavenú cieľovú teplotu - hystérzu
V základnej verzii nášho WiFi termostatu (bez mDNS záznamu) sme integrovali manuálny režim ovládania s možnosťou jednoduchého prepínania medzi manuálnym a automatickým režimom. Webové rozhranie je flexibilné a prispôsobuje sa rôznym obrazovkám, či už ide o veľké monitory alebo malé mobilné zariadenia. Je plne responzívne, podporuje širokouhlé obrazovky s vysokým rozlíšením a zároveň je optimalizované pre používanie na mobilných zariadeniach.
Rozhranie využíva importované CSS štýly z Bootstrap frameworku, ktoré sú načítané z externého CDN servera pri otvorení stránky bežiacej na mikrokontroléri ESP. Týmto spôsobom minimalizujeme výkonové a pamäťové zaťaženie mikrokontroléra, zabezpečujúc rýchlu a efektívnu funkcionalitu webového rozhrania.
Pre uchovanie nastavených hodnôt termostatu aj po výpadku napájania sme zvolili ukladanie do EEPROM pamäte ESP, ktorá je emulovaná vo flash pamäti. Táto voľba je nevyhnutná, keďže platforma neobsahuje fyzický EEPROM čip (pamäť).
V EEPROM pamäti sú uložené referenčná teplota na offsete 10 a hodnota hysterézy na offsete 100. Každá z týchto hodnôt využíva maximálne 5 bajtov v EEPROM pamäti, vrátane ukončovacieho znaku.
Dáta sa prepisujú iba pri odoslaní HTML formulára, čo minimalizuje záťaž na EEPROM pamäť a zabezpečuje maximálnu trvanlivosť. Prevádzka termostatu je šetrná k EEPROM pamäti.
Stav výstupu existuje výhradne v RAM pamäti, kde sa prepisuje pri každej zmene. Hodnota sa neukladá do emulovanej EEPROM pamäte vo flash pamäti, čo zabezpečuje efektívne a spoľahlivé fungovanie termostatu.
Pri prvom spustení zariadenia bez existujúcich údajov na EEPROM offsetoch automaticky dochádza k zápisu predvolených hodnôt, a to s referenčnou teplotou 20.25 °C a hysterézou 0.00 °C. Toto fail-safe riešenie umožňuje bezproblémový chod termostatu aj na mikrokontroléroch, ktoré nemajú žiadne predchádzajúce údaje v EEPROM pamäti.
Pre zápis do EEPROM pamäte používame funkciu EEPROM.put(), ktorá podporuje akýkoľvek dátový typ, a následné potvrdenie zápisu pomocou EEPROM.commit() na cieľový offset. Implementácia využíva dátový typ float() pre 32-bitové číslo, ktoré je uložené v EEPROM a korešponduje s referenčnou teplotou a hysterézou.
Webserver vykonáva obnovu celej HTML stránky každých 30 sekúnd prostredníctvom meta tagu Refresh. Zároveň vypisuje pomocou Javascriptu orientačný čas do ďalšieho obnovenia do HTML stránky. Pre zachovanie zmeny pre termostat je dôležité stihnúť ju zapísať do EEPROM pred obnovením stránky, inak sa input okná pre číselné vstupy do formulára resetujú.
Vzhľadom na to, že built-in knižnica Ethernet neumožňuje využitie asynchrónneho webservera (čo je možné pri mikrokontroléroch Espressif ESP8266 / ESP32), je nutné prepisovať celú stránku, pretože táto implementácia je 1:1 s pôvodným Ethernet termostatom.
Dynamický údaj, ktorý sa predovšetkým mení je aktuálna hodnota výstupu - Zapnutý / Vypnutý, ktorý informuje prevádzkovateľa o skutočnom stave výstupu spoločne aj s farebným označením.
Vzhľadom na to, že logika systému operuje nezávisle na webserveri, môže dochádzať k odlišnému stavu výstupu pred refreshom oproti tomu, čo je aktuálne zobrazené v webaplikácii. Akákoľvek zmena výstupu je okamžite zaznamenaná, napríklad na UART monitore.
Na webovej stránke termostatu nájde používateľ aj informácie o uptime zariadenia, teda o tom, ako dlho zariadenie beží, vyjadrené v dňoch, hodinách, minútach a sekundách. Termostat je špeciálne navrhnutý iba pre interiérové teploty nad 0°C, a táto charakteristika sa odráža aj v logike systému.
Termostat ponúka možnosť nahradiť existujúci izbový termostat, prípadne dočasne zastúpiť ohrievač v akváriu/teráriu na udržiavanie konštantnej teploty. Je vynikajúcim riešením pre kontrolu a udržiavanie teploty vo vnútri prostredí.
Autor WiFi termostatu nezodpovedá za funkčnosť termostatu, prípadné poruchy kotla ani za úrazy spôsobené elektrickým prúdom v prípade neodbornej montáže termostatu do siete. Je nevyhnutné dodržiavať bezpečnostné pokyny a zabezpečiť profesionálnu inštaláciu pre optimálne a bezpečné využívanie termostatu.
Hlavná stránka pre modifikáciu cieľovej teploty a hysterézy - ukážka zapnutého:
Ukážkové dáta
Cieľová teplota: 22.75 °C
Hysteréza: 0.25 °C
Namerané dáta: 22.49 °C
Výstup: Zapnutý
Termostat spúšťa vykurovanie pri teplote 22.49 °C a nižšej. Po dosiahnutí teploty 23.01 °C sa výstup vypne, signalizačné relé sa rozpojí a plynový kotol zastaví vykurovanie. Následne prebieha fáza dobehu vykurovania, ktorá prispieva k chladnutiu miestnosti, kde sa merania vykonávajú. Termostat sa opäť aktivuje až pri dosiahnutí teploty 22.49 °C alebo nižšej, spúšťajúc ďalší cyklus vykurovania podľa nastavených parametrov.
Hlavná stránka pre modifikáciu cieľovej teploty a hysterézy:Priebeh spracovania zadaných údajov (presmerovanie používateľa):JSON výstup webservera v prehliadači / klientovi cez websocket:
Výstup do UART monitoru - logika systému + nastavená IP adresa, mDNS záznam:
Dostupné knižnice pre mikrokontroléry (ESP)
Archív knižnice (.zip) rozbaliť do C:/Používatelia/[Používateľ]/Dokumenty/Arduino/libraries
Názov knižnice
Funkcia knižnice
Stiahnuť
Dallas
Knižnica pre mikrokontroléry ESP8266 a ESP32.
Umožňuje komunikáciu so senzorom Dallas DS18B20 na OneWire zbernici. Možnosť komunikácie po normálnom, alebo parazitnom zapojení.