Cloud Smart Home. Partea 1: Controler și senzori

Cloud Smart Home. Partea 1: Controler și senzori

Astăzi, datorită dezvoltării rapide a microelectronicii, a canalelor de comunicare, a tehnologiilor Internet și a Inteligenței Artificiale, tema caselor inteligente devine din ce în ce mai relevantă. Locuințele umane au suferit schimbări semnificative începând cu epoca de piatră, iar în epoca Revoluției Industriale 4.0 și a internetului obiectelor, a devenit confortabilă, funcțională și sigură. Vin pe piață soluții care transformă un apartament sau o casă de țară în sisteme informatice complexe controlate de oriunde în lume cu ajutorul unui smartphone. Mai mult, interacțiunea om-mașină nu mai necesită cunoașterea limbajelor de programare - datorită algoritmilor de recunoaștere și sinteză a vorbirii, o persoană vorbește la o casă inteligentă în limba sa maternă.

Unele sisteme de casă inteligentă aflate în prezent pe piață sunt o dezvoltare logică a sistemelor de supraveghere video în cloud, ai căror dezvoltatori și-au dat seama de necesitatea unei soluții cuprinzătoare nu numai pentru monitorizare, ci și pentru gestionarea obiectelor la distanță.

Vă prezentăm atenției o serie de trei articole, care vă vor spune despre toate componentele principale ale unui sistem cloud smart home, dezvoltat personal de autor și pus în funcțiune. Primul articol este dedicat echipamentelor client terminal instalate în interiorul unei case inteligente, al doilea arhitecturii sistemului de stocare și procesare a datelor în cloud, iar în final, al treilea aplicației client pentru gestionarea sistemului pe dispozitive mobile și staționare.

Echipamente pentru casă inteligentă

În primul rând, să vorbim despre cum să faci o casă inteligentă dintr-un apartament obișnuit, dacha sau cabană. Pentru a face acest lucru, de regulă, este necesar să plasați următoarele echipamente în casă:

  1. senzori care măsoară diverși parametri de mediu;
  2. actuatoare care actioneaza asupra obiectelor externe;
  3. un controler care efectuează calcule în conformitate cu măsurătorile senzorului și logica încorporată și emite comenzi către actuatori.

Figura următoare prezintă o diagramă a unei case inteligente, pe care există senzori pentru scurgerile de apă (1) în baie, temperatură (2) și iluminat (3) în dormitor, o priză inteligentă (4) în bucătărie și o camera de supraveghere video (5) pe hol.

Cloud Smart Home. Partea 1: Controler și senzori

În prezent, senzorii fără fir care funcționează folosind protocoalele RF433, Z-Wave, ZigBee, Bluetooth și WiFi sunt utilizați pe scară largă. Principalele lor avantaje sunt ușurința de instalare și utilizare, precum și costul scăzut și fiabilitatea, deoarece Producătorii se străduiesc să-și aducă dispozitivele pe piața de masă și să le facă accesibile pentru utilizatorul obișnuit.

Senzorii și actuatoarele, de regulă, sunt conectate printr-o interfață fără fir la un controler pentru casă inteligentă (6) - un microcomputer specializat care combină toate aceste dispozitive într-o singură rețea și le controlează.

Cu toate acestea, unele soluții pot combina un senzor, un actuator și un controler în același timp. De exemplu, o priză inteligentă poate fi programată să se pornească sau să se oprească conform unui program, iar o cameră de supraveghere video în cloud poate înregistra video pe baza unui semnal detector de mișcare. În cele mai simple cazuri, puteți face fără un controler separat, dar pentru a crea un sistem flexibil cu multe scenarii, este necesar.

Pentru a conecta controlerul pentru casă inteligentă la rețeaua globală, poate fi utilizat un router de internet obișnuit (7), care a devenit de mult un aparat de uz casnic obișnuit în orice casă. Aici există un alt argument în favoarea unui controler pentru casă inteligentă - dacă se pierde conexiunea la Internet, casa inteligentă va continua să funcționeze normal datorită blocului logic stocat în interiorul controlerului, și nu în serviciul cloud.

Controler inteligent pentru casă

Controlerul pentru sistemul de casă inteligentă cloud discutat în acest articol este dezvoltat pe baza unui microcomputer cu o singură placă Raspberry Pi 3 model B+, care a fost lansat în martie 2018 și are suficiente resurse și performanță pentru sarcinile de acasă inteligente. Include un procesor quad-core Cortex-A53 bazat pe arhitectura ARMv64-A pe 8 de biți, tactat la 1.4 GHz, precum și 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 și un adaptor Gigabit Ethernet care funcționează prin USB 2.0 .

Cloud Smart Home. Partea 1: Controler și senzori

Asamblarea controlerului este foarte simplă - microcomputerul (1) este instalat într-o carcasă de plastic (2), apoi o cartelă de memorie de 8 GB în format microSD cu software (3) și un controler de rețea USB Z-Wave (4) sunt instalate în sloturile corespunzătoare. Controlerul pentru casă inteligentă este conectat la sursa de alimentare printr-un adaptor de alimentare de 5 V, 2.1 A (5) și un cablu USB - micro-USB (6). Fiecare controler are un număr unic de identificare, care este scris în fișierul de configurare la prima lansare și este necesar pentru a interacționa cu serviciile cloud smart home.

Software-ul controler pentru casă inteligentă a fost dezvoltat de autorul acestui articol pe baza sistemului de operare Linux Raspbian Stretch. Este format din următoarele subsisteme principale:

  • proces de server pentru interacțiunea cu echipamentele smart home și cloud;
  • interfață grafică cu utilizatorul pentru setarea parametrilor de configurare și de funcționare ai controlerului;
  • baza de date pentru stocarea configurației controlerului.

Cloud Smart Home. Partea 1: Controler și senzori

bază de date Controlerul pentru casă inteligentă este implementat pe baza unui DBMS încorporat SQLite și este un fișier de pe un card SD cu software de sistem. Servește ca stocare pentru configurația controlerului - informații despre echipamentul conectat și starea sa actuală, un bloc de reguli de producție logice, precum și informații care necesită indexare (de exemplu, numele fișierelor unei arhive video locale). Când controlerul este repornit, aceste informații sunt salvate, făcând posibilă restabilirea controlerului în cazul unei căderi de curent.

interfață grafică controler de casă inteligent dezvoltat în PHP 7 folosind un microframework Subţire. Serverul web este responsabil pentru rularea aplicației. lighttpd, adesea folosit în dispozitivele încorporate datorită performanței sale bune și a cerințelor reduse de resurse.

Cloud Smart Home. Partea 1: Controler și senzori
(click pe imagine pentru a o deschide la rezoluție mai mare)

Funcția principală a interfeței grafice este conectarea echipamentelor inteligente de acasă (camere de supraveghere IP și senzori) la controler. Aplicația web citește configurația și starea curentă a controlerului și a dispozitivelor conectate la acesta din baza de date SQLite. Pentru a schimba configurația controlerului, acesta trimite comenzi de control în format JSON prin interfața API RESTful a procesului serverului.

Procesul serverului

Procesul serverului - o componentă cheie care realizează toate lucrările principale de automatizare a proceselor informaționale care stau la baza unei case inteligente: primirea și prelucrarea datelor senzoriale, emiterea de acțiuni de control în funcție de logica încorporată. Scopul procesului serverului este de a interacționa cu echipamentele smart home, de a executa reguli logice de producție, de a primi și de a procesa comenzi din interfața grafică și din cloud. Procesul de server din controlerul smart home luat în considerare este implementat ca o aplicație cu mai multe fire dezvoltate în C++ și lansată ca un serviciu separat systemd sistem de operare Linux Raspbian.

Principalele blocuri ale procesului serverului sunt:

  1. Manager de mesaje;
  2. server de camere IP;
  3. Server de dispozitiv Z-Wave;
  4. Server de reguli logice de producție;
  5. Baza de date de configurare a controlerului și bloc de reguli logice;
  6. Server API RESTful pentru interacțiunea cu interfața grafică;
  7. Client MQTT pentru interacțiunea cu cloud-ul.

Blocurile de proces de server sunt implementate ca fire separate, informații între care sunt transferate sub formă de mesaje în format JSON (sau structuri de date reprezentând acest format în memoria de proces).

Cloud Smart Home. Partea 1: Controler și senzori

Componenta principală a procesului serverului este manager de mesaje, care direcționează mesajele JSON către toate blocurile de proces de server. Tipurile de câmpuri de informații despre mesajele JSON și valorile pe care le pot accepta sunt enumerate în tabel:

tip de dispozitiv
protocol
tip mesaj
deviceState
comandă

aparat foto
onvif
senzorData
on
streaming (Activat/Dezactivat)

senzor
zwave
comandă
de pe
înregistrare (Pornit/Oprit)

efectoare
MQTT
businessLogicRule
streaming (Activat/Dezactivat)
dispozitiv (Adăugați/Eliminați)

lociga afacerii
configurationData
înregistrare (Pornit/Oprit)

Bluetooth
deviceState
eroare

Wifi

rf

De exemplu, un mesaj de la un detector de mișcare a camerei arată astfel:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566293475475",
	"clientType": "gateway",
	"deviceId": "1616453d-30cd-44b7-9bf0-************",
	"deviceType": "camera",
	"protocol": "onvif",
	"messageType": "sensorData",
	"sensorType": "camera",
	"label": "motionDetector",
	"sensorData": "on"
}

Logica de producție

Pentru a primi sau trimite un mesaj de la dispecer, blocul de proces al serverului se abonează la mesaje de un anumit tip. Abonamentul este o regulă logică de producție de acest tip "Daca atunci...", prezentat în format JSON și un link către handlerul de mesaje din blocul de proces al serverului. De exemplu, pentru a permite serverului camerei IP să primească comenzi de la GUI și din cloud, trebuie să adăugați următoarea regulă:

{
	"if": {
	    "and": [{
		"equal": {
		    "deviceId": "1616453d-30cd-44b7-9bf0-************"
		}
	    },
	    {
		"equal": {
		    "messageType": "command"
		}
	    }
	    ]
	},
	"then": {
	    "result": "true"
	}
}

În cazul în care condițiile specificate în antecedente (partea stângă) regulile sunt adevărate, atunci este satisfăcută consecvent (partea dreaptă), iar handlerul are acces la corpul mesajului JSON. Antecedentul acceptă operatori logici care compară perechile cheie-valoare JSON:

  1. este egal cu „egal”;
  2. nu este egal cu „nu_egal”;
  3. mai puțin „mai puțin”;
  4. mai „mai mare”;
  5. mai mic sau egal cu „mai puțin_sau_egal”;
  6. mai mare sau egal cu „mare_sau_egal”.

Rezultatele comparației pot fi legate între ele folosind operatori de algebră booleană:

  1. Si si"
  2. Sau sau";
  3. Nu Nu".

Astfel, prin scrierea operatorilor și operanzilor în notație poloneză, puteți crea condiții destul de complexe cu un număr mare de parametri.

Exact același mecanism, bazat pe mesaje JSON și reguli de producție în format JSON, este utilizat în blocul serverului logic de producție pentru a reprezenta cunoștințele și pentru a efectua inferențe logice folosind datele senzoriale de la senzorii pentru casă inteligentă.

Folosind o aplicație mobilă, utilizatorul creează scenarii conform cărora casa inteligentă ar trebui să funcționeze. De exemplu: „Dacă senzorul pentru deschiderea ușii din față este declanșat, atunci aprindeți lumina pe hol”. Aplicația citește identificatorii senzorilor (senzor de deschidere) și actuatoarelor (priză inteligentă sau lampă inteligentă) din baza de date și generează o regulă logică în format JSON, care este trimisă la controlerul smart home. Acest mecanism va fi discutat mai detaliat în al treilea articol al seriei noastre, unde vom vorbi despre aplicația client pentru administrarea unei case inteligente.

Mecanismul logic de producție discutat mai sus este implementat folosind biblioteca RapidJSON — Analizor SAX pentru formatul JSON în C++. Citirea și analiza secvențială a unei serii de reguli de producție vă permite să implementați cu ușurință funcția de comparare a datelor în interiorul antecedentelor:

void CRuleEngine::Process(PProperties pFact)
{
    m_pActions->clear();

    rapidjson::Reader   reader;
    for(TStringMap::value_type& rRule : m_Rules)
    {
        std::string sRuleId   = rRule.first;
        std::string sRuleBody = rRule.second;

        CRuleHandler            ruleHandler(pFact);
        rapidjson::StringStream ruleStream(sRuleBody.c_str());
        rapidjson::ParseResult  parseResult = reader.Parse(ruleStream, ruleHandler);
        if(!parseResult)
        {
            m_Logger.LogMessage(
                        NLogger2::ePriorityLevelError,
                        std::string("JSON parse error"),
                        "CRuleEngine::Process()",
                        std::string("RuleId: ") + sRuleId);
        }

        PProperties pAction = ruleHandler.GetAction();
        if(pAction)
        {
            pAction->Set("ruleId", sRuleId);
            m_pActions->push_back(pAction);
        }
    }
}

Aici pFact — o structură care conține perechi cheie-valoare dintr-un mesaj JSON, m_Reguli — matrice de șiruri de reguli de producție. Comparația dintre mesajul de intrare și regula de producție se realizează în funcție reader.Parse(ruleStream, ruleHandler)Unde ruleHandler este un obiect care conține logica operatorilor booleeni și de comparație. sRuleId — un identificator unic de reguli, datorită căruia este posibilă stocarea și editarea regulilor în baza de date a controlerului pentru casă inteligentă. m_pActions — o matrice cu rezultatele inferenței logice: mesaje JSON care conțin consecințe din baza de reguli și trimise mai departe către managerul de mesaje, astfel încât firele de abonați să le poată procesa.

Performanța RapidJSON este comparabilă cu funcția strlen(), iar cerințele minime de resurse de sistem permit utilizarea acestei biblioteci în dispozitivele încorporate. Utilizarea mesajelor și a regulilor logice în format JSON vă permite să implementați un sistem flexibil de schimb de informații între toate componentele controlerului pentru casă inteligentă.

Senzori și actuatori Z-Wave

Principalul avantaj al unei case inteligente este că poate măsura în mod independent diverși parametri ai mediului extern și poate îndeplini funcții utile în funcție de situație. Pentru a face acest lucru, senzorii și actuatoarele sunt conectate la controlerul pentru casă inteligentă. În versiunea actuală, acestea sunt dispozitive fără fir care funcționează folosind protocolul Z-Wave pe o frecvență special alocată 869 MHz Pentru Rusia. Pentru a funcționa, acestea sunt combinate într-o rețea mesh, care conține repetoare de semnal pentru a crește aria de acoperire. Dispozitivele au și un mod special de economisire a energiei - petrec cea mai mare parte a timpului în modul de repaus și trimit informații doar atunci când starea lor se schimbă, ceea ce poate prelungi semnificativ durata de viață a bateriei încorporate.

Cloud Smart Home. Partea 1: Controler și senzori

Acum puteți găsi pe piață un număr destul de mare de dispozitive Z-Wave diferite. Să aruncăm o privire la câteva exemple:

  1. Priza inteligentă Zipato PAN16 poate măsura următorii parametri: consumul de energie electrică (kWh), puterea (W), tensiunea (V) și curentul (A) în rețeaua electrică. Are si un intrerupator incorporat cu ajutorul caruia poti controla aparatul electric conectat;
  2. Senzorul de scurgeri Neo Coolcam detectează prezența lichidului vărsat prin închiderea contactelor sondei de la distanță;
  3. Senzorul de fum Zipato PH-PSG01 este declanșat atunci când particulele de fum intră în camera analizorului de gaz;
  4. Senzorul de mișcare Neo Coolcam analizează radiația infraroșie a corpului uman. În plus, există un senzor de lumină (Lx);
  5. Multisenzor Philio PST02-A măsoară temperatura (°C), lumina (%), deschiderea ușii, prezența unei persoane în cameră;
  6. Z-Wave USB Stick ZME E UZB1 controler de rețea, la care sunt conectați senzorii.

Este foarte important ca dispozitivele și controlerul să funcționeze la aceeași frecvență, altfel pur și simplu nu se vor vedea unul pe celălalt în momentul conectării. La un controler de rețea Z-Wave pot fi conectate până la 232 de dispozitive, ceea ce este suficient pentru un apartament sau o casă de țară. Pentru a extinde aria de acoperire a rețelei în interior, o priză inteligentă poate fi folosită ca repetor de semnal.

Cloud Smart Home. Partea 1: Controler și senzori

În procesul serverului de control de casă inteligentă discutat în paragraful anterior, serverul Z-Wave este responsabil pentru interacțiunea cu dispozitivele Z-Wave. Folosește o bibliotecă pentru a primi informații de la senzori OpenZWave în C++, care oferă o interfață pentru interacțiunea cu controlerul USB de rețea Z-Wave și funcționează cu o varietate de senzori și actuatoare. Valoarea parametrului de mediu măsurat de senzor este înregistrată de serverul Z-Wave sub forma unui mesaj JSON:

{
	"vendor": "*****",
	"version": "3.0.0",
	"timestampMs": "1566479791290",
	"clientType": "gateway",
	"deviceId": "20873eb0-dd5e-4213-a175-************",
	"deviceType": "sensor",
	"protocol": "zwave",
	"messageType": "sensorData",
	"homeId": "0xefa0cfa7",
	"nodeId": "20",
	"sensorType": "METER",
	"label": "Voltage",
	"sensorData": "229.3",
	"units": "V"
}

Acesta este apoi redirecționat către managerul de mesaje al procesului de server, astfel încât firele de abonat să îl poată primi. Abonatul principal este serverul logic de producție, care se potrivește cu valorile câmpului de mesaj în antecedentele regulilor logice. Rezultatele inferenței care conțin comenzi de control sunt trimise înapoi la managerul de mesaje și de acolo merg la serverul Z-Wave, care le decodifică și le trimite către controlerul USB al rețelei Z-Wave. Apoi intră în actuator, care modifică starea obiectelor de mediu, iar casa inteligentă efectuează astfel o muncă utilă.

Cloud Smart Home. Partea 1: Controler și senzori
(click pe imagine pentru a o deschide la rezoluție mai mare)

Conectarea dispozitivelor Z-Wave se face în interfața grafică a controlerului smart home. Pentru a face acest lucru, accesați pagina cu o listă de dispozitive și faceți clic pe butonul „Adăugați”. Comanda add prin interfața API RESTful intră în procesul serverului și este apoi trimisă de managerul de mesaje către serverul Z-Wave, care pune controlerul USB de rețea Z-Wave într-un mod special pentru adăugarea dispozitivelor. Apoi, pe dispozitivul Z-Wave trebuie să faceți o serie de apăsări rapide (3 apăsări în 1,5 secunde) ale butonului de service. Controlerul USB conectează dispozitivul la rețea și trimite informații despre acesta către serverul Z-Wave. Aceasta, la rândul său, creează o nouă intrare în baza de date SQLite cu parametrii noului dispozitiv. După un interval de timp specificat, interfața grafică revine la pagina cu lista de dispozitive Z-Wave, citește informații din baza de date și afișează noul dispozitiv în listă. Fiecare dispozitiv primește propriul său identificator unic, care este utilizat în regulile de inferență de producție și atunci când lucrează în cloud. Funcționarea acestui algoritm este prezentată în diagrama UML:

Cloud Smart Home. Partea 1: Controler și senzori
(click pe imagine pentru a o deschide la rezoluție mai mare)

Conectarea camerelor IP

Sistemul cloud smart home discutat în acest articol este un upgrade al sistemului de supraveghere video cloud, dezvoltat tot de autor, care este pe piață de câțiva ani și are multe instalații în Rusia.

Pentru sistemele de supraveghere video cloud, una dintre problemele acute este selecția limitată a echipamentelor cu care se poate realiza integrarea. Software-ul responsabil pentru conectarea la cloud este instalat în interiorul camerei video, ceea ce impune imediat solicitări serioase asupra hardware-ului său - procesor și cantitatea de memorie liberă. Acest lucru explică în principal prețul mai mare al camerelor CCTV în cloud în comparație cu camerele IP obișnuite. În plus, este necesară o etapă lungă de negocieri cu companiile producătoare de camere CCTV pentru a obține acces la sistemul de fișiere al camerei și la toate instrumentele de dezvoltare necesare.

Cloud Smart Home. Partea 1: Controler și senzori

Pe de altă parte, toate camerele IP moderne au protocoale standard pentru interacțiunea cu alte echipamente (în special, video recordere). Astfel, utilizarea unui controler separat care se conectează printr-un protocol standard și difuzează fluxuri video de la camerele IP către cloud oferă avantaje competitive semnificative pentru sistemele de supraveghere video în cloud. Mai mult, dacă clientul a instalat deja un sistem de supraveghere video bazat pe camere IP simple, atunci devine posibil să-l extindă și să-l transforme într-o casă inteligentă în cloud cu drepturi depline.

Cel mai popular protocol pentru sistemele de supraveghere video IP, suportat acum de toți producătorii de camere IP fără excepție, este Profil ONVIF S, ale căror specificații există într-un limbaj de descriere a serviciilor web wsdl. Utilizarea utilităților din trusa de instrumente gSOAP Este posibil să generați cod sursă pentru serviciile care funcționează cu camere IP:

$ wsdl2h -o onvif.h 
	https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl 
	https://www.onvif.org/ver10/events/wsdl/event.wsdl 
	https://www.onvif.org/ver10/media/wsdl/media.wsdl 
	https://www.onvif.org/ver20/ptz/wsdl/ptz.wsdl

$ soapcpp2 -Cwvbj -c++11 -d cpp_files/onvif -i onvif.h

Ca rezultat, obținem un set de fișiere antet „*.h” și sursă „*.cpp” în C++, care pot fi plasate direct într-o aplicație sau într-o bibliotecă separată și compilate folosind compilatorul GCC. Datorită numeroaselor funcții, codul este mare și necesită optimizare suplimentară. Microcomputerul Raspberry Pi 3 model B+ are performanțe suficiente pentru a executa acest cod, dar dacă este nevoie de a porta codul pe o altă platformă, este necesar să selectați arhitectura corectă a procesorului și resursele de sistem.

Camerele IP care acceptă standardul ONVIF, atunci când funcționează într-o rețea locală, sunt conectate la un grup special de multicast cu adresa 239.255.255.250. Există un protocol WS Discovery, care vă permite să automatizați căutarea dispozitivelor în rețeaua locală.

Interfața grafică a controlerului smart home implementează o funcție de căutare pentru camere IP în PHP, care este foarte convenabilă atunci când interacționați cu serviciile web prin mesaje XML. La selectarea elementelor de meniu Dispozitive > Camere IP > Scanare Se lansează algoritmul de căutare a camerelor IP, afișând rezultatul sub forma unui tabel:

Cloud Smart Home. Partea 1: Controler și senzori
(click pe imagine pentru a o deschide la rezoluție mai mare)

Când adăugați o cameră la controler, puteți specifica setările în funcție de care va interacționa cu cloud-ul. Tot în această etapă, i se atribuie automat un identificator unic de dispozitiv, prin care ulterior poate fi identificat cu ușurință în cloud.

Cloud Smart Home. Partea 1: Controler și senzori

În continuare, este generat un mesaj în format JSON care conține toți parametrii camerei adăugate și trimis către procesul de server al controlerului pentru casă inteligentă prin comanda RESTful API, unde parametrii camerei sunt decodați și salvați în baza de date internă SQLite și sunt folosit și pentru a lansa următoarele fire de procesare:

  1. stabilirea unei conexiuni RTSP pentru a primi fluxuri video și audio;
  2. transcodarea audio din formatele G.711 mu-Law, G.711 A-Law, G.723 etc. în format AAC;
  3. transcodarea fluxurilor video în format H.264 și audio în format AAC într-un container FLV și transmiterea acestora în cloud prin protocolul RTMP;
  4. stabilirea unei conexiuni cu punctul final al detectorului de mișcare al camerei IP prin protocolul ONVIF și sondarea periodică a acestuia;
  5. generarea periodică a unei imagini de previzualizare în miniatură și trimiterea acesteia în cloud prin protocolul MQTT;
  6. înregistrare locală a fluxurilor video și audio sub formă de fișiere separate în format MP4 pe un card SD sau Flash al unui controler pentru casă inteligentă.

Cloud Smart Home. Partea 1: Controler și senzori

Pentru a stabili o conexiune cu camerele, transcodarea, procesarea și înregistrarea fluxurilor video în procesul serverului, sunt utilizate funcții din bibliotecă fFmpeg 4.1.0.

În experimentul de testare a performanței, 3 camere au fost conectate la controler:

  1. HiWatch DS-I114W (rezoluție - 720p, format compresie - H.264, bitrate - 1 Mb/s, sunet G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (rezoluție - 1080p, format compresie - H.264, bitrate - 1 Mb/s, fără sunet);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (rezoluție - 1080p, format compresie - H.264, bitrate - 1.5 Mb/s, audio AAC).

Cloud Smart Home. Partea 1: Controler și senzori

Toate cele trei fluxuri au fost trimise simultan în cloud, transcodarea audio a fost efectuată de la o singură cameră, iar înregistrarea arhivei locale a fost dezactivată. Sarcina procesorului a fost de aproximativ 5%, utilizarea RAM a fost de 32 MB (per proces), 56 MB (total inclusiv sistemul de operare).

Astfel, aproximativ 20 - 30 de camere pot fi conectate la controlerul smart home (în funcție de rezoluție și bitrate), ceea ce este suficient pentru un sistem de supraveghere video pentru o căsuță cu trei etaje sau un mic depozit. Pentru sarcini care necesită performanțe mai mari, puteți utiliza un netop cu un procesor Intel multi-core și Linux Debian Sarge OS. Controlerul este în curs de operare de probă, iar datele despre performanța acestuia vor fi actualizate.

Interacțiunea cu cloud-ul

O casă inteligentă bazată pe cloud stochează datele utilizatorului (măsurători video și senzori) în cloud. Arhitectura stocării în cloud va fi discutată mai detaliat în următorul articol din seria noastră. Acum să vorbim despre interfața pentru transmiterea mesajelor de informații de la controlerul smart home către cloud.

Stările dispozitivelor conectate și măsurătorile senzorilor sunt transmise prin protocol MQTT, care este adesea folosit în proiectele Internet of Things datorită simplității și eficienței energetice. MQTT folosește un model client-server, în care clienții se abonează la anumite subiecte din cadrul brokerului și își publică mesajele. Brokerul trimite mesaje tuturor abonaților conform regulilor determinate de nivelul QoS (Calitatea Serviciului):

  • QoS 0 - maxim o dată (fără garanție de livrare);
  • QoS 1 - cel puțin o dată (cu confirmare de livrare);
  • QoS 2 - exact o dată (cu confirmare suplimentară de livrare).

În cazul nostru, folosim Eclipsa tantar. Numele subiectului este identificatorul unic al controlerului pentru casă inteligentă. Clientul MQTT din cadrul procesului de server se abonează la acest subiect și traduce mesajele JSON care vin de la managerul de mesaje în el. În schimb, mesajele de la brokerul MQTT sunt transmise de acesta către managerul de mesaje, care apoi le multiplexează abonaților săi în cadrul procesului serverului:

Cloud Smart Home. Partea 1: Controler și senzori

Pentru a transmite mesaje despre starea controlerului smart home, se folosește mecanismul de mesaje salvate mesajele reținute Protocolul MQTT. Acest lucru vă permite să monitorizați corect timpul de reconectare în timpul căderilor de curent.

Clientul MQTT a fost dezvoltat pe baza implementării bibliotecii Eclipsa Paho în limbajul C++.

Fluxurile media H.264 + AAC sunt trimise în cloud prin protocolul RTMP, unde un cluster de servere media este responsabil pentru procesarea și stocarea acestora. Pentru a distribui în mod optim încărcarea în cluster și a selecta cel mai puțin server media încărcat, controlerul pentru casă inteligentă face o solicitare preliminară către echilibratorul de încărcare din cloud și numai după aceea trimite fluxul media.

Concluzie

Articolul a examinat o implementare specifică a unui controler pentru casă inteligentă bazată pe microcomputerul Raspberry Pi 3 B+, ​​care poate primi, procesa informații și controla echipamente prin protocolul Z-Wave, poate interacționa cu camerele IP prin protocolul ONVIF și, de asemenea, poate face schimb de date și comenzi cu cloud.serviciu prin protocoale MQTT și RTMP. Un motor logic de producție a fost dezvoltat pe baza unei comparații a regulilor logice și a faptelor prezentate în format JSON.

Controlerul pentru casă inteligentă este în prezent în funcțiune de probă în mai multe locații din Moscova și regiunea Moscovei.

Următoarea versiune a controlerului intenționează să conecteze alte tipuri de dispozitive (RF, Bluetooth, WiFi, cu fir). Pentru confortul utilizatorilor, procedura de conectare a senzorilor și a camerelor IP va fi transferată în aplicația mobilă. Există, de asemenea, idei pentru optimizarea codului de proces al serverului și portarea software-ului la sistemul de operare OpenWrt. Acest lucru vă va permite să economisiți pe un controler separat și să transferați funcționalitatea unei case inteligente pe un router de uz casnic obișnuit.

Sursa: www.habr.com

Adauga un comentariu