Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Hodiaŭ, danke al la rapida disvolviĝo de mikroelektroniko, komunikaj kanaloj, Interretaj teknologioj kaj Artefarita Inteligenteco, la temo de inteligentaj hejmoj fariĝas pli kaj pli grava. La homa hejmo spertis gravajn ŝanĝojn ekde la Ŝtonepoko, kaj en la epoko de la Industria Revolucio 4.0 kaj la Interreto de Aĵoj, ĝi fariĝis komforta, funkcia kaj sekura. Venas al la merkato solvoj, kiuj igas apartamenton aŭ kamparan domon en kompleksajn informsistemojn kontrolitajn de ie ajn en la mondo per inteligenta telefono. Krome, por hom-maŝino interago, kono de programlingvoj ne plu necesas - danke al parolrekono kaj sintezaj algoritmoj, homo parolas kun inteligenta hejmo en sia gepatra lingvo.

Iuj inteligentaj hejmaj sistemoj nuntempe sur la merkato estas logika evoluo de nubaj videogvatsistemoj, kies programistoj rimarkis la bezonon de ampleksa solvo ne nur por monitorado, sed ankaŭ por administri forajn objektojn.

Via atento estas invitita al serio de tri artikoloj, kiuj parolos pri ĉiuj ĉefaj komponantoj de la nuba inteligenta hejma sistemo, persone disvolvita de la aŭtoro kaj funkciigita. La unua artikolo estas dediĉita al la fina klienta ekipaĵo instalita ene de la inteligenta hejmo, la dua temas pri la arkitekturo de la nuba stokado kaj datumtraktadsistemo, kaj, finfine, la tria temas pri la klienta aplikaĵo por administri la sistemon per poŝtelefono. kaj senmovaj aparatoj.

Inteligenta hejma ekipaĵo

Unue, ni parolu pri kiel fari inteligentan hejmon el ordinara apartamento, somerdomo aŭ dometo. Por fari tion, kiel regulo, necesas meti la jenajn ekipaĵojn en la loĝejon:

  1. sensiloj mezurantaj diversajn parametrojn de la ekstera medio;
  2. aktuarioj agantaj sur eksteraj objektoj;
  3. regilo kiu faras kalkulojn laŭ la mezuradoj de la sensiloj kaj la subesta logiko, kaj eldonas komandojn al la aktuarioj.

La sekva figuro montras diagramon de inteligenta hejmo, kiu enhavas akvofluajn sensilojn (1) en la banĉambro, temperaturon (2) kaj lumigadon (3) sensilojn en la dormoĉambro, inteligentan ingon (4) en la kuirejo kaj videogvatadon. fotilo (5) en la koridoro.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Nuntempe, sendrataj sensiloj funkciigantaj sur la protokoloj RF433, Z-Wave, ZigBee, Bluetooth kaj WiFi estas vaste uzataj. Iliaj ĉefaj avantaĝoj estas facileco de instalado kaj uzo, same kiel malalta kosto kaj fidindeco. fabrikistoj klopodas alporti siajn aparatojn al la amasmerkato kaj disponigi ilin al la meza uzanto.

Sensiloj kaj aktuarioj, kiel regulo, estas konektitaj per sendrata interfaco al la inteligenta hejma regilo (6) - speciala mikrokomputilo, kiu kombinas ĉiujn ĉi tiujn aparatojn en ununuran reton kaj kontrolas ilin.

Tamen, iuj solvoj povas kombini sensilon, aktuarion kaj regilon samtempe. Ekzemple, inteligenta ŝtopilo povas esti programita por ŝalti aŭ malŝalti laŭ horaro, kaj nuba videogvata fotilo povas registri video sur moviĝ-detektila signalo. En la plej simplaj kazoj, vi povas fari sen aparta regilo, sed por krei flekseblan sistemon kun multaj scenaroj, necesas.

Por konekti la inteligentan hejman regilon al la tutmonda reto, oni povas uzi regulan interretan enkursigilon (7), kiu delonge fariĝis konata hejma aparato en iu ajn hejmo. Estas alia argumento favore al la inteligenta hejma regilo - se la konekto al Interreto estas perdita, tiam la inteligenta hejmo daŭre funkcios normale danke al la logika bloko konservita ene de la regilo, kaj ne en la nuba servo.

inteligenta hejma regilo

La regilo por la nuba inteligenta hejma sistemo diskutita en ĉi tiu artikolo estas evoluigita surbaze de unu-tabulo mikrokomputilo. Raspberry Pi 3 modelo B+, kiu estis liberigita en marto 2018 kaj havas sufiĉajn rimedojn kaj efikecon por inteligentaj hejmaj taskoj. Ĝi inkluzivas kvar-kernan procesoron Cortex-A53 sur 64-bita ARMv8-A arkitekturo, horloĝita je 1.4 GHz, same kiel 1 GB da RAM, Wi-Fi 802.11ac, Bluetooth 4.2 kaj gigabita Ethernet-adaptilo funkcianta per USB 2.0. buso.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

La muntado de la regilo estas tre simpla - la mikrokomputilo (1) estas instalita en plasta skatolo (2), tiam 8 GB-microSD-memorkarto kun programaro (3) kaj USB-regilo Z-Wave (4) estas instalitaj en la taŭgaj fendoj. La inteligenta hejma regilo estas konektita al la reto per elektra adaptilo 5V, 2.1A (5) kaj USB-mikro-USB-kablo (6). Ĉiu regilo havas unikan identigan numeron, kiu estas skribita en la agorda dosiero ĉe la unua komenco kaj estas postulata por interagi kun nubaj inteligentaj hejmaj servoj.

La programaro de inteligenta hejma regilo estis evoluigita de la aŭtoro de ĉi tiu artikolo surbaze de la operaciumo Linukso Raspbian Stretch. Ĝi konsistas el la sekvaj ĉefaj subsistemoj:

  • servila procezo por interagado kun inteligenta hejma ekipaĵo kaj la nubo;
  • grafika uzantinterfaco por agordi la agordojn kaj operaciajn parametrojn de la regilo;
  • datumbazo por stoki regilon agordon.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Datumbazo inteligenta hejma regilo estas efektivigita surbaze de enigita DBMS SQLite kaj estas dosiero sur la SD-karto kun sistema programaro. Ĝi funkcias kiel regila agorda stokado - informoj pri la konektita ekipaĵo kaj ĝia nuna stato, bloko de logikaj produktadreguloj, same kiel informoj postulantaj indeksadon (ekzemple, lokaj videoarkivaj dosiernomoj). Kiam la regilo estas rekomencita, ĉi tiu informo estas konservita, kio ebligas restarigi la funkciecon de la regilo en kazo de elektropaneoj.

Grafika interfaco inteligenta hejma regilo estas evoluigita en PHP 7 uzante mikrokadron svelta. La retservilo respondecas pri funkciado de la aplikaĵo. lumotpd, kiu estas ofte uzata en enkonstruitaj aparatoj pro sia bona agado kaj malaltaj rimedpostuloj.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj
(Alklaku sur bildo por malfermi en pli granda rezolucio)

La ĉefa funkcio de la GUI estas konekti inteligentan hejman ekipaĵon (IP-fotiloj kaj sensiloj) al la regilo. La TTT-apliko legas la agordon kaj aktualan staton de la regilo kaj aparatoj konektitaj al ĝi de la datumbazo SQLite. Por ŝanĝi la regulan agordon, ĝi sendas kontrolkomandojn en JSON-formato per la RESTful API de la servila procezo.

Servila procezo

Servila procezo - ŝlosila komponanto, kiu plenumas la tutan ĉefan laboron pri aŭtomatigo de informaj procezoj, kiuj formas la bazon de inteligenta hejmo: ricevado kaj prilaborado de sensaj datumoj, eldonado de kontrolaj agoj depende de la subesta logiko. La celo de la servila procezo estas interagi kun inteligenta hejma ekipaĵo, ekzekuti produktadajn logikajn regulojn, ricevi kaj prilabori komandojn de la grafika interfaco kaj la nubo. La servila procezo en la konsiderata inteligenta hejma regilo estas efektivigita kiel plurfadena aplikaĵo evoluigita en C++ kaj lanĉita kiel aparta servo sistemo operaciumo Linukso Raspbian.

La ĉefaj blokoj de la servila procezo estas:

  1. Mesaĝmanaĝero;
  2. IP-fotila servilo;
  3. Z-Wave aparato servilo;
  4. Servilo de produktado logikaj reguloj;
  5. Datumbazo de agordo de la regilo kaj bloko de logikaj reguloj;
  6. RESTful API-servilo por interagado kun la grafika interfaco;
  7. MQTT-kliento por interagado kun la nubo.

Servilaj procezblokoj estas efektivigitaj kiel apartaj riveretoj, informoj inter kiuj estas transdonitaj en la formo de mesaĝoj en JSON-formato (aŭ datumstrukturoj reprezentantaj ĉi tiun formaton en la procezmemoro).

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

La ĉefa komponanto de la servila procezo estas mesaĝmanaĝero, kiu direktas JSON-mesaĝojn al ĉiuj blokoj en la servila procezo. La specoj de informkampoj en JSON-mesaĝo kaj la valoroj kiujn ili povas preni estas listigitaj en la tabelo:

deviceType
Protokolo
mesaĝoTipo
deviceState
komando

fotilo
onvif
sensorData
on
streaming (ŝaltita/malŝaltita)

Sensilo
zwave
komando
for
registrado (ŝaltita/malŝaltita)

efikisto
mqtt
businessLogicRule
streaming (ŝaltita/malŝaltita)
aparato (Aldoni/Forigi)

komerca Logiko
agordadatumoj
registrado (ŝaltita/malŝaltita)

bluetooth
deviceState
eraro

wifi

rf

Ekzemple, mesaĝo de fotila moviĝ-detektilo aspektas jene:

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

Logiko de produktado

Por ricevi aŭ sendi mesaĝon de la sendanto, la servila procezbloko abonas mesaĝojn de aparta tipo. Abono estas produktada logika regulo de la tipo "Se... tiam...", reprezentita en JSON-formato, kaj ligo al la mesaĝtraktilo ene de la servila procezbloko. Ekzemple, por ke la IP-fotila servilo ricevu komandojn de la GUI kaj la nubo, vi devas aldoni la sekvan regulon:

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

Se la kondiĉoj specifitaj en precedenco (maldekstra flanko) reguloj estas veraj, do konsekvenca (dekstra flanko) reguloj, kaj la prizorganto ricevas aliron al la korpo de la JSON-mesaĝo. La precedenco subtenas logikajn funkciigistojn kiuj komparas JSON-ŝlosil-valorajn parojn:

  1. estas egala al "egala";
  2. ne egala al "ne_egala";
  3. malpli ol "malpli";
  4. pli "pli granda";
  5. malpli ol aŭ egala al "malpli_aŭ_egala";
  6. pli granda ol aŭ egala al "pligranda_aŭ_egala".

La rezultoj de la komparo povas esti interligitaj uzante buleajn algebrofunkciigistojn:

  1. Kaj "kaj";
  2. AŬ "aŭ";
  3. NE "ne".

Tiel, skribante operatorojn kaj operantojn en pola notacio, oni povas formi sufiĉe kompleksajn kondiĉojn kun granda nombro da parametroj.

La ekzakte sama mekanismo, bazita sur JSON-mesaĝoj kaj produktadaj reguloj en JSON-formato, estas uzata en la produktada logika servila bloko por reprezenti scion kaj realigi inferencon uzante sensilajn datumojn de inteligentaj hejmaj sensiloj.

La uzanto, uzante poŝtelefonan aplikaĵon, kreas scenarojn, laŭ kiuj inteligenta hejmo devus funkcii. Ekzemple: "Se la sensilo por malfermi la frontpordon ekfunkciiĝas, tiam ŝaltu la lumon en la koridoro". La aplikaĵo legas la identigilojn de sensiloj (malferma sensilo) kaj aktuariojn (inteligenta ingo aŭ inteligenta lampo) el la datumbazo kaj generas logikan regulon en formato JSON, kiu estas sendita al la inteligenta hejma regilo. Ĉi tiu mekanismo estos diskutita pli detale en la tria artikolo de nia ciklo, kie ni parolos pri la klienta aplikaĵo por administri inteligentan hejmon.

La mekanismo de produktadlogiko diskutita supre estas efektivigita uzante la bibliotekon Rapida JSON — SAX-analizilo de JSON-formato en C++-lingvo. Sinsekva legado kaj analizado de aro de produktadreguloj faciligas efektivigi datuman kongruan funkcion ene de precedencoj:

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

estas pFakto - strukturo enhavanta ŝlosil-valorajn parojn de JSON-mesaĝo, m_Reguloj — korda tabelo de produktadaj reguloj. La kongruo de la envenanta mesaĝo kaj la produktada regulo estas farita en la funkcio leganto.Parse(ruleStream, ruleHandler)kie ruleHandler estas objekto enhavanta la logikon de buleaj operatoroj kaj komparaj operatoroj. sRuleId - unika regulidentigilo, dank'al kiu eblas konservi kaj redakti regulojn en la datumbazo de inteligenta hejma regilo. m_pAgoj - tabelo kun la rezultoj de inferenco: JSON-mesaĝoj enhavantaj sekvojn de la regulbazo kaj senditaj plu al la mesaĝadministranto por ke abonantaj fadenoj povu prilabori ilin.

La agado de RapidJSON estas komparebla al la funkcio strlen(), kaj la minimumaj sistemaj rimedpostuloj permesas al ĉi tiu biblioteko esti uzata en enigitaj aparatoj. La uzo de mesaĝoj kaj logikaj reguloj en formato JSON permesas efektivigi flekseblan sistemon de informa interŝanĝo inter ĉiuj komponantoj de la inteligenta hejma regilo.

Sensiloj kaj aktuarioj Z-Wave

La ĉefa avantaĝo de inteligenta hejmo estas, ke ĝi povas sendepende mezuri diversajn parametrojn de la ekstera medio kaj plenumi utilajn funkciojn depende de la situacio. Por fari tion, sensiloj kaj aktuarioj estas konektitaj al la inteligenta hejma regilo. En la nuna versio, ĉi tiuj estas sendrataj aparatoj funkciigantaj sub la protokolo Z-Ondo sur dediĉita frekvenco 869 MHz Por Rusio. Por ilia laboro, ili estas kombinitaj en maŝreton, en kiu estas signalaj ripetiloj por pliigi la kovradon. La aparatoj ankaŭ havas specialan energiŝparan reĝimon - ili pasigas la plej grandan parton de sia tempo en dormreĝimo kaj sendas informojn nur kiam ilia stato ŝanĝiĝas, kio povas signife plilongigi la vivon de la enkonstruita baterio.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Estas sufiĉe multaj malsamaj Z-Wave-aparatoj sur la merkato hodiaŭ. Kiel ekzemplo, konsideru kelkajn:

  1. La inteligenta ingo Zipato PAN16 povas mezuri la sekvajn parametrojn: elektrokonsumo (kWh), potenco (W), tensio (V) kaj kurento (A) en la reto. Ĝi ankaŭ havas enkonstruitan ŝaltilon, per kiu vi povas kontroli la konektitan elektran aparaton;
  2. La liksensilo Neo Coolcam detektas la ĉeeston de disverŝita likvaĵo fermante la kontaktojn de la fora sondilo;
  3. La fum-detektilo Zipato PH-PSG01 ekfunkciiĝas kiam fumpartikloj eniras la gasan analizilon;
  4. La movsensilo Neo Coolcam analizas la infraruĝan radiadon de la homa korpo. Aldone, ekzistas lumsensilo (Lx);
  5. Multisensor Philio PST02-A mezuras temperaturon (°C), lumigadon (%), pordon malfermon, homan ĉeeston en la ĉambro;
  6. Reto-regilo Z-Wave USB Stick ZME E UZB1, al kiu la sensiloj estas konektitaj.

Estas tre grave, ke la aparatoj kaj la regilo funkcias kun la sama ofteco, alie ili, en simpla maniero, ne vidos unu la alian en la momento de la konekto. Ĝis 232 aparatoj povas esti konektitaj al unu retregilo Z-Wave, kio sufiĉas por apartamento aŭ kampara domo. Por vastigi la retan kovradon endome, inteligenta ingo povas esti uzata kiel signala ripetilo.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

En la procezo de servilo de inteligenta hejma regilo diskutita en la antaŭa alineo, la servilo Z-Wave respondecas pri interagado kun aparatoj Z-Wave. Por ricevi informojn de sensiloj, ĝi uzas la bibliotekon OpenZWave en C++, kiu disponigas interfacon por interagado kun Z-Wave reto USB-regilo kaj funkcias kun gamo da sensiloj kaj aktuarioj. La valoro de la media parametro mezurita de la sensilo estas skribita de la Z-Wave-servilo kiel JSON-mesaĝo:

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

Ĝi tiam estas sendita al la mesaĝmanaĝero de la servilprocezo tiel ke abonantaj fadenoj povas ricevi ĝin. La ĉefa abonanto estas la produktada logika servilo, kiu kongruas kun la mesaĝokampaj valoroj en la precedencoj de la logikreguloj. La konkludaj rezultoj enhavantaj kontrolkomandojn estas senditaj reen al la mesaĝmanaĝero kaj de tie al la Z-Wave-servilo, kiu malkodas ilin kaj sendas ilin al la Z-Wave-reto USB-regilo. Tiam ili eniras la plenuman aparaton, kiu ŝanĝas la staton de objektoj en la ekstera medio, kaj la inteligenta hejmo, tiel, faras utilan laboron.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj
(Alklaku sur bildo por malfermi en pli granda rezolucio)

Konekto de Z-Wave-aparatoj estas farita en la grafika interfaco de la inteligenta hejma regilo. Por fari tion, iru al la paĝo kun la listo de aparatoj kaj alklaku la butonon "Aldoni". La aldona komando per la RESTful API-interfaco eniras la servilan procezon kaj tiam estas sendita de la mesaĝmanaĝero al la Z-Wave-servilo, kiu metas la Z-Wave USB-regilon en specialan reĝimon por aldoni aparatojn. Poste, sur la aparato Z-Wave, vi devas fari serion da rapidaj premoj (3 premoj ene de 1,5 sekundoj) de la servobutono. La USB-regilo konektas la aparaton al la reto kaj sendas informojn pri ĝi al la servilo Z-Wave. Tio, siavice, kreas novan rekordon en la datumbazo SQLite kun la parametroj de la nova aparato. La grafika interfaco post la specifita tempintervalo revenas al la listo de aparatoj de Z-Wave, legas informojn el la datumbazo kaj montras novan aparaton en la listo. Samtempe, ĉiu aparato ricevas sian propran unikan identigilon, kiu estas uzata en la reguloj de produktado-inferenco kaj kiam ĝi laboras en la nubo. La operacio de ĉi tiu algoritmo estas montrita en la UML-diagramo:

Nubo Smart Home. Parto 1: Regilo kaj sensiloj
(Alklaku sur bildo por malfermi en pli granda rezolucio)

Konektante IP-fotilojn

La nuba inteligenta hejma sistemo diskutita en ĉi tiu artikolo estas ĝisdatigo de la nuba videogvatsistemo, ankaŭ evoluigita de la aŭtoro, kiu estas sur la merkato dum pluraj jaroj kaj havas multajn instalaĵojn en Rusio.

Por nubaj videogvatsistemoj, unu el la akraj problemoj estas la limigita elekto de ekipaĵo per kiu integriĝo povas esti farita. La programaro respondeca por konekti al la nubo estas instalita ene de la videocámara, kiu tuj trudas seriozajn postulojn al sia aparataro-plenigo - la procesoro kaj la kvanto de libera memoro. Ĉi tio estas la ĉefa kialo de la pli alta prezo de nubaj gvataj fotiloj kompare kun konvenciaj IP-fotiloj. Krome, longa etapo de intertraktadoj kun CCTV fotilfirmaoj estas postulata por akiri aliron al la dosiersistemo de la fotilo kaj ĉiujn necesajn evoluilojn.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Aliflanke, ĉiuj modernaj IP-fotiloj havas normajn protokolojn por interagado kun aliaj ekipaĵoj (aparte, videoregistriloj). Tiel, la uzo de aparta regilo, kiu konektas per norma protokolo kaj dissendas videofluojn de IP-fotiloj al la nubo, disponigas signifajn konkurencivajn avantaĝojn por nubaj videogvatsistemoj. Plie, se la kliento jam instalis videogvatsistemon bazitan sur simplaj IP-fotiloj, tiam eblos vastigi ĝin kaj igi ĝin plentaŭga nuba inteligenta hejmo.

La plej populara protokolo por IP-videogvatsistemoj, nun subtenata de ĉiuj IP-fotilaj fabrikistoj sen escepto, estas Profilo ONVIF S, kies specifoj ekzistas en la Retaj Servoj Priskriba Lingvo wsdl. Uzante la ilojn de la ilaro gSAPO eblas generi la fontkodon de servoj laborantaj kun IP-fotiloj:

$ 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

Kiel rezulto, ni ricevas aron da kaplinio "*.h" kaj fonto "*.cpp" dosieroj en la lingvo C++, kiuj povas esti metitaj rekte en aplikaĵon aŭ apartan bibliotekon kaj kompilitaj per la GCC-kompililo. Pro la multaj funkcioj, la kodo estas granda kaj postulas plian optimumigon. La mikrokomputilo Raspberry Pi 3 modelo B+ havas sufiĉan rendimenton por ekzekuti ĉi tiun kodon, sed se necesos porti la kodon al alia platformo, necesas elekti la ĝustan procesoran arkitekturon kaj sistemajn rimedojn.

IP-fotiloj, kiuj subtenas la ONVIF-normon, kiam funkcias en loka reto, estas konektitaj al speciala multirolantaro kun la adreso 239.255.255.250. Estas protokolo WS Malkovro, kiu permesas vin aŭtomatigi la serĉon de aparatoj en la loka reto.

En la grafika interfaco de la inteligenta hejma regilo, la funkcio serĉi IP-fotilojn en la PHP-lingvo estas efektivigita, kio estas tre oportuna dum interagado kun retservoj per XML-mesaĝoj. Kiam vi elektas menueroj Aparatoj > IP Fotiloj > Skanado la algoritmo por serĉi IP-fotilojn estas lanĉita, montrante la rezulton en formo de tabelo:

Nubo Smart Home. Parto 1: Regilo kaj sensiloj
(Alklaku sur bildo por malfermi en pli granda rezolucio)

Aldonante fotilon al la regilo, vi povas specifi la agordojn laŭ kiuj ĝi interagos kun la nubo. Ankaŭ en ĉi tiu etapo, ĝi estas aŭtomate asignita unika aparato-identigilo, per kiu ĝi povas esti facile identigita ene de la nubo estonte.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Poste, mesaĝo estas generita en JSON-formato enhavanta ĉiujn parametrojn de la aldonita fotilo kaj sendita al la servila procezo de la inteligenta hejma regilo per la komando RESTful API, kie la fotilaj parametroj estas malkoditaj kaj stokitaj en la interna datumbazo SQLite, kaj estas ankaŭ uzata por lanĉi la sekvajn prilaborajn fadenojn:

  1. establante RTSP-konekton por ricevi vidbendajn kaj aŭdajn fluojn;
  2. audio-transkodado de G.711 mu-Law, G.711 A-Law, G.723, ktp. al AAC-formato;
  3. transkodi videofluojn en H.264-formato kaj audio en AAC-formato en FLV-ujon kaj translokigi ĝin al la nubo per la RTMP-protokolo;
  4. establante ligon kun la finpunkto de la moviĝ-detektilo de la IP-fotilo uzante la ONVIF-protokolon kaj periode sondante ĝin;
  5. periode generante bildeton antaŭrigardan bildon (antaŭrigardon) kaj sendante ĝin al la nubo uzante la MQTT-protokolon;
  6. loka registrado de video- kaj audio-fluoj kiel apartaj dosieroj en MP4-formato sur la SDa aŭ Flash-karto de la inteligenta hejma regilo.

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Por establi ligon kun fotiloj, transkodi, prilabori kaj registri videofluojn en la servila procezo, funkcioj de la biblioteko estas uzataj. FFmpeg 4.1.0.

En la agado-testa eksperimento, 3 fotiloj estis konektitaj al la regilo:

  1. HiWatch DS-I114W (rezolucio - 720p, kunprema formato - H.264, bitrapideco - 1 Mb/s, sono G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (rezolucio - 1080p, kunprema formato - H.264, bitrapideco - 1 Mb / s, sen sono);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (rezolucio - 1080p, kunprema formato - H.264, bitrapideco - 1.5 Mb/s, AAC-aŭdio).

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Ĉiuj tri riveretoj estis samtempe eligitaj al la nubo, aŭdio estis transkodita de nur unu fotilo, kaj loka arkivregistrado estis malŝaltita. La CPU-ŝarĝo estis ĉirkaŭ 5%, la RAM-uzado estis 32 MB (po procezo), 56 MB (totalo kun la OS).

Tiel, ĉirkaŭ 20-30 fotiloj povas esti konektitaj al la inteligenta hejma regilo (depende de rezolucio kaj bitrateco), kio sufiĉas por videogvatsistemo de trietaĝa dometo aŭ malgranda magazeno. En taskoj kie alta rendimento estas postulata, vi povas uzi nettop kun multkerna Intel-procesoro kaj Linukso Debian Sarge. La regilo nuntempe spertas provan operacion, kaj datumoj pri la agado de sia laboro estos specifitaj.

Interago kun la nubo

Nuba inteligenta hejmo stokas uzantajn datumojn (vidbendaj kaj sensilmezuradoj) en la nubo. La arkitekturo de nuba stokado estos diskutita pli detale en la sekva artikolo de nia serio. Nun ni parolu pri la interfaco por transdoni informajn mesaĝojn de la inteligenta hejma regilo al la nubo.

La statoj de konektitaj aparatoj kaj sensilmezuradoj estas elsenditaj per la protokolo MQTT, kiu estas ofte uzata en projektoj de Interreto de Aĵoj pro sia simpleco kaj energiefikeco. MQTT uzas klient-servilan modelon kie klientoj abonas certajn temojn ene de la makleristo kaj publikigas siajn mesaĝojn. La makleristo sendas mesaĝojn al ĉiuj abonantoj laŭ la reguloj determinitaj de la nivelo QoS (Kvalito de Servo):

  • QoS 0 - maksimume unufoje (neniu garantio de livero);
  • QoS 1 - almenaŭ unufoje (kun konfirmo de livero);
  • QoS 2 - ekzakte unufoje (kun plia konfirmo de livero).

En nia kazo, la broker MQTT estas Eklipsa Moskito. La temonomo estas la unika identigilo de la inteligenta hejma regilo. La MQTT-kliento ene de la servila procezo abonas ĉi tiun temon kaj tradukas al ĝi JSON-mesaĝojn venantajn de la mesaĝ-sendilo. Kaj inverse, mesaĝoj de la MQTT-makleristo estas plusenditaj al la mesaĝmanaĝero, kiu tiam multiplexas ilin al siaj abonantoj ene de la servila procezo:

Nubo Smart Home. Parto 1: Regilo kaj sensiloj

Por sendi mesaĝojn pri la stato de la inteligenta hejma regilo, la mekanismo de stokitaj mesaĝoj estas uzata. retenis mesaĝojn MQTT-protokolo. Ĉi tio ebligas al vi ĝuste spuri la momentojn de rekonekto en kazo de elektropaneoj.

La MQTT-kliento estis evoluigita surbaze de la efektivigo de la biblioteko Eklipso Paho en C++.

H.264 + AAC-komunikiloj estas senditaj al la nubo per la RTMP-protokolo, kie amaso da amaskomunikilaj serviloj respondecas pri ilia prilaborado kaj konservado. Por optimuma ŝarĝa distribuo en la areto kaj elekto de la malplej ŝarĝita amaskomunikila servilo, la inteligenta hejma regilo faras preparan peton al la nuba ŝarĝbalancilo kaj nur tiam sendas la amaskomunikilaron.

konkludo

La artikolo konsideris unu specifan efektivigon de inteligenta hejma regilo bazita sur la mikrokomputilo Raspberry Pi 3 B+, ​​kiu povas ricevi, prilabori informojn kaj kontroli ekipaĵojn per la protokolo Z-Wave, interagi kun IP-fotiloj per la protokolo ONVIF kaj ankaŭ interŝanĝi datumojn kaj komandoj kun la nuba servo per MQTT kaj RTMP-protokoloj. Produkta logika motoro estis evoluigita surbaze de komparo de logikaj reguloj kaj faktoj prezentitaj en JSON-formato.

Nun la inteligenta hejma regilo spertas provan operacion ĉe pluraj instalaĵoj en Moskvo kaj la Moskva regiono.

En la sekva versio de la regilo, estas planite konekti aparatojn de aliaj tipoj (RF, Bluetooth, WiFi, kablita). Por komforto de uzantoj, la proceduro por konekti sensilojn kaj IP-fotilojn estos translokigita al la movebla aplikaĵo. Estas ankaŭ ideoj por optimumigi la servilan procezkodon kaj porti programaron al la operaciumo openwrt. Ĉi tio ŝparos en aparta regilo kaj transdonos la funkciojn de inteligenta hejmo al regula hejma enkursigilo.

fonto: www.habr.com

Aldoni komenton