Domovní monitor 8 - síťový WiFi modul

calendar_month19.2.2019

Domovní monitor je schopen fungovat samostatně tak, jak byl popsán v předchozích kapitolách. Měřené údaje se zobrazují na displeji řídící jednotky, překročení hlídaných veličin způsobí poplach a v případě poruchy některého modulu o tom informují chybové zprávy. Mnohem vyššího komfortu ale dosahuje celý systém jeho propojením s webem.

IoT - internet věcí

Tím jsme se konečně dostali k jádru celého systému. Data z fyzické sběrnice, včetně diagnostických údajů, jsou čtena síťovým modulem a v minutových intervalech odesílána na server. Právě pro tuto funkčnost mám zaregistrovánu zdejší doménu s hostingem na Endoře. Nyní začíná být zřejmé, že primární účel těchto stránek je poněkud skrytý. Existuje zde totiž veřejně nepřístupná oblast, která slouží ke zpracování a zobrazování údajů přijatých nejen od domovního monitoru, ale všech IoT zařízení u nás doma. GET metodou přijatá data jsou ukládána do příslušných tabulek MySQL databáze a z ní poté načítána a zobrazována ve webovém prohlížeči.

Webová aplikace

Mobilní webové rozhraní zobrazuje naměřená a diagnostická data. Jednotlivá IoT zařízení začínají vždy tlustou čarou, pod kterou je vlevo název a vpravo čas posledního přenosu, síla signálu a IP adresa. Zde je náhled s vysvětlením některých údajů:

Hned první část patří domovnímu monitoru. Zobrazuje se zde teplota a vlhkost vzduchu v obýváku, stav a čas poslední změny alarmu, níže jsou teploty na kotli (výstupní a vstupní hrdlo), napětí na akumulátoru náhradního zdroje oběhového čerpadla, dále teploty vody u vpusti a výpusti bojleru a zaplnění jímky. Zde je nutné dodat, že jsem namísto hladinových spínačů popsaných v 5. kapitole o domovním monitoru začal používat ultrazvukový sonar, který je spolehlivější a hlavně pracuje s rozlišením 1%. Sonaru bych se rád věnoval v některém z příštích článků. Z domovního monitoru se zobrazují ještě stavy záplavových čidel a doplňující informace v podobě diagnostických upozornění a nastavení řídící jednotky.

Pod domovním monitorem následují data z bateriově napájených WiFi teploměrů vždy v podobě teploty a vlhkosti vzduchu a napětí na baterii. Zahradní modul zatím měří teplotu vzduchu a vlhkost půdy ve skleníku. Zobrazuje se i maximální a minimální teplota za posledních 24 hodin. Ve vývoji je ovládání zavlažování, které funguje i mimo lokální síť bez nutnosti veřejné IP adresy.

Všechny údaje je možné zobrazit na náhledovém grafu úplně dole nebo si zobrazit velký graf (ideálně na desktopovém monitoru) pro podrobné zkoumání dvoudenní historie.

Emailové notifikace

Důležité údaje, které si žádají zvýšenou pozornost, si nechávám posílat emaily. Jsou to především diagnostické informace, upozornění na zajištění či odjištění alarmu nebo překročení nastavených teplot kotle a bojleru. Také mi chodí emaily, když dosáhne kotel provozní teploty nebo naopak vyhasíná, či je čas vyměnit baterie ve WiFi teploměrech.

Technické řešení

Čtení dat ze sběrnice i jejich odesílání na web má na starosti jediný čip ESP8266 (jak jinak), tentokrát v provedení nodeMCU. Zapojení je extrémně jednoduché. Modul nodeMCU je napájen přes vestavěný microUSB konektor. Potřebnou energii poskytuje WiFi router s USB portem. Díky tomu není potřeba žádný další adaptér (nemám rád síťové adaptéry). Sběrnice domovního monitoru je k vstupnímu pinu D1 nodeMCU připojena přes rezistor 10k. ESP totiž není 5V tolerantní, i když mnoho uživatelů má opačné praktické zkušenosti. Mé řešení není ideální, nicméně anuluje hrozbu poškození ESP a zároveň nezatěžuje sběrnici dalším proudovým odběrem.

ESP je zde v roli posluchače - jednotlivé role jsou popsány v úvodu do projektu domovního monitoru. Do komunikace mezi PICy tak nemůže nijak zasahovat, pouze monitoruje pakety a ukládá si data. Díky oddělujícímu rezistoru ani není možné komunikaci narušit, ať už z důvodu závady ESP, či případného útoku.

K pinu D3 je připojeno ještě čidlo teploty a vlhkosti vzduchu DHT22. Modul tyto údaje přidává k datům ze sběrnice a na server je posílá společně.

Software

Jak lze pochopit ze sketche ESP, jsou data přenášena GET metodou. PHP skript je na straně serveru převezme, případně ještě přepočítá do vhodnějšího formátu a uloží do příslušné tabulky. Každé IoT zařízení má vlastní tabulku. Vlastně dvě tabulky, jednu s historií a jednu bez. Naměřená data jsou ukládána do tabulky s historií, přičemž při každém zápisu jsou mazána data starší dvou dnů. Metadata jsou v tabulce bez historie, kde je stále přepisován jeden řádek. Jde o IP adresu a sílu signálu. Všechny záznamy jsou samozřejmě ještě opatřeny časovým razítkem.

Program pro ESP si můžete stáhnout zde.

PHP skript je pouze spojením zápisu do databáze, čtení z databáze a intepretací dat v HTML konstrukci. Příklad zápisu do databáze jsem uvedl v článku WiFi teploměr s bateriovým napájením, ale další už nechám na vaší fantazii.

Děkuji za přečtení. Pokud máte jakékoliv dotazy, nápady či připomínky, budu za ně rád v diskuzi pod článkem nebo na emailu.