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 жылдың наурыз айында шығарылды және смарт үй тапсырмалары үшін жеткілікті ресурстар мен өнімділікке ие. Ол 53-биттік ARMv64-A архитектурасына негізделген, 8 ГГц жиілікте жұмыс істейтін төрт ядролы Cortex-A1.4 процессорын, сонымен қатар 1 ГБ жедел жады, Wi-Fi 802.11ac, Bluetooth 4.2 және USB 2.0 арқылы жұмыс істейтін гигабиттік Ethernet адаптерін қамтиды. .

Cloud Smart Home. 1-бөлім: Контроллер және сенсорлар

Контроллерді құрастыру өте қарапайым – микрокомпьютер (1) пластик қаптамаға (2) орнатылады, одан кейін бағдарламалық құралмен (8) microSD пішіміндегі 3 ГБ жад картасы және USB Z-Wave желі контроллері (4) орнатылған. сәйкес ұялар. Смарт үй контроллері 5В, 2.1А қуат адаптері (5) және USB - micro-USB кабелі (6) арқылы қуат көзіне қосылған. Әрбір контроллердің бірегей сәйкестендіру нөмірі бар, ол бірінші рет іске қосылған кезде конфигурация файлында жазылады және бұлттық смарт үй қызметтерімен өзара әрекеттесу үшін қажет.

Смарт үй контроллерінің бағдарламалық құралын осы мақаланың авторы операциялық жүйе негізінде әзірлеген Linux Raspbian Stretch. Ол келесі негізгі ішкі жүйелерден тұрады:

  • смарт үй жабдықтарымен және бұлтпен өзара әрекеттесу үшін серверлік процесс;
  • контроллердің конфигурациясын және жұмыс параметрлерін орнатуға арналған графикалық пайдаланушы интерфейсі;
  • контроллер конфигурациясын сақтауға арналған дерекқор.

Cloud Smart Home. 1-бөлім: Контроллер және сенсорлар

Мәліметтер базасы смарт үй контроллері енгізілген ДҚБЖ негізінде жүзеге асырылады SQLite және жүйелік бағдарламалық құралы бар SD картасындағы файл. Ол контроллер конфигурациясының сақтау орны ретінде қызмет етеді - қосылған жабдық және оның ағымдағы күйі туралы ақпарат, логикалық өндіріс ережелерінің блогы, сондай-ақ индекстеуді қажет ететін ақпарат (мысалы, жергілікті бейне мұрағаттың файл атаулары). Контроллер қайта іске қосылғанда, бұл ақпарат сақталады, бұл қуат үзілген жағдайда контроллерді қалпына келтіруге мүмкіндік береді.

Графикалық интерфейс PHP 7-де микрофремворк арқылы жасалған смарт үй контроллері сымбатты. Веб-сервер қолданбаны іске қосуға жауапты. lighttpd, оның жақсы өнімділігі мен ресурс талаптарының төмен болуына байланысты ендірілген құрылғыларда жиі пайдаланылады.

Cloud Smart Home. 1-бөлім: Контроллер және сенсорлар
(жоғары ажыратымдылықта ашу үшін суретті басыңыз)

Графикалық интерфейстің негізгі функциясы - смарт үй жабдығын (IP бақылау камералары мен сенсорлар) контроллерге қосу. Веб-қосымша контроллердің және оған қосылған құрылғылардың конфигурациясын және ағымдағы күйін SQLite дерекқорынан оқиды. Контроллер конфигурациясын өзгерту үшін ол сервер процесінің RESTful API интерфейсі арқылы JSON пішімінде басқару пәрмендерін жібереді.

Сервер процесі

Сервер процесі - смарт үйдің негізін құрайтын ақпараттық процестерді автоматтандыру бойынша барлық негізгі жұмыстарды орындайтын негізгі компонент: сенсорлық деректерді қабылдау және өңдеу, енгізілген логикаға байланысты басқару әрекеттерін шығару. Сервер процесінің мақсаты – смарт үй жабдықтарымен өзара әрекеттесу, өндірістік логикалық ережелерді орындау, графикалық интерфейс пен бұлттан командаларды қабылдау және өңдеу. Қарастырылып отырған смарт үй контроллеріндегі сервер процесі 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
ағын (қосу/өшіру)

сенсор
звав
бұйрық
ажыратылған
жазу (қосу/өшіру)

эффектор
мктт
businessLogicRule
ағын (қосу/өшіру)
evice(қосу/жою)

businessLogic
конфигурация деректері
жазу (қосу/өшіру)

Блютуз
құрылғы күйі
қателік

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. "тең емес" мәніне тең емес;
  3. аз «аз»;
  4. көбірек «үлкен»;
  5. "кем_немесе_тең" кем немесе оған тең;
  6. "үлкен_немесе_тең" мәнінен үлкен немесе оған тең.

Салыстыру нәтижелерін логикалық алгебра операторлары арқылы бір-бірімен байланыстыруға болады:

  1. Және «және»
  2. НЕМЕСЕ "немесе";
  3. НЕ «not».

Осылайша, операторлар мен операндтарды поляк белгілеулерінде жазу арқылы сіз көптеген параметрлері бар жеткілікті күрделі шарттарды жасай аласыз.

JSON хабарламаларына және JSON пішіміндегі өндіріс ережелеріне негізделген дәл сол механизм білімді көрсету және ақылды үй сенсорларының сенсорлық деректерін пайдаланып логикалық қорытынды жасау үшін өндірістік логикалық сервер блогында қолданылады.

Мобильді қосымшаны пайдалана отырып, пайдаланушы смарт үй жұмыс істеуі керек сценарийлерді жасайды. Мысалы: «Егер алдыңғы есікті ашуға арналған сенсор іске қосылса, дәліздегі шамды қосыңыз». Қолданба дерекқордан сенсорлардың (ашу сенсоры) және жетектердің (ақылды розетка немесе смарт шам) идентификаторларын оқиды және смарт үй контроллеріне жіберілетін JSON пішіміндегі логикалық ережені жасайды. Бұл механизм біздің сериямыздың үшінші мақаласында толығырақ қарастырылады, онда біз ақылды үйді басқаруға арналған клиенттік қосымша туралы айтатын боламыз.

Жоғарыда қарастырылған өндірістік логикалық механизм кітапхананың көмегімен жүзеге асырылады RapidJSON — C++ тілінде JSON пішіміне арналған SAX талдаушысы. Өндіріс ережелерінің массивін дәйекті оқу және талдау алдыңғы қатардағы деректерді салыстыру функциясын оңай жүзеге асыруға мүмкіндік береді:

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

Бұл pфакт — JSON хабарламасындағы кілт-мән жұптарын қамтитын құрылым, m_Ережелер — өндіріс ережелерінің жолдық массиві. Функцияда кіріс хабарлама мен өндіріс ережесін салыстыру жүзеге асырылады reader.Parse(ruleStream, ruleHandler)қайда ruleHandler логикалық және салыстыру операторларының логикасын қамтитын объект болып табылады. RuleId — бірегей ереже идентификаторы, оның арқасында смарт үй контроллері дерекқорында ережелерді сақтауға және өңдеуге болады. m_pActions — логикалық қорытынды нәтижелері бар массив: ереже негізіндегі нәтижелерді қамтитын және жазылушы ағындары оларды өңдей алатындай хабарлама менеджеріне әрі қарай жіберілетін JSON хабарламалары.

RapidJSON өнімділігі функциямен салыстырылады strlen(), және жүйе ресурсының ең аз талаптары осы кітапхананы ендірілген құрылғыларда пайдалануға мүмкіндік береді. JSON пішіміндегі хабарламалар мен логикалық ережелерді пайдалану смарт үй контроллерінің барлық компоненттері арасында ақпарат алмасудың икемді жүйесін енгізуге мүмкіндік береді.

Z-толқынды сенсорлар мен жетектер

Ақылды үйдің басты артықшылығы - ол сыртқы ортаның әртүрлі параметрлерін дербес өлшей алады және жағдайға байланысты пайдалы функцияларды орындай алады. Ол үшін сенсорлар мен жетектер смарт үй контроллеріне қосылады. Ағымдағы нұсқада бұл протоколды пайдаланып жұмыс істейтін сымсыз құрылғылар Z-толқын арнайы бөлінген жиілікте 869 МГц Ресей үшін. Жұмыс істеу үшін олар қамту аймағын ұлғайту үшін сигналды қайталағыштарды қамтитын торлы желіге біріктірілген. Сондай-ақ құрылғыларда арнайы энергия үнемдеу режимі бар - олар көп уақытты ұйқы режимінде өткізеді және олардың күйі өзгерген кезде ғана ақпаратты жібереді, бұл кірістірілген батареяның қызмет ету мерзімін айтарлықтай ұзартуы мүмкін.

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 желісінің USB контроллеріне жіберетін Z-Wave серверіне өтеді. Содан кейін олар қоршаған орта объектілерінің күйін өзгертетін жетекке кіреді және смарт үй осылайша пайдалы жұмыстарды орындайды.

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 камераларын қосу

Осы мақалада талқыланатын бұлтты смарт үй жүйесі - бұл бірнеше жыл бойы нарықта болған және Ресейде көптеген қондырғылары бар автор әзірлеген бұлтты бейнебақылау жүйесінің жаңартылуы.

Бұлтты бейнебақылау жүйелері үшін күрделі мәселелердің бірі интеграцияны жүзеге асыруға болатын жабдықтың шектеулі таңдауы болып табылады. Бұлтқа қосылуға жауапты бағдарламалық қамтамасыз ету бейнекамера ішінде орнатылған, ол оның аппараттық құралына – процессорға және бос жад көлеміне бірден елеулі талаптар қояды. Бұл негізінен қарапайым IP камераларымен салыстырғанда бұлтты бейнебақылау камераларының жоғары бағасын түсіндіреді. Сонымен қатар, камераның файлдық жүйесіне және барлық қажетті әзірлеу құралдарына қол жеткізу үшін бейнебақылау камераларын шығаратын компаниялармен келіссөздердің ұзақ кезеңі қажет.

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

Нәтижесінде біз C++ тіліндегі «*.h» тақырыбы мен бастапқы «*.cpp» файлдарының жинағын аламыз, оларды тікелей қолданбаға немесе бөлек кітапханаға орналастыруға және GCC компиляторы арқылы құрастыруға болады. Көптеген функциялардың арқасында код үлкен және қосымша оңтайландыруды қажет етеді. Raspberry Pi 3 үлгісіндегі B+ микрокомпьютері бұл кодты орындау үшін жеткілікті өнімділікке ие, бірақ кодты басқа платформаға порттау қажеттілігі туындаса, дұрыс процессор архитектурасы мен жүйелік ресурстарды таңдау қажет.

ONVIF стандартын қолдайтын IP камералары жергілікті желіде жұмыс істегенде мекенжайы бар арнайы мультикаст тобына қосылады. 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. ONVIF хаттамасы арқылы IP камерасының қозғалыс детекторының соңғы нүктесімен байланыс орнату және оны мерзімді түрде сұрау;
  5. нобайды алдын ала қарау кескінін мерзімді түрде жасау және оны MQTT хаттамасы арқылы бұлтқа жіберу;
  6. смарт үй контроллерінің SD немесе Flash картасына MP4 пішіміндегі бөлек файлдар түріндегі бейне және аудио ағындарын жергілікті жазу.

Cloud Smart Home. 1-бөлім: Контроллер және сенсорлар

Камералармен байланыс орнату, сервер процесінде бейне ағындарын кодтау, өңдеу және жазу үшін кітапхананың функциялары пайдаланылады. FFmpeg 4.1.0.

Өнімділікті сынау экспериментінде контроллерге 3 камера қосылды:

  1. HiWatch DS-I114W (разряд - 720p, қысу форматы - H.264, бит жылдамдығы - 1 Мб/с, дыбыс G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (разряд - 1080p, қысу форматы - H.264, бит жылдамдығы - 1 Мб/с, дыбыс жоқ);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (разряд - 1080p, қысу пішімі - H.264, бит жылдамдығы - 1.5 Мб/с, AAC аудио).

Cloud Smart Home. 1-бөлім: Контроллер және сенсорлар

Барлық үш ағын бір уақытта бұлтқа шығарылды, дыбысты қайта кодтау тек бір камерадан жүзеге асырылды және жергілікті мұрағаттық жазба өшірілді. Орталық процессорды пайдалану шамамен 5% құрады, ЖЖҚ пайдалану 32 МБ (әр процесс), 56 МБ (барлығы ОЖ қоса алғанда).

Осылайша, смарт үй контроллеріне шамамен 20 - 30 камераны қосуға болады (разряд пен бит жылдамдығына байланысты), бұл үш қабатты коттеджге немесе шағын қоймаға арналған бейнебақылау жүйесі үшін жеткілікті. Жоғары өнімділікті қажет ететін тапсырмалар үшін көп ядролы Intel процессоры және Linux Debian Sarge операциялық жүйесі бар неттопты пайдалануға болады. Контроллер қазір сынақ операциясынан өтуде және оның өнімділігі туралы деректер жаңартылады.

Бұлтпен әрекеттесу

Бұлтқа негізделген смарт үй бұлтта пайдаланушы деректерін (бейне және сенсор өлшемдерін) сақтайды. Бұлтты сақтаудың архитектурасы біздің сериямыздың келесі мақаласында толығырақ қарастырылады. Енді смарт үй контроллерінен бұлтқа ақпараттық хабарламаларды жіберу интерфейсі туралы сөйлесейік.

Қосылған құрылғылардың күйлері мен сенсорлық өлшемдер хаттама арқылы беріледі MQTT, ол өзінің қарапайымдылығы мен энергия тиімділігіне байланысты заттар интернеті жобаларында жиі қолданылады. MQTT клиент-сервер үлгісін пайдаланады, мұнда клиенттер брокер ішіндегі белгілі бір тақырыптарға жазылады және өз хабарламаларын жариялайды. Брокер барлық абоненттерге QoS (қызмет көрсету сапасы) деңгейімен анықталған ережелерге сәйкес хабарламалар жібереді:

  • QoS 0 - максимум бір рет (жеткізу кепілдігі жоқ);
  • QoS 1 - кемінде бір рет (жеткізу растауымен);
  • QoS 2 - дәл бір рет (жеткізуді қосымша растаумен).

Біздің жағдайда біз қолданамыз Тұтылу москиты. Тақырып атауы смарт үй контроллерінің бірегей идентификаторы болып табылады. Сервер процесінің ішіндегі MQTT клиенті осы тақырыпқа жазылады және хабар менеджерінен келетін JSON хабарламаларын оған аударады. Керісінше, MQTT брокерінен хабарламалар ол арқылы хабарлама менеджеріне жіберіледі, содан кейін оларды сервер процесінің ішіндегі абоненттеріне мультиплексирлейді:

Cloud Smart Home. 1-бөлім: Контроллер және сенсорлар

Смарт үй контроллерінің күйі туралы хабарламаларды жіберу үшін сақталған хабарламалар механизмі пайдаланылады сақталған хабарламалар MQTT протоколы. Бұл электр қуатын өшіру кезінде қайта қосу уақытын дұрыс бақылауға мүмкіндік береді.

MQTT клиенті кітапхананы енгізу негізінде әзірленді Тұтылу Пахо C++ тілінде.

H.264 + AAC медиа ағындары бұлтқа RTMP протоколы арқылы жіберіледі, мұнда медиа серверлерінің кластері оларды өңдеуге және сақтауға жауапты. Кластердегі жүктемені оңтайлы бөлу және ең аз жүктелген медиа серверді таңдау үшін смарт үй контроллері бұлттық жүктемені теңестірушіге алдын ала сұрау жасайды және содан кейін ғана медиа ағынын жібереді.

қорытынды

Мақалада Z-Wave протоколы арқылы ақпаратты қабылдауға, өңдеуге және жабдықты басқаруға, ONVIF хаттамасы арқылы IP камераларымен өзара әрекеттесуге, сондай-ақ деректер алмасуға және ақпарат алмасуға болатын Raspberry Pi 3 B+ микрокомпьютер негізіндегі смарт үй контроллерінің бір нақты іске асырылуы қарастырылды. MQTT және RTMP протоколдары арқылы бұлт қызметімен пәрмендер. JSON пішімінде ұсынылған логикалық ережелер мен фактілерді салыстыру негізінде өндірістік логикалық қозғалтқыш әзірленді.

Қазіргі уақытта смарт үй контроллері Мәскеу мен Мәскеу облысындағы бірнеше учаскелерде сынақтан өтуде.

Контроллердің келесі нұсқасы құрылғылардың басқа түрлерін (RF, Bluetooth, WiFi, сымды) қосуды жоспарлап отыр. Пайдаланушыларға ыңғайлы болу үшін сенсорлар мен IP камераларды қосу процедурасы мобильді қосымшаға ауыстырылады. Сондай-ақ сервер процесінің кодын оңтайландыру және бағдарламалық жасақтаманы операциялық жүйеге көшіру идеялары бар OpenWrt. Бұл бөлек контроллерге үнемдеуге және смарт үйдің функционалдығын кәдімгі тұрмыстық маршрутизаторға беруге мүмкіндік береді.

Ақпарат көзі: www.habr.com

пікір қалдыру