joi, 22 iunie 2017

ESP8266 MQTT Arduino Domoticz - home automation

Intr-un articol precedent am pus cateva detalii despre automatizarea casei, despre cipul cu WiFi integrat si pret mic ESP8266 (Domoticz, IoT si casa inteligenta).

De cand cipul ESP8266 a fost integrat in Arduino IDE, au aparut o multime de aplicatii, de automatizari, iar viata constructorului amator electronist :) s-a simplificat uimitor. Unii chiar folosesc acest cip ESP8266 fara partea lui de WiFi doar pt ca ofera putere de procesare la un pret mic.

Ideea cu automatizarea casei e simpla si te poate scapa de timpul pierdut pt diverse sarcini, timp care se aduna, iar daca aduni 1 minut de 60 de ori, iti iese numai bine o ora, ora pe care o petreci cu cei dragi:
-am un cip care citeste senzori si trimite datele prin reteaua deja existenta (aproape) in fiecare casa - cam fiecare casa are un ruter WiFi, deci o retea WiFi.
-acelasi cip poate primi comenzi prin aceeasi retea WiFi si poate actiona diverse relee, motorase, trimite comenzi prin infrarosu etc. Deci cipul ne spune diverse informatii si / sau asculta si executa comenzi. (sau poate executa local comenzi ifd informatiile pe care le are de la senzori).
 
-informatiile ajung la un sistem care le stocheaza si care poate decide ifd informatiile primite.

De exemplu:
-scade temperatura in casa sub 17 grade C (informatie de la senzori), se decide pornirea caldurii
-creste tempreatura peste 25 de grade C, se decide pornirea aerului conditionat si inchiderea jaluzelelor
-s-a detectat umiditate pe podea in subsol - o potentiala inundatie, se decide oprirea apei reci / calde si oprirea alimentarii cu energie electrica a subsolului   +  trimiterea unui SMS si email cu mesajul ca e o problema
 -contorul de gaz, cel de energie electrica, cel de apa rece sunt inregistrate local si poti analiza consumurile, le poti corela cu inregistrari de temperarura, poti intelege cum consumi si eventual poti lua masuri sa consumi cu cap, nu sa consumi aiurea doar pt ca iti permiti sa platesti sau ca ai de unde consuma - trebuie sa ai un dram de minte in plus de la tehnologie
-poti sa controlezi luminile in casa, sa ai detalii despre starea usilor, a geamurilor etc - un fel de sistem de alarmare
-sistemul de udat gazonul sau gradina pot fi automatizate complex, ifd de ora, temperatura, umiditatea solului etc (sau poti comanda tu de pe smart phone sa il uzi ATUNCI)
etc
etc

Sa vedem cum arata acest sistem:


Cipul (microcontrolerul cu WiFi) ESP8266 citeste datele de la senzori
Trimite datele prin WiFi catre un IP / port din LAN
Datele ajung la routerul WiFi
Routerul le da mai departe catre IP-ul specificat din LAN
Datele ajung la Raspberry Pi (RPi) unde ruleaza oaplicatie / server
RPi trimite datele aplicatiei cu portul specificat la inceput - aplicatia aleasa de mine este Domoticz - sever de home automation

Pentru a trimite date intre dispozitive cu putere de procesare redusa si pentru a nu consuma energie, a fost inventat un stardard - MQTT

Datele de la dispozitive sunt trimise unui broker MQTT intr-un format agreat. Dispozitivul publica (publish) datele pe broker pentru un anumit flux de date (topic). Daca dorim sa citim datele de la brokerul MQTT, trebuie sa ne abonam (subscribe) la broker si la un anumit flux de date (topic)

De exemplu un topic ar fi /sufragerie/temperatura/
Dispozitivul publica datele catre brokerul MQTT: /sufragerie/temperatura/20
Brokerul MQTT preia datele si le pune la dispozitia tuturor celor abonati (subscribed) acestui topic.

Un broker popular de MQTT este mosquitto. Datele de la broker sunt volatile, adica brokerul le publica dar nu le stocheaza, nu le proceseaza.

Daca dorim stocarea acestor date sau prelucrarea lor, trebuie sa folosim o aplicatie care se aboneaza la un topic si datele primite acolo le va stoca undeva, intr-o baza de date de exemplu. Din acest motiv am utilizat un server de automatizari - Domoticz. Domoticz se aboneaza la brokerul MQTT mosquitto si cand primeste date de la ESP8266, le scrie in baza de date. De acolo datele pot fi vizualizate in grafice, pe perioade de timp etc.

Instalare Domoticz pe Raspberry Pi
Instalare broker MQTT mosquitto pe Raspberry Pi

Acum vine partea de programare, sperietoarea tutror :). Din fericire, domeniul de home automation, Arduino si ESP8266 sunt niste chestii foarte populare printre constructorii amatori, asa ca, unii mai priceputi, au pus la punct ceva minunat, anume Easy ESP sau ESP Easy, nu mai stiu exact - vezi Let's Control It - ESP Easy.

E vorba de un soft care programat pe ESP8266 te ajuta sa configurezi ESPul dintr-o interfata grafica, din browserul de Internet, ce poti sa iti doresti mai mult :)

De aceea, pe ESP8266 am programat softul ESPeasy.

ESPeasy se gaseste pe GitHub si se compileaza / programeaza in Arduino IDE, programarea e simpla, urmati pasii de pe Let's Control It.

Pentru programarea ESPeasy versiunea R120 sub Arduino 1.8.3, trebuie ca biblioteca de functii "IRremoteESP8266 by Sebastien Warin, Mark Szabo..." sa fie versiunea 1.1.1, ultima versiune da eroare la compilare, probabil ca e ceva trivial de rezolvat, insa nu am avut timp de asa ceva.

Biblioteca de functii "IRremoteESP8266 by Sebastien Warin, Mark Szabo..." 
sa fie versiunea 1.1.1

Setari in Arduino IDE pentru un modul ESP8266 generic 
(verificat pe ESP-07)


Senzorii mei fiind afara si mai ales fara alimentare de la retea, ESPeasy e pe baterii (acumulatori litiu, 18650). Partea buna e ca in ESPeasy e optiune de functionare in mod de deepsleep, ceea ce prelungeste viata unui ESP8266 pe baterii la cateva luni chiar.

De asemenea am modificat acest soft (versiunea R120) pe baza celor gasite online si imi afiseaza starea bateriei (ESPeasy starea bateriei), asa pot sa stiu daca ma lasa bateria / acumulatorul, daca se incarca etc.


Putem lega la ESP8266 un senzor digital de temperatura DS18B20, apoi configuram ESPeasy sa il citeasca si sa trimita datele la Domoticz (prin MQTT) (tutorial Domoticz, ESPeasy si DS18B20)


Daca rulam ESPeasy acasa, in LAN, este ok dpdv al sigurantei, daca vrem acces din afara, din Internet, trebuie sa ne asiguram ca Domoticz este securizat (SSL, TLS) si ca ESP8266 foloseste aceasta autentificare, altfel ne expunem la riscuri.

Daca ai ajuns pina aici, daca ai reusit sa instalezi pe Rasberry Pi si sa programezi ESP8266, atunci deja ai pus temelia pentru un sistem care poate fi complex si util :)

(cele scrise mai sus nu se doresc a fi un tutorial pas cu pas pentru incepatori care aud acum prima data de Arduino, Rasberry Pi si microcontrollere, am incercat doar sa prezint o imagine globala asupra a ceea ce avem la dispozitie acum in 2017. Pentru orice intrebare, stiu pe cineva care a deschis un site unde se pot afla multe raspunsuri - google.com :) )

Niciun comentariu:

Trimiteți un comentariu