Casa intel·ligent al núvol. Part 1: Controlador i sensors

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Avui, gràcies al ràpid desenvolupament de la microelectrònica, els canals de comunicació, les tecnologies d'Internet i la Intel·ligència Artificial, el tema de les cases intel·ligents és cada cop més rellevant. La llar humana ha sofert canvis significatius des de l'Edat de Pedra, i en l'era de la Revolució Industrial 4.0 i l'Internet de les coses, s'ha tornat còmode, funcional i segur. Arriben al mercat solucions que converteixen un apartament o una casa de camp en complexos sistemes d'informació controlats des de qualsevol part del món mitjançant un telèfon intel·ligent. A més, per a la interacció home-màquina, el coneixement dels llenguatges de programació ja no és necessari; gràcies als algorismes de reconeixement de veu i síntesi, una persona parla amb una casa intel·ligent en la seva llengua materna.

Alguns sistemes domèstics intel·ligents que hi ha actualment al mercat són un desenvolupament lògic de sistemes de vigilància de vídeo al núvol, els desenvolupadors dels quals s'han adonat de la necessitat d'una solució integral no només per a la supervisió, sinó també per a la gestió d'objectes remots.

La vostra atenció està convidada a una sèrie de tres articles, que parlaran de tots els components principals del sistema domèstic intel·ligent al núvol, desenvolupat personalment per l'autor i posat en funcionament. El primer article està dedicat a l'equip client terminal instal·lat a l'interior de la llar intel·ligent, el segon tracta de l'arquitectura del sistema d'emmagatzematge i processament de dades al núvol i, finalment, el tercer tracta de l'aplicació client per a la gestió del sistema des del mòbil. i dispositius estacionaris.

Equipament domèstic intel·ligent

Primer, parlem de com fer una casa intel·ligent a partir d'un apartament normal, casa d'estiu o casa rural. Per fer-ho, per regla general, cal col·locar els següents equips a l'habitatge:

  1. sensors que mesuren diversos paràmetres de l'entorn extern;
  2. actuadors que actuen sobre objectes externs;
  3. un controlador que realitza càlculs d'acord amb les mesures dels sensors i la lògica subjacent, i emet ordres als actuadors.

La figura següent mostra un diagrama d'una casa intel·ligent, que conté sensors de fuites d'aigua (1) al bany, sensors de temperatura (2) i d'il·luminació (3) al dormitori, un endoll intel·ligent (4) a la cuina i una videovigilància. càmera (5) al passadís.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Actualment, els sensors sense fil que funcionen amb els protocols RF433, Z-Wave, ZigBee, Bluetooth i WiFi s'utilitzen àmpliament. Els seus principals avantatges són la facilitat d'instal·lació i ús, així com el baix cost i la fiabilitat. els fabricants s'esforcen per portar els seus dispositius al mercat massiu i posar-los a disposició de l'usuari mitjà.

Els sensors i actuadors, per regla general, es connecten mitjançant una interfície sense fil al controlador de la llar intel·ligent (6), un microordinador especialitzat que combina tots aquests dispositius en una única xarxa i els controla.

Tanmateix, algunes solucions poden combinar un sensor, un actuador i un controlador alhora. Per exemple, un endoll intel·ligent es pot programar per encendre o apagar segons un calendari, i una càmera de videovigilància al núvol pot gravar vídeo en un senyal de detector de moviment. En els casos més senzills, podeu prescindir d'un controlador separat, però per crear un sistema flexible amb molts escenaris, és necessari.

Per connectar el controlador de la llar intel·ligent a la xarxa global, es pot utilitzar un encaminador d'Internet normal (7), que fa temps que s'ha convertit en un electrodomèstic familiar a qualsevol llar. Hi ha un altre argument a favor del controlador de la casa intel·ligent: si es perd la connexió a Internet, la casa intel·ligent continuarà funcionant amb normalitat gràcies al bloc lògic emmagatzemat dins del controlador i no al servei al núvol.

controlador de casa intel·ligent

El controlador per al sistema domèstic intel·ligent al núvol que es parla en aquest article es desenvolupa a partir d'un microordinador d'una sola placa Raspberry Pi 3 model B+, que es va llançar el març de 2018 i té prou recursos i rendiment per a les tasques de la llar intel·ligent. Inclou un processador Cortex-A53 de quatre nuclis amb una arquitectura ARMv64-A de 8 bits, a 1.4 GHz, així com 1 GB de RAM, Wi-Fi 802.11ac, Bluetooth 4.2 i un adaptador Gigabit Ethernet que funciona mitjançant USB 2.0 autobús.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

El muntatge del controlador és molt senzill: el microordinador (1) s'instal·la en una caixa de plàstic (2), després s'instal·la una targeta de memòria microSD de 8 GB amb programari (3) i un controlador de xarxa USB Z-Wave (4) les ranures adequades. El controlador de la casa intel·ligent està connectat a la xarxa mitjançant un adaptador d'alimentació de 5 V, 2.1 A (5) i un cable USB-micro-USB (6). Cada controlador té un número d'identificació únic, que s'escriu al fitxer de configuració al primer inici i és necessari per interactuar amb els serveis de la llar intel·ligent al núvol.

El programari del controlador de la llar intel·ligent va ser desenvolupat per l'autor d'aquest article basat en el sistema operatiu Linux Raspbian Stretch. Consta dels següents subsistemes principals:

  • un procés de servidor per interactuar amb equips domèstics intel·ligents i el núvol;
  • interfície gràfica d'usuari per configurar la configuració i els paràmetres de funcionament del controlador;
  • base de dades per emmagatzemar la configuració del controlador.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Base de dades El controlador de casa intel·ligent s'implementa sobre la base d'un SGBD integrat SQLite i és un fitxer de la targeta SD amb programari del sistema. Serveix com a emmagatzematge de configuració del controlador: informació sobre l'equip connectat i el seu estat actual, un bloc de regles de producció lògiques, així com informació que requereix indexació (per exemple, noms de fitxers d'arxiu de vídeo local). Quan es reinicia el controlador, aquesta informació es desa, la qual cosa permet restablir la funcionalitat del controlador en cas de fallades de corrent.

GUI El controlador de casa intel·ligent es desenvolupa a PHP 7 mitjançant un microframework Prim. El servidor web és el responsable d'executar l'aplicació. lighttpd, que s'utilitza sovint en dispositius incrustats pel seu bon rendiment i els baixos requisits de recursos.

Casa intel·ligent al núvol. Part 1: Controlador i sensors
(feu clic a la imatge per obrir-la en una resolució més gran)

La funció principal de la GUI és connectar equips domèstics intel·ligents (càmeres IP i sensors) al controlador. L'aplicació web llegeix la configuració i l'estat actual del controlador i els dispositius connectats a ell des de la base de dades SQLite. Per canviar la configuració del controlador, envia ordres de control en format JSON mitjançant l'API RESTful del procés del servidor.

Procés del servidor

Procés del servidor - un component clau que realitza tota la tasca principal d'automatització dels processos d'informació que són la base d'una llar intel·ligent: rebre i processar dades sensorials, emetre accions de control en funció de la lògica subjacent. El propòsit del procés del servidor és interactuar amb equips domèstics intel·ligents, executar regles lògiques de producció, rebre i processar ordres des de la interfície gràfica i el núvol. El procés del servidor del controlador de la llar intel·ligent considerat s'implementa com una aplicació multiprocés desenvolupada en C++ i llançada com a servei independent systemd sistema operatiu Linux Raspbian.

Els blocs principals del procés del servidor són:

  1. Gestor de missatges;
  2. servidor de càmeres IP;
  3. servidor de dispositius Z-Wave;
  4. Servidor de regles lògiques de producció;
  5. Base de dades de configuració del controlador i bloc de regles lògiques;
  6. Servidor d'API RESTful per interactuar amb la interfície gràfica;
  7. Client MQTT per interactuar amb el núvol.

Els blocs de procés del servidor s'implementen com a fluxos separats, entre els quals la informació es transfereix en forma de missatges en format JSON (o estructures de dades que representen aquest format a la memòria del procés).

Casa intel·ligent al núvol. Part 1: Controlador i sensors

El component principal del procés del servidor és gestor de missatges, que encamina els missatges JSON a tots els blocs del procés del servidor. Els tipus de camps d'informació en un missatge JSON i els valors que poden prendre es mostren a la taula:

deviceType
protocol
tipus de missatge
Estat del dispositiu
comanda

càmera
onvif
sensorData
on
streaming (activat/desactivat)

sensor
zwave
comanda
de
gravació (activat/desactivat)

efector
MQTT
BusinessLogicRule
streaming (activat/desactivat)
dispositiu (Afegeix/Elimina)

lògica empresarial
dades de configuració
gravació (activat/desactivat)

Bluetooth
Estat del dispositiu
error

wifi

rf

Per exemple, un missatge d'un detector de moviment de la càmera té aquest aspecte:

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

Lògica de producció

Per rebre o enviar un missatge del despatxador, el bloc de procés del servidor se subscriu a missatges d'un tipus determinat. Una subscripció és una regla lògica de producció del tipus "Si llavors...", representat en format JSON i un enllaç al gestor de missatges dins del bloc de procés del servidor. Per exemple, perquè el servidor de la càmera IP rebi ordres de la GUI i del núvol, cal que afegiu la regla següent:

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

Si les condicions especificades a antecedent Les regles (costat esquerre) són certes, doncs conseqüent (costat dret) i el gestor té accés al cos del missatge JSON. L'antecedent admet operadors lògics que comparen parells clau-valor JSON:

  1. és igual a "igual";
  2. no és igual a "no_igual";
  3. menys que "menys";
  4. més "més gran";
  5. menor que o igual a "menys_o_igual";
  6. superior o igual a "greater_or_equal".

Els resultats de la comparació es poden interconnectar mitjançant operadors d'àlgebra de Boole:

  1. I "i";
  2. O "o";
  3. NO "no".

Així, escrivint operadors i operands en notació polonesa, es poden formar condicions força complexes amb un gran nombre de paràmetres.

El mateix mecanisme, basat en missatges JSON i regles de producció en format JSON, s'utilitza al bloc del servidor de la lògica de producció per representar el coneixement i realitzar inferències mitjançant dades de sensors de sensors domèstics intel·ligents.

L'usuari, mitjançant una aplicació mòbil, crea escenaris segons els quals hauria de funcionar una casa intel·ligent. Per exemple: "Si s'activa el sensor per obrir la porta principal, enceneu la llum al passadís". L'aplicació llegeix els identificadors dels sensors (sensor d'obertura) i actuadors (endoll intel·ligent o llum intel·ligent) de la base de dades i genera una regla lògica en format JSON, que s'envia al controlador de la llar intel·ligent. Aquest mecanisme es tractarà amb més detall al tercer article del nostre cicle, on parlarem de l'aplicació client per a la gestió d'una llar intel·ligent.

El mecanisme de lògica de producció comentat anteriorment s'implementa mitjançant la biblioteca JSON ràpid — Analitzador SAX de format JSON en llenguatge C++. La lectura i l'anàlisi seqüencials d'una sèrie de regles de producció facilita la implementació d'una funció de concordança de dades dins dels antecedents:

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

Aquí p Fet - una estructura que conté parells clau-valor d'un missatge JSON, m_Regles — matriu de cadenes de regles de producció. La concordança del missatge entrant i la regla de producció es fa a la funció reader.Parse(ruleStream, ruleHandler)On RuleHandler és un objecte que conté la lògica d'operadors booleans i operadors de comparació. sRuleId - un identificador de regles únic, gràcies al qual és possible emmagatzemar i editar regles dins de la base de dades del controlador de la llar intel·ligent. m_pActions - una matriu amb els resultats de la inferència: missatges JSON que contenen conseqüències de la base de regles i s'envien més al gestor de missatges perquè els fils de subscriptor els puguin processar.

El rendiment de RapidJSON és comparable a la funció strlen(), i els requisits mínims de recursos del sistema permeten utilitzar aquesta biblioteca en dispositius incrustats. L'ús de missatges i regles lògiques en format JSON permet implementar un sistema flexible d'intercanvi d'informació entre tots els components del controlador de la llar intel·ligent.

Sensors i actuadors Z-Wave

El principal avantatge d'una casa intel·ligent és que pot mesurar de manera independent diversos paràmetres de l'entorn extern i realitzar funcions útils segons la situació. Per fer-ho, els sensors i actuadors estan connectats al controlador de la llar intel·ligent. En la versió actual, es tracta de dispositius sense fil que funcionen sota el protocol Ona Z en una freqüència dedicada 869 MHz Per Rússia. Per al seu treball, es combinen en una xarxa de malla, en la qual hi ha repetidors de senyal per tal d'augmentar l'àrea de cobertura. Els dispositius també tenen un mode especial d'estalvi d'energia: passen la major part del temps en mode de repòs i només envien informació quan el seu estat canvia, cosa que pot allargar significativament la vida útil de la bateria integrada.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Actualment hi ha una gran quantitat de dispositius Z-Wave diferents al mercat. Com a exemple, considereu alguns:

  1. L'endoll intel·ligent Zipato PAN16 pot mesurar els següents paràmetres: consum elèctric (kWh), potència (W), tensió (V) i corrent (A) a la xarxa. També té un interruptor incorporat, amb el qual es pot controlar l'electrodomèstic connectat;
  2. El sensor de fuites Neo Coolcam detecta la presència d'un líquid vessat tancant els contactes de la sonda remota;
  3. El detector de fum Zipato PH-PSG01 s'activa quan les partícules de fum entren a la cambra de l'analitzador de gasos;
  4. El sensor de moviment Neo Coolcam analitza la radiació infraroja del cos humà. A més, hi ha un sensor de llum (Lx);
  5. El multisensor Philio PST02-A mesura la temperatura (°C), la il·luminació (%), l'obertura de la porta, la presència humana a l'habitació;
  6. Controlador de xarxa Z-Wave USB Stick ZME E UZB1, al qual estan connectats els sensors.

És molt important que els dispositius i el controlador funcionin a la mateixa freqüència, sinó, d'una manera senzilla, no es veuran en el moment de la connexió. Es poden connectar fins a 232 dispositius a un controlador de xarxa Z-Wave, que és suficient per a un apartament o una casa de camp. Per ampliar la cobertura de la xarxa a l'interior, es pot utilitzar un endoll intel·ligent com a repetidor de senyal.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

En el procés del servidor del controlador de la llar intel·ligent comentat al paràgraf anterior, el servidor Z-Wave és responsable d'interactuar amb els dispositius Z-Wave. Per obtenir informació dels sensors, utilitza la biblioteca OpenZWave en C++, que proporciona una interfície per interactuar amb un controlador USB de xarxa Z-Wave i funciona amb una varietat de sensors i actuadors. El servidor Z-Wave escriu el valor del paràmetre ambiental mesurat pel sensor com a missatge 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"
}

A continuació, s'envia al gestor de missatges del procés del servidor perquè els fils de subscriptor el puguin rebre. L'abonat principal és el servidor lògic de producció, que coincideix amb els valors del camp de missatge en els antecedents de les regles lògiques. Els resultats de la inferència que contenen ordres de control s'envien al gestor de missatges i des d'aquí al servidor Z-Wave, que els descodifica i els envia al controlador USB de la xarxa Z-Wave. A continuació, entren al dispositiu executiu, que canvia l'estat dels objectes a l'entorn extern, i la casa intel·ligent, per tant, realitza un treball útil.

Casa intel·ligent al núvol. Part 1: Controlador i sensors
(feu clic a la imatge per obrir-la en una resolució més gran)

La connexió dels dispositius Z-Wave es fa a la interfície gràfica del controlador de la llar intel·ligent. Per fer-ho, aneu a la pàgina amb la llista de dispositius i feu clic al botó "Afegeix". L'ordre d'addició mitjançant la interfície de l'API RESTful entra al procés del servidor i el gestor de missatges l'envia al servidor Z-Wave, que posa el controlador de xarxa USB Z-Wave en un mode especial per afegir dispositius. A continuació, al dispositiu Z-Wave, heu de fer una sèrie de premses ràpides (3 pressions en 1,5 segons) del botó de servei. El controlador USB connecta el dispositiu a la xarxa i envia informació sobre ell al servidor Z-Wave. Això, al seu torn, crea un nou registre a la base de dades SQLite amb els paràmetres del nou dispositiu. La interfície gràfica després de l'interval de temps especificat torna a la pàgina de la llista de dispositius Z-Wave, llegeix la informació de la base de dades i mostra un dispositiu nou a la llista. Al mateix temps, cada dispositiu rep el seu propi identificador únic, que s'utilitza en les regles d'inferència de producció i quan es treballa al núvol. El funcionament d'aquest algorisme es mostra al diagrama UML:

Casa intel·ligent al núvol. Part 1: Controlador i sensors
(feu clic a la imatge per obrir-la en una resolució més gran)

Connexió de càmeres IP

El sistema domèstic intel·ligent al núvol que es parla en aquest article és una actualització del sistema de videovigilància al núvol, també desenvolupat per l'autor, que porta diversos anys al mercat i té moltes instal·lacions a Rússia.

Per als sistemes de videovigilància al núvol, un dels problemes més greus és l'elecció limitada d'equips amb els quals es pot fer la integració. El programari responsable de connectar-se al núvol s'instal·la a la càmera de vídeo, la qual cosa imposa immediatament uns requisits seriosos al seu farcit de maquinari: el processador i la quantitat de memòria lliure. Això explica principalment el preu més elevat de les càmeres de vigilància al núvol en comparació amb les càmeres IP normals. A més, cal una llarga etapa de negociació amb les empreses de càmeres CCTV per accedir al sistema de fitxers de la càmera i a totes les eines de desenvolupament necessàries.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

D'altra banda, totes les càmeres IP modernes tenen protocols estàndard per interactuar amb altres equips (en particular, gravadors de vídeo). Així, l'ús d'un controlador independent que es connecta mitjançant un protocol estàndard i transmet fluxos de vídeo des de les càmeres IP al núvol proporciona avantatges competitius significatius per als sistemes de vigilància de vídeo al núvol. A més, si el client ja ha instal·lat un sistema de videovigilància basat en càmeres IP senzilles, serà possible ampliar-lo i convertir-lo en una casa intel·ligent al núvol completa.

El protocol més popular per als sistemes de videovigilància IP, ara admès per tots els fabricants de càmeres IP sense excepció, és Perfil ONVIF S, les especificacions del qual existeixen en el llenguatge de descripció de serveis web WSDL. Ús de les utilitats del conjunt d'eines gSOAP és possible generar el codi font dels serveis que treballen amb càmeres 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

Com a resultat, obtenim un conjunt de fitxers de capçalera "*.h" i font "*.cpp" en llenguatge C ++, que es poden col·locar directament en una aplicació o una biblioteca separada i compilar mitjançant el compilador GCC. A causa de les moltes funcions, el codi és gran i requereix una optimització addicional. El microordinador Raspberry Pi 3 model B+ té prou rendiment per executar aquest codi, però en cas que sigui necessari portar el codi a una altra plataforma, cal triar l'arquitectura del processador i els recursos del sistema adequats.

Les càmeres IP que admeten l'estàndard ONVIF, quan funcionen en una xarxa local, estan connectades a un grup de multidifusió especial amb l'adreça 239.255.255.250. Hi ha un protocol WS Discovery, que permet automatitzar la cerca de dispositius a la xarxa local.

A la interfície gràfica del controlador de la llar intel·ligent, s'implementa la funció de cerca de càmeres IP en llenguatge PHP, que és molt convenient quan s'interacciona amb serveis web mitjançant missatges XML. En seleccionar elements del menú Dispositius > Càmeres IP > Escaneig s'inicia l'algoritme de cerca de càmeres IP, mostrant el resultat en forma de taula:

Casa intel·ligent al núvol. Part 1: Controlador i sensors
(feu clic a la imatge per obrir-la en una resolució més gran)

Quan afegiu una càmera al controlador, podeu especificar la configuració segons la qual interactuarà amb el núvol. També en aquesta etapa, se li assigna automàticament un identificador de dispositiu únic, pel qual es pot identificar fàcilment dins del núvol en el futur.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

A continuació, es genera un missatge en format JSON que conté tots els paràmetres de la càmera afegida i s'envia al procés del servidor del controlador de la llar intel·ligent mitjançant l'ordre de l'API RESTful, on els paràmetres de la càmera es descodifiquen i s'emmagatzemen a la base de dades interna de SQLite, i són també s'utilitza per llançar els fils de processament següents:

  1. establir una connexió RTSP per rebre fluxos de vídeo i àudio;
  2. transcodificació d'àudio de G.711 mu-Law, G.711 A-Law, G.723, etc. al format AAC;
  3. transcodificar fluxos de vídeo en format H.264 i àudio en format AAC a un contenidor FLV i transferir-los al núvol mitjançant el protocol RTMP;
  4. Establir una connexió amb el punt final del detector de moviment de la càmera IP mitjançant el protocol ONVIF i sondejar-lo periòdicament;
  5. generant periòdicament una imatge de vista prèvia en miniatura (visualització prèvia) i enviant-la al núvol mitjançant el protocol MQTT;
  6. enregistrament local de fluxos de vídeo i àudio com a fitxers separats en format MP4 a la targeta SD o Flash del controlador de la llar intel·ligent.

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Per establir una connexió amb càmeres, transcodificar, processar i gravar fluxos de vídeo en el procés del servidor, s'utilitzen les funcions de la biblioteca FFmpeg 4.1.0.

A l'experiment de prova de rendiment, es van connectar 3 càmeres al controlador:

  1. HiWatch DS-I114W (resolució - 720p, format de compressió - H.264, velocitat de bits - 1 Mb / s, so G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (resolució - 1080p, format de compressió - H.264, velocitat de bits - 1 Mb / s, sense so);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (resolució - 1080p, format de compressió - H.264, velocitat de bits - 1.5 Mb/s, àudio AAC).

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Els tres fluxos es van enviar simultàniament al núvol, l'àudio es va transcodificar només des d'una càmera i es va desactivar la gravació d'arxius locals. La càrrega de la CPU era d'un 5%, l'ús de RAM era de 32 MB (per procés), 56 MB (total amb el sistema operatiu).

Així, es poden connectar unes 20-30 càmeres al controlador de la llar intel·ligent (segons la resolució i la taxa de bits), cosa que és suficient per a un sistema de videovigilància d'una casa de tres pisos o un petit magatzem. A les tasques on es requereix un alt rendiment, podeu utilitzar un netop amb un processador Intel multinucli i Linux Debian Sarge. Actualment, el controlador està en fase de prova, i s'especificaran les dades sobre l'execució del seu treball.

Interacció amb el núvol

La casa intel·ligent al núvol emmagatzema les dades dels usuaris (mesures de vídeo i sensors) al núvol. L'arquitectura de l'emmagatzematge al núvol es parlarà amb més detall al proper article de la nostra sèrie. Ara parlem de la interfície per transmetre missatges d'informació des del controlador de la llar intel·ligent al núvol.

Els estats dels dispositius connectats i les mesures dels sensors es transmeten mitjançant el protocol MQTT, que s'utilitza sovint en projectes d'Internet de les coses per la seva senzillesa i eficiència energètica. MQTT utilitza un model client-servidor on els clients es subscriuen a determinats temes dins del corredor i publiquen els seus missatges. El corredor envia missatges a tots els subscriptors d'acord amb les regles determinades pel nivell de QoS (Quality of Service):

  • QoS 0 - màxim una vegada (sense garantia de lliurament);
  • QoS 1: almenys una vegada (amb confirmació de lliurament);
  • QoS 2: exactament una vegada (amb confirmació addicional del lliurament).

En el nostre cas, el corredor MQTT és Eclipsi Mosquitto. El nom del tema és l'identificador únic del controlador de la llar intel·ligent. El client MQTT dins del procés del servidor se subscriu a aquest tema i hi tradueix missatges JSON procedents del despatxador de missatges. I viceversa, els missatges del corredor MQTT es reenvien al gestor de missatges, que després els multiplexa als seus subscriptors dins del procés del servidor:

Casa intel·ligent al núvol. Part 1: Controlador i sensors

Per enviar missatges sobre l'estat del controlador de la llar intel·ligent, s'utilitza el mecanisme de missatges emmagatzemats. missatges retinguts Protocol MQTT. Això us permet fer un seguiment correcte dels moments de reconnexió en cas de talls de corrent.

El client MQTT es va desenvolupar a partir de la implementació de la biblioteca Eclipsi Paho en C++.

Els fluxos multimèdia H.264 + AAC s'envien al núvol mitjançant el protocol RTMP, on un clúster de servidors multimèdia és responsable del seu processament i emmagatzematge. Per a una distribució òptima de càrrega al clúster i la selecció del servidor multimèdia menys carregat, el controlador de la llar intel·ligent fa una sol·licitud preliminar a l'equilibrador de càrrega del núvol i només llavors envia el flux multimèdia.

Conclusió

L'article va considerar una implementació específica d'un controlador domèstic intel·ligent basat en el microordinador Raspberry Pi 3 B+, ​​que pot rebre, processar informació i controlar equips mitjançant el protocol Z-Wave, interactuar amb càmeres IP mitjançant el protocol ONVIF i també intercanviar dades i ordres amb el servei al núvol mitjançant protocols MQTT i RTMP. S'ha desenvolupat un motor lògic de producció basat en una comparació de regles i fets lògics presentats en format JSON.

Ara, el controlador de la llar intel·ligent està en funcionament de prova a diverses instal·lacions de Moscou i la regió de Moscou.

En la següent versió del controlador, es preveu connectar dispositius d'altres tipus (RF, Bluetooth, WiFi, per cable). Per a la comoditat dels usuaris, el procediment de connexió de sensors i càmeres IP es traslladarà a l'aplicació mòbil. També hi ha idees per optimitzar el codi de procés del servidor i portar el programari al sistema operatiu openwrt. Això estalviarà en un controlador independent i transferirà la funcionalitat d'una casa intel·ligent a un encaminador domèstic normal.

Font: www.habr.com

Afegeix comentari