Nuvola Smart Home. Parte 1: Controller è sensori

Nuvola Smart Home. Parte 1: Controller è sensori

Oghje, grazia à u rapidu sviluppu di a microelettronica, di i canali di cumunicazione, di e tecnulugia di Internet è di l'Intelligenza Artificiale, u tema di e case intelligenti diventa sempre più pertinente. L'alloghju umanu hà subitu cambiamenti significativi da l'Età di Petra è in l'era di a Rivuluzione Industriale 4.0 è l'Internet di e Cose, hè diventatu còmode, funziunale è sicuru. E soluzioni venenu à u mercatu chì trasformanu un appartamentu o una casa di campagna in sistemi d'informazione cumplessi cuntrullati da ogni locu in u mondu cù un smartphone. Inoltre, l'interazzione umanu-macchina ùn hà più bisognu di cunniscenze di lingue di prugrammazione - grazia à l'algoritmi di ricunniscenza di voce è sintesi, una persona parla à una casa intelligente in a so lingua nativa.

Certi sistemi di casa intelligenti attualmente in u mercatu sò un sviluppu logicu di sistemi di surviglianza di video in nuvola, i sviluppatori chì anu realizatu a necessità di una suluzione cumpleta micca solu per u monitoraghju, ma ancu per a gestione di l'uggetti remoti.

Avemu prisentatu à a vostra attenzione una seria di trè articuli, chì vi cuntaranu di tutti i cumpunenti principali di un sistema di casa intelligente in nuvola, sviluppatu personalmente da l'autore è messu in opera. U primu articulu hè dedicatu à l'equipaggiu di u cliente terminal installatu in una casa intelligente, u sicondu à l'architettura di u sistema di almacenamiento in nuvola è di trattamentu di dati, è infine, u terzu à l'applicazione cliente per a gestione di u sistema nantu à i dispositi mobili è stazionari.

Equipamentu di casa intelligente

Prima, parlemu di cumu fà una casa intelligente da un appartamentu ordinariu, dacha o cottage. Per fà questu, in regula, hè necessariu di mette in casa i seguenti equipaghji:

  1. sensori chì misuranu diversi paràmetri ambientali;
  2. attuatori chì agiscenu nantu à l'uggetti esterni;
  3. un controller chì esegue i calculi in cunfurmità cù e misurazioni di sensori è a logica integrata, è emette cumandamenti à l'attuatori.

A figura seguente mostra un diagramma di una casa intelligente, nantu à quale ci sò sensori per a fuga d'acqua (1) in u bagnu, a temperatura (2) è l'illuminazione (3) in a stanza, una presa intelligente (4) in a cucina è un camera di surviglianza video (5) in u corridoiu.

Nuvola Smart Home. Parte 1: Controller è sensori

Attualmente, i sensori wireless chì operanu cù i protokolli RF433, Z-Wave, ZigBee, Bluetooth è WiFi sò largamente utilizati. I so vantaghji principali sò a facilità d'installazione è l'utilizazione, è ancu di low cost è affidabilità, perchè I pruduttori s'impegnanu à purtà i so dispusitivi à u mercatu di massa è facenu accessibili à l'utilizatori mediu.

I sensori è l'attuatori, in regula, sò cunnessi via una interfaccia wireless à un controller di casa intelligente (6) - un microcomputer specializatu chì combina tutti questi dispositi in una sola reta è cuntrolla.

Tuttavia, certi suluzioni ponu unisce un sensor, un attuatore è un controller à u stessu tempu. Per esempiu, un plug intelligente pò esse programatu per accende o spegne secondu un schedariu, è una camera di videovigilanza in nuvola pò registrà video basatu annantu à un signalu di detector di muvimentu. In i casi più sèmplice, pudete fà senza un controller separatu, ma per creà un sistema flexible cù assai scenarii, hè necessariu.

Per cunnette u controller di casa intelligente à a reta glubale, un router Internet regulare (7) pò esse usatu, chì hè diventatu longu un apparecchiu cumuni in ogni casa. Quì ci hè un altru argumentu in favore di un controller di casa intelligente - se a cunnessione à l'Internet hè persa, a casa intelligente continuarà à operare cum'è normale grazia à u bloccu logicu guardatu in u controller, è micca in u serviziu di nuvola.

Controller di casa intelligente

U controller per u sistema di casa intelligente in nuvola discussatu in questu articulu hè sviluppatu basatu annantu à un microcomputer unicu Raspberry Pi 3 mudellu B+, chì hè stata liberata in March 2018 è hà abbastanza risorse è prestazioni per i travaglii di casa intelligente. Include un processore quad-core Cortex-A53 basato su architettura ARMv64-A a 8 bit, clock a 1.4 GHz, oltre a 1 GB di RAM, Wi-Fi 802.11ac, Bluetooth 4.2 e un adattatore Gigabit Ethernet operante via USB 2.0 .

Nuvola Smart Home. Parte 1: Controller è sensori

L'assemblea di u controller hè assai simplice - u microcomputer (1) hè stallatu in un casu di plastica (2), dopu una carta di memoria 8 GB in formatu microSD cù software (3) è un controller di rete USB Z-Wave (4) sò stallati in i slot currispondenti. U controller di casa intelligente hè cunnessu à l'alimentazione via un adattatore di alimentazione 5V, 2.1A (5) è un cable USB - micro-USB (6). Ogni controller hà un numeru d'identificazione unicu, chì hè scrittu in u schedariu di cunfigurazione quandu hè stata lanciata per a prima volta è hè necessariu interagisce cù i servizii di casa intelligente in nuvola.

U software di cuntrollu di casa intelligente hè statu sviluppatu da l'autore di stu articulu basatu annantu à u sistema operatore Linux Raspbian Stretch. Hè custituitu da i seguenti sottosistemi principali:

  • prucessu di u servitore per l'interazzione cù l'equipaggiu di casa intelligente è u nuvulu;
  • interfaccia d'utilizatore grafica per stabilisce a cunfigurazione è i paràmetri di u funziunamentu di u controller;
  • basa di dati per almacenà a cunfigurazione di u controller.

Nuvola Smart Home. Parte 1: Controller è sensori

Base di dati U controller di casa intelligente hè implementatu basatu annantu à un DBMS integratu SQLite è hè un schedariu nantu à una carta SD cù u software di sistema. Serve cum'è un almacenamentu per a cunfigurazione di u controller - infurmazione nantu à l'equipaggiu cunnessu è u so statu attuale, un bloccu di reguli di produzzione logica, è ancu infurmazioni chì necessitanu indexazione (per esempiu, nomi di file di un archiviu video locale). Quandu u controller hè riavviatu, sta informazione hè salvata, facendu pussibule di restaurà u controller in casu di fallimentu di energia.

Interfaccia gràfica controller di casa intelligente sviluppatu in PHP 7 utilizendu un microframework Magra. U servitore web hè rispunsevule per eseguisce l'applicazione. lighttpd, spessu usata in i dispositi incrustati per via di u so bonu rendimentu è di i bassi requisiti di risorse.

Nuvola Smart Home. Parte 1: Controller è sensori
(cliccate nantu à a stampa per apre in una risoluzione più alta)

A funzione principale di l'interfaccia grafica hè di cunnette l'equipaggiu intelligente di casa (camere di surviglianza IP è sensori) à u controller. L'applicazione web leghje a cunfigurazione è u statu attuale di u controller è i dispositi cunnessi à questu da a basa di dati SQLite. Per cambià a cunfigurazione di u controller, manda cumandamenti di cuntrollu in formatu JSON attraversu l'interfaccia API RESTful di u prucessu di u servitore.

Prucessu di u servitore

Prucessu di u servitore - un cumpunente chjave chì rializeghja tutti i travaglii principali nantu à l'automatizazione di i prucessi di l'infurmazioni chì formanu a basa di una casa intelligente: riceve è trasfurmà e dati sensoriali, emette azzione di cuntrollu secondu a logica incrustata. U scopu di u prucessu di u servitore hè di interagisce cù l'equipaggiu di casa intelligente, eseguisce e regule logiche di produzzione, riceve è processà cumandamenti da l'interfaccia grafica è u nuvulu. U prucessu di u servitore in u controller di casa intelligente in cunsiderà hè implementatu cum'è una applicazione multi-threaded sviluppata in C++ è lanciata cum'è un serviziu separatu. systemd sistema upirativu Linux Raspbian.

I blocchi principali di u prucessu di u servitore sò:

  1. Manager di messagiu;
  2. servitore di càmera IP;
  3. servitore di u dispusitivu Z-Wave;
  4. Servitore di reguli lògichi di produzzione;
  5. Database di cunfigurazione di u controller è bloccu di e regule logiche;
  6. Servitore API RESTful per l'interazzione cù l'interfaccia grafica;
  7. Client MQTT per interagisce cù u nuvulu.

I blocchi di prucessu di u servitore sò implementati cum'è fili separati, l'infurmazioni trà quale hè trasferitu in forma di messagi in formatu JSON (o strutture di dati chì rapprisentanu stu formatu in memoria di prucessu).

Nuvola Smart Home. Parte 1: Controller è sensori

U cumpunente principale di u prucessu di u servitore hè gestore di messagi, chì indirizza i missaghji JSON à tutti i blocchi di prucessu di u servitore. I tipi di campi d'infurmazione di missaghju JSON è i valori chì ponu accettà sò listati in a tabella:

deviceType
prutucolu
messageType
deviceState
cummandu

Camera
onvif
sensorData
on
streaming (on/off)

senzor
zwave
cummandu
cumming
registrazione (on/off)

effecteur
mqtt
BusinessLogic Rule
streaming (on/off)
evice (Aggiungi / Rimuove)

logica cummerciale
cunfigurazioneData
registrazione (on/off)

bluetooth
deviceState
errore

wifi

rf

Per esempiu, un missaghju da un detector di muvimentu di a camera pare cusì:

{
	"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"
}

A logica di pruduzzione

Per riceve o mandà un missaghju da u dispatcher, u bloccu di prucessu di u servitore abbona à messagi di un certu tipu. L'abbonamentu hè una regula logica di produzzione di u tipu "Se... allora...", prisentatu in formatu JSON, è un ligame à u gestore di messagiu in u bloccu di prucessu di u servitore. Per esempiu, per permette à u servitore di càmera IP riceve cumandamenti da a GUI è u nuvulu, avete bisognu di aghjunghje a regula seguente:

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

Sì e cundizioni specificate in antecedente (left side) e regule sò veri, allora hè cuntentu cunsiquenza (a destra) regule, è u gestore accede à u corpu di u missaghju JSON. L'antecedente sustene l'operatori lògichi chì comparanu coppie chjave-valore JSON:

  1. uguali "uguali";
  2. micca uguale à "micca_uguale";
  3. menu "menu";
  4. più "più grande";
  5. menu o uguale à "less_or_equal";
  6. più grande o uguale à "greater_or_equal".

I risultati di paraguni ponu esse ligati l'un à l'altru cù l'operatori di l'algebra booleana:

  1. È "è"
  2. OR "o";
  3. NON "micca".

Cusì, scrivendu l'operatori è l'operandi in a notazione polacca, pudete creà cundizioni abbastanza cumplessi cù un gran numaru di parametri.

Esattamente u stessu mecanismu, basatu annantu à i missaghji JSON è e regule di produzzione in u formatu JSON, hè utilizatu in u bloccu di u servitore di logica di produzzione per rapprisintà a cunniscenza è eseguisce l'inferenza logica utilizendu dati sensoriali da sensori di casa intelligente.

Utilizendu una applicazione mobile, l'utilizatore crea scenarii secondu chì a casa intelligente deve funziunà. Per esempiu: "Se u sensoru per apre a porta di fronte hè attivatu, allora accende a luce in u corridoiu". L'applicazione leghje l'identificatori di sensori (sensore di apertura) è attuatori (socket intelligente o lampada intelligente) da a basa di dati è genera una regula logica in formatu JSON, chì hè mandata à u controller di casa intelligente. Stu mekanismu serà discututu in più in detail in u terzu articulu di a nostra serie, induve parlemu di l'applicazione di u cliente per a gestione di una casa intelligente.

U mecanismu logicu di produzzione discutitu sopra hè implementatu cù a biblioteca RapidJSON - Analizzatore SAX per u furmatu JSON in C++. A lettura sequenziale è l'analisi di una serie di regule di produzzione permette di implementà facilmente a funzione di paragone di dati in antecedenti:

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);
        }
    }
}

pFattu - una struttura chì cuntene coppie chjave-valore da un missaghju JSON, m_Rules - string array di reguli di pruduzzione. U paragone di u missaghju entrata è a regula di produzzione hè realizatu in a funzione reader.Parse (ruleStream, ruleHandler)induve ruleHandler hè un ogettu chì cuntene a logica di l'operatori booleani è di paraguni. sRuleId - un identificatore unicu di regula, grazia à quale hè pussibule almacenà è edità e regule in a basa di dati di cuntrollu di casa intelligente. m_pActions - un array cù i risultati di l'inferenza logica: missaghji JSON chì cuntenenu cunsequenze da a basa di regula è mandati più à u gestore di messagi per chì i fili di l'abbonati ponu processà.

U rendiment RapidJSON hè paragunabile à a funzione strlen(), è i requisiti minimi di risorsa di u sistema permettenu l'usu di sta biblioteca in i dispositi incorporati. L'usu di i missaghji è e regule logiche in u formatu JSON permette di implementà un sistema flexible di scambiu d'infurmazioni trà tutti i cumpunenti di u controller di casa intelligente.

Sensori è attuatori Z-Wave

U vantaghju principali di una casa intelligente hè chì pò misurà indipindentamente diversi paràmetri di l'ambiente esternu è eseguisce funzioni utili sicondu a situazione. Per fà questu, i sensori è l'attuatori sò cunnessi à u controller di casa intelligente. In a versione attuale, questi sò i dispositi wireless chì operanu cù u protocolu Onda Z nantu à una frequenza apposta 869 MHz Per a Russia. Per operà, sò cumminati in una reta di maglia, chì cuntene ripetitori di signali per aumentà l'area di cobertura. I dispusitivi anu ancu un modu di risparmiu energeticu speciale - passanu a maiò parte di u tempu in u modu di sonnu è mandanu infurmazioni solu quandu u so statu cambia, chì pò allargà significativamente a vita di a bateria integrata.

Nuvola Smart Home. Parte 1: Controller è sensori

Pudete avà truvà un numeru abbastanza grande di sfarenti dispusitivi Z-Wave in u mercatu. Fighjemu uni pochi di esempi:

  1. U socket intelligente Zipato PAN16 pò misurà i seguenti parametri: cunsumu d'electricità (kWh), putenza (W), voltage (V) è currente (A) in a reta elettrica. Hà ancu un interruttore integratu cù quale pudete cuntrullà l'apparechju elettricu cunnessu;
  2. U sensoru di fuga Neo Coolcam detecta a presenza di liquidu spilled chjudendu i cuntatti di a sonda remota;
  3. U sensoru di fumu Zipato PH-PSG01 hè attivatu quandu e particelle di fumu entranu in a camera di l'analizzatore di gas;
  4. U sensoru di muvimentu Neo Coolcam analizà a radiazione infrared di u corpu umanu. Inoltre, ci hè un sensoru di luce (Lx);
  5. Multisensor Philio PST02-A misura a temperatura (°C), a luce (%), l'apertura di a porta, a presenza di una persona in a stanza;
  6. Z-Wave USB Stick ZME E UZB1 controller di rete, à quale i sensori sò cunnessi.

Hè assai impurtante chì i dispositi è u controller operanu à a listessa freccia, altrimente ùn si vedenu micca in u mumentu di a cunnessione. Finu à i dispositi 232 ponu esse cunnessi à un controller di rete Z-Wave, chì hè abbastanza abbastanza per un appartamentu o una casa di campagna. Per espansione l'area di copertura di a rete in casa, un socket intelligente pò esse usatu cum'è ripetitore di signale.

Nuvola Smart Home. Parte 1: Controller è sensori

In u prucessu di u servitore di cuntrollu di casa intelligente discutitu in u paragrafu precedente, u servitore Z-Wave hè rispunsevule per interagisce cù i dispositi Z-Wave. Utiliza una biblioteca per riceve infurmazioni da i sensori OpenZWave in C ++, chì furnisce una interfaccia per interagisce cù u controller USB di a rete Z-Wave è travaglia cù una varietà di sensori è attuatori. U valore di u paràmetru ambientale misuratu da u sensoru hè registratu da u servitore Z-Wave in forma di missaghju 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"
}

Dopu hè trasmessu à u gestore di messagi di u prucessu di u servitore per chì i fili di l'abbonati ponu riceve. L'abbonatu principale hè u servitore di logica di produzzione, chì currisponde à i valori di u campu di u messagiu in l'antecedenti di e regule di logica. I risultati d'inferenza chì cuntenenu cumandamenti di cuntrollu sò mandati torna à u gestore di missaghju è da quì vai à u servitore Z-Wave, chì li decode è li manda à u controller USB di a rete Z-Wave. Allora entranu in l'attuatore, chì cambia u statu di l'uggetti ambientali, è a casa intelligente face cusì u travagliu utile.

Nuvola Smart Home. Parte 1: Controller è sensori
(cliccate nantu à a stampa per apre in una risoluzione più alta)

A cunnessione di i dispositi Z-Wave hè fatta in l'interfaccia grafica di u controller di casa intelligente. Per fà quessa, vai à a pagina cù una lista di i dispusitivi è cliccate nant'à u buttone "Add". U cumandamentu aghjunghje via l'interfaccia RESTful API entra in u prucessu di u servitore è hè mandatu da u gestore di messagi à u servitore Z-Wave, chì mette u controller USB di a rete Z-Wave in un modu speciale per aghjunghje i dispositi. In seguitu, nantu à u dispusitivu Z-Wave avete bisognu di fà una seria di presse veloci (3 presse in 1,5 seconde) di u buttone di serviziu. U controller USB cunnetta u dispusitivu à a reta è manda infurmazione nantu à u servitore Z-Wave. Chì, à u turnu, crea una nova entrata in a basa di dati SQLite cù i paràmetri di u novu dispositivu. Dopu un intervallu di tempu specificatu, l'interfaccia grafica torna à a pagina di lista di i dispositi Z-Wave, leghje l'infurmazioni da a basa di dati è mostra u novu dispositivu in a lista. Ogni dispusitivu riceve u so propiu identificatore unicu, chì hè adupratu in e regule di inferenza di produzzione è quandu travaglia in u nuvulu. U funziunamentu di stu algoritmu hè mostratu in u diagrama UML:

Nuvola Smart Home. Parte 1: Controller è sensori
(cliccate nantu à a stampa per apre in una risoluzione più alta)

Cunnessione di càmera IP

U sistema di casa intelligente in nuvola discussatu in questu articulu hè un aghjurnamentu di u sistema di surviglianza video in nuvola, sviluppatu ancu da l'autore, chì hè statu in u mercatu per parechji anni è hà parechje installazioni in Russia.

Per i sistemi di videovigilanza in nuvola, unu di i prublemi aguti hè a selezzione limitata di l'equipaggiu cù quale l'integrazione pò esse realizatu. U software rispunsevuli di cunnette à u nuvulu hè stallatu ind'u video camera, chì subitu mette gravi richieste à u so hardware - u processatore è a quantità di memoria libera. Questu spiega principalmente u prezzu più altu di e camere CCTV in nuvola cumparatu cù e camere IP regulari. Inoltre, una longa tappa di negoziazioni cù l'imprese di fabricazione di càmera CCTV hè necessaria per accede à u sistema di schedarii di càmera è tutti l'arnesi di sviluppu necessarii.

Nuvola Smart Home. Parte 1: Controller è sensori

Per d 'altra banda, tutte e camere IP muderni anu protokolli standard per l'interazzione cù altri equipaghji (in particulare, video recorders). Cusì, l'usu di un controller separatu chì si cunnetta via un protokollu standard è trasmette flussi video da e camere IP à u nuvulu furnisce vantaghji competitivi significativi per i sistemi di sorveglianza video in nuvola. Inoltre, se u cliente hà digià stallatu un sistema di sorveglianza video basatu nantu à camere IP simplici, allora diventa pussibule di espansione è trasfurmà in una casa intelligente di nuvola cumpleta.

U protokollu più populari per i sistemi di sorveglianza di video IP, avà supportatu da tutti i pruduttori di càmera IP senza eccezzioni, hè Profil ONVIF S, chì e specificazioni esistenu in una lingua di descrizzione di servizii web wsdl. Utilizà utilità da u toolkit gSOAP Hè pussibule generà codice fonte per i servizii chì travaglianu cù càmera 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

In u risultatu, avemu un inseme di l'intestazione "*.h" è i fugliali "*.cpp" di fonte in C ++, chì ponu esse posti direttamente in una applicazione o una biblioteca separata è compilati cù u compilatore GCC. A causa di e parechje funzioni, u codice hè grande è esige ottimisazione supplementu. U microcomputer Raspberry Pi 3 mudellu B + hà un rendimentu abbastanza per eseguisce stu codice, ma s'ellu ci hè bisognu di portà u codice à un'altra piattaforma, hè necessariu di selezziunà l'architettura di processore curretta è e risorse di u sistema.

I càmera IP chì supportanu u standard ONVIF, quandu operanu in una reta lucale, sò cunnessi à un gruppu multicast speciale cù l'indirizzu. 239.255.255.250. Ci hè un protocolu WS Discovery, chì permette di automatizà a ricerca di i dispositi nantu à a reta lucale.

L'interfaccia gràfica di u controller di casa intelligente implementa una funzione di ricerca per càmera IP in PHP, chì hè assai còmuda quandu interagisce cù i servizii web via missaghji XML. Quandu selezziunate l'articuli di menu Dispositivi> Camera IP> Scanning L'algoritmu per a ricerca di càmera IP hè lanciatu, affissendu u risultatu in forma di tavula:

Nuvola Smart Home. Parte 1: Controller è sensori
(cliccate nantu à a stampa per apre in una risoluzione più alta)

Quandu aghjunghje una camera à u controller, pudete specificà i paràmetri secondu a quale interagisce cù u nuvulu. Ancu in questu stadiu, hè automaticamente attribuitu un identificatore unicu di u dispositivu, da quale pò esse facilmente identificati in u nuvulu.

Nuvola Smart Home. Parte 1: Controller è sensori

In seguitu, un missaghju hè generatu in formatu JSON chì cuntene tutti i paràmetri di a camera aghjuntu è mandatu à u prucessu di u servitore di u controller di casa intelligente per via di u cumandimu RESTful API, induve i paràmetri di a camera sò decodificati è salvati in a basa di dati interna SQLite, è sò ancu usatu per lancià i seguenti fili di trasfurmazioni:

  1. stabilisce una cunnessione RTSP per riceve flussi video è audio;
  2. transcoding audio da G.711 mu-Law, G.711 A-Law, G.723, etc furmati. à u furmatu AAC;
  3. trascodificà i flussi video in u formatu H.264 è l'audio in u furmatu AAC in un container FLV è trasmettenu à u nuvulu via u protocolu RTMP;
  4. stabilisce una cunnessione cù l'endpoint di u detector di muvimentu di a camera IP via u protokollu ONVIF è u sondaghju periodicamente;
  5. generà periodicamente una maghjina di vista in miniatura è l'invià à u nuvulu via u protocolu MQTT;
  6. registrazione locale di flussi video è audio in forma di fugliali separati in formatu MP4 nantu à una carta SD o Flash di un controller di casa intelligente.

Nuvola Smart Home. Parte 1: Controller è sensori

Per stabilisce una cunnessione cù e camere, trascodificà, processà è registrà flussi video in u prucessu di u servitore, sò aduprate funzioni da a biblioteca. FFmpeg 4.1.0.

In l'esperimentu di teste di rendiment, 3 camere sò state cunnesse à u controller:

  1. HiWatch DS-I114W (risoluzione - 720p, furmatu di cumpressione - H.264, bitrate - 1 Mb/s, sonu G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (risoluzione - 1080p, furmatu di cumpressione - H.264, bitrate - 1 Mb/s, senza sonu);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (risoluzione - 1080p, furmatu di cumpressione - H.264, bitrate - 1.5 Mb/s, audio AAC).

Nuvola Smart Home. Parte 1: Controller è sensori

Tutti i trè flussi sò stati simultaneamente in u nuvulu, a transcodificazione di l'audio hè stata realizata da una sola camera, è a registrazione d'archiviu lucale hè stata disattivata. A carica di CPU era di circa 5%, l'usu di RAM era 32 MB (per prucessu), 56 MB (totale cumpresu OS).

Cusì, circa 20 - 30 camere pò esse cunnessi à u controller di casa intelligente (secondu a risoluzione è u bitrate), chì hè abbastanza per un sistema di videovigilanza per una casetta di trè piani o un picculu magazzinu. Per i travaglii chì necessitanu un rendimentu più grande, pudete aduprà un nettop cun un processore Intel multi-core è Linux Debian Sarge OS. U controller hè attualmente sottumessu à l'operazione di prova, è e dati nantu à a so prestazione seranu aghjurnati.

Interazzione cù u nuvulu

Una casa intelligente basata in nuvola guarda i dati di l'utilizatori (misure video è sensori) in u nuvulu. L'architettura di l'almacenamiento in nuvola serà discussa in più in detail in u prossimu articulu di a nostra serie. Avà parlemu di l'interfaccia per trasmette missaghji d'infurmazioni da u controller di casa intelligente à u nuvulu.

I stati di i dispositi cunnessi è e misurazioni di i sensori sò trasmessi via u protocolu MQTT, chì hè spessu usatu in i prughjetti di l'Internet di e cose per via di a so simplicità è efficienza energetica. MQTT usa un mudellu cliente-servitore, induve i clienti abbonate à temi specifichi in u broker è publicanu i so messagi. U broker manda missaghji à tutti l'abbonati secondu e regule determinate da u livellu QoS (Quality of Service):

  • QoS 0 - massimu una volta (senza garanzia di consegna);
  • QoS 1 - almenu una volta (cù cunferma di consegna);
  • QoS 2 - esattamente una volta (cù cunferma di consegna supplementu).

In u nostru casu, avemu aduprà Eclipse Mosquito. U nome di u tema hè l'identificatore unicu di u controller di casa intelligente. U cliente MQTT in u prucessu di u servitore abbona à questu tema è traduce i missaghji JSON chì venenu da u gestore di messagi in questu. À u cuntrariu, i missaghji da u broker MQTT sò trasmessi da ellu à u gestore di messagi, chì poi li multiplexa à i so abbonati in u prucessu di u servitore:

Nuvola Smart Home. Parte 1: Controller è sensori

Per trasmette missaghji nantu à u statutu di u controller di casa intelligente, u mecanismu di i missaghji salvati hè utilizatu missaghji ritenuti protocolu MQTT. Questu vi permette di cuntrollà currettamente u timing di ricunniscenza durante i falli di energia.

U cliente MQTT hè statu sviluppatu basatu annantu à l'implementazione di a biblioteca Eclipse Paho in lingua C++.

I flussi di media H.264 + AAC sò mandati à u nuvulu per via di u protokollu RTMP, induve un cluster di servitori di media hè rispunsevule per u processu è l'almacenamiento. Per distribuisce in modu ottimale a carica in u cluster è selezziunate u servitore di media menu caricatu, u controller di casa intelligente face una dumanda preliminare à u bilanciu di carica di nuvola è solu dopu manda u flussu di media.

cunchiusioni

L'articulu hà esaminatu una implementazione specifica di un controller di casa intelligente basatu annantu à u microcomputer Raspberry Pi 3 B+, ​​chì pò riceve, processà infurmazioni è cuntrullà l'equipaggiu via u protokollu Z-Wave, interagisce cù càmera IP via u protokollu ONVIF, è ancu scambià dati è cumandamenti cù u serviziu di nuvola via protokolli MQTT è RTMP. Un mutore di logica di produzzione hè statu sviluppatu basatu annantu à un paragone di reguli lògichi è fatti presentati in formatu JSON.

U cuntrollu di a casa intelligente hè attualmente in opera di prova in parechji siti in Mosca è a regione di Mosca.

A prossima versione di u controller hà pensatu à cunnette altri tipi di dispusitivi (RF, Bluetooth, WiFi, wired). Per a cunvenzione di l'utilizatori, a prucedura per cunnette i sensori è e camere IP serà trasferita à l'applicazione mobile. Ci hè ancu idee per ottimisà u codice di prucessu di u servitore è portà u software à u sistema operatore openwrt. Questu permetterà di salvà in un controller separatu è trasfirì a funziunalità di una casa intelligente à un router di casa regulare.

Source: www.habr.com

Add a comment