Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Loni, o ṣeun si idagbasoke iyara ti microelectronics, awọn ikanni ibaraẹnisọrọ, awọn imọ-ẹrọ Intanẹẹti ati Imọ-ọgbọn Artificial, koko-ọrọ ti awọn ile ti o gbọngbọn ti di diẹ sii ti o yẹ. Ile eniyan ti ṣe awọn ayipada pataki lati igba Stone Age ati ni akoko ti Iyika Iṣẹ 4.0 ati Intanẹẹti ti Awọn nkan, o ti ni itunu, iṣẹ ṣiṣe ati ailewu. Awọn ojutu n bọ si ọja ti o tan iyẹwu kan tabi ile orilẹ-ede kan si awọn ọna ṣiṣe alaye eka ti iṣakoso lati ibikibi ni agbaye nipa lilo foonuiyara kan. Pẹlupẹlu, ibaraenisepo ẹrọ eniyan ko nilo imọ ti awọn ede siseto - o ṣeun si idanimọ ọrọ ati awọn algorithms iṣelọpọ, eniyan sọrọ si ile ọlọgbọn ni ede abinibi wọn.

Diẹ ninu awọn eto ile ọlọgbọn lọwọlọwọ lori ọja jẹ idagbasoke ọgbọn ti awọn eto iwo-kakiri fidio awọsanma, awọn olupilẹṣẹ eyiti o rii iwulo fun ojutu okeerẹ kii ṣe fun ibojuwo nikan, ṣugbọn tun fun ṣiṣakoso awọn nkan latọna jijin.

A ṣafihan si akiyesi rẹ lẹsẹsẹ awọn nkan mẹta, eyiti yoo sọ fun ọ nipa gbogbo awọn paati akọkọ ti eto ile smart smart, tikalararẹ ni idagbasoke nipasẹ onkọwe ati fi si iṣẹ. Nkan akọkọ jẹ iyasọtọ si ohun elo alabara ebute ti a fi sori ẹrọ inu ile ọlọgbọn kan, keji si faaji ti ibi ipamọ awọsanma ati eto sisẹ data, ati nikẹhin, ẹkẹta si ohun elo alabara fun iṣakoso eto lori alagbeka ati awọn ẹrọ iduro.

Smart ile ẹrọ

Ni akọkọ, jẹ ki a sọrọ nipa bii o ṣe le ṣe ile ti o gbọn lati iyẹwu lasan, dacha tabi ile kekere. Lati ṣe eyi, bi ofin, o jẹ dandan lati gbe awọn ẹrọ wọnyi sinu ile:

  1. sensosi ti o wiwọn orisirisi ayika sile;
  2. actuators anesitetiki lori ita ohun;
  3. oluṣakoso ti o ṣe awọn iṣiro ni ibamu pẹlu awọn wiwọn sensọ ati ọgbọn ti a fi sii, ati awọn aṣẹ fun awọn oṣere.

Nọmba atẹle yii ṣe afihan aworan atọka ti ile ọlọgbọn kan, lori eyiti awọn sensosi wa fun jijo omi (1) ninu baluwe, iwọn otutu (2) ati ina (3) ninu yara iyẹwu, iho ọlọgbọn (4) ni ibi idana ounjẹ ati kamẹra kakiri fidio (5) ninu awọn hallway.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Lọwọlọwọ, awọn sensọ alailowaya ti n ṣiṣẹ nipa lilo RF433, Z-Wave, ZigBee, Bluetooth ati awọn ilana WiFi jẹ lilo pupọ. Awọn anfani akọkọ wọn jẹ irọrun ti fifi sori ẹrọ ati lilo, bakanna bi idiyele kekere ati igbẹkẹle, nitori Awọn aṣelọpọ n tiraka lati mu awọn ẹrọ wọn wa si ọja ti o pọ julọ ati jẹ ki wọn wa si olumulo apapọ.

Sensosi ati actuators, bi ofin, ti wa ni ti sopọ nipasẹ a alailowaya ni wiwo si a smati ile oludari (6) - a specialized microcomputer ti o daapọ gbogbo awọn ẹrọ sinu kan nikan nẹtiwọki ati idari wọn.

Sibẹsibẹ, diẹ ninu awọn solusan le darapọ sensọ kan, oluṣeto ati oludari ni akoko kanna. Fun apẹẹrẹ, pulọọgi ọlọgbọn le ṣe eto lati tan-an tabi paa ni ibamu si iṣeto kan, ati kamẹra iwo-kakiri fidio awọsanma le ṣe igbasilẹ fidio ti o da lori ami ifihan aṣawari išipopada. Ni awọn ọran ti o rọrun julọ, o le ṣe laisi oluṣakoso lọtọ, ṣugbọn lati ṣẹda eto ti o ni irọrun pẹlu ọpọlọpọ awọn oju iṣẹlẹ, o jẹ dandan.

Lati so oluṣakoso ile ọlọgbọn pọ si nẹtiwọọki agbaye, olulana Intanẹẹti deede (7) le ṣee lo, eyiti o ti pẹ di ohun elo ile ti o wọpọ ni eyikeyi ile. Nibi ariyanjiyan miiran wa ni ojurere ti olutọju ile ọlọgbọn kan - ti asopọ si Intanẹẹti ba sọnu, ile ọlọgbọn yoo tẹsiwaju lati ṣiṣẹ bi o ṣe deede ọpẹ si bulọọki ọgbọn ti o fipamọ sinu oludari, kii ṣe ninu iṣẹ awọsanma.

Smart ile adarí

Alakoso fun eto ile ọlọgbọn awọsanma ti a jiroro ninu nkan yii jẹ idagbasoke ti o da lori kọnputa microcomputer kan-ọkọ kan Rasipibẹri Pi 3 awoṣe B +, eyiti a ti tu silẹ ni Oṣu Kẹta ọdun 2018 ati pe o ni awọn orisun to ati iṣẹ ṣiṣe fun awọn iṣẹ ṣiṣe ile ti o gbọn. O pẹlu ero isise quad-core Cortex-A53 ti o da lori 64-bit ARMv8-A faaji, ti o ni aago ni 1.4 GHz, bakanna bi 1 GB ti Ramu, Wi-Fi 802.11ac, Bluetooth 4.2 ati ohun ti nmu badọgba Ethernet gigabit ti n ṣiṣẹ nipasẹ USB 2.0 .

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Ijọpọ oluṣakoso jẹ rọrun pupọ - microcomputer (1) ti fi sori ẹrọ ni apoti ike kan (2), lẹhinna kaadi iranti 8 GB ni ọna kika microSD pẹlu sọfitiwia (3) ati oludari nẹtiwọọki Z-Wave USB (4) ti fi sii ninu awọn ti o baamu Iho . Olutọju ile ọlọgbọn ti sopọ si ipese agbara nipasẹ 5V, 2.1A oluyipada agbara (5) ati okun USB - micro-USB USB (6). Oluṣakoso kọọkan ni nọmba idanimọ alailẹgbẹ, eyiti a kọ sinu faili iṣeto ni igba akọkọ ti ṣe ifilọlẹ ati pe o jẹ dandan lati ṣe ajọṣepọ pẹlu awọn iṣẹ ile smart smart.

Sọfitiwia oluṣakoso ile ọlọgbọn jẹ idagbasoke nipasẹ onkọwe nkan yii ti o da lori ẹrọ ṣiṣe Lainos Raspbian Na. O ni awọn eto ipilẹ akọkọ wọnyi:

  • Ilana olupin fun ibaraenisepo pẹlu ohun elo ile ti o gbọn ati awọsanma;
  • wiwo olumulo ayaworan fun eto iṣeto ati awọn aye iṣẹ ti oludari;
  • database fun titoju adarí iṣeto ni.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Aaye data Smart ile oludari ti wa ni imuse da lori ohun ifibọ DBMS SQLite ati ki o jẹ faili kan lori kaadi SD pẹlu software eto. O ṣiṣẹ bi ibi ipamọ fun iṣeto ni oludari - alaye nipa ohun elo ti a ti sopọ ati ipo lọwọlọwọ rẹ, bulọọki ti awọn ofin iṣelọpọ ọgbọn, ati alaye ti o nilo titọka (fun apẹẹrẹ, awọn orukọ faili ti ile ifi nkan pamosi fidio agbegbe kan). Nigbati oluṣakoso ba tun bẹrẹ, alaye yii ti wa ni fipamọ, o jẹ ki o ṣee ṣe lati mu pada oludari ni iṣẹlẹ ti ikuna agbara.

Ni wiwo ayaworan oluṣakoso ile ọlọgbọn ni idagbasoke ni PHP 7 nipa lilo microframework kan Slim. Olupin wẹẹbu jẹ iduro fun ṣiṣe ohun elo naa. lighttpd, nigbagbogbo lo ninu awọn ẹrọ ifibọ nitori iṣẹ ṣiṣe ti o dara ati awọn ibeere orisun kekere.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi
(tẹ aworan lati ṣii ni ipinnu giga)

Iṣẹ akọkọ ti wiwo ayaworan ni lati sopọ awọn ohun elo ile ti o gbọn (awọn kamẹra iwo-kakiri IP ati awọn sensọ) si oludari. Ohun elo wẹẹbu n ka iṣeto ati ipo lọwọlọwọ ti oludari ati awọn ẹrọ ti o sopọ mọ rẹ lati ibi ipamọ data SQLite. Lati yi atunto oluṣakoso pada, o firanṣẹ awọn aṣẹ iṣakoso ni ọna kika JSON nipasẹ wiwo API RESTful ti ilana olupin naa.

Ilana olupin

Ilana olupin - paati bọtini kan ti o ṣe gbogbo iṣẹ akọkọ lori adaṣe awọn ilana alaye ti o jẹ ipilẹ ti ile ti o gbọn: gbigba ati ṣiṣe data ifarako, ipinfunni awọn iṣe iṣakoso ti o da lori ọgbọn ti a fi sii. Idi ti ilana olupin ni lati ṣe ajọṣepọ pẹlu ohun elo ile ti o gbọn, ṣiṣe awọn ofin ọgbọn iṣelọpọ, gba ati ilana awọn aṣẹ lati wiwo ayaworan ati awọsanma. Ilana olupin ti o wa ninu oluṣakoso ile ọlọgbọn ti o wa labẹ ero jẹ imuse bi ohun elo ti o ni ọpọlọpọ-asapo ni idagbasoke ni C ++ ati ṣe ifilọlẹ bi iṣẹ lọtọ eto eto eto isesise Lainos Raspbian.

Awọn bulọọki akọkọ ti ilana olupin ni:

  1. Oluṣakoso Ifiranṣẹ;
  2. Olupin kamẹra IP;
  3. Olupin ẹrọ Z-Wave;
  4. Server ti gbóògì mogbonwa ofin;
  5. Database ti iṣeto ni ti oludari ati Àkọsílẹ ti awọn ofin mogbonwa;
  6. RESTful API olupin fun ibaraenisepo pẹlu awọn ayaworan ni wiwo;
  7. MQTT onibara fun ibaraenisepo pẹlu awọsanma.

Awọn bulọọki ilana olupin ni imuse bi awọn okun lọtọ, alaye laarin eyiti o gbe ni irisi awọn ifiranṣẹ ni ọna kika JSON (tabi awọn ẹya data ti o nsoju ọna kika yii ni iranti ilana).

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Ẹya akọkọ ti ilana olupin jẹ oluṣakoso ifiranṣẹ, eyi ti awọn ipa ọna awọn ifiranṣẹ JSON si gbogbo awọn bulọọki ilana olupin. Awọn oriṣi awọn aaye alaye ifiranṣẹ JSON ati awọn iye ti wọn le gba ni a ṣe akojọ ninu tabili:

ẹrọ Iru
Ilana
ifiranṣẹIru
ipinle ẹrọ
pipaṣẹ

kamẹra
onvif
sensorData
on
ṣiṣanwọle (Titan/Paa)

sensọ
zwave
pipaṣẹ
pa
gbigbasilẹ (Titan/Paa)

oniṣẹ
mqtt
businessLogicRule
ṣiṣanwọle (Titan/Paa)
ibi (Fikun-un/Yọ kuro)

businessLogic
atuntoData
gbigbasilẹ (Titan/Paa)

Bluetooth
ipinle ẹrọ
aṣiṣe

wifi

rf

Fun apẹẹrẹ, ifiranṣẹ lati ọdọ aṣawari išipopada kamẹra dabi eyi:

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

Ọgbọn iṣelọpọ

Lati gba tabi fi ifiranṣẹ ranṣẹ lati ọdọ olufiranṣẹ, idinamọ ilana olupin ṣe alabapin si awọn ifiranṣẹ ti iru kan. Alabapin jẹ ilana iṣedede iṣelọpọ ti iru "Ti o ba ... lẹhinna...", ti a gbekalẹ ni ọna kika JSON, ati ọna asopọ si oluṣakoso ifiranṣẹ inu ilana ilana olupin. Fun apẹẹrẹ, lati gba olupin kamẹra IP laaye lati gba awọn aṣẹ lati GUI ati awọsanma, o nilo lati ṣafikun ofin atẹle:

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

Ti o ba ti awọn ipo pato ninu ṣaaju (ẹgbẹ osi) awọn ofin jẹ otitọ, lẹhinna o ni itẹlọrun abajade (ẹgbẹ ọtun) awọn ofin, ati olutọju naa ni iraye si ara ti ifiranṣẹ JSON. Iwaju naa ṣe atilẹyin awọn oniṣẹ oye ti o ṣe afiwe awọn orisii iye bọtini JSON:

  1. dọgba "dogba";
  2. ko dogba si "ko_equal";
  3. kere si "kere";
  4. diẹ sii "tobi";
  5. kere ju tabi dọgba si "kere_tabi_equal";
  6. tobi ju tabi dọgba si "tobi_tabi_equal".

Awọn abajade lafiwe le jẹ ibatan si ara wọn nipa lilo awọn oniṣẹ algebra Boolean:

  1. Ati "ati"
  2. TABI "tabi";
  3. KO "ko".

Nitorinaa, nipa kikọ awọn oniṣẹ ati awọn operands ni akiyesi Polish, o le ṣẹda awọn ipo eka pupọ pẹlu nọmba nla ti awọn aye.

Gangan ilana kanna, ti o da lori awọn ifiranṣẹ JSON ati awọn ofin iṣelọpọ ni ọna kika JSON, ni a lo ninu bulọọki olupin kannaa iṣelọpọ lati ṣe aṣoju imọ ati ṣe itọkasi ọgbọn nipa lilo data ifarako lati awọn sensọ ile ọlọgbọn.

Lilo ohun elo alagbeka kan, olumulo ṣẹda awọn oju iṣẹlẹ ni ibamu si eyiti ile ọlọgbọn yẹ ki o ṣiṣẹ. Fun apere: "Ti o ba jẹ pe sensọ fun ṣiṣi ilẹkun iwaju ti nfa, lẹhinna tan ina ni gbongan”. Ohun elo naa ka awọn oludamọ ti awọn sensọ (sensọ ṣiṣi) ati awọn oṣere (ibọọki smati tabi atupa smart) lati ibi ipamọ data ati ṣe agbekalẹ ofin ọgbọn ni ọna kika JSON, eyiti o firanṣẹ si oludari ile ọlọgbọn. Ilana yii ni yoo jiroro ni alaye diẹ sii ni nkan kẹta ti jara wa, nibiti a yoo sọrọ nipa ohun elo alabara fun iṣakoso ile ọlọgbọn kan.

Ilana kannaa iṣelọpọ ti a sọrọ loke ni imuse ni lilo ile-ikawe naa RapidJSON - SAX parser fun ọna kika JSON ni C ++. Kika lẹsẹsẹ ati itupalẹ titobi ti awọn ofin iṣelọpọ gba ọ laaye lati ni irọrun ṣe iṣẹ ṣiṣe afiwe data inu awọn iṣaaju:

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

o ti wa ni pFact - eto ti o ni awọn orisii iye bọtini lati ifiranṣẹ JSON kan, m_Awọn ofin - okun orun ti gbóògì ofin. Ifiweranṣẹ ti ifiranṣẹ ti nwọle ati ofin iṣelọpọ ni a ṣe ni iṣẹ naa reader.Parse(ruleStream, ruleHandler)nibo ruleHandler jẹ ohun ti o ni awọn kannaa ti Boolean ati lafiwe awọn oniṣẹ. sRuleId - idamo ofin alailẹgbẹ, o ṣeun si eyiti o ṣee ṣe lati fipamọ ati ṣatunkọ awọn ofin inu ibi ipamọ data iṣakoso ile ọlọgbọn. m_pActions - akojọpọ pẹlu awọn abajade ti imọran ọgbọn: awọn ifiranṣẹ JSON ti o ni awọn abajade lati ipilẹ ofin ati firanṣẹ siwaju si oluṣakoso ifiranṣẹ ki awọn okun alabapin le ṣe ilana wọn.

Iṣe RapidJSON jẹ afiwera si iṣẹ naa strlen(), ati awọn ibeere awọn oluşewadi eto ti o kere ju gba lilo ile-ikawe yii ni awọn ẹrọ ti a fi sii. Lilo awọn ifiranṣẹ ati awọn ofin ọgbọn ni ọna kika JSON gba ọ laaye lati ṣe eto iyipada ti paṣipaarọ alaye laarin gbogbo awọn paati ti oludari ile ọlọgbọn.

Awọn sensọ Z-Igbi ati Awọn oṣere

Anfani akọkọ ti ile ti o gbọn ni pe o le ṣe iwọn ominira lọpọlọpọ ti agbegbe ita ati ṣe awọn iṣẹ to wulo ti o da lori ipo naa. Lati ṣe eyi, awọn sensosi ati awọn oṣere ti sopọ si oluṣakoso ile ti o gbọn. Ninu ẹya lọwọlọwọ, iwọnyi jẹ awọn ẹrọ alailowaya ti n ṣiṣẹ nipa lilo ilana naa Z-Igbi lori pataki soto igbohunsafẹfẹ 869 MHz Fun Russia. Lati ṣiṣẹ, wọn ni idapo sinu nẹtiwọọki apapo, eyiti o ni awọn atunwi ifihan lati mu agbegbe agbegbe pọ si. Awọn ẹrọ naa tun ni ipo fifipamọ agbara pataki - wọn lo pupọ julọ akoko ni ipo oorun ati firanṣẹ alaye nikan nigbati ipo wọn ba yipada, eyiti o le fa igbesi aye batiri ti a ṣe sinu ni pataki.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

O le wa bayi nọmba ti o tobi pupọ ti awọn ẹrọ Z-Wave oriṣiriṣi lori ọja naa. Jẹ ki a wo awọn apẹẹrẹ diẹ:

  1. Socket smart Zipato PAN16 le wiwọn awọn aye wọnyi: agbara ina (kWh), agbara (W), foliteji (V) ati lọwọlọwọ (A) ninu nẹtiwọọki itanna. O tun ni iyipada ti a ṣe sinu eyiti o le ṣakoso ohun elo itanna ti a ti sopọ;
  2. Sensọ jijo Neo Coolcam ṣe iwari wiwa ti omi ti o da silẹ nipa pipade awọn olubasọrọ ti iwadii latọna jijin;
  3. Sensọ ẹfin Zipato PH-PSG01 ti nfa nigbati awọn patikulu ẹfin wọ inu iyẹwu itupalẹ gaasi;
  4. Sensọ išipopada Neo Coolcam ṣe atupale itankalẹ infurarẹẹdi ti ara eniyan. Ni afikun ohun sensọ ina wa (Lx);
  5. Multisensor Philio PST02-A ṣe iwọn otutu (°C), ina (%), ṣiṣi ilẹkun, wiwa eniyan ninu yara;
  6. Z-Wave USB Stick ZME E UZB1 nẹtiwọki oludari, eyi ti awọn sensosi ti wa ni ti sopọ.

O ṣe pataki pupọ pe awọn ẹrọ ati oludari ṣiṣẹ ni igbohunsafẹfẹ kanna, bibẹẹkọ wọn kii yoo rii ara wọn ni akoko asopọ. Titi di awọn ẹrọ 232 le sopọ si oluṣakoso nẹtiwọọki Z-Wave kan, eyiti o to fun iyẹwu tabi ile orilẹ-ede kan. Lati faagun agbegbe agbegbe nẹtiwọọki inu ile, iho smart le ṣee lo bi atunwi ifihan.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Ninu ilana olupin oluṣakoso ile ọlọgbọn ti a jiroro ninu paragira ti tẹlẹ, olupin Z-Wave jẹ iduro fun ibaraenisọrọ pẹlu awọn ẹrọ Z-Wave. O nlo ile-ikawe lati gba alaye lati awọn sensọ ṢiiZWave ni C ++, eyi ti o pese ohun ni wiwo fun a ibaraenisepo pẹlu Z-Wave nẹtiwọki USB oludari ati ki o ṣiṣẹ pẹlu kan orisirisi ti sensosi ati actuators. Iye paramita ayika ti a ṣewọn nipasẹ sensọ jẹ igbasilẹ nipasẹ olupin Z-Wave ni irisi ifiranṣẹ JSON kan:

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

Lẹhinna o firanṣẹ si oluṣakoso ifiranṣẹ ilana olupin ki awọn okun alabapin le gba. Alabapin akọkọ jẹ olupin kannaa iṣelọpọ, eyiti o baamu awọn iye aaye ifiranṣẹ ni awọn iṣaaju ti awọn ofin kannaa. Awọn abajade itọkasi ti o ni awọn aṣẹ iṣakoso ni a firanṣẹ pada si oluṣakoso ifiranṣẹ ati lati ibẹ lọ si olupin Z-Wave, eyiti o pinnu wọn ati firanṣẹ si oludari USB nẹtiwọọki Z-Wave. Lẹhinna wọn wọ inu actuator, eyiti o yi ipo ti awọn nkan ayika pada, ati ile ọlọgbọn nitorinaa ṣe iṣẹ ti o wulo.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi
(tẹ aworan lati ṣii ni ipinnu giga)

Nsopọ awọn ẹrọ Z-Wave ni a ṣe ni wiwo ayaworan ti oludari ile ọlọgbọn. Lati ṣe eyi, lọ si oju-iwe pẹlu atokọ awọn ẹrọ ki o tẹ bọtini “Fikun-un”. Aṣẹ afikun nipasẹ wiwo API RESTful wọ ilana olupin ati lẹhinna firanṣẹ nipasẹ oluṣakoso ifiranṣẹ si olupin Z-Wave, eyiti o fi Z-Wave nẹtiwọki USB adarí sinu ipo pataki fun fifi awọn ẹrọ kun. Nigbamii, lori ẹrọ Z-Wave o nilo lati ṣe lẹsẹsẹ awọn titẹ kiakia (titẹ 3 laarin awọn aaya 1,5) ti bọtini iṣẹ naa. Adarí USB so ẹrọ pọ mọ nẹtiwọki ati firanṣẹ alaye nipa rẹ si olupin Z-Wave. Iyẹn, ni ọna, ṣẹda titẹsi tuntun ninu aaye data SQLite pẹlu awọn aye ti ẹrọ tuntun. Lẹhin aarin akoko kan pato, wiwo ayaworan pada si oju-iwe atokọ ẹrọ Z-Wave, ka alaye lati ibi ipamọ data ati ṣafihan ẹrọ tuntun ninu atokọ naa. Ẹrọ kọọkan n gba idanimọ alailẹgbẹ tirẹ, eyiti o lo ninu awọn ofin iyasọtọ iṣelọpọ ati nigbati o n ṣiṣẹ ninu awọsanma. Iṣiṣẹ ti algorithm yii jẹ afihan ninu aworan atọka UML:

Awọsanma Smart Home. Apá 1: Adarí ati sensosi
(tẹ aworan lati ṣii ni ipinnu giga)

Nsopọ awọn kamẹra IP

Eto ile ọlọgbọn awọsanma ti a jiroro ninu nkan yii jẹ igbesoke ti eto iwo-kakiri fidio awọsanma, tun ni idagbasoke nipasẹ onkọwe, eyiti o wa lori ọja fun ọdun pupọ ati pe o ni ọpọlọpọ awọn fifi sori ẹrọ ni Russia.

Fun awọn eto iwo-kakiri fidio awọsanma, ọkan ninu awọn iṣoro nla ni yiyan ti o lopin ti ohun elo pẹlu eyiti iṣọpọ le ṣee ṣe. Sọfitiwia ti o ni iduro fun sisopọ si awọsanma ti fi sori ẹrọ inu kamẹra fidio, eyiti o gbe awọn ibeere to ṣe pataki lẹsẹkẹsẹ lori ohun elo rẹ - ero isise ati iye iranti ọfẹ. Eyi ni akọkọ ṣe alaye idiyele ti o ga julọ ti awọn kamẹra CCTV awọsanma ni akawe si awọn kamẹra IP deede. Ni afikun, ipele gigun ti awọn idunadura pẹlu awọn ile-iṣẹ iṣelọpọ kamẹra CCTV nilo lati ni iraye si eto faili kamẹra ati gbogbo awọn irinṣẹ idagbasoke pataki.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Ni apa keji, gbogbo awọn kamẹra IP ode oni ni awọn ilana boṣewa fun ibaraenisepo pẹlu ohun elo miiran (ni pataki, awọn agbohunsilẹ fidio). Nitorinaa, lilo oluṣakoso lọtọ ti o sopọ nipasẹ ilana boṣewa ati awọn ṣiṣan ṣiṣan fidio lati awọn kamẹra IP si awọsanma n pese awọn anfani ifigagbaga pataki fun awọn eto iwo-kakiri fidio awọsanma. Pẹlupẹlu, ti alabara ba ti fi sori ẹrọ eto iwo-kakiri fidio ti o da lori awọn kamẹra IP ti o rọrun, lẹhinna o ṣee ṣe lati faagun rẹ ki o tan-an sinu ile ọlọgbọn awọsanma ti o ni kikun.

Ilana ti o gbajumọ julọ fun awọn eto iwo-kakiri fidio IP, ni atilẹyin nipasẹ gbogbo awọn olupese kamẹra IP laisi iyasọtọ, jẹ Profaili ONVIF S, ẹniti awọn pato rẹ wa ninu ede apejuwe awọn iṣẹ wẹẹbu kan wsdl. Lilo awọn ohun elo lati ohun elo irinṣẹ gSOAP O ṣee ṣe lati ṣe ipilẹṣẹ koodu orisun fun awọn iṣẹ ti o ṣiṣẹ pẹlu awọn kamẹra 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

Bi abajade, a gba eto akọsori "* .h" ati orisun "* .cpp" awọn faili ni C ++, eyi ti a le gbe taara sinu ohun elo tabi ile-ikawe ti o yatọ ati ti a ṣe akojọpọ pẹlu lilo GCC compiler. Nitori ọpọlọpọ awọn iṣẹ, koodu naa tobi ati nilo afikun iṣapeye. Rasipibẹri Pi 3 awoṣe B + microcomputer ni iṣẹ ti o to lati ṣiṣẹ koodu yii, ṣugbọn ti iwulo ba wa lati gbe koodu naa si pẹpẹ miiran, o jẹ dandan lati yan faaji ero isise to pe ati awọn orisun eto.

Awọn kamẹra IP ti o ṣe atilẹyin boṣewa ONVIF, nigbati o nṣiṣẹ lori nẹtiwọọki agbegbe, ni asopọ si ẹgbẹ multicast pataki kan pẹlu adirẹsi naa. 239.255.255.250. Ilana kan wa WS-Awari, eyiti o fun ọ laaye lati ṣe adaṣe adaṣe fun awọn ẹrọ lori nẹtiwọọki agbegbe.

Ni wiwo ayaworan ti oluṣakoso ile ọlọgbọn n ṣe iṣẹ wiwa fun awọn kamẹra IP ni PHP, eyiti o rọrun pupọ nigbati ibaraenisepo pẹlu awọn iṣẹ wẹẹbu nipasẹ awọn ifiranṣẹ XML. Nigbati o ba yan awọn ohun akojọ aṣayan Awọn ẹrọ > Awọn kamẹra IP > Ṣiṣayẹwo algorithm fun wiwa awọn kamẹra IP ti ṣe ifilọlẹ, ti n ṣafihan abajade ni irisi tabili kan:

Awọsanma Smart Home. Apá 1: Adarí ati sensosi
(tẹ aworan lati ṣii ni ipinnu giga)

Nigbati o ba ṣafikun kamẹra kan si oludari, o le pato awọn eto ni ibamu si eyiti yoo ṣe ajọṣepọ pẹlu awọsanma. Paapaa ni ipele yii, o ti yan idanimọ ẹrọ alailẹgbẹ laifọwọyi, nipasẹ eyiti o le ṣe idanimọ ni rọọrun laarin awọsanma.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Nigbamii ti, ifiranṣẹ ti wa ni ipilẹṣẹ ni ọna kika JSON ti o ni gbogbo awọn ifilelẹ ti kamẹra ti a fi kun ati firanṣẹ si ilana olupin ti olutọju ile ti o ni imọran nipasẹ aṣẹ API RESTful, nibiti a ti ṣe atunṣe awọn kamẹra kamẹra ati ti a fipamọ sinu aaye data SQLite ti inu, ati pe o wa. tun lo lati ṣe ifilọlẹ awọn okun sisẹ wọnyi:

  1. idasile asopọ RTSP lati gba fidio ati awọn ṣiṣan ohun;
  2. transcoding iwe lati G.711 mu-Law, G.711 A-Law, G.723, ati be be lo. si ọna kika AAC;
  3. awọn ṣiṣan fidio transcoding ni ọna kika H.264 ati ohun ni ọna kika AAC sinu eiyan FLV kan ati gbigbe si awọsanma nipasẹ ilana RTMP;
  4. idasile asopọ pẹlu aaye ipari ti aṣawari išipopada kamẹra IP nipasẹ ilana ONVIF ati didi lorekore;
  5. lorekore ti n ṣẹda aworan awotẹlẹ eekanna atanpako ati fifiranṣẹ si awọsanma nipasẹ ilana MQTT;
  6. gbigbasilẹ agbegbe ti fidio ati awọn ṣiṣan ohun ni irisi awọn faili lọtọ ni ọna kika MP4 sori SD tabi kaadi Flash ti oludari ile ọlọgbọn kan.

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Lati fi idi asopọ kan mulẹ pẹlu awọn kamẹra, transcode, ilana ati igbasilẹ awọn ṣiṣan fidio ninu ilana olupin, awọn iṣẹ lati ile-ikawe ni a lo. FFmpeg 4.1.0.

Ninu idanwo idanwo iṣẹ, awọn kamẹra 3 ni asopọ si oludari:

  1. HiWatch DS-I114W (o ga - 720p, funmorawon kika - H.264, bitrate - 1 Mb/s, ohun G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (o ga - 1080p, funmorawon kika - H.264, bitrate - 1 Mb / s, ko si ohun);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (o ga - 1080p, funmorawon kika - H.264, bitrate - 1.5 Mb/s, AAC iwe).

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Gbogbo awọn ṣiṣan mẹtẹẹta ni a ṣejade ni igbakanna si awọsanma, transcoding ohun ohun ni a ṣe lati kamẹra kan ṣoṣo, ati pe gbigbasilẹ pamosi agbegbe jẹ alaabo. Ẹru Sipiyu jẹ isunmọ 5%, lilo Ramu jẹ 32 MB (fun ilana), 56 MB (lapapọ pẹlu OS).

Nitorinaa, isunmọ awọn kamẹra 20-30 le ni asopọ si oluṣakoso ile ti o gbọn (da lori ipinnu ati bitrate), eyiti o to fun eto iwo-kakiri fidio fun ile-iyẹwu mẹta tabi ile-itaja kekere kan. Fun awọn iṣẹ ṣiṣe ti o nilo iṣẹ ṣiṣe ti o tobi ju, o le lo nettop kan pẹlu ero isise Intel-pupọ ati Linux Debian Sarge OS. Alakoso n ṣiṣẹ lọwọlọwọ lọwọlọwọ, ati pe data lori iṣẹ rẹ yoo ni imudojuiwọn.

Ibaraenisepo pẹlu awọsanma

Ile ọlọgbọn ti o da lori awọsanma n tọju data olumulo (fidio ati awọn wiwọn sensọ) ninu awọsanma. Awọn faaji ti ibi ipamọ awọsanma ni yoo jiroro ni awọn alaye diẹ sii ninu nkan atẹle ninu jara wa. Bayi jẹ ki a sọrọ nipa wiwo fun gbigbe awọn ifiranṣẹ alaye lati ọdọ oluṣakoso ile ọlọgbọn si awọsanma.

Awọn ipinlẹ ti awọn ẹrọ ti a ti sopọ ati awọn wiwọn sensọ jẹ gbigbe nipasẹ ilana naa MQTT, eyiti a lo nigbagbogbo ni Intanẹẹti ti awọn iṣẹ akanṣe nitori irọrun rẹ ati ṣiṣe agbara. MQTT nlo awoṣe olupin-alabara, nibiti awọn alabara ṣe alabapin si awọn koko-ọrọ kan pato laarin alagbata ati gbejade awọn ifiranṣẹ wọn. Alagbata nfiranṣẹ ranṣẹ si gbogbo awọn alabapin ni ibamu si awọn ofin ti a pinnu nipasẹ ipele QoS (Didara Iṣẹ):

  • QoS 0 - o pọju lẹẹkan (ko si iṣeduro ifijiṣẹ);
  • QoS 1 - o kere ju lẹẹkan (pẹlu ijẹrisi ifijiṣẹ);
  • QoS 2 - ni ẹẹkan (pẹlu ijẹrisi ifijiṣẹ afikun).

Ninu ọran wa, a lo Eclipse Mosquito. Orukọ koko-ọrọ naa jẹ idanimọ alailẹgbẹ ti oludari ile ọlọgbọn. Onibara MQTT inu ilana olupin ṣe alabapin si koko yii ati tumọ awọn ifiranṣẹ JSON ti o nbọ lati ọdọ oluṣakoso ifiranṣẹ sinu rẹ. Lọna miiran, awọn ifiranṣẹ lati ọdọ alagbata MQTT ni a firanṣẹ nipasẹ rẹ si oluṣakoso ifiranṣẹ, eyiti lẹhinna ṣe ọpọlọpọ wọn si awọn alabapin rẹ ninu ilana olupin naa:

Awọsanma Smart Home. Apá 1: Adarí ati sensosi

Lati ṣe atagba awọn ifiranṣẹ nipa ipo ti oludari ile ọlọgbọn, ẹrọ ti awọn ifiranṣẹ ti o fipamọ ni a lo ni idaduro awọn ifiranṣẹ MQTT Ilana. Eyi n gba ọ laaye lati ṣe atẹle deede akoko ti awọn isọdọtun lakoko awọn ikuna agbara.

Onibara MQTT ti ni idagbasoke da lori imuse ile-ikawe Eclipse Paho ni C ++ ede.

Awọn ṣiṣan media H.264 + AAC ni a firanṣẹ si awọsanma nipasẹ ilana RTMP, nibiti iṣupọ ti awọn olupin media jẹ iduro fun sisẹ ati titoju wọn. Lati pin kaakiri fifuye ni aipe ni iṣupọ ati yan olupin media ti kojọpọ ti o kere ju, oludari ile ọlọgbọn ṣe ibeere alakoko si iwọntunwọnsi fifuye awọsanma ati lẹhin iyẹn nikan ni o firanṣẹ ṣiṣan media naa.

ipari

Nkan naa ṣe ayẹwo imuse kan pato ti oludari ile ọlọgbọn ti o da lori microcomputer Rasipibẹri Pi 3 B +, eyiti o le gba, ilana alaye ati ohun elo iṣakoso nipasẹ ilana Z-Wave, ṣe ajọṣepọ pẹlu awọn kamẹra IP nipasẹ ilana ONVIF, ati tun ṣe paṣipaarọ data ati paṣẹ pẹlu awọsanma iṣẹ nipasẹ MQTT ati awọn ilana RTMP. Ẹrọ kannaa iṣelọpọ ti ni idagbasoke ti o da lori lafiwe ti awọn ofin ọgbọn ati awọn ododo ti a gbekalẹ ni ọna kika JSON.

Oluṣakoso ile ọlọgbọn ti n ṣiṣẹ lọwọlọwọ ni iṣẹ idanwo ni awọn aaye pupọ ni Ilu Moscow ati agbegbe Moscow.

Ẹya atẹle ti oludari ngbero lati sopọ awọn iru ẹrọ miiran (RF, Bluetooth, WiFi, ti firanṣẹ). Fun irọrun ti awọn olumulo, ilana fun sisopọ awọn sensọ ati awọn kamẹra IP yoo gbe si ohun elo alagbeka. Awọn imọran tun wa fun iṣapeye koodu ilana olupin ati gbigbe sọfitiwia si ẹrọ ṣiṣe ṢiiWrt. Eyi yoo gba ọ laaye lati fipamọ sori oludari lọtọ ati gbe iṣẹ ṣiṣe ti ile ọlọgbọn si olulana ile deede.

orisun: www.habr.com

Fi ọrọìwòye kun