Projekt je od r 2020 dostupný zdarma na stiahnutie bez záruky správnej funkčnosti.
Dnes by som rád predstavil projekt, ktorému sa dlhšie venujem a malými krôčkami ho vylepšujem. Projekt je stále vo fáze vývoja a priebežne sa počas chodu aktualizuje a pridávajú sa doň ďalšie funkcionality, ktoré nenarúšajú chod webaplikácie, ani zmeny v používateľskom hardvéri. Teda ten, kto portál aktívne prevádzkuje, nepotrebuje nič inštalovať ani meniť zdrojový kód vo svojom mikrokontroléri.
Webaplikácia ponúka centrálny webový portál, ktorý slúži ako zberná brána pre dáta od používateľov s dôrazom na využitie otvoreného hardvéru. K portálu má prístup každý registrovaný používateľ a taktiež aj jeho hardvér, ktorý s webom komunikuje. Portál je navrhnutý v jazyku PHP s využitím MySQL databázy. Portál prijíma 6 teplôt od používateľa a dokáže vrátiť 1 výstup ZAP/VYP pre relé na riadenie kotla, ktorý je možné aplikovať skrz relé.
Používateľ pri registrácii na webovú stránku vyplní formulár s prihlasovacím menom, heslom a navolí si riadiaici hardvér a senzory, ktoré chce použiť. Ich ďalšia zmena nie je počas využívania portálu možná.
Pre mikrokontroléry je na výber:
- Arduino Uno/Mega + Ethernet shield Wiznet W5100
- Arduino Uno/Mega + Ethernet modul Wiznet W5500
- ESP8266 (NodeMCU, Wemos, D1, Wavgat, modul...)
- ESP32 (Devkit v1-v4, WROOM a ďalšie)
Na výber z teplotných senzorov je v súčasnosti iba jeden variant:
- 6x DS18B20 na OneWire zbernici
Po stránke funkcnosti portál umožňuje:
- Prihlásenie
- Zaznamenávať až 6 teplôt digitálnymi senzormi DS18B20 na OneWire zbernici
- V reálnom čase dáta reprezentovať používateľovi cez AJAX-ové volania PHP výpisu
- Funkcia izbového termostatu s voliteľným teplomerom, referenčnou teplotou a voliteľnou hysterézou
- Funkcia manuálneho zapnutia ZAP/VYP pre výstup na dobu neurčitú
- História meraní v prehľadnej tabuľke (1000 záznamov)
- Vizualizácia nameraných dát v čiarovom grafe
- Vizualizácia aktivity výstupu (ZAP/VYP) v area grafe
- Generátor zdrojového kódu pre mikrokontróler
- Zmena prihlasovacieho hesla, zmena názvov teplomerov, navolenie teplomera riadiaceho kúrenie
- Real-time chat medzi registrovanými používateľmi
- Odhlásenie
Každý používateľ a jeho hardvér je jednoznačne identifikovaný vlastným tokenom, Token s používateľským menom využíva aj mikrokontróler, ktorý sa týmto preukazuje na webserveri pri predávaní dát. Overuje sa teda token a zároveň i používateľské meno a vzťahom medzi nimi. Ide tak o dvojfaktorovú autentizáciu mikrokontroléra pre zápis i čítanie dát z webového rozhrania.
Systém sa udržiava autonómne v chode pri pripájaní mikrokontroléra, prípadne aj používateľom na webe. Autonómne riadenie spočíva vo vykonávaní logiky pri príjme dát od mikrokontroléra, kedy sa overuje nastavený režim termostatu (automat/manual). V prípade automatu sa kontroluje riadiaca teplota, vybraný teplomer pre riadenie a hysteréza, v prípade zmeny stav zo ZAP na VYP, alebo opačne sa zmena prejaví zápisom do databázy. Každý request so zápisom dát potvrdí úspešnosť aj mikrokontroléru výpisom.
V prípade, že nie je dostupná webstránka, alebo konektvita z používateľovej siete, kde mikrokontróler prevádzkuje, automaticky vypne relé výstupu pre kotol a čaká určitý čas. Po čase sa opätovne skúša pripojiť na webserver. V prípade, že sa pripojí, okamžite sa s ním synchronizuje a riadi sa podľa neho. Do platforiem Arduino a ESP32 už bol implemetovaný aj watchdog, ktorý je tiež vygenerovaný vrámci kódu pre dané mikrokontroléry a v prípade zaseknutia mikrokontroléru vykoná jeho reset.
Nechcem zachádzať do všetkých funkcionalít, ktoré web ponúka. Obsahuje aj niekoľko funkcionalít, ktoré zatiaľ nie sú "viditeľné" používateľom. Jedná sa o rôzne štatistické nástroje teplôt, tendencií... Existujú v ňom aj administrátorske nástroje, ktoré umožňujú blokovať používateľov v prípade, že sa v chate nevyhodne vyjadrujú, alebo upravili vygenerovaný zdrojový kód, ktorý spamuje portál a pod. Administrátor v monitoringu vidí početnosť zápisov do databázy od každého používateľa a jeho správy v chate. Môže jednotlivých používateľov napomínať, zablokovať ich na permaban, či určitú dobu.
Po stránke mikrokontrolérov je nutné vedieť, že Arduino s Ethernet shieldom, respektíve modulom podporuje iba HTTP konektivitu a ESP zariadenia ESP8266, ESP32 podporuje HTTPS spojenia. ESP8266 vyžaduje fingerprint HTTPS certifikátu a ESP32 vyžaduje Root CA certifikát. ESP32 je možné napojiť aj do podnikových WiFi sietí pod protokolom 802.1x (WPA/WPA2 Enterprise).
Do portálu chcem ďalej implementovať (Edit 2020: NEIMPLEMENTOVANÉ):
- Doplniť ďalší riadiaci hardvér
- Doplniť prenosové technológie (Sigfox, NB-IoT)
- Doplniť rôzne voliteľné variácie senzorov
- Obmedzenie max. 1 zariadenia na 1 IP
- Zablokovanie používateľa na základe IP, alebo jeho mikrokontróler
- Výpis používateľovi v JSON formáte históriu dát pre jeho mikrokontróler
- Prispôsobiť chat pre vkladanie obrázkov
- Implementovať rôzne nástroje pre štatistiku (úniky tepla, výkon, efektivita, atď.)
- Implementovať platené funkcionality
- Po dokončení portál umiestniť na vlastnú doménu
- Implementovať POST metódu zberu dát
- Upozornenie používateľov e-mailom na zmeny, vypadnutie senzorov a pod.
Ak sa o projekt zaujímate, môžete nájsť o ňom viac informácii na adrese:
http://arduino.clanweb.eu/vykurovanie-online/
Zdrojové kódy webaplikácie sú dostupné na Githube:
https://github.com/martinius96/Vykurovanie-Multiuser-Webapp-Arduino-ESP8266-ESP32