Prišla zima, sviatky, oddych a potreba zakúriť. Samozrejme že nudiť sa mi popri oddychovaní nechcelo a tak kým nohy ležali v pokoji, hlava aj tak pracovala. Napadlo ma že si postavím niečo užitočné a niečo málo sa popri tomu aj priučím. Vianočné rozprávky z televízora už poznám naspamäť tak som otvoril šuplík a pozrel aké mám možnosti. Našiel som tam povaľovať sa jedno ešte nerozbalené ESP32, nejaké tie rezistory a dokonca aj pár kusov ds18b20. Ktorý to nepoznajú ide o digitálne teplotné sondy a tak mi vnikla myšlienka vytvoriť nejaký ten jednoduchý termostat ktorý nakoniec ale až tak jednoduchý nebol pretože to už by bolo aj zbytočné použiť ESP32 na takýto účel. Keďže tento MCU modul má zabudovanú Wi-Fi a celkom slušnú podporu sieťovej komunikácie bola by škoda to nevyužiť. Chcel som si vyskúšať prácu s databázou, nejakým tým webovým rozhraním, k tomu som mal ESP32 + merače teploty nejaký ten čas, trpezlivosť a keďže sme v roku 2025 tak všetci vieme že môžeme využiť aj nejaké tie schopnosti „umelej inteligencie“ ktorá nám s tým ochotne pomôže. Tak vznikol Termostat/LOGer ktorý dokáže nahrávať dáta priamo do databázy a nie len to.
Prepojenie ESP32 s Dallasom:

Na zbernicu OneWire môžeme pripojiť viacero kusov snímačov.
Ovládaním a logikou termostatu sa teraz nebudeme zaoberať a prejdeme rovno na komunikáciu zo serverom a logovanie nameraných hodnôt.
ds18b20 → ESP32 → PHP → Databáza (ďalej len DB)
Takto nejak sa mi podarilo postaviť funkčný prototyp na LOGovanie a ukladanie údajov na server tak aby boli stále online a dostupné v sieti pre ďalšie použitie a analýzu. Pôvodne som chcel ukladanie priamo do DB iba pomocou ESP ale keďže server protestoval a už ma prechádzala trpezlivosť to riešiť, zvolil som inú cestu. ESP32 posiela dáta cez http request a PHP ich ukladá do DB priamo na serveri. Na moje potreby to ide dostatočne rýchlo a je možnosť to neskôr doplniť o nejaké to šifrovanie navyše a iné mechanizmy, keďže momentálne idú všetky dáta v URL adrese a sú jednoducho čítané aj tretími stranami a tiež môžu byť hocikedy injektované falošnými údajmi. To ma ale zatiaľ nejak netrápi pretože ide len o testovací projekt v domácom prostredí a nie vojenský vládny program.
Pre jednoduchosť a nenáročnosť projektu budeme s ESP pracovať na platforme Arduino IDE.
Funkcia pre odosielanie dát na server cez http URL string:

Pre debug môžeme odkomentovať Serial.print aby sme videli, či nám dáta prišli na server v poriadku alebo chyby ktoré nám server odpovie.
Ďalej si ukážeme časť kódu PHP ktorý prijme dáta z ESP a uloží ich do DB:

Z kódu môžeme vidieť že pracujeme s databázou MySQL.
Takže dáta sa nám ukladajú na server ale čo ďalej s nimi? Pripájať sa neustále do Admin rozhrania DB aby sme videli aktuálnu teplotu nie je moc praktické a tak môžeme vytvoriť jednoduché GUI ktoré nám zobrazí poslednú nameranú teplotu alebo si môžeme vytvoriť prehľadnú tabuľku či graf.
Webová stránka zobrazujúca aktuálnu alebo poslednú nameranú teplotu:

Systémový čas získavame v HTML kóde priamo zo zariadenia na ktorom je zobrazená. Dátum a čas poslednej nameranej teploty odosielame spolu s teplotou z ESP do DB. ESP synchronizuje aktuálny dátum a čas z NTP servera pomocou knižnice time.h
Tu vidíme graf vygenerovaný cez json script chart.js:

Možností je veľa. Môj ciel ale nie je len obyčajné meranie teploty v miestnosti a zobrazovanie na webe, to by sme ani nepotrebovali DB. Keďže ale už máme dostatok nameraných údajov a ďalšie nám periodicky pribúdajú, môžeme ich využiť aj na niečo produktívnejšie a tak si v ďalšej časti vytvoríme program na analýzu tepelnej straty budovy a skúsime vypočítať súčiniteľ prechodu tepla (U).
