Smart Home: Un exemplu de implementare si dezvoltare. Partea a treia

In ultimul articol din seria noastra legata de de smart home, voi discuta despre experienta mea legata de implementarea unui asemenea sistem.

Aug 17, 2021 128
Implementare Pentru a implementa un sistem smart home, trebuie sa alegi o solutie hardware (despre care nu vom disucta in acest articol) si o platforma software. Sunt multe solutii software open-source disponibile pe piata. Dar voi aborda 3 astfel de solutii cu care eu am avut ocazia sa lucrez:

  • OpenHAB este un sistem foarte cunoscut care foloseste Java. In opinia mea, este dificil sa stabilim si sa oferim o conexiune logica intre diferitele device-uri smart home. Putem sa folosim si Google Blockly ca instrument de programare logica
  • Node-red este un sistem pentru implementarea unei logici smart home simple, atata timp cat dispozitivele sunt conectate prin intermediul unor protocoale standard la nivel de aplicatie (rest, mqtt, etc.). Va recomand solutii simple, precum sisteme de securitate sau sisteme de imitare a prezentei
  • ioBroker este un sistem scris cu ajutorul JavaScript (Node JS). Are o arhitectura simpla si convenabila care accepta o gama variata de dispozitive. Foloseste o paradigma simpla: dispozitive cu seturi de stari si abilitatea de a se abona la schimbari de stari. Pentru programarea logicii unui sistem smart home, poti sa folosesti JavaScript, Google Blockly sau Node-red in cadrul ioBroker. Acesta este sistemul pe care l-am folosit la a doua versiune a sistemului meu smart home

Sistemul de smart home este acum implementat pe baza Rapsberry PI 3 si a sistemului de operare Rapsberrian. Dupa cum am mentionat deja, ioBroker este folosit ca sistem de control. Ca hardware aditional folosim un modul GSM, care este folosit pentru alarme in absenta unei conexiuni la Internet, si ca un canal aditional pentru a controla sistemul prin intermediul SMS-urilor trimise de pe telefoane mobile de incredere.

Logica comunicarii intre dispozitive este implementata pe baza de script-uri JavaScript, Google Blockly, si Node-red. Un script JavaScript este un program simplu pentru NodeJS. Spre exemplu, asa este implementat mai jos un zgomot de clopote in sistemul meu smart home:

schedule('0 0,8-23 * * *',() => {
let currentTime = new Date();
let hour = currentTime.getHours();
if(hour > 12)
hour -= 12;
let file = hour.toString() + 'h.mp3';
playSound('audio/' + file);
});

Codul ioBroker trimite la fiecare ora in intervalul 8:00AM-11:00PM o comanda care formeaza numele fisierului unde este inregistrat sunetul si ruleaza acel fisier audio pe un dispozitiv extern.

Google Blockly iti permite sa scrii cod intr-un limbaj de programare vizual, fara a intra in detalii legate de JavaScript. Spre exemplu, aceasta metoda este folosita pentru a aprinde lumina pe hol prin intermediul unui senzor de miscare: dupa apus lumina este aprinsa la 100% si noaptea la 10%.

Google Blockly smart home.png


Aici putem vedea abonarea la evenimentul legat de schimbarea de stare a senzorului de miscare. Acest cod va fi apelat in momentul in care starea se schimba si va contine “true.”

Si folosind Node-red, putem sa implementam scripturi simple de control. In baie, spre exemplu, putem sa folosim un cod simplu pentru a controla luminile cu un senzor de miscare.

O data ce senzorul isi schimba starea, blocurile Node-red sunt executate automat. Cand senzorul transmite o comanda “opreste”, scriptul ofera un delay de 5 minute si apoi stinge lumina. Daca in timpul celor 5 minute senzorul trimite comanda de „aprinde”, acest delay va fi oprit si lumina va ramane aprinsa. O discutie detaliata legata de implementarea unui bloc Node-red este in afara subiectului acestui articol.

Node-red smart home.png


Astfel ca, prin abordarea unui sistem smart home ca un mod de a creste calitatea vietii, am reusit sa imi realizez visul fara a cheltuieli substantiale. Pana acum costul a fost de aproximativ 810 dolari.

Pavel Tsytovich
.NET & C++ Consultant

Daca iti place acest articol, distribuie-l si prietenilor tai!




Mai ai intrebari?
Contacteaza-ne.
Thank you.
Your request has been received.