Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Gaur egun, mikroelektronikaren, komunikazio-kanalen, Interneteko teknologien eta Adimen Artifizialaren garapen azkarrari esker, etxe adimendunen gaia gero eta garrantzitsuagoa da. Giza etxebizitzak aldaketa handiak izan ditu Harri Arotik eta 4.0 Industria Iraultzaren eta Gauzen Interneten garaian, eroso, funtzional eta seguru bihurtu da. Konponbideak iristen ari dira merkatura, apartamentu bat edo landetxe bat smartphone baten bidez munduko edozein lekutatik kontrolatutako informazio-sistema konplexu bihurtzen dituztenak. Gainera, giza-makina elkarrekintzak jada ez du programazio-lengoaien ezagutzarik behar - hizkera ezagutzeko eta sintesi-algoritmoei esker, pertsona batek etxe adimendun batera hitz egiten du bere jatorrizko hizkuntzan.

Gaur egun merkatuan dauden etxe adimendunetako sistema batzuk hodeiko bideo-zaintza sistemen garapen logikoa dira, eta horien garatzaileek konponbide integral baten beharraz ohartu ziren monitorizaziorako ez ezik, urruneko objektuak kudeatzeko ere.

Zure arretarako hiru artikuluko serie bat aurkezten dizugu, egileak pertsonalki garatu eta martxan jarritako hodeiko etxeko sistema adimendun baten osagai nagusi guztien berri emango dizuna. Lehenengo artikulua etxebizitza adimendun baten barruan instalatutako terminal-bezero-ekipoei dago zuzenduta, bigarrena hodeiko biltegiratze- eta datuak prozesatzeko sistemaren arkitekturari, eta, azkenik, hirugarrena, gailu mugikor eta finkoetan sistema kudeatzeko bezero-aplikazioari.

Etxeko ekipamendu adimenduna

Lehenik eta behin, hitz egin dezagun etxebizitza adimendun bat nola egin apartamentu, etxe edo etxe arrunt batetik. Horretarako, normalean, beharrezkoa da honako ekipamendu hauek jartzea etxean:

  1. hainbat ingurumen-parametro neurtzen dituzten sentsoreak;
  2. kanpoko objektuetan jarduten duten eragingailuak;
  3. sentsoreen neurketen eta txertatutako logikaren arabera kalkuluak egiten dituen kontrolagailu bat eta eragingailuei aginduak ematen dizkie.

Hurrengo irudian etxe adimendun baten eskema bat erakusten da, zeinetan ur-iheserako sentsoreak (1) komunean, tenperatura (2) eta argiztapena (3) logelan, entxufe adimenduna (4) sukaldean eta bat. bideozaintzako kamera (5) pasilloan.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Gaur egun, RF433, Z-Wave, ZigBee, Bluetooth eta WiFi protokoloak erabiliz funtzionatzen duten haririk gabeko sentsoreak oso erabiliak dira. Haien abantaila nagusiak instalazio eta erabiltzeko erraztasuna dira, baita kostu baxua eta fidagarritasuna ere Fabrikatzaileak beren gailuak merkatu masibora ekartzen eta erabiltzaile arruntarentzat eskuragarri jartzen saiatzen ari dira.

Sentsoreak eta eragingailuak, normalean, haririk gabeko interfaze baten bidez konektatzen dira etxeko kontrolagailu adimendun batera (6) - gailu horiek guztiak sare bakarrean konbinatzen eta kontrolatzen dituen mikroordenagailu espezializatua.

Hala ere, irtenbide batzuek sentsore bat, eragingailu bat eta kontrolagailu bat konbina ditzakete aldi berean. Adibidez, entxufe adimenduna programatu daiteke programazio baten arabera pizteko edo itzaltzeko, eta hodeiko bideo-zaintzako kamera batek bideoa graba dezake mugimendu-detektagailuaren seinale batean oinarrituta. Kasurik errazenetan, kontrolagailu bereizirik gabe egin dezakezu, baina eszenatoki asko dituen sistema malgu bat sortzeko, beharrezkoa da.

Etxe adimendunaren kontrolagailua sare globalarekin konektatzeko, Interneteko bideratzaile arrunt bat (7) erabil daiteke, aspalditik edozein etxetan ohikoa den etxetresna elektrikoa. Hemen bada etxe adimendunaren kontrolagailu baten aldeko beste argudio bat: Interneterako konexioa galtzen bada, etxe adimendunak normalean funtzionatzen jarraituko du kontrolagailu barruan gordetako bloke logikoari esker, eta ez hodeiko zerbitzuan.

Etxeko kontrolagailu adimenduna

Artikulu honetan eztabaidatutako hodeiko etxeko sistema adimendunaren kontrolagailua plaka bakarreko mikroordenagailu batean oinarrituta garatu da Raspberry Pi 3 B+ eredua, 2018ko martxoan kaleratu zena eta baliabide eta errendimendu nahikoak ditu etxeko adimendunen zereginetarako. 53 biteko ARMv64-A arkitekturan oinarritutako quad-core Cortex-A8 prozesadorea barne hartzen du, 1.4 GHz-ko erlojua, baita 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 eta gigabit Ethernet egokitzaile bat USB 2.0 bidez funtzionatzen duena. .

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Kontrolagailua muntatzea oso erraza da - mikroordenagailua (1) plastikozko kaxa batean instalatzen da (2), gero 8 GB-ko memoria-txartel bat softwarearekin microSD formatuan (3) eta USB Z-Wave sare kontroladore bat (4) instalatzen dira. dagozkion zirrikituak. Etxe adimendunaren kontrolagailua elikadura-iturrira konektatzen da 5V, 2.1A-ko korronte egokitzaile baten bidez (5) eta USB - mikro-USB kable baten bidez (6). Kontrolagailu bakoitzak identifikazio-zenbaki esklusibo bat du, konfigurazio-fitxategian idatzita dagoena lehen aldiz abiarazten denean eta beharrezkoa da hodeiko etxeko zerbitzu adimendunekin elkarreragiteko.

Etxe adimendunaren kontrolagailuaren softwarea artikulu honen egileak garatu zuen sistema eragilean oinarrituta Linux Raspbian Stretch. Honako azpisistema nagusi hauek ditu:

  • zerbitzari-prozesua etxeko ekipamendu adimendunarekin eta hodeiarekin elkarreragiteko;
  • erabiltzailearen interfaze grafikoa kontrolagailuaren konfigurazio eta funtzionamendu-parametroak ezartzeko;
  • kontroladorearen konfigurazioa gordetzeko datu-basea.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Datu-basea smart home controller inplementatuta dago DBMS txertatu batean oinarrituta SQLite eta sistemaren softwarea duen SD txarteleko fitxategi bat da. Kontrolagailuaren konfiguraziorako biltegiratze gisa balio du: konektatutako ekipoari eta bere egungo egoerari buruzko informazioa, produkzio-arau logikoen blokea, baita indexatzea behar duen informazioa ere (adibidez, tokiko bideo artxibo baten fitxategi-izenak). Kontrolagailua berrabiarazten denean, informazio hori gordetzen da, eta, beraz, kontrolagailua berrezartzea posible da elektrizitatearen hutsunea gertatuz gero.

Interfaze grafikoa PHP 7n garatutako etxeko kontrolagailu adimenduna mikroesparru bat erabiliz Slim. Web zerbitzaria da aplikazioa exekutatzeko ardura. lighttpd, txertatutako gailuetan sarritan erabiltzen da bere errendimendu ona eta baliabide eskakizun baxuak direla eta.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak
(egin klik argazkian bereizmen handiago batean irekitzeko)

Interfaze grafikoaren funtzio nagusia etxeko ekipamendu adimenduna (IP zaintza-kamerak eta sentsoreak) kontrolagailura konektatzea da. Web aplikazioak kontroladorearen eta hari konektatutako gailuen konfigurazioa eta uneko egoera irakurtzen ditu SQLite datu-basetik. Kontrolagailuaren konfigurazioa aldatzeko, kontrol komandoak bidaltzen ditu JSON formatuan zerbitzariaren prozesuko RESTful API interfazearen bidez.

Zerbitzariaren prozesua

Zerbitzariaren prozesua - Etxe adimendun baten oinarrian dauden informazio-prozesuak automatizatzeko lan nagusi guztiak egiten dituen funtsezko osagaia: datu sentsorialak jasotzea eta prozesatzea, txertatutako logikaren araberako kontrol-ekintzak ematea. Zerbitzariaren prozesuaren helburua etxeko ekipo adimendunekin elkarreragina egitea da, produkzio-arau logikoak exekutatu, interfaze grafikotik eta hodeitik komandoak jaso eta prozesatzea. Aztertutako etxe adimendunaren kontrolagailuko zerbitzari-prozesua C++-n garatutako hari anitzeko aplikazio gisa inplementatzen da eta zerbitzu bereizi gisa abiarazten da. systemd sistema eragilea Linux Raspbian.

Zerbitzariaren prozesuaren bloke nagusiak hauek dira:

  1. Mezuen kudeatzailea;
  2. IP kamera zerbitzaria;
  3. Z-Wave gailu zerbitzaria;
  4. Produkzio-arau logikoen zerbitzaria;
  5. Kontroladorearen konfigurazioaren datu-basea eta arau logikoen blokea;
  6. RESTful API zerbitzaria interfaze grafikoarekin elkarreragiteko;
  7. Hodeiarekin elkarreragiteko MQTT bezeroa.

Zerbitzariaren prozesu-blokeak hari bereizi gisa inplementatzen dira, eta horien arteko informazioa JSON formatuan (edo prozesuko memorian formatu hori adierazten duten datu-egiturak) mezu moduan transferitzen da.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Zerbitzariaren prozesuaren osagai nagusia da mezuen kudeatzailea, JSON mezuak zerbitzariaren prozesu-bloke guztietara bideratzen dituena. JSON mezuen informazio-eremu motak eta onar ditzaketen balioak taulan ageri dira:

deviceType
protokoloa
mezu mota
deviceState
komandoa

kamera
onvif
sensorData
on
streaming (aktibatuta/desaktibatuta)

sentsore
zwave
komandoa
off
grabaketa (aktibatuta/desaktibatuta)

effector
mqtt
businessLogicRule
streaming (aktibatuta/desaktibatuta)
gailu (Gehitu/Kendu)

negozioLogika
konfigurazioDatuak
grabaketa (aktibatuta/desaktibatuta)

Bluetooth
deviceState
errorea

Wifi

rf

Adibidez, kameraren mugimendu-detektagailu baten mezu batek itxura hau du:

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

Ekoizpen logika

Bidaltzailearen mezu bat jasotzeko edo bidaltzeko, zerbitzariaren prozesu-blokea mota jakin bateko mezuetara harpidetzen da. Harpidetza motako ekoizpen-arau logikoa da "Bada... orduan...", JSON formatuan aurkeztuta eta zerbitzariaren prozesu blokearen barruan dagoen mezu-kudeatzailerako esteka. Adibidez, IP kamera zerbitzariak GUItik eta hodeitik komandoak jaso ditzan, arau hau gehitu behar duzu:

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

atalean zehaztutako baldintzak baldin badira aurrekaria (ezkerreko aldean) arauak egia dira, orduan betetzen da ondoriozkoa (eskuineko aldean) arauak, eta kudeatzaileak JSON mezuaren gorputzerako sarbidea izango du. Aurrekariak JSON gako-balio bikoteak konparatzen dituzten operadore logikoak onartzen ditu:

  1. berdin "berdin";
  2. ez da berdin "ez_berdin";
  3. gutxiago "gutxiago";
  4. "handiagoa";
  5. baino txikiagoa edo berdina "gutxiago_edo_berdin";
  6. "handiago_edo_berdin" baino handiagoa edo berdina.

Konparazio-emaitzak elkarren artean erlazionatu daitezke aljebra-operadore boolearrak erabiliz:

  1. Eta "eta"
  2. EDO "edo";
  3. EZ "ez".

Horrela, operadoreak eta eragigaiak poloniar idazkeran idatziz, baldintza nahiko konplexuak sor ditzakezu parametro ugarirekin.

Zehazki mekanismo bera, JSON mezuetan eta JSON formatuan produkzio-arauetan oinarrituta, ekoizpen-logikako zerbitzariaren blokean erabiltzen da ezagutza irudikatzeko eta inferentzia logikoa egiteko etxe adimenduneko sentsoreen datu sentsorialak erabiliz.

Mugikorretarako aplikazio bat erabiliz, erabiltzaileak etxe adimendunak funtzionatu behar duen eszenatokiak sortzen ditu. Adibidez: "Atariko atea irekitzeko sentsorea piztuta badago, piztu korridoreko argia". Aplikazioak datu-basetik sentsoreen (irekitze-sentsorea) eta eragingailuen identifikatzaileak (entxufe adimenduna edo lanpara adimenduna) irakurtzen ditu eta arau logiko bat sortzen du JSON formatuan, etxe adimendunaren kontrolagailura bidaltzen dena. Mekanismo hau zehatzago eztabaidatuko dugu gure serieko hirugarren artikuluan, non etxe adimendun bat kudeatzeko bezeroaren aplikazioari buruz hitz egingo dugun.

Goian aipaturiko produkzio-mekanismo logikoa liburutegia erabiliz inplementatzen da RapidJSON β€” SAX analizatzailea JSON formatuan C++-n. Produkzio-arau sorta baten irakurketa eta analisi sekuentzialak aurrekarien barruan datuak alderatzeko funtzioa erraz ezartzeko aukera ematen du:

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

Hemen pGehiago β€” JSON mezu bateko gako-balio bikoteak dituen egitura, m_Arauak β€” produkzio-arauen kate-array. Sarrerako mezuaren eta ekoizpen-arauaren konparaketa funtzioan egiten da reader.Parse(arauaren korrontea, arauen kudeatzailea)Non arau-kudeatzailea Boolear eta konparazio eragileen logika duen objektua da. sRuleId β€” Arau-identifikatzaile esklusibo bat, eta horri esker, etxeko kontrolagailu adimendunen datu-basearen barruan arauak gorde eta edita daitezke. m_pEkintzak β€” Inferentzia logikoaren emaitzak dituen array bat: JSON mezuak arau-oinarriaren ondorioak dituzten eta mezuen kudeatzailera bidalitakoak, harpidedunen hariak prozesatu ahal izateko.

RapidJSON errendimendua funtzioaren parekoa da strlen(), eta sistemaren gutxieneko baliabideen eskakizunek liburutegi hau txertatutako gailuetan erabiltzeko aukera ematen dute. JSON formatuan mezuak eta arau logikoak erabiltzeari esker, etxe adimendunaren kontrolagailuaren osagai guztien artean informazio-truke sistema malgua ezar dezakezu.

Z-Wave Sentsoreak eta Eragileak

Etxe adimendun baten abantaila nagusia kanpoko inguruneko hainbat parametro independentean neurtu eta egoeraren arabera funtzio erabilgarriak bete ditzakeela da. Horretarako, sentsoreak eta eragingailuak etxe adimendunaren kontrolagailura konektatuta daude. Egungo bertsioan, protokoloa erabiliz funtzionatzen duten haririk gabeko gailuak dira Z-Olatua bereziki esleitutako maiztasun batean 869 MHz Errusiarentzat. Funtzionatzeko, sare sare batean konbinatzen dira, seinale-errepikagailuak dituena estaldura-eremua handitzeko. Gailuek energia aurrezteko modu berezi bat ere badute: denbora gehiena lo moduan pasatzen dute eta egoera aldatzen denean soilik bidaltzen dute informazioa, eta horrek bateria integratuaren iraupena nabarmen luzatu dezake.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Gaur egun, Z-Wave gailu ezberdin ugari aurki ditzakezu merkatuan. Ikus ditzagun adibide batzuk:

  1. Zipato PAN16 entxufe adimendunak parametro hauek neur ditzake: elektrizitate-kontsumoa (kWh), potentzia (W), tentsioa (V) eta korrontea (A) sare elektrikoan. Gainera, etengailu bat dauka eta horrekin konektatutako etxetresna elektrikoa kontrola dezakezu;
  2. Neo Coolcam ihes-sentsoreak isuritako likidoaren presentzia detektatzen du urruneko zundaren kontaktuak itxiz;
  3. Zipato PH-PSG01 ke-sentsorea ke-partikulak gas-analisiaren ganbera sartzen direnean abiarazten da;
  4. Neo Coolcam mugimendu-sentsoreak giza gorputzaren erradiazio infragorria aztertzen du. Horrez gain, argi sentsore bat dago (Lx);
  5. Philio PST02-A multisentsoreak tenperatura (Β°C), argia (%), atea irekitzea, pertsona baten presentzia gelan neurtzen ditu;
  6. Z-Wave USB Stick ZME E UZB1 sare-kontrolatzailea, zeinari sentsoreak konektatuta dauden.

Oso garrantzitsua da gailuak eta kontrolagailuak maiztasun berean funtzionatzea, bestela ez dute elkar ikusiko konexio unean. Gehienez 232 gailu konekta daitezke Z-Wave sareko kontrolagailu batera, nahikoa da apartamentu edo landetxe baterako. Sarearen estaldura eremua barrualdean zabaltzeko, entxufe adimenduna erabil daiteke seinale-errepikatzaile gisa.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Aurreko paragrafoan aztertutako etxeko kontrolagailu adimendunaren zerbitzariaren prozesuan, Z-Wave zerbitzaria Z-Wave gailuekin elkarreragineaz arduratzen da. Liburutegi bat erabiltzen du sentsoreetatik informazioa jasotzeko OpenZWave C++-n, Z-Wave sareko USB kontrolagailuarekin elkarreragiteko interfaze bat eskaintzen duena eta hainbat sentsore eta eragingailurekin lan egiten duena. Sentsoreak neurtutako ingurumen-parametroaren balioa Z-Wave zerbitzariak JSON mezu baten moduan erregistratzen du:

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

Ondoren, zerbitzariaren prozesuko mezu-kudeatzailera bidaltzen da, harpidedunen hariak jaso ahal izateko. Harpidedun nagusia ekoizpen logika zerbitzaria da, eta mezu-eremuen balioekin bat egiten du logiko-arauen aurrekarietan. Kontrol komandoak dituzten ondorioak mezuen kudeatzailera bidaltzen dira eta hortik Z-Wave zerbitzarira joaten dira, honek deskodetu eta Z-Wave sareko USB kontrolagailura bidaltzen ditu. Ondoren, eragingailura sartzen dira, ingurumen-objektuen egoera aldatzen duena, eta etxe adimendunak lan erabilgarria egiten du horrela.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak
(egin klik argazkian bereizmen handiago batean irekitzeko)

Z-Wave gailuak konektatzea etxeko kontrolagailu adimendunaren interfaze grafikoan egiten da. Horretarako, joan gailuen zerrenda duen orrialdera eta egin klik "Gehitu" botoian. RESTful API interfazearen bidez gehitzeko komandoa zerbitzariaren prozesuan sartzen da eta, ondoren, mezu-kudeatzaileak Z-Wave zerbitzarira bidaltzen du, eta horrek Z-Wave sareko USB kontrolagailua gailuak gehitzeko modu berezi batean jartzen du. Ondoren, Z-Wave gailuan sakatu azkar batzuk egin behar dituzu (3 sakatu 1,5 segundotan) zerbitzu-botoiari. USB kontrolagailuak gailua sarera konektatzen du eta horri buruzko informazioa Z-Wave zerbitzarira bidaltzen du. Horrek, aldi berean, sarrera berri bat sortzen du SQLite datu-basean gailu berriaren parametroekin. Zehaztutako denbora-tarte baten ondoren, interfaze grafikoa Z-Wave gailuen zerrenda orrira itzultzen da, datu-baseko informazioa irakurtzen du eta gailu berria zerrendan bistaratzen du. Gailu bakoitzak bere identifikatzaile bakarra jasotzen du, produkzio-arauetan eta hodeian lan egiten denean erabiltzen dena. Algoritmo honen funtzionamendua UML diagraman erakusten da:

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak
(egin klik argazkian bereizmen handiago batean irekitzeko)

IP kamerak konektatzea

Artikulu honetan eztabaidatzen den hodeiko etxe adimendunaren sistema hodeiko bideo-zaintza sistemaren bertsio berritzea da, egileak ere garatua, hainbat urtez merkatuan egon dena eta Errusian instalazio ugari dituena.

Hodeiko bideo-zaintza sistemetarako, arazo akutuetako bat integrazioa egin daitekeen ekipoen aukeraketa mugatua da. Hodeira konektatzeaz arduratzen den softwarea bideo-kameraren barruan instalatuta dago, eta berehala eskakizun handiak jartzen dizkio bere hardwareari: prozesadorea eta doako memoria kopurua. Honek batez ere hodeiko CCTV kameren prezio altuagoa azaltzen du IP kamera arruntekin alderatuta. Gainera, CCTV kamerak fabrikatzen dituzten enpresekin negoziazio etapa luzea behar da kameraren fitxategi-sistemara eta beharrezko garapen-tresna guztietara sarbidea izateko.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Bestalde, IP kamera moderno guztiek beste ekipo batzuekin (batez ere, bideo-grabagailuekin) elkarrekintzarako protokolo estandarrak dituzte. Horrela, protokolo estandar baten bidez konektatzen den eta IP kameretatik hodeira bideo-korronteak igortzen dituen kontrolagailu bereizi bat erabiltzeak abantaila lehiakor garrantzitsuak eskaintzen ditu hodeiko bideo-zaintza sistemetarako. Gainera, bezeroak IP kamera sinpleetan oinarritutako bideo-zaintza sistema bat instalatu badu, orduan posible izango da hura zabaltzea eta hodeiko etxe adimendun guztiz bihurtzea.

IP bideo-zaintza sistemetarako protokolorik ezagunena, gaur egun IP kameraren fabrikatzaile guztiek onartzen dute salbuespenik gabe ONVIF profila S, zeinaren zehaztapenak web-zerbitzuen deskribapen-lengoaian dauden wsdl. Tresna-kutxako utilitateak erabiltzea gXABOIA IP kamerekin lan egiten duten zerbitzuetarako iturburu-kodea sor daiteke:

$ 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

Ondorioz, "*.h" goiburuko eta iturburuko "*.cpp" fitxategi multzo bat lortzen dugu C++-n, zuzenean aplikazio batean edo aparteko liburutegi batean jar daitezkeenak eta GCC konpilatzailea erabiliz konpilatu daitezkeenak. Funtzio askoren ondorioz, kodea handia da eta optimizazio gehigarria behar du. Raspberry Pi 3 ereduko B+ mikroordenagailuak errendimendu nahikoa du kode hau exekutatzeko, baina kodea beste plataforma batera eraman beharra badago, beharrezkoa da prozesadorearen arkitektura eta sistemaren baliabide egokiak hautatzea.

ONVIF estandarra onartzen duten IP kamerak, sare lokal batean funtzionatzen dutenean, multicast talde berezi batera konektatzen dira helbidearekin 239.255.255.250. Protokolo bat dago WS-Aurkikuntza, sare lokalean gailuen bilaketa automatizatzeko aukera ematen duena.

Etxe adimendunaren kontrolagailuaren interfaze grafikoak IP kameren bilaketa funtzio bat ezartzen du PHPn, eta hori oso erosoa da web zerbitzuekin XML mezuen bidez elkarreraginean. Menuko elementuak hautatzerakoan Gailuak > IP Kamerak > Eskaneatzea IP kamerak bilatzeko algoritmoa abiarazten da, emaitza taula baten moduan bistaratuz:

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak
(egin klik argazkian bereizmen handiago batean irekitzeko)

Kontrolagailuari kamera bat gehitzen duzunean, hodeiarekin elkarreragituko duen ezarpenak zehaztu ditzakezu. Etapa honetan ere, automatikoki esleitzen zaio gailuaren identifikatzaile esklusibo bat, gero hodeian erraz identifikatu ahal izateko.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Ondoren, mezu bat sortzen da JSON formatuan gehitutako kameraren parametro guztiak dituena eta RESTful API komandoaren bidez etxe adimendunaren kontrolagailuaren zerbitzariaren prozesura bidaltzen da, non kameraren parametroak deskodetzen diren eta barneko SQLite datu-basean gordetzen diren, eta prozesatzeko hari hauek abiarazteko ere erabiltzen da:

  1. RTSP konexioa ezartzea bideo eta audio korronteak jasotzeko;
  2. G.711 mu-Law, G.711 A-Law, G.723 eta abar formatuetako audioa transkodetzea. AAC formatura;
  3. bideo-korronteak H.264 formatuan eta audioa AAC formatuan transkodetzea FLV edukiontzi batean eta hodeira transmititzea RTMP protokoloaren bidez;
  4. ONVIF protokoloaren bidez IP kameraren mugimendu-detektagailuaren amaierako puntuarekin konexioa ezartzea eta aldian-aldian galdetzea;
  5. aldian-aldian koadro txikien aurrebista-irudia sortu eta hodeira bidaltzea MQTT protokoloaren bidez;
  6. bideo- eta audio-korronteen tokiko grabaketa MP4 formatuan fitxategi bereizi moduan etxeko kontrolagailu adimendun baten SD edo Flash txartelean.

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Kamerekin konexio bat ezartzeko, zerbitzariaren prozesuan bideo-korronteak transkodetu, prozesatu eta grabatzeko, liburutegiko funtzioak erabiltzen dira. FFmpeg 4.1.0.

Errendimendua probatzeko esperimentuan, 3 kamera konektatu ziren kontrolagailura:

  1. HiWatch DS-I114W (bereizmena - 720p, konpresio formatua - H.264, bit-abiadura - 1 Mb/s, soinua G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (bereizmena - 1080p, konpresio formatua - H.264, bit-tasa - 1 Mb/s, soinurik gabe);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (bereizmena - 1080p, konpresio formatua - H.264, bit-abiadura - 1.5 Mb/s, AAC audioa).

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Hiru korronteak aldi berean atera ziren hodeira, audio transkodeketa kamera bakarretik egin zen eta tokiko artxiboaren grabazioa desgaitu zen. PUZaren karga %5ekoa zen gutxi gorabehera, RAMaren erabilera 32 MB (prozesu bakoitzeko), 56 MB (guztira OS barne).

Horrela, gutxi gorabehera, 20 - 30 kamera konekta daitezke etxe adimendunaren kontrolagailura (bereizmenaren eta bit-abiaduraren arabera), eta hori nahikoa da hiru solairuko txabola edo biltegi txiki baterako bideo-zaintza sistema baterako. Errendimendu handiagoa eskatzen duten zereginetarako, nukleo anitzeko Intel prozesadorearekin eta Linux Debian Sarge OS dituen nettop bat erabil dezakezu. Kontroladorea proba-eragiketa egiten ari da, eta haren errendimenduari buruzko datuak eguneratuko dira.

Hodeiarekin interakzioa

Hodeian oinarritutako etxe adimendun batek erabiltzailearen datuak (bideo eta sentsoreen neurketak) hodeian gordetzen ditu. Hodeiko biltegiratzearen arkitektura zehatzago eztabaidatuko da gure serieko hurrengo artikuluan. Orain hitz egin dezagun etxe adimendunaren kontrolagailutik hodeira informazio mezuak transmititzeko interfazeari buruz.

Konektatutako gailuen egoerak eta sentsoreen neurketak protokoloaren bidez transmititzen dira MQTT, gauzen Interneten proiektuetan maiz erabiltzen dena, sinpletasunagatik eta eraginkortasun energetikoagatik. MQTT-k bezero-zerbitzariaren eredua erabiltzen du, non bezeroak broker barruan gai zehatzetara harpidetzen diren eta beren mezuak argitaratzen dituzten. Bitartekariak mezuak bidaltzen dizkie harpidedun guztiei QoS (Zerbitzuaren Kalitate) mailak zehaztutako arauen arabera:

  • QoS 0 - gehienez behin (ez dago entrega-bermerik);
  • QoS 1 - gutxienez behin (bidalketa berrespenarekin);
  • QoS 2 - zehatz-mehatz behin (bidalketa berrespen gehigarriarekin).

Gure kasuan, erabiltzen dugu Eklipse Eltxoa. Gaiaren izena etxe adimendunaren kontrolagailuaren identifikatzaile bakarra da. Zerbitzariaren prozesuko MQTT bezeroak gai honetara harpidetzen du eta mezuen kudeatzailetik datozen JSON mezuak itzultzen ditu. Aitzitik, MQTT artekariaren mezuak mezuen kudeatzailera bidaltzen ditu, eta harpidedunei multiplexatzen ditu zerbitzariaren prozesuaren barruan:

Hodeiko Etxe Adimenduna. 1. zatia: Kontroladorea eta sentsoreak

Etxe adimendunaren kontrolagailuaren egoerari buruzko mezuak transmititzeko, gordetako mezuen mekanismoa erabiltzen da atxikitako mezuak MQTT protokoloa. Horri esker, birkonexioen denbora behar bezala kontrola dezakezu elektrizitate-hutsetan.

MQTT bezeroa liburutegiaren ezarpenean oinarrituta garatu zen Eklipsea Paho C++ hizkuntzan.

H.264 + AAC multimedia-korronteak RTMP protokoloaren bidez bidaltzen dira hodeira, non multimedia-zerbitzarien multzo bat arduratzen den horiek prozesatu eta gordetzeaz. Klusterrean karga modu egokian banatzeko eta gutxien kargatutako multimedia zerbitzaria hautatzeko, etxeko kontrolagailu adimendunak aurretiazko eskaera bat egiten dio hodeiko karga-orekatzaileari eta horren ostean soilik bidaltzen du multimedia-korrontea.

Ondorioa

Artikuluak Raspberry Pi 3 B+ mikroordenagailuan oinarritutako etxeko kontrolagailu adimendun baten inplementazio espezifiko bat aztertu zuen, informazioa jaso, prozesatu eta kontrolatzeko ekipoak Z-Wave protokoloaren bidez, IP kamerekin elkarreragiteko ONVIF protokoloaren bidez eta datuak trukatu ditzakeena. komandoak hodeiarekin zerbitzua MQTT eta RTMP protokoloen bidez. Produkzio-motor logiko bat garatu da JSON formatuan aurkeztutako arau eta gertakari logikoen konparazioan oinarrituta.

Etxe adimendunaren kontrolagailua proban ari da Moskuko eta Mosku eskualdeko hainbat gunetan.

Kontrolagailuaren hurrengo bertsioak beste gailu mota batzuk konektatzeko asmoa du (RF, Bluetooth, WiFi, kablea). Erabiltzaileen erosotasunerako, sentsoreak eta IP kamerak konektatzeko prozedura mugikorrerako aplikaziora transferituko da. Zerbitzariaren prozesuaren kodea optimizatzeko eta softwarea sistema eragilera eramateko ideiak ere badaude openwrt. Horri esker, aparteko kontrolagailu batean gorde eta etxe adimendun baten funtzionalitateak etxeko bideratzaile arrunt batera transferituko dituzu.

Iturria: www.habr.com

Gehitu iruzkin berria