× Úvod Zapojení Vlastnosti Části programu Proměnné Kompilace Zjištění IP adresy Nastavení na tmep Webové rozhraní On The Air Server feedback Zobrazení voleb Možnosti kalibrace Určení spotřeby Závěr Download Domů
Opened sensor box

WiFi termostat s možností vzdáleného ovládání

WeMos D1 mini a sensor Dallas DS18B20

11/2024

Potřebuji kontrolovat a řídit teplotu v jedné vzdálené nevytápěné místnosti. V podstatě fixní teplotu, nepotřebuji ji regulovat v závislosti na čase. Pořídil jsem si takový pěkný termostat do zásuvky. Jenže jsem chtěl držet skladovací teplotu cca 1 °C a ten koupený termostat měl nejnižší nastavitelnou teplotu 3 °C. Energie jsou drahé a tak už dvě zimy používám svůj termostat na HW platformě Sonoff Basic. Je to laciné zařízení a zahrnuje napájecí zdroj pro elektroniku, čip ESP8285 s 1MB paměti flash a akční člen, kterým je relé na cca 10 ampér. Je to malé a praktické. Není to ovšem žádná horká novinka, kdysi jsem jich pár koupil. V originále má Sonoff Basic vlastní firmware, které poskytuje asi vcelku zajímavé možnosti spínání, ovšem prostřednictvím cloudu nejspíš kdesi v Číně. Aby tento Sonoff mohl pracovat jako termostat, musel jsem ho doplnit teplotním čidlem. A tady je největší slabina této jinak užitečné konstrukce. Teplotní sensor nemůže být umístěn přímo v krabičce, ale musí být vyveden ven na ochranu před značným ohřevem od ostatních komponent. Druhým problémem je skutečnost, že od zařízení Sonoff je již více variant a těžko pak garantovat nějakou reprodukovatelnost.

Proto jsem pro zveřejnění volil raději kombinaci WeMos D1 mini + Dallas DS18B20 + modul relé.Také je potom jednoduché nahradit mechanické relé pomocí polovodičového bezkontaktního Solid State relé. Napájení elektroniky lze snadno vyřešit nabíječkou pro telefon. Je to laciné a funkční. Ovšem není to tak kompaktní. Konstrukci nechávám plně na vašem uvážení a možnostech. V mém původním programu stačilo udělat opravdu minimální změny. Jen jsem si musel koupit modul relé, abych mohl uspokojivě otestovat zapojení, které vám chci prezentovat. Sensor Dallas DS18B20 je známý již řadu let. Je velmi kvalitní a patří k tomu nejpřesnějšímu, co si můžete za přijatelnou cenu pořídit. Na rozdíl od dřívějších čidel je plně digitální, protože poskytuje po OneWire sběrnici kompletní informaci o teplotě. Kalibrován je již při výrobě a chyba měření teploty je cca 0,5 °C. Možná se vám to zdá velká odchylka, ale je to hodnota, která je výrobcem garantována. Pokud někde čtete o přesnosti DS18B20 lepší údaje, tak je to jen mystifikace nebo chybná interpretace údajů z datasheetu. Teploměry, které máte doma, mají běžně chybu 1 °C až 2 °C. A nenechte se zmást tím, že měří na desetiny °C. Přesnost a rozlišení spolu opravdu nesouvisí, i když iluze je to pěkná. Nejčastěji se setkáte s čínskými klony DS18B20, které ale vykazují vesměs horší přesnost. Je možné koupit samotný sensor nebo si pořídit čidlo i s potřebným kabelem.

Existuje mnoho různých modulů relé. Většina z nich je navržena pro 5V Arduino, ale často fungují i s řídicím signálem 3,3V. Relé s PNP tranzistorem jako spínačem nebo s optočlenem však mohou být méně spolehlivá. Mohou mít problém s odpadnutím kotvy, což může vést k nesprávné funkci při vypínání. Já jsem se do jednoho takového relé zrovna strefil, protože pořádnou dokumentaci nenajdete téměř u žádného prodejce. Relé, které vidíte na mém obrázku zapojení termostatu, by však mělo být bezproblémové a je aktivní v úrovni „HIGH“. Cívka relé SRD-05VDC--SL-C má příkon cca 70mA. Často ale mají moduly relé inverzní funkci (tj. spínají při úrovni vstupního signálu LOW), program s tím počítá. Funkci relé v případě potřeby můžete změnit jednoduchou úpravou definice v záhlaví programu. Je o tom zmínka níže. V každém případě relé nepřetěžujte a údaje na něm napsané berte s dostatečnou rezervou. Jedním z problémů těchto malých reléových modulů bývá nedostatečná izolační vzdálenost mezi nízkonapěťovou částí a výkonovými kontakty. Nezapomínejte, že pro člověka je bezpečné střídavé napětí pouze do 25V a s vyšším napětím by měla pracovat pouze osoba s dostatečnou kvalifikací, která si je vědoma možných rizik.

Při dřívějším provozu termostatu jsem zjistil, že bych potřeboval mít možnost dálkově snižovat nebo zvyšovat požadovanou teplotu. Protože tam dostupná síť nedisponuje veřejnou IP adresou, je jediným řešením komunikovat prostřednictvím nějakého veřejného webového portálu. Mám zkušenosti s tmep.cz a proto jsem ho použil. WeMos se připojí k určené WiFi síti a spustí se proces řízení teploty prostřednictvím spínání relé. Není to žádný sofistikovaný PID regulátor, ten třeba bude příště. Prostě On/Off spínání s nastavitelnou teplotou a nastavitelnou hysterezí.

Program generuje webové stránky, které slouží pro monitoring a nastavování v lokální WiFi síti. Data mohou být ovšem také odesílána k archivaci na server tmep.cz. Dokonce jsem byl schopen z tohoto archivu jednoduše a docela přesně spočítat spotřebovanou elektrickou energii na přitápění za zimní období. Protože by bylo nepraktické při změně WiFi sítě přeprogramovávat celý WeMos D1 mini, tak je možné změnit základní přístupové údaje daleko jednodušeji. Totéž platí i o parametrech pro přístup na portál tmep.cz. Další příjemnou vlastností je OTA, tedy velice efektivní bezdrátový update firmware. Ladil jsem výhradně „bezdrátově“. Musím také konstatovat, že jsem hodně využil určité modularity svých předchozích programů. Sice jsem modifikoval, ale nemusel jsem nic moc vymýšlet. Pro zvýšení bezpečnosti systému je implementován volitelný SSL klient pro komunikaci s externím serverem, je však bez validace SSL certifikátu. Trochu zpomalí odezvu lokálních webových stránek, ale funguje dobře. Neobvyklým řešením vzdáleného nastavení teploty je možnost její volby prostřednictví portálu tmep.cz, který je obecně dostupný z celého světa. A pomyslnou třešničkou na dortu je skutečnost, že nastavené hodnoty z termostatu se trvale promítají zpět na portál. Tak je neustálý přehled nejen o skutečné, ale i o požadované teplotě. Je to důležité, protože jinak člověk snadno ztratí přehled a zapomene, co vlastně nastavil.

Když není dostupná WiFi síť, pak termostat funguje autonomně s hodnotami, které si naposled uložil do trvalé paměti. V tomto případě je jedno, jestli WiFi přestala fungovat za jeho provozu nebo termostat po zapnutí síť vůbec nenalezl. Je to docela důležitá vlastnost, prostě termostat funguje vždy, pokud má napájecí napětí. Všechny modifikovatelné parametry je však možné nastavit i v případě, že je lokální síť WiFi mimo provoz. Stiskem tlačítka se WeMos přepne do módu Access Point a je možné s ním jednoduše pracovat. Když WiFi síť funguje bez přístupu k Internetu, pak je možné termostat ovládat pouze lokálně. Jestli je možné se prostřednictvím WiFi sítě připojit k Internetu, pak je možné termostat ovládat lokálně nebo ze serveru tmep.cz. Pokud máte veřejnou IP adresu a umíte si nastavit na svém routeru mapování portů, pak nepotřebujete pro přístup ze světa ani ten tmep.cz a jste schopni přistupovat přímo na webové rozhraní termostatu.

Zapojení

Schema

Zapojení není složité, chce to jen trochu pečlivosti. A navíc budete ještě potřebovat USB kabel s konektorem micro, který je obvykle na WeMos D1 mini. První programování je prostě nutné provést přes kabel. A pak už stačí k napájení i ta nejslabší USB nabíječka mobilního telefonu. Čidlo DS18B20 je připojeno třemi vodiči na +3.3V, GND,a pin D7 (GPIO13) modulu WeMos. Přidejme ješte rezistor s drátovými vývody v mini provedení. Jeho hodnota by měla být 4k7, tedy 4700 ohmů. Tím propojíte 3.3V a datový pin D7. Je to požadavek pro správné připojení čidla DS18B20.

Další komponentou je tlačítko, kterému říkám Smart Button. To spíná jeden vstup procesoru D5 (GPIO14) do GND (země) a má jedinou, ale o to důležitější funkci. Přepíná „on demand“ tedy výslovně na žádost uživatele, z módu stanice do módu access pointu. To je třeba pro spuštění integrovaného manageru pro správu připojení.

Konečně modul relé je připojen na 5V, GND a vstupem IN na D6 (GPIO12) zařízení WeMos. Jen bych chtěl podotknout, že připojení vinutí běžného relé přímo na výstup WeMos není dobrý nápad. Vždy je třeba použít nějaký další polovodičový spínač – transistor. A použití hotových reléových modulů vám tak ušetří hodně práce.

Vlastnosti programu

3D box

Úlohou modulu WeMos je měřit teplotu prostřednictvím teplotního čidla Dallas DS18B20 a na základě získaných hodnot ovládat pomocí relé připojené topení. V systému je také zavedena hystereze. Má omezit časté a zbytečné přepínání relé, které by mohlo vést k jeho předčasnému opotřebení. Hystereze je nastavitelná dle potřeby v rozsahu 0,1°C až 1,0 °C. Například pokud je požadovaná teplota 20°C a hystereze je nastavena na 0,5 °C, pak topení zapne při poklesu teploty pod 19,5 °C a vypne při teplotě nad 20,5 °C. Pokud by někdo chtěl naopak ovládat třeba ventilátor chlazení, pak k tomu stačí pouze prohodit dva řádky v programu.

Tak tedy, když se připojím na webové rozhraní WeMos, tak mohu přecházet mezi třemi stránkami. Ta první je přehledová. Zobrazuje provozní podmínky, měřenou teplotu a stav relé. Zbývající dvě stránky slouží k nastavovaní. A tyto dvě nastavovací stránky jsou chráněny společným heslem. To heslo by šlo snadno rozšířit i na přehledovou stránku, ale dle mého názoru je to zbytečné. Reálně pracuje WeMos ve dvou módech. Buď je to mód stanice nebo je to mód access point. Je to nutné, protože pokud nejsou primární parametry přihlášení do sítě přímo v programu, tak se nemáte k WeMos jak připojit. Proto existuje mód access point. Ten vytváří v podstatě svoji vlastní Wifi síť. Pokaždé stejnou. Vy se na ni můžete kdykoliv připojit a nastavit si v modulu parametry jiných sítí. To je podstata všech knihoven „Wifi manager“. Otázkou ale je, jak ten manager vyvolat / spustit. Někdy je to docela problematické. Já jsem to řešil tlačítkem Smart Button. Pokud toto tlačítku stisknu, tak modul přejde z režimu stanice do režimu access point.

Mohu tedy definovat možné stavy modulu:

Části programu

Zvykl jsem si, rozdělovat program do záložek, vytvořených přímo v Arduino IDE. Je to daleko přehlednější a nutí to člověka psát program alespoň trochu strukturovaně. Docela se mi to osvědčilo. Má to však jednu velkou nevýhodu. Stačí udělat drobný překlep v nějaké sekci a při překladu se naráz objeví třeba desítky, naprosto nevyzpytatelných a nepochopitelných chyb. Řeším to tak, že když něco málo připíšu nebo upravím, tak hned spouštím Ověřit/Kompilovat. Pak vím, že problém je nejspíš právě v té poslední modifikaci. A také v chybových hlášení kompileru obvykle vyhledávám ta nejstupidnější hlášení typu chybí závorka nebo chybí středník. To bývá u mne nejčastější příčinou problémů.

Program má tyto části – záložky: Je dobré si uvědomit jednu věc. Když s Wemos komunikujete přes webové rozhraní, vystupuje proti vám jako http server. Když komunikuje s externím serverem jako třeba tmep.cz, vystupuje proti němu jako http nebo https klient. To podle čísla portu hostitele, které mu nastavíte

Proměnné programu

Pokud se budeme bavit o nastavení programu, tak musím konstatovat, že před programováním nemusíte nastavovat téměř nic. Teoreticky, když někomu dáte tento naprogramovaný modul s popisem, tak by dotyčný měl být schopen zařízení plně zprovoznit ve svých podmínkách.

Ovšem v programu je institut takzvaných defaultních parametrů. Jsou trvale zapsány v programu, tedy pro uživatele jsou to kdykoliv vyvolatelné konstanty. Ty mohou být nastaveny prakticky libovolně. Pokud si tam ovšem při testování zapíšete třeba „tajnou“ tzv. odesílací doménu serveru tmep.cz, tak si ji prostě nový uživatel sensoru může kdykoliv vyvolat a přečíst. Tak je často vhodné nastavit defaultní parametry jen obecně, bez ohledu na jejich reálnost a funkčnost. Ale tyhle drobné taje si asi musíte vyzkoušet sami. Pokud bude sensor výhradně pro vás, pak před programováním, v záhlaví sketche, prostě vypište parametry, jak potřebujete. A první zprovoznění pak bude automatické. Jen bych chtěl připomenout, že zařízení dovede precizně odesílat data na externí server, ale může být pohodlně provozováno i bez této vymoženosti.

V záhlaví programu je souhrn nastavitelných parametrů, které tvoří skupinu, kterým říkám defaultní.

Jsou to tyto položky:
_mySSID jméno Wifi na kterou se chceme připojovat - maximálně 32 znaků
_myPassword heslo k této Wifi síti - maximálně 63 znaků
_SensorName jméno sensoru - maximálně 32 znaků
_Host adresa externího serveru včetně domény, například "as4dh6-nb2ytr.tmep.cz" - maximálně 63 znaků
_HostPort číslo portu externího serveru, standardně 80 nebo 443 pro kryptované připojení SSL
_GUID musí být v souladu s nastavením na portálu tmep.cz
_GUID_2 musí být v souladu s nastavením na portálu tmep.cz
_SendPeriod perioda odesílání dat na externí server v minutách, povolené hodnoty 1 až 60 minut
_SendToTmep povolení odesílání dat na externí server, true = odesílat, false = neodesílat
_AdminName uživatelské jméno pro nastavování parametrů přes webové rozhraní
_AdminPassword uživatelské heslo pro nastavování parametrů přes webové rozhraní
RelayActive nastavuje se na HIGH nebo LOW, podle toho, ve které úrovni modul relé spíná výstupní kontakty

Všechny tyto vyjmenované parametry můžete změnit přes webové rozhraní s výjimkou administrátora, jeho hesla a proměnné RelayActive. Tyto musíte nastavit před programováním

Kompilace programu

Board settingx

Pokud nemáte prostředí Arduino IDE, tak bude vašim prvním krokem jeho instalace. Jak nainstalovat desky s ESP8266 do Arduino IDE se dozvíte v češtině třeba na webu laskakit.cz, ale obecně je toho na internetu plno. Pak už zbývá pouze nastavení správné desky v IDE. Já obvykle volím desku Lolin(WeMos) D1 mini (clone). Pokud tedy máte nastaveno vývojové prostředí Arduino IDE pro desku WeMos mini, tak můžete zkusit přeložit a nahrát program. WeMos je v tomto ohledu mimořádně přívětivý. Problémy bývají jen někdy s ovladači USB převodníku pro WeMos, s nezaškrtnutým check boxem u portu COM v IDE a možná narazíte na nějaké problémy s knihovnami. Myslím ale, že všechny použité knihovny, s výjimkou knihovny sensoru, jsou součástí jádra Arduino-ESP8266. Tak vám zbývá nainstalovat tu správnou externí knihovnu pro DS18B20. Odkaz na ni je v poznámce v programu. Program zabírá v paměti flash cca 40%, je tedy dostatečná rezerva pro případná další vylepšení.

Zjištění IP adresy

Když se vám podařilo program nahrát, tak si ho budete také chtít vyzkoušet. Mohou nastat v podstatě dvě alternativy. Pokud jste zadali přímo do programu platné přihlašovací údaje dostupné Wifi, tak Wemos párkrát blikne a připojí se k ní. A vy se můžete na jeho http server připojit jakýmkoliv prohlížečem. K tomu je ovšem nezbytné znát jeho IP adresu. Tu je možné zjistit několika způsoby. V nouzi pomůže i ta IP adresa odeslaná po resetu na seriový port Wemos. Nebo ji můžeme zkusit najít ve Windows příkazem "arp -a". Vůbec nejlepší metoda je, nastavení statické adresy DHCP serverem vašeho routeru. K tomu se obvykle velice hodí MAC adresa modulu Wemos.

Rezerved IP address

Pro detekci správné IP adresy jsem připravil malou pomůcku. Pokud se Wemos připojil k vaší Wifi, tak si automaticky uložil do paměti přidělenou IP adresu. Pokud pak zmáčknete Smart Button, tak se modul přepne do režimu AP. Vy pak třeba na mobilu v dostupných sítích Wifi vyhledáte síť s názvem vašeho sensoru a připojíte se na ni. Pozor na jednu věc. Mobil obvykle začne hlásit, že zvolená Wifi nemá připojení k internetu a snaží se vás odpojit. Nedejte se! Pak napíšete do adresního řádku prohlížeče "http://192.168.4.1", to je IP adresa http serveru Wemos v režimu access point. A měli byste se tak dostat na jeho webové rozhraní a na něm je již vidět poslední přidělená IP adresa. Tu si zapamatujete a můžete modul restartovat. Když se znovu přihlásí k Wifi, tak vy, nyní již ve vlastní Wifi síti, napíšete "http://zapamatovaná IP adresa". Měli byste být zpět na webovém rozhraní http serveru, bežícím ve Wemos, ovšem již ve Wifi režimu stanice.

Naneštěstí to, co se vypisuje jako "The last IP address", neplatí věčně. Obvykle je stejná adresa opakovaně rezervována routerem vždy na 24 hodin, Pokud je senzor vypnut delší dobu než jeden den, dá se předpokládat, že pak bude mít jinou IP adresu. Také po jakémkoliv restartu routeru se adresa změní. Jedinou ochranou je opravdu jen nastavení statické adresy v routeru. Pevná adresa se sice dá nastavit i v modulu Wemos, ale to přináší obvykle jen problémy, není to totiž úplně košer.

Pokud jste nenastavili defaultní parametry v programu, pak Wemos po zapnutí jen bliká a signalizuje tím, že není připojen k žádné síti. Pak tedy stiskněte Smart Button a připojte se výše uvedeným postupem k síti tvořené samotným modulem Wemos s adresou "http://192.168.4.1". Pro nastavení parametrů musíte ovšem nyní již použít správné heslo administratora. Je nezbytné potvrdit nové parametry tlačítkem SUBMIT na webové stránce. V tomto rozhraní pak můžete pro zpětný přechod do režimu stanice použít volbu Restart. Pak bude vaší sítí již přidělena modulu IP adresa a vy ji můžete zjistit již známým postupem, opakovaným stiskem Smart Button. Zdá se to možná složité, ale určitě si s tím poradíte.

Nastavení čidla na portálu tmep.cz

Pokud data nikam nehodláte odesílat, tak samozřejmě na tmep.cz nic nastavovat nebudete. Jinak si určitě přečtěte dostupnou dokumentaci na portálu tmep.cz. V nabídce Upravit čidlo nastavte položku typ čidla na „Teplota a vlhkost“. Zkopírujte si doménu pro zasílání hodnot a tuto doménu pak vložte do programu do položky _Host. Parametry GUID nechte beze změny. Ještě zvolte typ bezdrátového připojení „WiFi“. Zbytek je pak již na vás.

Webové rozhraní

Preview Form 1 Form 2

Přehledová stránka:

Přes webové rozhraní jsou prostřednictvím dvou dalších stránek dostupné a modifikovatelné tyto parametry:

Každý stisk SUBMIT vyvolá mimo uložení hodnot také automaticky nové odeslání dat na tmep.cz, pokud je povoleno.

OTA update firmware

On The Air update

OTA - On The Air je metoda nahrávání firmware přes Wifi. Existuje několik způsobů. Manuální nahrávání pomocí prohlížeče je ale velice transparentní a při limitovaném počtu sensorů naprosto dostačující. V prvé řadě je třeba si uvědomit, že pro aplikaci OTA je nezbytné mít v modulu s ESP8266 nahrán již nějaký základní program, něco jako zavaděč OTA. Prostě do nového Wemos přes Wifi nic nenahrajete, každý nahraný sketch musí mít podporu OTA, jinak jsme odkázání na sériovou linku. Sketch, nahrávaný přes OTA, se ukládá do rezervovanéé flash paměti, která má délku 1MB. Sketch nemůže přepisovat ten předchozí. Ukládá se separátně a teprve když je v paměti celý, tak se původní program přepíše.

Přes OTA se pochopitelně neposílá zdrojový kód, ale pouze jeho binární reprezentace. Tu získáte snadno. V Arduino IDE otevřete váš projekt a v menu zvolíte položku "Exportovat kompilované soubory". Pak se v adresáři projektu objeví nový adresář build. A v něm najdete obvykle několik souborů. Ten, který má poslední příponu *.bin je ten pravý. Ten je třeba z prohlížeče nabídnout přes OTA. Není zásadním problémem tento soubor nahrát do mobilu (kabel, WhatsApp, email) a z mobilu jej pak nahrávat přes OTA do Wemos.

Ovládání termostatu přes externí server - feedback

Server response

Potřeboval jsem mít možnost ovládat termostat pomocí příkazů, odesílaných přes externí server, například portálem tmep.cz. V nastavení čidla na tmep.cz je na to vyhrazena část "Odpověď čidlu na zaslané měření". Tam stačí vepsat požadovaný text a server jej odešle po každém přijetí platných dat zpět klientovy, tedy v tomto případě našemu termostatu. Analýzu přijatých dat zajišťuje část programu nazvaná ParseResponse. Vytvořil jsem sadu jednoduchých příkazů, abych mohl tuto funkci využívat. Opravdu to funguje. Jsou to tyto příkazy:

Příkazy mohou být vedle sebe, nezáleží na velikosti písmen a veškeré mezery jsou ignorovány. Každý příkaz však musí být ukončen středníkem. Pokud vázne komunikace mezi klientem a serverem, může vypršet časový limit pro odpověď a příkaz se pak pochopitelně neprovede. Ale musím konstatovat, že to funguje překvapivě dobře. Ovšem nesmíte zapomínat, že se příkaz realizuje při každém odeslání dat, dokud ho na portálu nesmažete nebo nevypnete. Bude vám například opakovaně přepisovat pokusy o lokální nastavení a v případě použití REST se bude termostat opakovaně restartovat po dobu existence aktivního příkazu na serveru tmep.cz.

Zobrazení nastavených parametrů na tmep.cz

set values

I při vzdáleném přístupu můžeme v záhlaví panelu termostatu na webu tmep.cz vidět hodnoty nastavené teploty, hystereze, periody odesílání dat a stav relé. Pokud však měníme hodnoty termostatu z portálu tmep.cz, je třeba si uvědomit, že při prvním odeslání dat z termostatu na server se nejprve načtou do termostatu nastavované hodnoty a teprve při dalším periodickém odeslání dat se aktuální hodnoty promítnou zpět na tmep.cz, kde je pak uvidíme.

Možnosti kalibrování měření teploty

Možná zatoužíte po zvýšení přesnosti teploměru s DS18B20. Učili jsme se to už ve škole. Led a vroucí voda. Ale nic není tak jednoduché, jak to vypadá. Když do termosky dáte jemně drcený led z destilované vody, vložíte tam sensor a budete přiměřeně míchat, tak to bude fungovat. Tímto způsobem je údajně možné dosáhnout chyby 0,2°C. Aby však kalibrace byla k užitku, považuje se za minimum dva teplotní body. U varu vody tj. 100°C již záleží na dalších faktorech, jako je například tlak vzduchu a to se pak obtížně eliminuje. Uvádí se, že i při kompenzaci atmosferického tlaku při varu vody je běžně dosažitelná přesnost jen cca 1,2°C. Já jsem se spokojil s tou ledovou tříští, protože mi jde především o teplotu blizoučkou nule. Aditivní odchylku teploty můžete korigovat proměnnou TemperatureOffset, která je v deklaracích na počátku programu. Rozhodně není nereálné si nechat v případě potřeby teplotní čidlo zkalibrovat v nějaké metrologické laboratoři, ale cena se pohybuje okolo 1000Kč. Ovšem pro většinu aplikací vystačíte i s tou vlastní chybou DS18B20, která je 0,5°C v rozsahu -10°C až 85°C.

Určení spotřeby elektrické energie

Ve svém původním programu jsem odesílal hodnotu vlhkosti v závislosti na sepnutí relé, abych měl co největší přehled o jeho stavu. Nulová vlhkost - relé vypnuto, 100% vlhkost - relé zapnuto. Když je tedy v grafu vidět 100% vlhkosti, pak bylo relé v daných chvílích sepnuto. A pak jsem přišel na to, že mi to dovoluje velice snadno a poměrně přesně spočítat spotřebu elektrické energie. tmep.cz totiž počítá průměrnou vlhkost za různá období. Když znám příkon svého topení, pak pro měsíční spotřebu platí rovnice průměrná měsíční vlhkost / 100% * 24hod * počet dní v měsíci * příkon topení[kW] = spotřeba energie[kWh].

Závěr

Termostat se chová stabilně. Je vcelku komfortní, poskytuje dobrý přehled o průběhu teploty a skvěle se ovládá i z mobilního telefonu. Jeho výhodou je také možnost vzdálené kontroly i když není k dispozici veřejná IP adresa, což je velmi častý problém. Při vzdáleném přístupu se sice neobejde bez externího serveru, ale alespoň není třeba žádný čínský cloud, mnohdy nutná podmínka pro funkci zařízení. Pokud máte veřejnou IP adresu, tak si můžete nakonfigurovat přístup ze světa i bez prostředníka. Termostat má přívětivé a přehledné webové rozhraní. Důležitou vlastností je i to, že je plně autonomní a může být využíván, nastavován a funguje i v místech bez WiFi sítě či internetu. Výrazným hardwarovým vylepšením by bylo použití Solid state relé, kterým lze velmi snadno nahradit mechanické relé. A konečně může být termostat velice jednoduše modifikován prakticky pro jakoukoliv jinou službu, podobnou serveru tmep.cz.

Autor poskytuje tento návod a software tak, jak je, bez jakýchkoli záruk a nenese odpovědnost za jejich kvalitu, funkčnost ani za škody vzniklé jejich použitím. Nároky na náhradu škody na autorovi jsou vyloučeny.

Download programu termostatu pro modul WeMos D1 mini
Download programu termostatu pro zařízení Sonoff Basic