Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Այսօր միկրոէլեկտրոնիկայի, կապի ուղիների, ինտերնետ տեխնոլոգիաների և արհեստական ​​ինտելեկտի արագ զարգացման շնորհիվ խելացի տների թեման ավելի ու ավելի արդիական է դառնում։ Մարդկային բնակարանները զգալի փոփոխություններ են կրել քարե դարից ի վեր և Արդյունաբերական հեղափոխության 4.0-ի և իրերի ինտերնետի դարաշրջանում այն ​​դարձել է հարմարավետ, ֆունկցիոնալ և անվտանգ: Շուկա են գալիս լուծումներ, որոնք բնակարանը կամ ամառանոցը վերածում են բարդ տեղեկատվական համակարգերի, որոնք վերահսկվում են աշխարհի ցանկացած կետից սմարթֆոնի միջոցով: Ավելին, մարդ-մեքենա փոխազդեցությունն այլևս չի պահանջում ծրագրավորման լեզուների իմացություն՝ խոսքի ճանաչման և սինթեզի ալգորիթմների շնորհիվ մարդն իր մայրենի լեզվով խոսում է խելացի տան հետ:

Ներկայումս շուկայում առկա որոշ խելացի տնային համակարգեր ամպային տեսահսկման համակարգերի տրամաբանական զարգացումն են, որոնց մշակողները հասկացել են համապարփակ լուծման անհրաժեշտությունը ոչ միայն մոնիտորինգի, այլև հեռավոր օբյեկտների կառավարման համար:

Ձեր ուշադրությանն ենք ներկայացնում երեք հոդվածներից բաղկացած մի շարք, որոնք կպատմեն ամպային խելացի տան համակարգի բոլոր հիմնական բաղադրիչների մասին, որոնք անձամբ մշակվել և գործարկվել են հեղինակի կողմից։ Առաջին հոդվածը նվիրված է խելացի տան ներսում տեղադրված տերմինալային հաճախորդների սարքավորումներին, երկրորդը՝ ամպային պահպանման և տվյալների մշակման համակարգի ճարտարապետությանը, և վերջապես, երրորդը՝ բջջային և ստացիոնար սարքերում համակարգը կառավարելու հաճախորդի հավելվածին:

Խելացի տան սարքավորումներ

Նախ, եկեք խոսենք այն մասին, թե ինչպես կարելի է խելացի տուն պատրաստել սովորական բնակարանից, տնակից կամ քոթեջից: Դա անելու համար, որպես կանոն, անհրաժեշտ է տանը տեղադրել հետևյալ սարքավորումները.

  1. սենսորներ, որոնք չափում են շրջակա միջավայրի տարբեր պարամետրեր;
  2. Արտաքին օբյեկտների վրա գործող շարժիչներ;
  3. կարգավորիչ, որը հաշվարկներ է կատարում սենսորային չափումների և ներկառուցված տրամաբանության համաձայն և հրամաններ է տալիս մղիչներին:

Հետևյալ նկարը ցույց է տալիս խելացի տան դիագրամը, որի վրա կան ջրի արտահոսքի (1) սենսորներ լոգարանում, ջերմաստիճանի (2) և լուսավորության (3) ննջասենյակում, խելացի վարդակից (4) խոհանոցում և տեսահսկման տեսախցիկ (5) միջանցքում.

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Ներկայումս լայնորեն կիրառվում են RF433, Z-Wave, ZigBee, Bluetooth և WiFi արձանագրություններով աշխատող անլար սենսորները: Նրանց հիմնական առավելություններն են տեղադրման և օգտագործման հեշտությունը, ինչպես նաև ցածր արժեքը և հուսալիությունը, քանի որ Արտադրողները ձգտում են իրենց սարքերը բերել զանգվածային շուկա և դրանք հասանելի դարձնել սովորական օգտագործողի համար:

Սենսորները և ակտուատորները, որպես կանոն, միացված են անլար ինտերֆեյսի միջոցով խելացի տան կարգավորիչին (6) - մասնագիտացված միկրոհամակարգիչ, որը միավորում է այս բոլոր սարքերը մեկ ցանցի մեջ և վերահսկում դրանք:

Այնուամենայնիվ, որոշ լուծումներ կարող են միաժամանակ համատեղել սենսորը, ակտուատորը և կարգավորիչը: Օրինակ, խելացի խրոցը կարող է ծրագրավորվել, որպեսզի միացվի կամ անջատվի ըստ ժամանակացույցի, իսկ ամպային տեսահսկման տեսախցիկը կարող է տեսանկարահանել շարժման դետեկտորի ազդանշանի հիման վրա: Ամենապարզ դեպքերում դուք կարող եք անել առանց առանձին վերահսկիչի, բայց շատ սցենարներով ճկուն համակարգ ստեղծելու համար անհրաժեշտ է.

Խելացի տան կարգավորիչը գլոբալ ցանցին միացնելու համար կարող է օգտագործվել սովորական ինտերնետ երթուղիչ (7), որը վաղուց դարձել է սովորական կենցաղային սարք ցանկացած տանը: Այստեղ կա ևս մեկ փաստարկ՝ հօգուտ խելացի տան կարգավորիչի. եթե ինտերնետի հետ կապը կորչի, խելացի տունը կշարունակի գործել նորմալ՝ շնորհիվ կարգավորիչի ներսում պահվող տրամաբանական բլոկի, և ոչ թե ամպային ծառայության մեջ:

Խելացի տան վերահսկիչ

Այս հոդվածում քննարկված ամպային խելացի տան համակարգի կարգավորիչը մշակվել է մեկ տախտակով միկրոհամակարգչի հիման վրա Raspberry Pi 3 մոդել B+, որը թողարկվել է 2018 թվականի մարտին և ունի բավարար ռեսուրսներ և կատարողականություն խելացի տան առաջադրանքների համար։ Այն ներառում է քառամիջուկ Cortex-A53 պրոցեսոր, որը հիմնված է 64-բիթանոց ARMv8-A ճարտարապետության վրա, ժամացույցը 1.4 ԳՀց հաճախականությամբ, ինչպես նաև 1 ԳԲ RAM, Wi-Fi 802.11ac, Bluetooth 4.2 և գիգաբիթ Ethernet ադապտեր, որն աշխատում է USB 2.0-ի միջոցով: .

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Կարգավորիչը հավաքելը շատ պարզ է. միկրոհամակարգիչը (1) տեղադրված է պլաստիկ պատյանում (2), այնուհետև տեղադրվում է 8 ԳԲ հիշողության քարտ microSD ձևաչափով ծրագրային ապահովմամբ (3) և USB Z-Wave ցանցի կարգավորիչ (4): համապատասխան slots. Խելացի տան կարգավորիչը միացված է էլեկտրամատակարարմանը 5V, 2.1A հոսանքի ադապտեր (5) և USB - micro-USB մալուխի (6) միջոցով: Յուրաքանչյուր կարգավորիչ ունի եզակի նույնականացման համար, որը գրված է կազմաձևման ֆայլում, երբ առաջին անգամ գործարկվել է և անհրաժեշտ է ամպային խելացի տան ծառայությունների հետ փոխգործակցության համար:

Խելացի տան կարգավորիչի ծրագիրը մշակվել է այս հոդվածի հեղինակի կողմից՝ հիմնվելով օպերացիոն համակարգի վրա Linux Raspbian Stretch. Այն բաղկացած է հետևյալ հիմնական ենթահամակարգերից.

  • սերվերի գործընթաց խելացի տան սարքավորումների և ամպի հետ փոխգործակցության համար.
  • գրաֆիկական ինտերֆեյս կարգավորիչի կազմաձևման և գործառնական պարամետրերը սահմանելու համար.
  • կարգավորիչի կոնֆիգուրացիան պահելու տվյալների բազա:

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Նյութերի բազա խելացի տան վերահսկիչն իրականացվում է ներկառուցված DBMS-ի հիման վրա SQLite- ը և ֆայլ է SD քարտի վրա՝ համակարգային ծրագրակազմով: Այն ծառայում է որպես հսկիչի կազմաձևման պահեստ՝ կապված սարքավորումների և դրա ներկա վիճակի մասին տեղեկություններ, արտադրության տրամաբանական կանոնների բլոկ, ինչպես նաև տեղեկատվություն, որը պահանջում է ինդեքսավորում (օրինակ՝ տեղական վիդեո արխիվի ֆայլերի անունները): Երբ կարգավորիչը վերագործարկվում է, այս տեղեկատվությունը պահպանվում է, ինչը հնարավորություն է տալիս վերականգնել կարգավորիչը հոսանքի անջատման դեպքում:

GUI խելացի տան վերահսկիչ, որը մշակվել է PHP 7-ում՝ օգտագործելով միկրոշրջանակ Բարակ. Վեբ սերվերը պատասխանատու է հավելվածի գործարկման համար: lighttpd, հաճախ օգտագործվում է ներկառուցված սարքերում՝ լավ կատարողականության և ռեսուրսների ցածր պահանջների պատճառով:

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)

Գրաֆիկական ինտերֆեյսի հիմնական գործառույթը խելացի տան սարքավորումները (IP հսկողության տեսախցիկներ և սենսորներ) կարգավորիչին միացնելն է: Վեբ հավելվածը կարդում է կարգավորիչի և դրան միացված սարքերի կոնֆիգուրացիան և ընթացիկ վիճակը SQLite տվյալների բազայից: Կարգավորիչի կոնֆիգուրացիան փոխելու համար այն ուղարկում է հսկիչ հրամաններ JSON ձևաչափով սերվերի գործընթացի RESTful API ինտերֆեյսի միջոցով:

Սերվերի գործընթաց

Սերվերի գործընթաց - հիմնական բաղադրիչ, որն իրականացնում է խելացի տան հիմքը հանդիսացող տեղեկատվական գործընթացների ավտոմատացման բոլոր հիմնական աշխատանքները. զգայական տվյալների ընդունում և մշակում, ներկառուցված տրամաբանությունից կախված կառավարման գործողություններ: Սերվերի գործընթացի նպատակն է փոխազդել խելացի տան սարքավորումների հետ, կատարել արտադրության տրամաբանական կանոններ, ստանալ և մշակել հրամաններ գրաֆիկական ինտերֆեյսից և ամպից: Քննարկվող խելացի տան կարգավորիչում սերվերի գործընթացը իրականացվում է որպես C++-ում մշակված և որպես առանձին ծառայություն գործարկված բազմաշերտ հավելված: systemd օպերացիոն համակարգ Linux Raspbian.

Սերվերի գործընթացի հիմնական բլոկներն են.

  1. Հաղորդագրությունների կառավարիչ;
  2. IP տեսախցիկի սերվեր;
  3. Z-Wave սարքի սերվեր;
  4. Արտադրության տրամաբանական կանոնների սերվեր;
  5. Կարգավորիչի և տրամաբանական կանոնների բլոկի կազմաձևման բազա;
  6. RESTful API սերվեր գրաֆիկական ինտերֆեյսի հետ փոխգործակցության համար;
  7. MQTT հաճախորդ՝ ամպի հետ շփվելու համար:

Սերվերի գործընթացի բլոկներն իրականացվում են որպես առանձին թելեր, որոնց միջև տեղեկատվությունը փոխանցվում է JSON ձևաչափով հաղորդագրությունների տեսքով (կամ այս ձևաչափը պրոցեսային հիշողության մեջ ներկայացնող տվյալների կառուցվածքներ):

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Սերվերի գործընթացի հիմնական բաղադրիչն է հաղորդագրությունների կառավարիչ, որն ուղղորդում է 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 բանալի-արժեք զույգերը.

  1. հավասար է «հավասար»;
  2. հավասար չէ «not_equal»-ին;
  3. պակաս «պակաս»;
  4. ավելի «ավելի մեծ»;
  5. պակաս կամ հավասար «պակաս_կամ_հավասար»;
  6. մեծ է կամ հավասար է «մեծ_կամ_հավասարին»:

Համեմատության արդյունքները կարող են կապված լինել միմյանց հետ՝ օգտագործելով Բուլյան հանրահաշվի օպերատորները.

  1. Եվ «և»
  2. ԿԱՄ «կամ»;
  3. ՉԻ «ոչ»:

Այսպիսով, գրելով օպերատորներ և օպերանդներ լեհական նշումով, կարող եք ստեղծել բավականին բարդ պայմաններ՝ մեծ թվով պարամետրերով։

Ճիշտ նույն մեխանիզմը, որը հիմնված է JSON հաղորդագրությունների և JSON ձևաչափով արտադրության կանոնների վրա, օգտագործվում է արտադրության տրամաբանական սերվերի բլոկում՝ գիտելիքները ներկայացնելու և տրամաբանական եզրակացություն իրականացնելու համար՝ օգտագործելով խելացի տան սենսորների զգայական տվյալները:

Օգտվելով բջջային հավելվածից՝ օգտատերը ստեղծում է սցենարներ, որոնց համաձայն պետք է գործի խելացի տունը։ Օրինակ: «Եթե մուտքի դուռը բացելու սենսորը միացված է, ապա միացրեք միջանցքի լույսը». Հավելվածը տվյալների բազայից կարդում է սենսորների (բացվող սենսոր) և ակտուատորների (խելացի վարդակ կամ խելացի լամպ) նույնացուցիչները և ստեղծում JSON ձևաչափով տրամաբանական կանոն, որն ուղարկվում է խելացի տան կարգավորիչին։ Այս մեխանիզմը ավելի մանրամասն կքննարկվի մեր շարքի երրորդ հոդվածում, որտեղ մենք կխոսենք խելացի տան կառավարման համար հաճախորդի հավելվածի մասին:

Վերևում քննարկված արտադրության տրամաբանական մեխանիզմն իրականացվում է գրադարանի միջոցով RapidJSON — SAX վերլուծիչ JSON ձևաչափի համար C++-ում: Արտադրության կանոնների զանգվածի հաջորդական ընթերցումը և վերլուծությունը թույլ է տալիս հեշտությամբ իրականացնել տվյալների համեմատության գործառույթը նախորդների ներսում.

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-ալիքի սենսորներ և ակտուատորներ

Խելացի տան հիմնական առավելությունն այն է, որ այն կարող է ինքնուրույն չափել արտաքին միջավայրի տարբեր պարամետրեր և կատարել օգտակար գործառույթներ՝ կախված իրավիճակից։ Դա անելու համար սենսորներն ու ակտուատորները միացված են խելացի տան կարգավորիչին: Ընթացիկ տարբերակում դրանք անլար սարքեր են, որոնք աշխատում են արձանագրության միջոցով Զ-ալիք հատուկ հատկացված հաճախականության վրա 869 MHz Ռուսաստանի համար. Գործելու համար դրանք միավորվում են ցանցային ցանցի մեջ, որը պարունակում է ազդանշանի կրկնիչներ՝ ծածկույթի տարածքը մեծացնելու համար: Սարքերն ունեն նաև էներգախնայողության հատուկ ռեժիմ՝ նրանք ժամանակի մեծ մասն անցկացնում են քնի ռեժիմում և տեղեկատվություն են ուղարկում միայն դրանց վիճակի փոփոխության դեպքում, ինչը կարող է զգալիորեն երկարացնել ներկառուցված մարտկոցի կյանքը։

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Այժմ շուկայում կարող եք գտնել բավականին մեծ թվով տարբեր Z-Wave սարքեր: Եկեք նայենք մի քանի օրինակների.

  1. Zipato PAN16 խելացի վարդակը կարող է չափել հետևյալ պարամետրերը՝ էլեկտրաէներգիայի սպառումը (կՎտժ), հզորությունը (Վտ), լարումը (V) և հոսանքը (A) էլեկտրական ցանցում։ Ունի նաև ներկառուցված անջատիչ, որով կարող եք կառավարել միացված էլեկտրական սարքը;
  2. Neo Coolcam արտահոսքի սենսորը հայտնաբերում է թափված հեղուկի առկայությունը՝ փակելով հեռակառավարվող զոնդի կոնտակտները.
  3. Zipato PH-PSG01 ծխի սենսորը գործարկվում է, երբ ծխի մասնիկները մտնում են գազի անալիզատորի խցիկ;
  4. Neo Coolcam շարժման սենսորը վերլուծում է մարդու մարմնի ինֆրակարմիր ճառագայթումը: Բացի այդ, կա լույսի սենսոր (Lx);
  5. Multisensor Philio PST02-A-ն ​​չափում է ջերմաստիճանը (°C), լույսը (%), դռների բացումը, մարդու ներկայությունը սենյակում;
  6. Z-Wave USB Stick ZME E UZB1 ցանցի կարգավորիչ, որին միացված են սենսորները։

Շատ կարևոր է, որ սարքերը և կարգավորիչը աշխատեն նույն հաճախականությամբ, այլապես միացման պահին նրանք պարզապես չեն տեսնի միմյանց։ Z-Wave ցանցի մեկ կարգավորիչին կարելի է միացնել մինչև 232 սարք, ինչը միանգամայն բավարար է բնակարանի կամ գյուղական տան համար։ Ցանցի ծածկույթի տարածքը ներսում ընդլայնելու համար խելացի վարդակը կարող է օգտագործվել որպես ազդանշանի կրկնող:

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Նախորդ պարբերությունում քննարկված խելացի տան կարգավորիչի սերվերի գործընթացում Z-Wave սերվերը պատասխանատու է Z-Wave սարքերի հետ փոխգործակցության համար: Այն օգտագործում է գրադարան՝ սենսորներից տեղեկատվություն ստանալու համար OpenZWave C++-ում, որն ապահովում է ինտերֆեյս Z-Wave ցանցի USB կարգավորիչի հետ փոխազդելու համար և աշխատում է մի շարք սենսորների և ակտուատորների հետ: Սենսորով չափված բնապահպանական պարամետրի արժեքը գրանցվում է Z-Wave սերվերի կողմից JSON հաղորդագրության տեսքով.

{
	"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 կարգավորիչին: Այնուհետև նրանք մտնում են ակտուատոր, որը փոխում է շրջակա միջավայրի օբյեկտների վիճակը, և խելացի տունն այդպիսով կատարում է օգտակար աշխատանք։

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)

Z-Wave սարքերի միացումը կատարվում է խելացի տան կարգավորիչի գրաֆիկական ինտերֆեյսում: Դա անելու համար անցեք էջ սարքերի ցանկով և սեղմեք «Ավելացնել» կոճակը: RESTful API ինտերֆեյսի միջոցով ավելացնելու հրամանը մտնում է սերվերի գործընթաց և այնուհետև հաղորդագրությունների կառավարչի կողմից ուղարկվում է Z-Wave սերվեր, որը Z-Wave ցանցի USB կարգավորիչը դնում է սարքեր ավելացնելու հատուկ ռեժիմի մեջ: Հաջորդը, Z-Wave սարքի վրա դուք պետք է կատարեք սպասարկման կոճակի արագ սեղմումներ (3 սեղմում 1,5 վայրկյանում): USB կարգավորիչը սարքը միացնում է ցանցին և դրա մասին տեղեկատվություն է ուղարկում Z-Wave սերվերին: Դա իր հերթին նոր մուտք է ստեղծում SQLite տվյալների բազայում նոր սարքի պարամետրերով: Նշված ժամանակային ընդմիջումից հետո գրաֆիկական ինտերֆեյսը վերադառնում է Z-Wave սարքերի ցանկի էջ, կարդում է տեղեկատվությունը տվյալների բազայից և ցուցադրում նոր սարքը ցուցակում: Յուրաքանչյուր սարք ստանում է իր յուրահատուկ նույնացուցիչը, որն օգտագործվում է արտադրության եզրակացության կանոններում և ամպում աշխատելիս: Այս ալգորիթմի գործողությունը ներկայացված է UML դիագրամում.

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)

IP տեսախցիկների միացում

Այս հոդվածում քննարկված ամպային խելացի տան համակարգը ամպային տեսահսկման համակարգի արդիականացումն է, որը նույնպես մշակվել է հեղինակի կողմից, որը շուկայում է մի քանի տարի և ունի բազմաթիվ տեղադրումներ Ռուսաստանում:

Ամպային տեսահսկման համակարգերի համար սուր խնդիրներից մեկը սարքավորումների սահմանափակ ընտրությունն է, որոնց հետ ինտեգրումը կարող է իրականացվել: Ամպին միանալու համար պատասխանատու ծրագրաշարը տեղադրված է տեսախցիկի ներսում, որն անմիջապես լուրջ պահանջներ է դնում դրա սարքաշարի վրա՝ պրոցեսորին և ազատ հիշողության քանակին։ Սա հիմնականում բացատրում է ամպային CCTV տեսախցիկների ավելի բարձր գինը սովորական IP տեսախցիկների համեմատ: Բացի այդ, տեսախցիկի ֆայլային համակարգին և զարգացման բոլոր անհրաժեշտ գործիքներին հասանելիություն ստանալու համար պահանջվում է CCTV տեսախցիկներ արտադրող ընկերությունների հետ բանակցությունների երկար փուլ:

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Մյուս կողմից, բոլոր ժամանակակից IP տեսախցիկները ունեն այլ սարքավորումների (մասնավորապես, տեսաձայնագրիչների) հետ փոխգործակցության ստանդարտ արձանագրություններ: Այսպիսով, առանձին կարգավորիչի օգտագործումը, որը միանում է ստանդարտ արձանագրության միջոցով և հեռարձակում է վիդեո հոսքեր IP տեսախցիկներից դեպի ամպ, ապահովում է զգալի մրցակցային առավելություններ ամպային տեսահսկման համակարգերի համար: Ավելին, եթե հաճախորդն արդեն տեղադրել է պարզ IP տեսախցիկների վրա հիմնված տեսահսկման համակարգ, ապա հնարավոր է դառնում այն ​​ընդլայնել և վերածել լիարժեք ամպային խելացի տան։

IP տեսահսկման համակարգերի ամենահայտնի արձանագրությունը, որն այժմ աջակցվում է IP տեսախցիկների բոլոր արտադրողների կողմից՝ առանց բացառության ONVIF պրոֆիլ S, որի բնութագրերը գոյություն ունեն վեբ ծառայությունների նկարագրության լեզվով wsdl. Օգտագործելով կոմունալ ծառայություններ գործիքակազմից gSOAP Հնարավոր է գեներացնել աղբյուրի կոդը 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. Կա արձանագրություն WS Discovery, որը թույլ է տալիս ավտոմատացնել սարքերի որոնումը տեղական ցանցում:

Խելացի տան կարգավորիչի գրաֆիկական ինտերֆեյսը իրականացնում է PHP-ում IP տեսախցիկների որոնման ֆունկցիա, որը շատ հարմար է XML հաղորդագրությունների միջոցով վեբ ծառայությունների հետ շփվելիս: Ցանկի տարրեր ընտրելիս Սարքեր > IP տեսախցիկներ > Սկանավորում Գործարկվում է IP տեսախցիկների որոնման ալգորիթմը՝ արդյունքը ցուցադրելով աղյուսակի տեսքով.

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ
(սեղմեք նկարի վրա՝ այն ավելի բարձր լուծաչափով բացելու համար)

Երբ դուք տեսախցիկ եք ավելացնում կարգավորիչին, կարող եք նշել այն կարգավորումները, որոնց համաձայն այն փոխազդելու է ամպի հետ: Նաև այս փուլում նրան ավտոմատ կերպով հատկացվում է սարքի եզակի նույնացուցիչ, որով այն հետագայում հեշտությամբ կարող է նույնականացվել ամպի ներսում:

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Այնուհետև JSON ձևաչափով հաղորդագրություն է ստեղծվում, որը պարունակում է ավելացված տեսախցիկի բոլոր պարամետրերը և ուղարկվում է խելացի տան վերահսկիչի սերվերի գործընթաց RESTful API հրամանի միջոցով, որտեղ տեսախցիկի պարամետրերը վերծանվում և պահվում են ներքին SQLite տվյալների բազայում և օգտագործվում է նաև հետևյալ մշակման թելերը գործարկելու համար.

  1. RTSP կապի ստեղծում՝ վիդեո և աուդիո հոսքեր ստանալու համար.
  2. ձայնի տրանսկոդավորում G.711 mu-Law, G.711 A-Law, G.723 և այլն ձևաչափերից: AAC ձևաչափով;
  3. H.264 ձևաչափով վիդեո հոսքերի և AAC ձևաչափով աուդիո տրանսկոդավորումը FLV կոնտեյների մեջ և այն ամպին RTMP արձանագրության միջոցով փոխանցում;
  4. IP տեսախցիկի շարժման դետեկտորի վերջնակետի հետ կապ հաստատելը ONVIF արձանագրության միջոցով և դրա պարբերական հարցումը.
  5. պարբերաբար գեներացնել մանրապատկերի նախադիտման պատկեր և ուղարկել այն ամպին MQTT արձանագրության միջոցով.
  6. Տեսանյութերի և աուդիո հոսքերի տեղական ձայնագրում MP4 ձևաչափով առանձին ֆայլերի տեսքով խելացի տան կարգավորիչի SD կամ Flash քարտի վրա:

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Տեսախցիկների հետ կապ հաստատելու, սերվերի գործընթացում վիդեո հոսքերը տրանսկոդավորելու, մշակելու և ձայնագրելու համար օգտագործվում են գրադարանի գործառույթները FFmpeg 4.1.0:

Կատարման փորձարկման փորձարկման ժամանակ կարգավորիչին միացված է 3 տեսախցիկ.

  1. HiWatch DS-I114W (լուծաչափ՝ 720p, սեղմման ձևաչափ՝ H.264, բիթային արագություն՝ 1 Մբ/վ, ձայն G.711 mu-Law);
  2. Միկրոդվային MDC-M6290FTD-1 (լուծաչափը՝ 1080p, սեղմման ձևաչափը՝ H.264, բիթային արագությունը՝ 1 Մբ/վ, ձայն չկա);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (լուծաչափը՝ 1080p, սեղմման ձևաչափը՝ H.264, բիթային արագությունը՝ 1.5 Մբ/վ, AAC աուդիո):

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Բոլոր երեք հոսքերը միաժամանակ դուրս են բերվել ամպ, աուդիո տրանսկոդավորումն իրականացվել է միայն մեկ տեսախցիկից, իսկ տեղական արխիվային ձայնագրումն անջատվել է: CPU-ի բեռնվածությունը մոտավորապես 5% էր, RAM-ի օգտագործումը՝ 32 ՄԲ (մեկ գործընթացի համար), 56 ՄԲ (ընդհանուր՝ ներառյալ ՕՀ):

Այսպիսով, մոտավորապես 20-30 տեսախցիկ կարող է միացված լինել խելացի տան կարգավորիչին (կախված լուծաչափից և բիթային արագությունից), ինչը բավարար է եռահարկ տնակի կամ փոքր պահեստի տեսահսկման համակարգի համար: Ավելի մեծ կատարողականություն պահանջող առաջադրանքների համար կարող եք օգտագործել nettop բազմամիջուկ Intel պրոցեսորով և Linux Debian Sarge OS-ով: Կարգավորիչը ներկայումս փորձնական շահագործման է ենթարկվում, և դրա աշխատանքի վերաբերյալ տվյալները կթարմացվեն:

Փոխազդեցություն ամպի հետ

Ամպի վրա հիմնված խելացի տունը պահպանում է օգտատերերի տվյալները (վիդեո և սենսորային չափումներ) ամպի մեջ: Ամպային պահեստավորման ճարտարապետությունը ավելի մանրամասն կքննարկվի մեր շարքի հաջորդ հոդվածում: Հիմա եկեք խոսենք ինտերֆեյսի մասին խելացի տան կարգավորիչից դեպի ամպ տեղեկատվական հաղորդագրությունների փոխանցման համար:

Միացված սարքերի վիճակները և սենսորների չափումները փոխանցվում են արձանագրության միջոցով MQTT, որն իր պարզության և էներգաարդյունավետության շնորհիվ հաճախ օգտագործվում է Internet of Things նախագծերում։ MQTT-ն օգտագործում է հաճախորդ-սերվեր մոդել, որտեղ հաճախորդները բաժանորդագրվում են բրոքերի որոշակի թեմաների և հրապարակում իրենց հաղորդագրությունները: Բրոքերը հաղորդագրություններ է ուղարկում բոլոր բաժանորդներին QoS (Ծառայության որակ) մակարդակով որոշված ​​կանոնների համաձայն.

  • QoS 0 - առավելագույնը մեկ անգամ (առանց առաքման երաշխիք);
  • QoS 1 - առնվազն մեկ անգամ (առաքման հաստատմամբ);
  • QoS 2 - ուղիղ մեկ անգամ (առաքման լրացուցիչ հաստատումով):

Մեր դեպքում մենք օգտագործում ենք Խավարման մոծակ. Թեմայի անվանումը խելացի տան կարգավորիչի եզակի նույնացուցիչն է: Սերվերի գործընթացի ներսում գտնվող MQTT հաճախորդը բաժանորդագրվում է այս թեմային և դրանում թարգմանում է JSON հաղորդագրությունները, որոնք ստացվում են հաղորդագրությունների կառավարիչից: Ընդհակառակը, MQTT բրոքերից հաղորդագրությունները փոխանցվում են նրա կողմից հաղորդագրությունների կառավարիչին, որն այնուհետև դրանք մուլտիպլեքսացնում է իր բաժանորդներին սերվերի գործընթացում.

Cloud Smart Home. Մաս 1. Կարգավորիչ և սենսորներ

Խելացի տան կարգավորիչի կարգավիճակի մասին հաղորդագրություններ փոխանցելու համար օգտագործվում է պահված հաղորդագրությունների մեխանիզմը պահպանված հաղորդագրություններ MQTT արձանագրություն. Սա թույլ է տալիս ճիշտ վերահսկել հոսանքի խափանումների ժամանակ նորից միացումների ժամանակացույցը:

MQTT հաճախորդը մշակվել է գրադարանի ներդրման հիման վրա Eclipse Paho C++ լեզվով։

H.264 + AAC մեդիա հոսքերը ուղարկվում են ամպ RTMP արձանագրության միջոցով, որտեղ մեդիա սերվերների կլաստերը պատասխանատու է դրանց մշակման և պահպանման համար: Բեռը կլաստերում օպտիմալ կերպով բաշխելու և ամենաքիչ բեռնված մեդիա սերվերը ընտրելու համար խելացի տան կարգավորիչը նախնական հարցում է անում ամպի բեռի հավասարակշռողին և միայն դրանից հետո ուղարկում մեդիա հոսքը:

Ամփոփում

Հոդվածում ուսումնասիրվել է Raspberry Pi 3 B+ միկրոհամակարգչի վրա հիմնված խելացի տան վերահսկիչի մեկ կոնկրետ իրականացում, որը կարող է ստանալ, մշակել տեղեկատվություն և կառավարել սարքավորումները Z-Wave արձանագրության միջոցով, փոխազդել IP տեսախցիկների հետ ONVIF արձանագրության միջոցով, ինչպես նաև փոխանակել տվյալներ և հրամաններ ամպային ծառայության հետ MQTT և RTMP արձանագրությունների միջոցով: Արտադրության տրամաբանական շարժիչը մշակվել է JSON ձևաչափով ներկայացված տրամաբանական կանոնների և փաստերի համեմատության հիման վրա:

Խելացի տան կարգավորիչը ներկայումս փորձնական շահագործման է ենթարկվում Մոսկվայի և Մոսկվայի տարածաշրջանի մի քանի վայրերում:

Կարգավորիչի հաջորդ տարբերակը նախատեսում է միացնել այլ տեսակի սարքեր (RF, Bluetooth, WiFi, լարային): Օգտատերերի հարմարության համար սենսորների և IP տեսախցիկների միացման կարգը կտեղափոխվի բջջային հավելված։ Գոյություն ունեն նաև սերվերի պրոցեսի կոդը օպտիմալացնելու և ծրագրաշարը օպերացիոն համակարգ տեղափոխելու գաղափարներ OpenWrt- ը. Սա թույլ կտա խնայել առանձին կարգավորիչի վրա և փոխանցել խելացի տան ֆունկցիոնալությունը սովորական կենցաղային երթուղիչին:

Source: www.habr.com

Добавить комментарий