Arduino schéma - arduino.sk

Vykurovanie cez internet - Multiuser webaplikácia

Kompletné projekty s návodom a zdrojovým kódom
Príspevky: 84
Registrovaný: Uto 23. Dec 2014 2:15:50

Vykurovanie cez internet - Multiuser webaplikácia

Poslaťod martinius96 » Ned 22. Mar 2020 12:20:33

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.
Obrázok
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.
Obrázok
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 - plne autonómny - riadi ho sám mikrokontróler pri odovzdaní dát
    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.
Obrázok
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/.
Obrázok
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.
Obrázok
Projekt je možné stiahnuť na Github-e a prečítať si inštrukcie o licencii, inštalácii projektu: https://github.com/martinius96/Vykurova ... 8266-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
    E-mailové notifikácie (chyby senzorov, eventy - zapnutie / vypnutie kúrenia, oznamy)
[list]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 ja aktuálna ako tá na Github-e k 22. Marcu 2020.

Späť na Hotové projekty