Այսօր միկրոէլեկտրոնիկայի, կապի ուղիների, ինտերնետ տեխնոլոգիաների և արհեստական ինտելեկտի արագ զարգացման շնորհիվ խելացի տների թեման ավելի ու ավելի արդիական է դառնում։ Մարդկային բնակարանները զգալի փոփոխություններ են կրել քարե դարից ի վեր և Արդյունաբերական հեղափոխության 4.0-ի և իրերի ինտերնետի դարաշրջանում այն դարձել է հարմարավետ, ֆունկցիոնալ և անվտանգ: Շուկա են գալիս լուծումներ, որոնք բնակարանը կամ ամառանոցը վերածում են բարդ տեղեկատվական համակարգերի, որոնք վերահսկվում են աշխարհի ցանկացած կետից սմարթֆոնի միջոցով: Ավելին, մարդ-մեքենա փոխազդեցությունն այլևս չի պահանջում ծրագրավորման լեզուների իմացություն՝ խոսքի ճանաչման և սինթեզի ալգորիթմների շնորհիվ մարդն իր մայրենի լեզվով խոսում է խելացի տան հետ:
Ներկայումս շուկայում առկա որոշ խելացի տնային համակարգեր ամպային տեսահսկման համակարգերի տրամաբանական զարգացումն են, որոնց մշակողները հասկացել են համապարփակ լուծման անհրաժեշտությունը ոչ միայն մոնիտորինգի, այլև հեռավոր օբյեկտների կառավարման համար:
Ձեր ուշադրությանն ենք ներկայացնում երեք հոդվածներից բաղկացած մի շարք, որոնք կպատմեն ամպային խելացի տան համակարգի բոլոր հիմնական բաղադրիչների մասին, որոնք անձամբ մշակվել և գործարկվել են հեղինակի կողմից։ Առաջին հոդվածը նվիրված է խելացի տան ներսում տեղադրված տերմինալային հաճախորդների սարքավորումներին, երկրորդը՝ ամպային պահպանման և տվյալների մշակման համակարգի ճարտարապետությանը, և վերջապես, երրորդը՝ բջջային և ստացիոնար սարքերում համակարգը կառավարելու հաճախորդի հավելվածին:
Խելացի տան սարքավորումներ
Նախ, եկեք խոսենք այն մասին, թե ինչպես կարելի է խելացի տուն պատրաստել սովորական բնակարանից, տնակից կամ քոթեջից: Դա անելու համար, որպես կանոն, անհրաժեշտ է տանը տեղադրել հետևյալ սարքավորումները.
- սենսորներ, որոնք չափում են շրջակա միջավայրի տարբեր պարամետրեր;
- Արտաքին օբյեկտների վրա գործող շարժիչներ;
- կարգավորիչ, որը հաշվարկներ է կատարում սենսորային չափումների և ներկառուցված տրամաբանության համաձայն և հրամաններ է տալիս մղիչներին:
Հետևյալ նկարը ցույց է տալիս խելացի տան դիագրամը, որի վրա կան ջրի արտահոսքի (1) սենսորներ լոգարանում, ջերմաստիճանի (2) և լուսավորության (3) ննջասենյակում, խելացի վարդակից (4) խոհանոցում և տեսահսկման տեսախցիկ (5) միջանցքում.
Ներկայումս լայնորեն կիրառվում են RF433, Z-Wave, ZigBee, Bluetooth և WiFi արձանագրություններով աշխատող անլար սենսորները: Նրանց հիմնական առավելություններն են տեղադրման և օգտագործման հեշտությունը, ինչպես նաև ցածր արժեքը և հուսալիությունը, քանի որ Արտադրողները ձգտում են իրենց սարքերը բերել զանգվածային շուկա և դրանք հասանելի դարձնել սովորական օգտագործողի համար:
Սենսորները և ակտուատորները, որպես կանոն, միացված են անլար ինտերֆեյսի միջոցով խելացի տան կարգավորիչին (6) - մասնագիտացված միկրոհամակարգիչ, որը միավորում է այս բոլոր սարքերը մեկ ցանցի մեջ և վերահսկում դրանք:
Այնուամենայնիվ, որոշ լուծումներ կարող են միաժամանակ համատեղել սենսորը, ակտուատորը և կարգավորիչը: Օրինակ, խելացի խրոցը կարող է ծրագրավորվել, որպեսզի միացվի կամ անջատվի ըստ ժամանակացույցի, իսկ ամպային տեսահսկման տեսախցիկը կարող է տեսանկարահանել շարժման դետեկտորի ազդանշանի հիման վրա: Ամենապարզ դեպքերում դուք կարող եք անել առանց առանձին վերահսկիչի, բայց շատ սցենարներով ճկուն համակարգ ստեղծելու համար անհրաժեշտ է.
Խելացի տան կարգավորիչը գլոբալ ցանցին միացնելու համար կարող է օգտագործվել սովորական ինտերնետ երթուղիչ (7), որը վաղուց դարձել է սովորական կենցաղային սարք ցանկացած տանը: Այստեղ կա ևս մեկ փաստարկ՝ հօգուտ խելացի տան կարգավորիչի. եթե ինտերնետի հետ կապը կորչի, խելացի տունը կշարունակի գործել նորմալ՝ շնորհիվ կարգավորիչի ներսում պահվող տրամաբանական բլոկի, և ոչ թե ամպային ծառայության մեջ:
Խելացի տան վերահսկիչ
Այս հոդվածում քննարկված ամպային խելացի տան համակարգի կարգավորիչը մշակվել է մեկ տախտակով միկրոհամակարգչի հիման վրա
Կարգավորիչը հավաքելը շատ պարզ է. միկրոհամակարգիչը (1) տեղադրված է պլաստիկ պատյանում (2), այնուհետև տեղադրվում է 8 ԳԲ հիշողության քարտ microSD ձևաչափով ծրագրային ապահովմամբ (3) և USB Z-Wave ցանցի կարգավորիչ (4): համապատասխան slots. Խելացի տան կարգավորիչը միացված է էլեկտրամատակարարմանը 5V, 2.1A հոսանքի ադապտեր (5) և USB - micro-USB մալուխի (6) միջոցով: Յուրաքանչյուր կարգավորիչ ունի եզակի նույնականացման համար, որը գրված է կազմաձևման ֆայլում, երբ առաջին անգամ գործարկվել է և անհրաժեշտ է ամպային խելացի տան ծառայությունների հետ փոխգործակցության համար:
Խելացի տան կարգավորիչի ծրագիրը մշակվել է այս հոդվածի հեղինակի կողմից՝ հիմնվելով օպերացիոն համակարգի վրա Linux Raspbian Stretch. Այն բաղկացած է հետևյալ հիմնական ենթահամակարգերից.
- սերվերի գործընթաց խելացի տան սարքավորումների և ամպի հետ փոխգործակցության համար.
- գրաֆիկական ինտերֆեյս կարգավորիչի կազմաձևման և գործառնական պարամետրերը սահմանելու համար.
- կարգավորիչի կոնֆիգուրացիան պահելու տվյալների բազա:
Նյութերի բազա խելացի տան վերահսկիչն իրականացվում է ներկառուցված DBMS-ի հիման վրա
GUI խելացի տան վերահսկիչ, որը մշակվել է PHP 7-ում՝ օգտագործելով միկրոշրջանակ
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)
Գրաֆիկական ինտերֆեյսի հիմնական գործառույթը խելացի տան սարքավորումները (IP հսկողության տեսախցիկներ և սենսորներ) կարգավորիչին միացնելն է: Վեբ հավելվածը կարդում է կարգավորիչի և դրան միացված սարքերի կոնֆիգուրացիան և ընթացիկ վիճակը SQLite տվյալների բազայից: Կարգավորիչի կոնֆիգուրացիան փոխելու համար այն ուղարկում է հսկիչ հրամաններ JSON ձևաչափով սերվերի գործընթացի RESTful API ինտերֆեյսի միջոցով:
Սերվերի գործընթաց
Սերվերի գործընթաց - հիմնական բաղադրիչ, որն իրականացնում է խելացի տան հիմքը հանդիսացող տեղեկատվական գործընթացների ավտոմատացման բոլոր հիմնական աշխատանքները. զգայական տվյալների ընդունում և մշակում, ներկառուցված տրամաբանությունից կախված կառավարման գործողություններ: Սերվերի գործընթացի նպատակն է փոխազդել խելացի տան սարքավորումների հետ, կատարել արտադրության տրամաբանական կանոններ, ստանալ և մշակել հրամաններ գրաֆիկական ինտերֆեյսից և ամպից: Քննարկվող խելացի տան կարգավորիչում սերվերի գործընթացը իրականացվում է որպես C++-ում մշակված և որպես առանձին ծառայություն գործարկված բազմաշերտ հավելված: systemd օպերացիոն համակարգ Linux Raspbian.
Սերվերի գործընթացի հիմնական բլոկներն են.
- Հաղորդագրությունների կառավարիչ;
- IP տեսախցիկի սերվեր;
- Z-Wave սարքի սերվեր;
- Արտադրության տրամաբանական կանոնների սերվեր;
- Կարգավորիչի և տրամաբանական կանոնների բլոկի կազմաձևման բազա;
- RESTful API սերվեր գրաֆիկական ինտերֆեյսի հետ փոխգործակցության համար;
- MQTT հաճախորդ՝ ամպի հետ շփվելու համար:
Սերվերի գործընթացի բլոկներն իրականացվում են որպես առանձին թելեր, որոնց միջև տեղեկատվությունը փոխանցվում է JSON ձևաչափով հաղորդագրությունների տեսքով (կամ այս ձևաչափը պրոցեսային հիշողության մեջ ներկայացնող տվյալների կառուցվածքներ):
Սերվերի գործընթացի հիմնական բաղադրիչն է հաղորդագրությունների կառավարիչ, որն ուղղորդում է JSON հաղորդագրությունները դեպի սերվերի գործընթացի բոլոր բլոկները: JSON հաղորդագրության տեղեկատվական դաշտերի տեսակները և արժեքները, որոնք նրանք կարող են ընդունել, նշված են աղյուսակում.
սարքի տեսակը
արձանագրություն
հաղորդագրության տեսակը
սարքի վիճակ
հրաման
ֆոտոխցիկ
onvif
սենսորային տվյալներ
on
հոսք (միացված/անջատված)
սենսոր
zwave
հրաման
Սայլակ
ձայնագրում (միացված/անջատված)
էֆեկտ
մկտտ
businessLogicRule
հոսք (միացված/անջատված)
սարք (Ավելացնել/Հեռացնել)
բիզնեսՏրամաբանություն
configurationData
ձայնագրում (միացված/անջատված)
Bluetooth
սարքի վիճակ
սխալ
WiFi
rf
Օրինակ, տեսախցիկի շարժման դետեկտորից ստացված հաղորդագրությունը հետևյալն է.
{
"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"
}
Արտադրության տրամաբանություն
Դիսպետչերից հաղորդագրություն ստանալու կամ ուղարկելու համար սերվերի գործընթացի բլոկը բաժանորդագրվում է որոշակի տեսակի հաղորդագրություններին: Բաժանորդագրությունը տիպի արտադրական տրամաբանական կանոն է "Եթե, ապա...", ներկայացված է JSON ձևաչափով և հղում դեպի սերվերի գործընթացի բլոկի ներսում գտնվող հաղորդագրությունների մշակիչին: Օրինակ, IP տեսախցիկի սերվերին թույլ տալու հրամաններ ստանալ GUI-ից և ամպից, դուք պետք է ավելացնեք հետևյալ կանոնը.
{
"if": {
"and": [{
"equal": {
"deviceId": "1616453d-30cd-44b7-9bf0-************"
}
},
{
"equal": {
"messageType": "command"
}
}
]
},
"then": {
"result": "true"
}
}
Եթե նշված պայմանները նախորդող (ձախ կողմում) կանոնները ճշմարիտ են, ապա այն բավարարված է հետևանքով (աջ կողմում) կանոններ, և մշակողը մուտք է ստանում JSON հաղորդագրության հիմնական մասը: Նախորդը աջակցում է տրամաբանական օպերատորներին, որոնք համեմատում են JSON բանալի-արժեք զույգերը.
- հավասար է «հավասար»;
- հավասար չէ «not_equal»-ին;
- պակաս «պակաս»;
- ավելի «ավելի մեծ»;
- պակաս կամ հավասար «պակաս_կամ_հավասար»;
- մեծ է կամ հավասար է «մեծ_կամ_հավասարին»:
Համեմատության արդյունքները կարող են կապված լինել միմյանց հետ՝ օգտագործելով Բուլյան հանրահաշվի օպերատորները.
- Եվ «և»
- ԿԱՄ «կամ»;
- ՉԻ «ոչ»:
Այսպիսով, գրելով օպերատորներ և օպերանդներ լեհական նշումով, կարող եք ստեղծել բավականին բարդ պայմաններ՝ մեծ թվով պարամետրերով։
Ճիշտ նույն մեխանիզմը, որը հիմնված է JSON հաղորդագրությունների և JSON ձևաչափով արտադրության կանոնների վրա, օգտագործվում է արտադրության տրամաբանական սերվերի բլոկում՝ գիտելիքները ներկայացնելու և տրամաբանական եզրակացություն իրականացնելու համար՝ օգտագործելով խելացի տան սենսորների զգայական տվյալները:
Օգտվելով բջջային հավելվածից՝ օգտատերը ստեղծում է սցենարներ, որոնց համաձայն պետք է գործի խելացի տունը։ Օրինակ: «Եթե մուտքի դուռը բացելու սենսորը միացված է, ապա միացրեք միջանցքի լույսը». Հավելվածը տվյալների բազայից կարդում է սենսորների (բացվող սենսոր) և ակտուատորների (խելացի վարդակ կամ խելացի լամպ) նույնացուցիչները և ստեղծում JSON ձևաչափով տրամաբանական կանոն, որն ուղարկվում է խելացի տան կարգավորիչին։ Այս մեխանիզմը ավելի մանրամասն կքննարկվի մեր շարքի երրորդ հոդվածում, որտեղ մենք կխոսենք խելացի տան կառավարման համար հաճախորդի հավելվածի մասին:
Վերևում քննարկված արտադրության տրամաբանական մեխանիզմն իրականացվում է գրադարանի միջոցով
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);
}
}
}
Այստեղ pFact — կառույց, որը պարունակում է բանալի-արժեք զույգեր JSON հաղորդագրությունից, m_Կանոններ - արտադրության կանոնների լարային զանգված: Գործառույթում իրականացվում է մուտքային հաղորդագրության և արտադրության կանոնի համեմատությունը reader.Parse(ruleStream, ruleHandler)Որտեղ ռեկագլեր Բուլյան և համեմատական օպերատորների տրամաբանություն պարունակող օբյեկտ է։ sRuleId — կանոնների եզակի նույնացուցիչ, որի շնորհիվ հնարավոր է պահպանել և խմբագրել կանոնները խելացի տան կարգավորիչների տվյալների բազայում: m_pActions — Տրամաբանական եզրակացության արդյունքներով զանգված. JSON հաղորդագրություններ, որոնք պարունակում են հետևանքներ կանոնների բազայից և հետագայում ուղարկվում են հաղորդագրությունների կառավարչին, որպեսզի բաժանորդների շղթաները կարողանան մշակել դրանք:
RapidJSON-ի կատարումը համեմատելի է ֆունկցիայի հետ strlen (), և համակարգի ռեսուրսների նվազագույն պահանջները թույլ են տալիս օգտագործել այս գրադարանը ներկառուցված սարքերում: JSON ձևաչափով հաղորդագրությունների և տրամաբանական կանոնների օգտագործումը թույլ է տալիս ներդնել տեղեկատվության փոխանակման ճկուն համակարգ խելացի տան կարգավորիչի բոլոր բաղադրիչների միջև:
Z-ալիքի սենսորներ և ակտուատորներ
Խելացի տան հիմնական առավելությունն այն է, որ այն կարող է ինքնուրույն չափել արտաքին միջավայրի տարբեր պարամետրեր և կատարել օգտակար գործառույթներ՝ կախված իրավիճակից։ Դա անելու համար սենսորներն ու ակտուատորները միացված են խելացի տան կարգավորիչին: Ընթացիկ տարբերակում դրանք անլար սարքեր են, որոնք աշխատում են արձանագրության միջոցով
Այժմ շուկայում կարող եք գտնել բավականին մեծ թվով տարբեր Z-Wave սարքեր: Եկեք նայենք մի քանի օրինակների.
- Zipato PAN16 խելացի վարդակը կարող է չափել հետևյալ պարամետրերը՝ էլեկտրաէներգիայի սպառումը (կՎտժ), հզորությունը (Վտ), լարումը (V) և հոսանքը (A) էլեկտրական ցանցում։ Ունի նաև ներկառուցված անջատիչ, որով կարող եք կառավարել միացված էլեկտրական սարքը;
- Neo Coolcam արտահոսքի սենսորը հայտնաբերում է թափված հեղուկի առկայությունը՝ փակելով հեռակառավարվող զոնդի կոնտակտները.
- Zipato PH-PSG01 ծխի սենսորը գործարկվում է, երբ ծխի մասնիկները մտնում են գազի անալիզատորի խցիկ;
- Neo Coolcam շարժման սենսորը վերլուծում է մարդու մարմնի ինֆրակարմիր ճառագայթումը: Բացի այդ, կա լույսի սենսոր (Lx);
- Multisensor Philio PST02-A-ն չափում է ջերմաստիճանը (°C), լույսը (%), դռների բացումը, մարդու ներկայությունը սենյակում;
- Z-Wave USB Stick ZME E UZB1 ցանցի կարգավորիչ, որին միացված են սենսորները։
Շատ կարևոր է, որ սարքերը և կարգավորիչը աշխատեն նույն հաճախականությամբ, այլապես միացման պահին նրանք պարզապես չեն տեսնի միմյանց։ Z-Wave ցանցի մեկ կարգավորիչին կարելի է միացնել մինչև 232 սարք, ինչը միանգամայն բավարար է բնակարանի կամ գյուղական տան համար։ Ցանցի ծածկույթի տարածքը ներսում ընդլայնելու համար խելացի վարդակը կարող է օգտագործվել որպես ազդանշանի կրկնող:
Նախորդ պարբերությունում քննարկված խելացի տան կարգավորիչի սերվերի գործընթացում Z-Wave սերվերը պատասխանատու է Z-Wave սարքերի հետ փոխգործակցության համար: Այն օգտագործում է գրադարան՝ սենսորներից տեղեկատվություն ստանալու համար
{
"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"
}
Այնուհետև այն փոխանցվում է սերվերի գործընթացի հաղորդագրությունների կառավարչին, որպեսզի բաժանորդների շղթաները կարողանան ստանալ այն: Հիմնական բաժանորդը արտադրության տրամաբանական սերվերն է, որը համապատասխանում է հաղորդագրության դաշտի արժեքներին տրամաբանական կանոնների նախադրյալներում: Վերահսկիչ հրամաններ պարունակող եզրակացության արդյունքները հետ են ուղարկվում հաղորդագրությունների կառավարիչին և այնտեղից գնում դեպի Z-Wave սերվեր, որը վերծանում է դրանք և ուղարկում Z-Wave ցանցի USB կարգավորիչին: Այնուհետև նրանք մտնում են ակտուատոր, որը փոխում է շրջակա միջավայրի օբյեկտների վիճակը, և խելացի տունն այդպիսով կատարում է օգտակար աշխատանք։
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)
Z-Wave սարքերի միացումը կատարվում է խելացի տան կարգավորիչի գրաֆիկական ինտերֆեյսում: Դա անելու համար անցեք էջ սարքերի ցանկով և սեղմեք «Ավելացնել» կոճակը: RESTful API ինտերֆեյսի միջոցով ավելացնելու հրամանը մտնում է սերվերի գործընթաց և այնուհետև հաղորդագրությունների կառավարչի կողմից ուղարկվում է Z-Wave սերվեր, որը Z-Wave ցանցի USB կարգավորիչը դնում է սարքեր ավելացնելու հատուկ ռեժիմի մեջ: Հաջորդը, Z-Wave սարքի վրա դուք պետք է կատարեք սպասարկման կոճակի արագ սեղմումներ (3 սեղմում 1,5 վայրկյանում): USB կարգավորիչը սարքը միացնում է ցանցին և դրա մասին տեղեկատվություն է ուղարկում Z-Wave սերվերին: Դա իր հերթին նոր մուտք է ստեղծում SQLite տվյալների բազայում նոր սարքի պարամետրերով: Նշված ժամանակային ընդմիջումից հետո գրաֆիկական ինտերֆեյսը վերադառնում է Z-Wave սարքերի ցանկի էջ, կարդում է տեղեկատվությունը տվյալների բազայից և ցուցադրում նոր սարքը ցուցակում: Յուրաքանչյուր սարք ստանում է իր յուրահատուկ նույնացուցիչը, որն օգտագործվում է արտադրության եզրակացության կանոններում և ամպում աշխատելիս: Այս ալգորիթմի գործողությունը ներկայացված է UML դիագրամում.
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)
IP տեսախցիկների միացում
Այս հոդվածում քննարկված ամպային խելացի տան համակարգը ամպային տեսահսկման համակարգի արդիականացումն է, որը նույնպես մշակվել է հեղինակի կողմից, որը շուկայում է մի քանի տարի և ունի բազմաթիվ տեղադրումներ Ռուսաստանում:
Ամպային տեսահսկման համակարգերի համար սուր խնդիրներից մեկը սարքավորումների սահմանափակ ընտրությունն է, որոնց հետ ինտեգրումը կարող է իրականացվել: Ամպին միանալու համար պատասխանատու ծրագրաշարը տեղադրված է տեսախցիկի ներսում, որն անմիջապես լուրջ պահանջներ է դնում դրա սարքաշարի վրա՝ պրոցեսորին և ազատ հիշողության քանակին։ Սա հիմնականում բացատրում է ամպային CCTV տեսախցիկների ավելի բարձր գինը սովորական IP տեսախցիկների համեմատ: Բացի այդ, տեսախցիկի ֆայլային համակարգին և զարգացման բոլոր անհրաժեշտ գործիքներին հասանելիություն ստանալու համար պահանջվում է CCTV տեսախցիկներ արտադրող ընկերությունների հետ բանակցությունների երկար փուլ:
Մյուս կողմից, բոլոր ժամանակակից IP տեսախցիկները ունեն այլ սարքավորումների (մասնավորապես, տեսաձայնագրիչների) հետ փոխգործակցության ստանդարտ արձանագրություններ: Այսպիսով, առանձին կարգավորիչի օգտագործումը, որը միանում է ստանդարտ արձանագրության միջոցով և հեռարձակում է վիդեո հոսքեր IP տեսախցիկներից դեպի ամպ, ապահովում է զգալի մրցակցային առավելություններ ամպային տեսահսկման համակարգերի համար: Ավելին, եթե հաճախորդն արդեն տեղադրել է պարզ IP տեսախցիկների վրա հիմնված տեսահսկման համակարգ, ապա հնարավոր է դառնում այն ընդլայնել և վերածել լիարժեք ամպային խելացի տան։
IP տեսահսկման համակարգերի ամենահայտնի արձանագրությունը, որն այժմ աջակցվում է 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
Արդյունքում մենք ստանում ենք «*.h» վերնագրի և աղբյուրի «*.cpp» ֆայլերի մի շարք C++-ում, որոնք կարող են ուղղակիորեն տեղադրվել հավելվածում կամ առանձին գրադարանում և կազմել GCC կոմպիլյատորի միջոցով: Բազմաթիվ գործառույթների շնորհիվ կոդը մեծ է և պահանջում է լրացուցիչ օպտիմալացում։ Raspberry Pi 3 մոդելի B+ միկրոհամակարգիչը բավականաչափ արդյունավետություն ունի այս կոդը գործարկելու համար, բայց եթե անհրաժեշտ է կոդը տեղափոխել այլ հարթակ, անհրաժեշտ է ընտրել ճիշտ պրոցեսորի ճարտարապետությունը և համակարգի ռեսուրսները:
IP տեսախցիկները, որոնք աջակցում են ONVIF ստանդարտին, երբ աշխատում են տեղական ցանցում, միացված են հասցեով հատուկ բազմաֆունկցիոնալ խմբին. 239.255.255.250. Կա արձանագրություն
Խելացի տան կարգավորիչի գրաֆիկական ինտերֆեյսը իրականացնում է PHP-ում IP տեսախցիկների որոնման ֆունկցիա, որը շատ հարմար է XML հաղորդագրությունների միջոցով վեբ ծառայությունների հետ շփվելիս: Ցանկի տարրեր ընտրելիս Սարքեր > IP տեսախցիկներ > Սկանավորում Գործարկվում է IP տեսախցիկների որոնման ալգորիթմը՝ արդյունքը ցուցադրելով աղյուսակի տեսքով.
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)
Երբ դուք տեսախցիկ եք ավելացնում կարգավորիչին, կարող եք նշել այն կարգավորումները, որոնց համաձայն այն փոխազդելու է ամպի հետ: Նաև այս փուլում նրան ավտոմատ կերպով հատկացվում է սարքի եզակի նույնացուցիչ, որով այն հետագայում հեշտությամբ կարող է նույնականացվել ամպի ներսում:
Այնուհետև JSON ձևաչափով հաղորդագրություն է ստեղծվում, որը պարունակում է ավելացված տեսախցիկի բոլոր պարամետրերը և ուղարկվում է խելացի տան վերահսկիչի սերվերի գործընթաց RESTful API հրամանի միջոցով, որտեղ տեսախցիկի պարամետրերը վերծանվում և պահվում են ներքին SQLite տվյալների բազայում և օգտագործվում է նաև հետևյալ մշակման թելերը գործարկելու համար.
- RTSP կապի ստեղծում՝ վիդեո և աուդիո հոսքեր ստանալու համար.
- ձայնի տրանսկոդավորում G.711 mu-Law, G.711 A-Law, G.723 և այլն ձևաչափերից: AAC ձևաչափով;
- H.264 ձևաչափով վիդեո հոսքերի և AAC ձևաչափով աուդիո տրանսկոդավորումը FLV կոնտեյների մեջ և այն ամպին RTMP արձանագրության միջոցով փոխանցում;
- IP տեսախցիկի շարժման դետեկտորի վերջնակետի հետ կապ հաստատելը ONVIF արձանագրության միջոցով և դրա պարբերական հարցումը.
- պարբերաբար գեներացնել մանրապատկերի նախադիտման պատկեր և ուղարկել այն ամպին MQTT արձանագրության միջոցով.
- Տեսանյութերի և աուդիո հոսքերի տեղական ձայնագրում MP4 ձևաչափով առանձին ֆայլերի տեսքով խելացի տան կարգավորիչի SD կամ Flash քարտի վրա:
Տեսախցիկների հետ կապ հաստատելու, սերվերի գործընթացում վիդեո հոսքերը տրանսկոդավորելու, մշակելու և ձայնագրելու համար օգտագործվում են գրադարանի գործառույթները
Կատարման փորձարկման փորձարկման ժամանակ կարգավորիչին միացված է 3 տեսախցիկ.
- HiWatch DS-I114W (լուծաչափ՝ 720p, սեղմման ձևաչափ՝ H.264, բիթային արագություն՝ 1 Մբ/վ, ձայն G.711 mu-Law);
- Միկրոդվային MDC-M6290FTD-1 (լուծաչափը՝ 1080p, սեղմման ձևաչափը՝ H.264, բիթային արագությունը՝ 1 Մբ/վ, ձայն չկա);
- Dahua DH-IPC-HDW4231EMP-AS-0360B (լուծաչափը՝ 1080p, սեղմման ձևաչափը՝ H.264, բիթային արագությունը՝ 1.5 Մբ/վ, AAC աուդիո):
Բոլոր երեք հոսքերը միաժամանակ դուրս են բերվել ամպ, աուդիո տրանսկոդավորումն իրականացվել է միայն մեկ տեսախցիկից, իսկ տեղական արխիվային ձայնագրումն անջատվել է: CPU-ի բեռնվածությունը մոտավորապես 5% էր, RAM-ի օգտագործումը՝ 32 ՄԲ (մեկ գործընթացի համար), 56 ՄԲ (ընդհանուր՝ ներառյալ ՕՀ):
Այսպիսով, մոտավորապես 20-30 տեսախցիկ կարող է միացված լինել խելացի տան կարգավորիչին (կախված լուծաչափից և բիթային արագությունից), ինչը բավարար է եռահարկ տնակի կամ փոքր պահեստի տեսահսկման համակարգի համար: Ավելի մեծ կատարողականություն պահանջող առաջադրանքների համար կարող եք օգտագործել nettop բազմամիջուկ Intel պրոցեսորով և Linux Debian Sarge OS-ով: Կարգավորիչը ներկայումս փորձնական շահագործման է ենթարկվում, և դրա աշխատանքի վերաբերյալ տվյալները կթարմացվեն:
Փոխազդեցություն ամպի հետ
Ամպի վրա հիմնված խելացի տունը պահպանում է օգտատերերի տվյալները (վիդեո և սենսորային չափումներ) ամպի մեջ: Ամպային պահեստավորման ճարտարապետությունը ավելի մանրամասն կքննարկվի մեր շարքի հաջորդ հոդվածում: Հիմա եկեք խոսենք ինտերֆեյսի մասին խելացի տան կարգավորիչից դեպի ամպ տեղեկատվական հաղորդագրությունների փոխանցման համար:
Միացված սարքերի վիճակները և սենսորների չափումները փոխանցվում են արձանագրության միջոցով
- QoS 0 - առավելագույնը մեկ անգամ (առանց առաքման երաշխիք);
- QoS 1 - առնվազն մեկ անգամ (առաքման հաստատմամբ);
- QoS 2 - ուղիղ մեկ անգամ (առաքման լրացուցիչ հաստատումով):
Մեր դեպքում մենք օգտագործում ենք
Խելացի տան կարգավորիչի կարգավիճակի մասին հաղորդագրություններ փոխանցելու համար օգտագործվում է պահված հաղորդագրությունների մեխանիզմը
MQTT հաճախորդը մշակվել է գրադարանի ներդրման հիման վրա
H.264 + AAC մեդիա հոսքերը ուղարկվում են ամպ RTMP արձանագրության միջոցով, որտեղ մեդիա սերվերների կլաստերը պատասխանատու է դրանց մշակման և պահպանման համար: Բեռը կլաստերում օպտիմալ կերպով բաշխելու և ամենաքիչ բեռնված մեդիա սերվերը ընտրելու համար խելացի տան կարգավորիչը նախնական հարցում է անում ամպի բեռի հավասարակշռողին և միայն դրանից հետո ուղարկում մեդիա հոսքը:
Ամփոփում
Հոդվածում ուսումնասիրվել է Raspberry Pi 3 B+ միկրոհամակարգչի վրա հիմնված խելացի տան վերահսկիչի մեկ կոնկրետ իրականացում, որը կարող է ստանալ, մշակել տեղեկատվություն և կառավարել սարքավորումները Z-Wave արձանագրության միջոցով, փոխազդել IP տեսախցիկների հետ ONVIF արձանագրության միջոցով, ինչպես նաև փոխանակել տվյալներ և հրամաններ ամպային ծառայության հետ MQTT և RTMP արձանագրությունների միջոցով: Արտադրության տրամաբանական շարժիչը մշակվել է JSON ձևաչափով ներկայացված տրամաբանական կանոնների և փաստերի համեմատության հիման վրա:
Խելացի տան կարգավորիչը ներկայումս փորձնական շահագործման է ենթարկվում Մոսկվայի և Մոսկվայի տարածաշրջանի մի քանի վայրերում:
Կարգավորիչի հաջորդ տարբերակը նախատեսում է միացնել այլ տեսակի սարքեր (RF, Bluetooth, WiFi, լարային): Օգտատերերի հարմարության համար սենսորների և IP տեսախցիկների միացման կարգը կտեղափոխվի բջջային հավելված։ Գոյություն ունեն նաև սերվերի պրոցեսի կոդը օպտիմալացնելու և ծրագրաշարը օպերացիոն համակարգ տեղափոխելու գաղափարներ
Source: www.habr.com