Vykurovanie cez internet - Multiuser webaplikácia - otvorený hardvér
22.03.2020 20:29:43
Vytvoril som webaplikáciu s multiuser prístupom, ktorá ponúka možnosť vzdialeného monitora až pre 6 teplôt, termostat pre vykurovanie. V podstate sa jedná o centrálny portál pre zber a distribúciu dát. Počet registrovaných používateľov nie je nijako obmedzený. Webové rozhranie je z KLOROFIL šablóny presunuté do Bootstrap Bare šablóny, zmenila sa hashovacia funkcia pre hashovanie hesiel, ktoré sú uložené v databáze na bcrypt. Zlepšil sa výkon webaplikácie aj rozvážnejším nastavením AJAX-u pre autorefresh údajov na stránke každých 15 sekúnd. Používateľské zariadenie - mikrokontróler sa do webového rozhrania autentifikuje pri predávaní dát menom používateľa a jeho tokenom, ktorý mu umožňuje zápis údajov a načítanie stavu z webového rozhrania (ZAP/VYP pre termostat).
Prevádzkovať je možné webaplikáciu aj pre stovky zariadení súčasne. Používateľ pri registrácii do webového portálu uvedie aj hardvér, ktorý chce použiť. Tento hardvér bude odosielať a načítavať dáta z webového rozhrania. Webový portál podporuje otvorený hardvér, ktorý s webom dokáže komunikovať po HTTP, HTTPS protokole.
Podporované sú platformy (jadro Arduino core):
Arduino + Ethernet Wiznet W5100 - podporuje HTTP protokol
Arduino + Ethernet Wiznet W5500 - podporuje HTTP protokol
ESP8266 (NodeMCU, Wemos D1 Mini) - podporuje HTTPS protokol
ESP32 (DevKit) - podporuje HTTPS protokol
Ako teplotné senzory sú podporované Dallas DS18B20 na jednej OneWire zbernici v celkovom počte 6 kusov. Počet OneWire zberníc je pevne daný, nie je možné priamo používateľom navoliť počet zberníc (jedine manuálnou úpravou zdrojového kódu pre daný mikrokontróler). Každý mikrokontróler využíva jedno relé, prostredníctvom ktorého je možné ovládať výstup - kotol, prípadne solenoid - ventil radiátora. Arduino s Ethernet modulom / shieldom komunikuje s webom po HTTP protokole, ESP8266 využíva HTTPS SHA1 fringerprint certifikátu pre HTTPS spojenie. ESP32 využíva Root CA certifikát danej webovej lokality.
Webaplikácia umožňuje:
Registráciu a prihlásenie používateľov so zvolením riadiaceho mikrokontroléru
Každému používateľovi je priradený token (Api kľúč), ktorým mikrokontróler zapisuje a číta z webového portálu
Prehľad 6 teplôt v reálnom čase (každý používateľ vidí iba svoje dáta)
Historicky prehľad posledných 1000 nahratých záznamov
Grafická reprezentácia záznamov za aktuálny deň (od polnoci)
Automatický režim - Spustenie termostatu s voliteľnou hysterézou 0-5°C s 0.25°C krokom, referenčnou teplotou 5-30°C
Manuálny režim - Spustenie výstupu na neobmedzenú dobu (používateľ upovedomený na webe)
Výstup je možné využiť pre kontakt na relé kotla, solenoidu radiátora
Prehľad profilu, nastavenie riadiaceho teplomera pre termostat
Modifikácia názvov teplomerov/miestností, možnosť zvoliť iný mikrokontróler
Chat webaplikácia pre komunikáciu medzi celou komunitou v reálnom čase
Prehľad zdrojových kódov, možnosť stiahnuť knižnice pre prostredie Arduino IDE
Táto funkcionalita je dostupná zdarma. Projekt je možné stiahnuť a používať v súhľade s MIT licenciou. Prevádzkovateľ sa stiahnutím a užívaním projektu zaväzuje k dodržiavaniu licencie. V prípade jej porušenia si uvedomuje právne následne spojené s týmto porušením licencie. Medzi nevýhody tejto free verzie musím spomenúť fakt, že na prenos sa využíva GET metóda predávania dát, limit pre zápis nie je stanovený, teda používateľ môže zapisovať aj niekoľko krát za sekundu.
Dáta každého používateľa sú prepisované po 30 dňoch. HTTPS fingerprint a Root CA certifikát je napevno daný v zdrojových kódoch, ktoré vypíše webserver pre tieto platformy (ESP8266, ESP32). Tieto dáta sú validné pre subdoménu v službe php5.sk. Okrem toho zdrojové kódy obsahujú napevno cestu v rámci subdomény k súboru pre zápis a čítanie dát. Projekt je tak nutné nakopírovať priamo do Root adresára webservera, pričom cesta musí korešpondovať so štruktúrou: host.sk/vykurovanie-online/.
Týmto sa zaručí fungujúca funkcionalita. Nakoľko sa na webserveri vyskytujú platformy, ktoré podporujú HTTP alebo HTTPS spojenie, je nutné mať webové rozhranie s oboma verziami. V mojom prípade s prefixom www je to HTTP verzia a bez www je to HTTPS verzia. S týmto sa počíta i pri výpise zdrojových kódov pre dané platformy. projekt funguje na PHP 5.6 a 7.
Projekt je možné stiahnuť na Github-e a prečítať si inštrukcie o licencii, inštalácii projektu: https://github.com/martinius96/Vykurovanie-Multiuser-Webapp-Arduino-ESP8266-ESP32
Platená verzia projektu ponúka navyše:
Možnosť modifikovať počet OneWire zberníc, možnosť využitia iných teplotných senzorov (napr. PT100)
API pre JSON výstup pre mikrokontróler (interakcia do ďalších systémov) - Hassio, Domoticz, IoT..
Dynamická zmena zdrojových kódov na základe vyklikaných požiadaviek (OneWire zbernice, atď)
Multijazyková podpora (Slovenčina, Čeština, Angličtina, Nemčina, Ruština)
Možnosť prezerať všetky namerané dáta
Dáta od mikrokontrólerov sa predávajú POST metódou
Možnosť limitovať zápis používateľa, intenzitu zápisov
Grafická reprezentácia dát za 24 hodín, 7 dní, 30 dní
Archivovať dáta po neobmedzenú dobu pre každého používateľa
Admin nástroje pre možnosť zablokovania používateľa, mazanie chatu, pridávanie oznamov na stránku
Chat pre každú národnosť (jazykovú) zvlášť
Možnosť nutnosti overiť e-mailom registráciu, v opačnom prípade sa používateľ neprihlási
Možnosť zmeniť prihlasovacie údaje, token pre zápis a čítanie
Možnosť termostatu v dňoch, časoch, časové riadenie
Štatistické nástroje, výpisy, exporty do .xls, .xml, .csv
Ovládanie hlasom v slovenčine a ďalších podporovaných jazykoch (cez Webkit v Google Chrome)
Projekt môžete vyskúšať aj ako koncový používateľ na stránke: https://arduino.php5.sk/vykurovanie-online/index.php, táto verzia je aktuálna ako tá na Github-e k 22. Marcu 2020.
Komentáre
firefox