MÅ«sdienÄs, pateicoties straujajai mikroelektronikas, sakaru kanÄlu, interneta tehnoloÄ£iju un mÄkslÄ«gÄ intelekta attÄ«stÄ«bai, viedÄs mÄjas tÄma kļūst arvien aktuÄlÄka. KopÅ” akmens laikmeta cilvÄku mÄjokļi ir piedzÄ«vojuÅ”i bÅ«tiskas izmaiÅas, un industriÄlÄs revolÅ«cijas 4.0 un lietu interneta laikmetÄ tas ir kļuvis Ärts, funkcionÄls un droÅ”s. TirgÅ« nÄk risinÄjumi, kas pÄrvÄrÅ” dzÄ«vokli vai lauku mÄju par sarežģītÄm informÄcijas sistÄmÄm, kuras tiek vadÄ«tas no jebkuras vietas pasaulÄ, izmantojot viedtÄlruni. TurklÄt cilvÄka un maŔīnas mijiedarbÄ«bai vairs nav vajadzÄ«gas programmÄÅ”anas valodu zinÄÅ”anas - pateicoties runas atpazÄ«Å”anas un sintÄzes algoritmiem, cilvÄks runÄ ar viedo mÄju savÄ dzimtajÄ valodÄ.
Dažas Å”obrÄ«d tirgÅ« esoÅ”Äs viedÄs mÄjas sistÄmas ir loÄ£iska mÄkoÅu videonovÄroÅ”anas sistÄmu attÄ«stÄ«ba, kuru izstrÄdÄtÄji saprata nepiecieÅ”amÄ«bu pÄc visaptveroÅ”a risinÄjuma ne tikai uzraudzÄ«bai, bet arÄ« attÄlinÄtu objektu pÄrvaldÄ«Å”anai.
JÅ«su uzmanÄ«bai piedÄvÄjam trÄ«s rakstu sÄriju, kurÄ tiks pastÄstÄ«ts par visÄm galvenajÄm mÄkoÅa viedÄs mÄjas sistÄmas sastÄvdaļÄm, kuras autors ir personÄ«gi izstrÄdÄjis un nodevis ekspluatÄcijÄ. Pirmais raksts ir veltÄ«ts viedÄs mÄjas iekÅ”ienÄ uzstÄdÄ«tajÄm terminÄļa klienta iekÄrtÄm, otrais ā mÄkoÅkrÄtuves un datu apstrÄdes sistÄmas arhitektÅ«rai un visbeidzot, treÅ”ais ā klienta lietojumprogrammai sistÄmas pÄrvaldÄ«Å”anai mobilajÄs un stacionÄrajÄs ierÄ«cÄs.
ViedÄs mÄjas aprÄ«kojums
Vispirms parunÄsim par to, kÄ no parasta dzÄ«vokļa, vasarnÄ«cas vai kotedžas izveidot gudru mÄju. Lai to izdarÄ«tu, parasti mÄjÄs ir jÄnovieto Å”Äds aprÄ«kojums:
- sensori, kas mÄra dažÄdus vides parametrus;
- izpildmehÄnismi, kas iedarbojas uz ÄrÄjiem objektiem;
- kontrolieris, kas veic aprÄÄ·inus saskaÅÄ ar sensoru mÄrÄ«jumiem un iegulto loÄ£iku un izdod komandas izpildmehÄnismiem.
NÄkamajÄ attÄlÄ parÄdÄ«ta viedÄs mÄjas diagramma, uz kuras ir sensori Å«dens noplÅ«dei (1) vannas istabÄ, temperatÅ«ras (2) un apgaismojuma (3) sensori guļamistabÄ, viedÄ kontaktligzda (4) virtuvÄ un videonovÄroÅ”anas kamera (5) gaitenÄ«.
PaÅ”laik plaÅ”i tiek izmantoti bezvadu sensori, kas darbojas, izmantojot RF433, Z-Wave, ZigBee, Bluetooth un WiFi protokolus. To galvenÄs priekÅ”rocÄ«bas ir uzstÄdÄ«Å”anas un lietoÅ”anas vienkÄrŔība, kÄ arÄ« zemÄs izmaksas un uzticamÄ«ba, jo RažotÄji cenÅ”as ieviest savas ierÄ«ces masu tirgÅ« un padarÄ«t tÄs pieejamas vidusmÄra lietotÄjam.
Sensori un izpildmehÄnismi, kÄ likums, caur bezvadu saskarni ir savienoti ar viedÄs mÄjas kontrolieri (6) - specializÄtu mikrodatoru, kas apvieno visas Ŕīs ierÄ«ces vienÄ tÄ«klÄ un kontrolÄ tÄs.
TomÄr daži risinÄjumi var vienlaikus apvienot sensoru, izpildmehÄnismu un kontrolieri. PiemÄram, viedo spraudni var ieprogrammÄt, lai tas ieslÄgtos vai izslÄgtos saskaÅÄ ar grafiku, un mÄkoÅa videonovÄroÅ”anas kamera var ierakstÄ«t video, pamatojoties uz kustÄ«bas detektora signÄlu. VienkÄrÅ”Äkajos gadÄ«jumos var iztikt bez atseviŔķa kontroliera, taÄu, lai izveidotu elastÄ«gu sistÄmu ar daudziem scenÄrijiem, tas ir nepiecieÅ”ams.
Lai pieslÄgtu viedÄs mÄjas kontrolieri globÄlajam tÄ«klam, var izmantot parasto interneta marÅ”rutÄtÄju (7), kas jau sen ir kļuvis par ierastu sadzÄ«ves tehniku āājebkurÄ mÄjÄ. Å eit ir vÄl viens arguments par labu viedÄs mÄjas kontrollerim ā ja zÅ«d savienojums ar internetu, viedÄ mÄja turpinÄs darboties kÄ parasti, pateicoties kontrollera iekÅ”ienÄ saglabÄtajam loÄ£ikas blokam, nevis mÄkoÅpakalpojumÄ.
ViedÄs mÄjas kontrolieris
Å ajÄ rakstÄ aplÅ«kotais mÄkoÅa viedÄs mÄjas sistÄmas kontrolieris ir izstrÄdÄts, pamatojoties uz vienas plates mikrodatoru
Kontroliera salikÅ”ana ir ļoti vienkÄrÅ”a - mikrodators (1) tiek ievietots plastmasas korpusÄ (2), pÄc tam tiek uzstÄdÄ«ta 8 GB atmiÅas karte microSD formÄtÄ ar programmatÅ«ru (3) un USB Z-Wave tÄ«kla kontrolleris (4). atbilstoÅ”Äs slots. ViedÄs mÄjas kontrolieris ir pievienots baroÅ”anas avotam, izmantojot 5V, 2.1A strÄvas adapteri (5) un USB - mikro-USB kabeli (6). Katram kontrollerim ir unikÄls identifikÄcijas numurs, kas tiek ierakstÄ«ts konfigurÄcijas failÄ pirmÄs palaiÅ”anas brÄ«dÄ« un ir nepiecieÅ”ams, lai mijiedarbotos ar mÄkoÅa viedÄs mÄjas pakalpojumiem.
ViedÄs mÄjas kontrollera programmatÅ«ru izstrÄdÄja Ŕī raksta autors, pamatojoties uz operÄtÄjsistÄmu Linux Raspbian Stretch. Tas sastÄv no Å”ÄdÄm galvenajÄm apakÅ”sistÄmÄm:
- servera process mijiedarbÄ«bai ar viedÄs mÄjas aprÄ«kojumu un mÄkoni;
- grafiskÄ lietotÄja saskarne kontrollera konfigurÄcijas un darbÄ«bas parametru iestatÄ«Å”anai;
- datu bÄze kontroliera konfigurÄcijas glabÄÅ”anai.
Datu bÄze viedÄs mÄjas kontrolieris ir ieviests, pamatojoties uz iegulto DBVS
Grafiskais interfeiss viedÄs mÄjas kontrolieris, kas izstrÄdÄts PHP 7, izmantojot mikroietvaru
(noklikŔķiniet uz attÄla, lai to atvÄrtu augstÄkÄ izŔķirtspÄjÄ)
GrafiskÄ interfeisa galvenÄ funkcija ir viedÄs mÄjas aprÄ«kojuma (IP novÄroÅ”anas kameru un sensoru) pieslÄgÅ”ana kontrollerim. TÄ«mekļa lietojumprogramma no SQLite datu bÄzes nolasa kontrollera un tam pievienoto ierÄ«Äu konfigurÄciju un paÅ”reizÄjo stÄvokli. Lai mainÄ«tu kontrollera konfigurÄciju, tas nosÅ«ta vadÄ«bas komandas JSON formÄtÄ, izmantojot servera procesa RESTful API saskarni.
Servera process
Servera process - galvenÄ sastÄvdaļa, kas veic visu galveno darbu pie informÄcijas procesu automatizÄÅ”anas, kas veido viedÄs mÄjas pamatu: sensoro datu saÅemÅ”ana un apstrÄde, kontroles darbÄ«bu izsniegÅ”ana atkarÄ«bÄ no iegultÄs loÄ£ikas. Servera procesa mÄrÄ·is ir mijiedarboties ar viedo mÄjas aprÄ«kojumu, izpildÄ«t ražoÅ”anas loÄ£iskos noteikumus, saÅemt un apstrÄdÄt komandas no grafiskÄ interfeisa un mÄkoÅa. Servera process aplÅ«kojamajÄ viedÄs mÄjas kontrollerÄ« ir ieviests kÄ daudzpavedienu lietojumprogramma, kas izstrÄdÄta C++ valodÄ un tiek palaists kÄ atseviŔķs pakalpojums systemd operÄtÄjsistÄma Linux Raspbian.
Galvenie servera procesa bloki ir:
- ZiÅojumu pÄrvaldnieks;
- IP kameras serveris;
- Z-Wave ierīces serveris;
- RažoŔanas loģisko noteikumu serveris;
- Kontroliera konfigurÄcijas datu bÄze un loÄ£isko noteikumu bloks;
- RESTful API serveris mijiedarbībai ar grafisko interfeisu;
- MQTT klients mijiedarbÄ«bai ar mÄkoni.
Servera procesu bloki tiek realizÄti kÄ atseviŔķi pavedieni, starp kuriem informÄcija tiek pÄrsÅ«tÄ«ta ziÅojumu veidÄ JSON formÄtÄ (vai datu struktÅ«ras, kas attÄlo Å”o formÄtu procesa atmiÅÄ).
Servera procesa galvenÄ sastÄvdaļa ir ziÅojumu pÄrvaldnieks, kas marÅ”rutÄ JSON ziÅojumus uz visiem servera procesu blokiem. JSON ziÅojumu informÄcijas lauku veidi un vÄrtÄ«bas, ko tie var pieÅemt, ir norÄdÄ«ti tabulÄ:
ierīces veids
protokols
ziÅojuma veids
deviceState
komanda
kamera
onvif
sensorData
on
straumÄÅ”ana (ieslÄgta/izslÄgta)
devÄjs
zwave
komanda
no
ierakstÄ«Å”ana (ieslÄgts/izslÄgts)
efektors
mqtt
businessLogicRule
straumÄÅ”ana (ieslÄgta/izslÄgta)
evice (pievienot/noÅemt)
biznesa loģika
konfigurÄcijas dati
ierakstÄ«Å”ana (ieslÄgts/izslÄgts)
Bluetooth
deviceState
kļūda
bezvadu internets
rf
PiemÄram, ziÅojums no kameras kustÄ«bas detektora izskatÄs Å”Ädi:
{
"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"
}
RažoŔanas loģika
Lai saÅemtu vai nosÅ«tÄ«tu ziÅojumu no dispeÄera, servera procesa bloks abonÄ noteikta veida ziÅojumus. AbonÄÅ”ana ir Å”Äda veida ražoÅ”anas loÄ£iskais noteikums "Ja tad...", kas tiek parÄdÄ«ts JSON formÄtÄ, un saite uz ziÅojumu apstrÄdÄtÄju servera procesa blokÄ. PiemÄram, lai ļautu IP kameras serverim saÅemt komandas no GUI un mÄkoÅa, jums jÄpievieno Å”Äds noteikums:
{
"if": {
"and": [{
"equal": {
"deviceId": "1616453d-30cd-44b7-9bf0-************"
}
},
{
"equal": {
"messageType": "command"
}
}
]
},
"then": {
"result": "true"
}
}
Ja nosacÄ«jumi, kas norÄdÄ«ti apakÅ”punktÄ priekÅ”tecis (kreisajÄ pusÄ) noteikumi ir patiesi, tad tas ir apmierinÄts izrietoÅ”i (labÄs puses) noteikumi, un apstrÄdÄtÄjs iegÅ«st piekļuvi JSON ziÅojuma pamattekstam. PriekÅ”tecis atbalsta loÄ£iskos operatorus, kas salÄ«dzina JSON atslÄgu un vÄrtÄ«bu pÄrus:
- vienÄds ar "vienÄds";
- nav vienÄds ar "not_equal";
- mazÄk "mazÄk";
- vairÄk "lielÄks";
- mazÄks par vai vienÄds ar "mazÄk_vai_vienÄds";
- lielÄks par vai vienÄds ar "lielÄks_vai_vienÄds".
SalÄ«dzinÄÅ”anas rezultÄtus var savstarpÄji saistÄ«t, izmantojot BÅ«la algebras operatorus:
- Un "un"
- VAI "vai";
- NAV "nÄ".
TÄdÄjÄdi, rakstot operatorus un operandus poļu apzÄ«mÄjumos, var izveidot diezgan sarežģītus nosacÄ«jumus ar lielu skaitu parametru.
TieÅ”i tÄds pats mehÄnisms, kura pamatÄ ir JSON ziÅojumi un ražoÅ”anas noteikumi JSON formÄtÄ, tiek izmantots ražoÅ”anas loÄ£ikas servera blokÄ, lai attÄlotu zinÄÅ”anas un veiktu loÄ£iskus secinÄjumus, izmantojot sensoros datus no viedÄs mÄjas sensoriem.
Izmantojot mobilo aplikÄciju, lietotÄjs veido scenÄrijus, pÄc kuriem jÄfunkcionÄ viedajai mÄjai. PiemÄram: āJa iedarbojas priekÅ”Äjo durvju atvÄrÅ”anas sensors, ieslÄdziet gaismu gaitenÄ«ā. Lietojumprogramma nolasa no datu bÄzes sensoru (atvÄrÅ”anas sensora) un izpildmehÄnismu (viedÄ ligzda vai viedÄ lampa) identifikatorus un Ä£enerÄ loÄ£isku noteikumu JSON formÄtÄ, kas tiek nosÅ«tÄ«ts uz viedÄs mÄjas kontrolieri. Å is mehÄnisms tiks apspriests sÄ«kÄk mÅ«su sÄrijas treÅ”ajÄ rakstÄ, kur mÄs runÄsim par klienta lietojumprogrammu viedÄs mÄjas pÄrvaldÄ«Å”anai.
IepriekÅ” apskatÄ«tais ražoÅ”anas loÄ£ikas mehÄnisms tiek Ä«stenots, izmantojot bibliotÄku
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);
}
}
}
Å eit pFact ā struktÅ«ra, kas satur atslÄgu un vÄrtÄ«bu pÄrus no JSON ziÅojuma, m_Noteikumi ā ražoÅ”anas noteikumu virkÅu masÄ«vs. FunkcijÄ tiek veikts ienÄkoÅ”Ä ziÅojuma un ražoÅ”anas noteikuma salÄ«dzinÄjums Reader.Parse(ruleStream, ruleHandler)Kur ruleHandler ir objekts, kas satur BÅ«la un salÄ«dzinÄÅ”anas operatoru loÄ£iku. sRuleId ā unikÄls noteikumu identifikators, pateicoties kuram ir iespÄjams saglabÄt un rediÄ£Ät noteikumus viedÄs mÄjas kontrollera datubÄzÄ. m_pActions ā masÄ«vs ar loÄ£isko secinÄjumu rezultÄtiem: JSON ziÅojumi, kas satur kÄrtulu bÄzes sekas un tÄlÄk tiek nosÅ«tÄ«ti ziÅojumu pÄrvaldniekam, lai abonentu pavedieni varÄtu tos apstrÄdÄt.
RapidJSON veiktspÄja ir salÄ«dzinÄma ar funkciju strlen(), un minimÄlÄs sistÄmas resursu prasÄ«bas ļauj izmantot Å”o bibliotÄku iegultÄs ierÄ«cÄs. ZiÅojumu un loÄ£isko noteikumu izmantoÅ”ana JSON formÄtÄ Ä¼auj ieviest elastÄ«gu informÄcijas apmaiÅas sistÄmu starp visiem viedÄs mÄjas kontrollera komponentiem.
Z-Wave sensori un izpildmehÄnismi
ViedÄs mÄjas galvenÄ priekÅ”rocÄ«ba ir tÄ, ka tÄ var patstÄvÄ«gi izmÄrÄ«t dažÄdus ÄrÄjÄs vides parametrus un veikt noderÄ«gas funkcijas atkarÄ«bÄ no situÄcijas. Lai to izdarÄ«tu, sensori un izpildmehÄnismi ir savienoti ar viedÄs mÄjas kontrolieri. PaÅ”reizÄjÄ versijÄ tÄs ir bezvadu ierÄ«ces, kas darbojas, izmantojot protokolu
Tagad tirgÅ« var atrast diezgan lielu skaitu dažÄdu Z-Wave ierÄ«Äu. ApskatÄ«sim dažus piemÄrus:
- Zipato PAN16 viedligzda var izmÄrÄ«t Å”Ädus parametrus: elektroenerÄ£ijas patÄriÅÅ” (kWh), jauda (W), spriegums (V) un strÄva (A) elektrotÄ«klÄ. TajÄ ir arÄ« iebÅ«vÄts slÄdzis, ar kuru var vadÄ«t pieslÄgto elektroierÄ«ci;
- Neo Coolcam noplÅ«des sensors nosaka izlijuÅ”a Ŕķidruma klÄtbÅ«tni, aizverot tÄlvadÄ«bas zondes kontaktus;
- Zipato PH-PSG01 dÅ«mu sensors tiek iedarbinÄts, kad dÅ«mu daļiÅas nonÄk gÄzes analizatora kamerÄ;
- Neo Coolcam kustÄ«bas sensors analizÄ cilvÄka Ä·ermeÅa infrasarkano starojumu. Papildus ir gaismas sensors (Lx);
- Multisensors Philio PST02-A mÄra temperatÅ«ru (Ā°C), gaismu (%), durvju atvÄrÅ”anu, cilvÄka klÄtbÅ«tni telpÄ;
- Z-Wave USB Stick ZME E UZB1 tīkla kontrolleris, kuram pievienoti sensori.
Ir ļoti svarÄ«gi, lai ierÄ«ces un kontrolieris darbotos vienÄ frekvencÄ, pretÄjÄ gadÄ«jumÄ savienojuma brÄ«dÄ« tie vienkÄrÅ”i neredzÄs viens otru. Vienam Z-Wave tÄ«kla kontrollerim var pieslÄgt lÄ«dz 232 ierÄ«cÄm, kas ir pilnÄ«gi pietiekami dzÄ«voklim vai lauku mÄjai. Lai paplaÅ”inÄtu tÄ«kla pÄrklÄjuma zonu iekÅ”telpÄs, viedligzdu var izmantot kÄ signÄla atkÄrtotÄju.
ViedÄs mÄjas kontrollera servera procesÄ, kas tika apspriests iepriekÅ”ÄjÄ punktÄ, Z-Wave serveris ir atbildÄ«gs par mijiedarbÄ«bu ar Z-Wave ierÄ«cÄm. Tas izmanto bibliotÄku, lai saÅemtu informÄciju no sensoriem
{
"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"
}
PÄc tam tas tiek pÄrsÅ«tÄ«ts uz servera procesa ziÅojumu pÄrvaldnieku, lai abonentu pavedieni to varÄtu saÅemt. Galvenais abonents ir ražoÅ”anas loÄ£ikas serveris, kas atbilst ziÅojuma lauku vÄrtÄ«bÄm loÄ£ikas noteikumu priekÅ”tecÄs. SecinÄjumu rezultÄti, kas satur vadÄ«bas komandas, tiek nosÅ«tÄ«ti atpakaļ uz ziÅojumu pÄrvaldnieku un no turienes pÄriet uz Z-Wave serveri, kas tos atkodÄ un nosÅ«ta uz Z-Wave tÄ«kla USB kontrolieri. Tad tie nonÄk pievadÄ, kas maina vides objektu stÄvokli, un viedÄ mÄja tÄdÄjÄdi veic noderÄ«gu darbu.
(noklikŔķiniet uz attÄla, lai to atvÄrtu augstÄkÄ izŔķirtspÄjÄ)
Z-Wave ierÄ«Äu pievienoÅ”ana tiek veikta viedÄs mÄjas kontrollera grafiskajÄ saskarnÄ. Lai to izdarÄ«tu, dodieties uz lapu ar ierÄ«Äu sarakstu un noklikŔķiniet uz pogas "Pievienot". PievienoÅ”anas komanda, izmantojot RESTful API saskarni, tiek ievadÄ«ta servera procesÄ, un pÄc tam ziÅojumu pÄrvaldnieks to nosÅ«ta Z-Wave serverim, kas Z-Wave tÄ«kla USB kontrolieri pÄrslÄdz Ä«paÅ”Ä režīmÄ ierÄ«Äu pievienoÅ”anai. PÄc tam Z-Wave ierÄ«cÄ Ätri jÄnospiež apkalpoÅ”anas poga (3 nospieÅ”anas 1,5 sekunžu laikÄ). USB kontrolleris savieno ierÄ«ci ar tÄ«klu un nosÅ«ta informÄciju par to Z-Wave serverim. Tas savukÄrt izveido jaunu ierakstu SQLite datu bÄzÄ ar jaunÄs ierÄ«ces parametriem. PÄc noteikta laika intervÄla grafiskais interfeiss atgriežas Z-Wave ierÄ«Äu saraksta lapÄ, nolasa informÄciju no datu bÄzes un parÄda jauno ierÄ«ci sarakstÄ. Katra ierÄ«ce saÅem savu unikÄlo identifikatoru, kas tiek izmantots ražoÅ”anas secinÄjumu noteikumos un strÄdÄjot mÄkonÄ«. Å Ä« algoritma darbÄ«ba ir parÄdÄ«ta UML diagrammÄ:
(noklikŔķiniet uz attÄla, lai to atvÄrtu augstÄkÄ izŔķirtspÄjÄ)
IP kameru pievienoŔana
Å ajÄ rakstÄ aplÅ«kotÄ mÄkoÅa viedÄs mÄjas sistÄma ir mÄkoÅa videonovÄroÅ”anas sistÄmas jauninÄjums, ko arÄ« izstrÄdÄjis autors un kas ir tirgÅ« jau vairÄkus gadus un ir daudz instalÄciju KrievijÄ.
MÄkoÅu videonovÄroÅ”anas sistÄmÄm viena no akÅ«tÄm problÄmÄm ir ierobežotÄ aprÄ«kojuma izvÄle, ar kuru var veikt integrÄciju. Videokameras iekÅ”pusÄ ir instalÄta programmatÅ«ra, kas ir atbildÄ«ga par savienojumu ar mÄkoni, kas uzreiz izvirza nopietnas prasÄ«bas tÄs aparatÅ«rai - procesoram un brÄ«vÄs atmiÅas apjomam. Tas galvenokÄrt izskaidro mÄkoÅa videonovÄroÅ”anas kameru augstÄko cenu salÄ«dzinÄjumÄ ar parastajÄm IP kamerÄm. TurklÄt ir nepiecieÅ”ams ilgstoÅ”s sarunu posms ar videonovÄroÅ”anas kameru ražoÅ”anas uzÅÄmumiem, lai piekļūtu kameru failu sistÄmai un visiem nepiecieÅ”amajiem izstrÄdes rÄ«kiem.
No otras puses, visÄm mÅ«sdienu IP kamerÄm ir standarta protokoli mijiedarbÄ«bai ar citÄm iekÄrtÄm (jo Ä«paÅ”i ar videoreÄ£istratoriem). TÄdÄjÄdi atseviŔķa kontroliera izmantoÅ”ana, kas savienojas, izmantojot standarta protokolu un pÄrraida video straumes no IP kamerÄm uz mÄkoni, nodroÅ”ina bÅ«tiskas konkurences priekÅ”rocÄ«bas mÄkoÅa videonovÄroÅ”anas sistÄmÄm. TurklÄt, ja klients jau ir uzstÄdÄ«jis videonovÄroÅ”anas sistÄmu, kas balstÄ«ta uz vienkÄrÅ”Äm IP kamerÄm, tad kļūst iespÄjams to paplaÅ”inÄt un pÄrvÄrst par pilnvÄrtÄ«gu mÄkoÅa viedo mÄju.
PopulÄrÄkais IP videonovÄroÅ”anas sistÄmu protokols, ko tagad atbalsta visi IP kameru ražotÄji bez izÅÄmuma, ir
$ 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
RezultÄtÄ mÄs iegÅ«stam C++ galvenes ā*.hā un avota ā*.cppā failu kopu, ko var ievietot tieÅ”i lietojumprogrammÄ vai atseviÅ”Ä·Ä bibliotÄkÄ un apkopot, izmantojot GCC kompilatoru. Daudzo funkciju dÄļ kods ir liels un prasa papildu optimizÄciju. Raspberry Pi 3 modeļa B+ mikrodatoram ir pietiekama veiktspÄja, lai izpildÄ«tu Å”o kodu, taÄu, ja rodas nepiecieÅ”amÄ«ba kodu pÄrnest uz citu platformu, ir jÄizvÄlas pareiza procesora arhitektÅ«ra un sistÄmas resursi.
IP kameras, kas atbalsta ONVIF standartu, darbojoties lokÄlajÄ tÄ«klÄ, ir savienotas ar Ä«paÅ”u multiraides grupu ar adresi 239.255.255.250. Ir protokols
ViedÄs mÄjas kontrollera grafiskais interfeiss ievieÅ” IP kameru meklÄÅ”anas funkciju PHP, kas ir ļoti Ärti, mijiedarbojoties ar tÄ«mekļa pakalpojumiem, izmantojot XML ziÅojumus. IzvÄloties izvÄlnes vienumus IerÄ«ces > IP kameras > SkenÄÅ”ana Tiek palaists IP kameru meklÄÅ”anas algoritms, parÄdot rezultÄtu tabulas veidÄ:
(noklikŔķiniet uz attÄla, lai to atvÄrtu augstÄkÄ izŔķirtspÄjÄ)
Kad kontrolierim pievienojat kameru, varat norÄdÄ«t iestatÄ«jumus, saskaÅÄ ar kuriem tÄ mijiedarbosies ar mÄkoni. ArÄ« Å”ajÄ posmÄ tai automÄtiski tiek pieŔķirts unikÄls ierÄ«ces identifikators, pÄc kura to vÄlÄk var viegli identificÄt mÄkonÄ«.
PÄc tam JSON formÄtÄ tiek Ä£enerÄts ziÅojums, kas satur visus pievienotÄs kameras parametrus un tiek nosÅ«tÄ«ts uz viedÄs mÄjas kontrollera servera procesu, izmantojot komandu RESTful API, kur kameras parametri tiek atÅ”ifrÄti un saglabÄti iekÅ”ÄjÄ SQLite datu bÄzÄ un tiek nosÅ«tÄ«ti uz viedÄs mÄjas kontrollera servera procesu. izmanto arÄ« Å”Ädu apstrÄdes pavedienu palaiÅ”anai:
- RTSP savienojuma izveidoÅ”ana video un audio straumju saÅemÅ”anai;
- audio pÄrkodÄÅ”ana no G.711 mu-Law, G.711 A-Law, G.723 uc formÄtiem. uz AAC formÄtu;
- video straumju H.264 formÄtÄ un audio AAC formÄtÄ pÄrkodÄÅ”ana FLV konteinerÄ un pÄrsÅ«tÄ«Å”ana uz mÄkoni, izmantojot RTMP protokolu;
- savienojuma izveidoÅ”ana ar IP kameras kustÄ«bas detektora galapunktu caur ONVIF protokolu un periodiska tÄ aptauja;
- periodiski Ä£enerÄjot sÄ«ktÄlu priekÅ”skatÄ«juma attÄlu un nosÅ«tot to uz mÄkoni, izmantojot MQTT protokolu;
- lokÄla video un audio straumju ierakstÄ«Å”ana atseviŔķu failu veidÄ MP4 formÄtÄ viedÄs mÄjas kontrollera SD vai Flash kartÄ.
Lai izveidotu savienojumu ar kamerÄm, pÄrkodÄtu, apstrÄdÄtu un ierakstÄ«tu video straumes servera procesÄ, tiek izmantotas bibliotÄkas funkcijas
VeiktspÄjas testÄÅ”anas eksperimentÄ kontrolierim tika pievienotas 3 kameras:
- HiWatch DS-I114W (izŔķirtspÄja - 720p, kompresijas formÄts - H.264, bitu pÄrraides Ätrums - 1 Mb/s, skaÅa G.711 mu-Law);
- MikrodigitÄlais MDC-M6290FTD-1 (izŔķirtspÄja - 1080p, kompresijas formÄts - H.264, bitrate - 1 Mb/s, bez skaÅas);
- Dahua DH-IPC-HDW4231EMP-AS-0360B (izŔķirtspÄja - 1080p, kompresijas formÄts - H.264, bitu pÄrraides Ätrums - 1.5 Mb/s, AAC audio).
Visas trÄ«s straumes vienlaikus tika izvadÄ«tas mÄkonÄ«, audio pÄrkodÄÅ”ana tika veikta tikai no vienas kameras, un vietÄjÄ arhÄ«va ierakstÄ«Å”ana tika atspÄjota. CPU slodze bija aptuveni 5%, RAM lietojums bija 32 MB (vienam procesam), 56 MB (kopÄ, ieskaitot OS).
TÄdÄjÄdi viedÄs mÄjas kontrollerim var pieslÄgt aptuveni 20 - 30 kameras (atkarÄ«bÄ no izŔķirtspÄjas un bitrate), kas ir pietiekami videonovÄroÅ”anas sistÄmai trÄ«sstÄvu kotedžai vai nelielai noliktavai. Uzdevumiem, kuriem nepiecieÅ”ama lielÄka veiktspÄja, varat izmantot tÄ«kla datoru ar daudzkodolu Intel procesoru un Linux Debian Sarge OS. Kontrolierim paÅ”laik tiek veikta izmÄÄ£inÄjuma darbÄ«ba, un dati par tÄ veiktspÄju tiks atjauninÄti.
MijiedarbÄ«ba ar mÄkoni
MÄkonÄ« balstÄ«ta viedÄ mÄja glabÄ lietotÄja datus (video un sensoru mÄrÄ«jumus) mÄkonÄ«. MÄkoÅu krÄtuves arhitektÅ«ra tiks sÄ«kÄk aplÅ«kota nÄkamajÄ mÅ«su sÄrijas rakstÄ. Tagad parunÄsim par saskarni informÄcijas ziÅojumu pÄrsÅ«tÄ«Å”anai no viedÄs mÄjas kontrollera uz mÄkoni.
PieslÄgto ierÄ«Äu stÄvokļi un sensoru mÄrÄ«jumi tiek pÄrraidÄ«ti, izmantojot protokolu
- QoS 0 - maksimÄli vienu reizi (bez piegÄdes garantijas);
- QoS 1 - vismaz vienu reizi (ar piegÄdes apstiprinÄjumu);
- QoS 2 - tieÅ”i vienu reizi (ar papildu piegÄdes apstiprinÄjumu).
MÅ«su gadÄ«jumÄ mÄs izmantojam
Lai pÄrsÅ«tÄ«tu ziÅojumus par viedÄs mÄjas kontrollera statusu, tiek izmantots saglabÄto ziÅojumu mehÄnisms
MQTT klients tika izstrÄdÄts, pamatojoties uz bibliotÄkas ievieÅ”anu
H.264 + AAC multivides straumes tiek nosÅ«tÄ«tas uz mÄkoni, izmantojot RTMP protokolu, kur multivides serveru kopa ir atbildÄ«ga par to apstrÄdi un uzglabÄÅ”anu. Lai optimÄli sadalÄ«tu slodzi klasterÄ« un atlasÄ«tu vismazÄk noslogoto multivides serveri, viedÄs mÄjas kontrolieris veic iepriekÅ”Äju pieprasÄ«jumu mÄkoÅa slodzes balansÄtÄjam un tikai pÄc tam nosÅ«ta multivides straumi.
SecinÄjums
RakstÄ tika apskatÄ«ta viena konkrÄta viedÄs mÄjas kontrollera ievieÅ”ana, kuras pamatÄ ir mikrodators Raspberry Pi 3 B+ un kas var saÅemt, apstrÄdÄt informÄciju un vadÄ«bas iekÄrtas, izmantojot Z-Wave protokolu, mijiedarboties ar IP kamerÄm, izmantojot ONVIF protokolu, kÄ arÄ« apmainÄ«ties ar datiem un komandas ar mÄkoÅa pakalpojumu, izmantojot MQTT un RTMP protokolus. RažoÅ”anas loÄ£ikas dzinÄjs ir izstrÄdÄts, pamatojoties uz loÄ£isko noteikumu un faktu salÄ«dzinÄjumu JSON formÄtÄ.
ViedÄs mÄjas kontrolieris paÅ”laik tiek izmÄÄ£inÄts vairÄkÄs vietÄs MaskavÄ un Maskavas reÄ£ionÄ.
NÄkamÄ kontroliera versija plÄno savienot cita veida ierÄ«ces (RF, Bluetooth, WiFi, vadu). LietotÄju ÄrtÄ«bÄm sensoru un IP kameru pieslÄgÅ”anas procedÅ«ra tiks pÄrcelta uz mobilo aplikÄciju. Ir arÄ« idejas servera procesa koda optimizÄÅ”anai un programmatÅ«ras pÄrneÅ”anai uz operÄtÄjsistÄmu
Avots: www.habr.com