Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Bugungi kunda mikroelektronika, aloqa kanallari, internet texnologiyalari va sun'iy intellektning jadal rivojlanishi tufayli aqlli uylar mavzusi tobora dolzarb bo'lib bormoqda. Inson turar joyi tosh davridan beri sezilarli o'zgarishlarga duch keldi va sanoat inqilobi 4.0 va narsalar Interneti davrida u qulay, funktsional va xavfsiz bo'ldi. Bozorga kvartira yoki qishloq uyini smartfon yordamida dunyoning istalgan nuqtasidan boshqariladigan murakkab axborot tizimlariga aylantiradigan yechimlar kirib kelmoqda. Bundan tashqari, inson va mashinaning o'zaro ta'siri endi dasturlash tillarini bilishni talab qilmaydi - nutqni aniqlash va sintez algoritmlari tufayli odam aqlli uy bilan o'z ona tilida gaplashadi.

Hozirgi vaqtda bozorda mavjud bo'lgan ba'zi aqlli uy tizimlari bulutli video kuzatuv tizimlarining mantiqiy rivojlanishi bo'lib, ularni ishlab chiquvchilar nafaqat monitoring uchun, balki uzoqdagi ob'ektlarni boshqarish uchun ham keng qamrovli yechim zarurligini angladilar.

Sizning e'tiboringizga muallif tomonidan shaxsan ishlab chiqilgan va ishga tushirilgan bulutli aqlli uy tizimining barcha asosiy komponentlari haqida hikoya qiluvchi uchta maqoladan iborat turkumni taqdim etamiz. Birinchi maqola aqlli uy ichida o'rnatilgan terminal mijoz uskunasiga, ikkinchisi bulutli saqlash va ma'lumotlarni qayta ishlash tizimining arxitekturasiga va nihoyat, uchinchisi mobil va statsionar qurilmalarda tizimni boshqarish uchun mijoz ilovasiga bag'ishlangan.

Aqlli uy jihozlari

Birinchidan, oddiy kvartira, dacha yoki yozgi uydan aqlli uyni qanday qilish haqida gapiraylik. Buning uchun, qoida tariqasida, uyda quyidagi jihozlarni joylashtirish kerak:

  1. turli xil atrof-muhit parametrlarini o'lchaydigan sensorlar;
  2. tashqi ob'ektlarga ta'sir qiluvchi aktuatorlar;
  3. datchik o'lchovlari va o'rnatilgan mantiqqa muvofiq hisob-kitoblarni amalga oshiradigan va aktuatorlarga buyruqlar beradigan boshqaruvchi.

Quyidagi rasmda vannaxonada suv oqishi (1), yotoqxonadagi harorat (2) va yorug'lik (3), oshxonadagi aqlli rozetka (4) va xonada suv oqishi uchun sensorlar (5) mavjud bo'lgan aqlli uyning diagrammasi quyidagi rasmda ko'rsatilgan. koridorda video kuzatuv kamerasi (XNUMX).

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Hozirgi vaqtda RF433, Z-Wave, ZigBee, Bluetooth va WiFi protokollari yordamida ishlaydigan simsiz sensorlar keng qo'llaniladi. Ularning asosiy afzalliklari o'rnatish va foydalanish qulayligi, shuningdek, past narx va ishonchlilikdir, chunki Ishlab chiqaruvchilar o'z qurilmalarini ommaviy bozorga olib chiqishga va ularni oddiy foydalanuvchi uchun qulay qilishga intilmoqda.

Sensorlar va aktuatorlar, qoida tariqasida, simsiz interfeys orqali aqlli uy boshqaruvchisiga (6) ulanadi - bu barcha qurilmalarni yagona tarmoqqa birlashtirgan va ularni boshqaradigan ixtisoslashtirilgan mikrokompyuter.

Biroq, ba'zi echimlar bir vaqtning o'zida sensor, aktuator va boshqaruvchini birlashtirishi mumkin. Misol uchun, aqlli vilka jadvalga muvofiq yoqish yoki o'chirish uchun dasturlashtirilishi mumkin, bulutli video kuzatuv kamerasi esa harakat detektori signali asosida video yozib olishi mumkin. Eng oddiy hollarda, siz alohida boshqaruvchisiz qilishingiz mumkin, ammo ko'p stsenariylarga ega moslashuvchan tizimni yaratish kerak.

Aqlli uy boshqaruvchisini global tarmoqqa ulash uchun uzoq vaqtdan beri har qanday uyda oddiy maishiy texnikaga aylangan oddiy Internet-routerdan (7) foydalanish mumkin. Bu yerda aqlli uy boshqaruvchisi foydasiga yana bir dalil bor – agar internetga ulanish uzilib qolsa, bulutli servisda emas, balki kontroller ichida saqlanadigan mantiqiy blok tufayli aqlli uy odatdagidek ishlashda davom etadi.

Aqlli uy boshqaruvchisi

Ushbu maqolada muhokama qilinadigan bulutli aqlli uy tizimi uchun boshqaruvchi bitta platali mikrokompyuter asosida ishlab chiqilgan Raspberry Pi 3 modeli B+, 2018-yil mart oyida chiqarilgan va aqlli uy vazifalari uchun etarli resurslar va ishlashga ega. U 53-bitli ARMv64-A arxitekturasiga asoslangan, 8 gigagertsli chastotada ishlaydigan to'rt yadroli Cortex-A1.4 protsessorini, shuningdek, 1 Gb tezkor xotira, Wi-Fi 802.11ac, Bluetooth 4.2 va USB 2.0 orqali ishlaydigan gigabit Ethernet adapterini o'z ichiga oladi. .

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Tekshirish moslamasini yig'ish juda oddiy - mikrokompyuter (1) plastik qutiga (2) o'rnatiladi, so'ngra dasturga ega microSD formatidagi 8 Gb xotira kartasi (3) va USB Z-Wave tarmoq kontrolleri (4) o'rnatiladi. mos keladigan uyalar. Aqlli uy boshqaruvchisi quvvat manbaiga 5V, 2.1A quvvat adapteri (5) va USB - micro-USB kabeli (6) orqali ulangan. Har bir kontroller o'ziga xos identifikatsiya raqamiga ega bo'lib, u birinchi ishga tushirilganda konfiguratsiya faylida yoziladi va bulutli aqlli uy xizmatlari bilan o'zaro ishlash uchun zarur.

Aqlli uy boshqaruvchisi dasturi ushbu maqola muallifi tomonidan operatsion tizim asosida ishlab chiqilgan Linux Raspbian Stretch. U quyidagi asosiy quyi tizimlardan iborat:

  • aqlli uy jihozlari va bulut bilan o'zaro ishlash uchun server jarayoni;
  • boshqaruvchining konfiguratsiyasi va ish parametrlarini o'rnatish uchun grafik foydalanuvchi interfeysi;
  • kontroller konfiguratsiyasini saqlash uchun ma'lumotlar bazasi.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Malumotlar bazasi aqlli uy boshqaruvchisi o'rnatilgan DBMS asosida amalga oshiriladi SQLite va tizim dasturiy ta'minotiga ega SD-kartadagi fayldir. U kontroller konfiguratsiyasi uchun saqlash joyi bo'lib xizmat qiladi - ulangan uskuna va uning joriy holati, mantiqiy ishlab chiqarish qoidalari bloki, shuningdek indekslashni talab qiladigan ma'lumotlar (masalan, mahalliy video arxivning fayl nomlari). Tekshirish moslamasi qayta ishga tushirilganda, bu ma'lumot saqlanadi, bu esa elektr ta'minoti uzilib qolganda boshqaruvchini qayta tiklash imkonini beradi.

Grafik interfeys PHP 7 da mikroframework yordamida ishlab chiqilgan aqlli uy boshqaruvchisi xushbichim. Veb-server dasturni ishga tushirish uchun javobgardir. lighttpd, yaxshi ishlashi va kam resurs talablari tufayli ko'pincha o'rnatilgan qurilmalarda ishlatiladi.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar
(rasmni yuqori aniqlikda ochish uchun ustiga bosing)

Grafik interfeysning asosiy vazifasi aqlli uy jihozlarini (IP kuzatuv kameralari va sensorlar) boshqaruvchiga ulashdir. Veb-ilova SQLite ma'lumotlar bazasidan kontroller va unga ulangan qurilmalarning konfiguratsiyasi va joriy holatini o'qiydi. Kontroller konfiguratsiyasini o'zgartirish uchun u server jarayonining RESTful API interfeysi orqali JSON formatida boshqaruv buyruqlarini yuboradi.

Server jarayoni

Server jarayoni - aqlli uyning asosini tashkil etuvchi axborot jarayonlarini avtomatlashtirish bo'yicha barcha asosiy ishlarni bajaradigan asosiy komponent: sensorli ma'lumotlarni qabul qilish va qayta ishlash, o'rnatilgan mantiqqa qarab boshqaruv harakatlarini berish. Server jarayonining maqsadi aqlli uy jihozlari bilan o'zaro aloqa qilish, ishlab chiqarishning mantiqiy qoidalarini bajarish, grafik interfeys va bulutdan buyruqlarni qabul qilish va qayta ishlashdir. Ko'rib chiqilayotgan aqlli uy boshqaruvchisidagi server jarayoni C++ da ishlab chiqilgan va alohida xizmat sifatida ishga tushirilgan ko'p tarmoqli dastur sifatida amalga oshiriladi. tizimd operatsion tizim Linux Raspbian.

Server jarayonining asosiy bloklari:

  1. Xabar menejeri;
  2. IP kamera serveri;
  3. Z-Wave qurilma serveri;
  4. Ishlab chiqarishning mantiqiy qoidalari serveri;
  5. Kontroller konfiguratsiyasi ma'lumotlar bazasi va mantiqiy qoidalar bloki;
  6. Grafik interfeys bilan ishlash uchun RESTful API serveri;
  7. Bulut bilan ishlash uchun MQTT mijozi.

Server jarayonlar bloklari alohida oqimlar sifatida amalga oshiriladi, ular orasidagi ma'lumotlar JSON formatidagi xabarlar (yoki jarayon xotirasida ushbu formatni ifodalovchi ma'lumotlar tuzilmalari) shaklida uzatiladi.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Server jarayonining asosiy komponenti hisoblanadi xabar menejeri, bu JSON xabarlarini barcha server jarayoni bloklariga yo'naltiradi. JSON xabari ma'lumotlari maydonlarining turlari va ular qabul qilishi mumkin bo'lgan qiymatlar jadvalda keltirilgan:

qurilma turi
Protokol
xabar turi
qurilma holati
buyruq

kamera
onvif
sensor ma'lumotlari
on
oqim (yoqish/o‘chirish)

Sensor
zwave
buyruq
off
yozib olish (yoqish/oʻchirish)

efor
mqtt
businessLogic Rule
oqim (yoqish/o‘chirish)
evice (Qo'shish/O'chirish)

businessLogic
konfiguratsiya ma'lumotlari
yozib olish (yoqish/oʻchirish)

Bluetooth
qurilma holati
xato

Wifi

rf

Masalan, kameraning harakat detektori xabari quyidagicha ko'rinadi:

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

Ishlab chiqarish mantig'i

Dispetcherdan xabar olish yoki yuborish uchun server jarayoni bloki ma'lum turdagi xabarlarga obuna bo'ladi. Obuna - bu turdagi ishlab chiqarish mantiqiy qoidasi "Agar... keyin ...", JSON formatida taqdim etilgan va server jarayoni blokidagi xabar ishlov beruvchisiga havola. Masalan, IP kamera serveriga GUI va bulutdan buyruqlar qabul qilishiga ruxsat berish uchun siz quyidagi qoidani qo'shishingiz kerak:

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

Agarda ko'rsatilgan shartlar bo'lsa oldingi (chap tomonda) qoidalar to'g'ri, keyin u qondiriladi natijada (o'ng tomonda) qoidalar va ishlov beruvchi JSON xabarining asosiy qismiga kirish huquqiga ega. Oldingi JSON kalit-qiymat juftlarini taqqoslaydigan mantiqiy operatorlarni qo'llab-quvvatlaydi:

  1. teng "teng";
  2. "teng_not" ga teng emas;
  3. kamroq "kamroq";
  4. ko'proq "kattaroq";
  5. "kam_yoki_teng" dan kichik yoki teng;
  6. "katta_yoki_teng" dan katta yoki teng.

Taqqoslash natijalari mantiqiy algebra operatorlari yordamida bir-biriga bog'lanishi mumkin:

  1. Va "va"
  2. OR "yoki";
  3. "yo'q" EMAS.

Shunday qilib, operatorlar va operandlarni polyak yozuvida yozish orqali siz juda ko'p parametrlarga ega bo'lgan juda murakkab sharoitlarni yaratishingiz mumkin.

JSON xabarlari va JSON formatidagi ishlab chiqarish qoidalariga asoslangan aynan bir xil mexanizm ishlab chiqarish mantiqiy server blokida aqlli uy sensorlarining sensorli ma'lumotlari yordamida bilimlarni ifodalash va mantiqiy xulosa chiqarish uchun ishlatiladi.

Mobil ilovadan foydalanib, foydalanuvchi aqlli uy ishlashi kerak bo'lgan stsenariylarni yaratadi. Masalan: "Agar old eshikni ochish sensori ishga tushsa, koridorda chiroqni yoqing". Ilova ma'lumotlar bazasidan sensorlar (ochish sensori) va aktuatorlar (aqlli rozetka yoki aqlli chiroq) identifikatorlarini o'qiydi va aqlli uy boshqaruvchisiga yuboriladigan JSON formatida mantiqiy qoida hosil qiladi. Ushbu mexanizm seriyamizning uchinchi maqolasida batafsilroq ko'rib chiqiladi, bu erda biz aqlli uyni boshqarish uchun mijoz ilovasi haqida gaplashamiz.

Yuqorida muhokama qilingan ishlab chiqarish mantiqiy mexanizmi kutubxona yordamida amalga oshiriladi RapidJSON — C++ da JSON formati uchun SAX tahlilchisi. Bir qator ishlab chiqarish qoidalarini ketma-ket o'qish va tahlil qilish sizga ma'lumotlarni taqqoslash funktsiyasini oldingi holatlar ichida osongina amalga oshirishga imkon beradi:

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

u pFakt — JSON xabaridagi kalit-qiymat juftlarini o'z ichiga olgan tuzilma, m_Qoidalar — ishlab chiqarish qoidalarining qator qatori. Funktsiyada kiruvchi xabar va ishlab chiqarish qoidasini taqqoslash amalga oshiriladi reader.Parse(ruleStream, ruleHandler)qayerda ruleHandler mantiqiy va taqqoslash operatorlari mantiqini o'z ichiga olgan ob'ektdir. RuleId — noyob qoidalar identifikatori, buning yordamida aqlli uy boshqaruvchisi ma'lumotlar bazasida qoidalarni saqlash va tahrirlash mumkin. m_pActions — mantiqiy xulosalar natijalariga ega massiv: JSON xabarlari qoida bazasidan olingan natijalarni oʻz ichiga oladi va keyinchalik xabarlar boshqaruvchisiga yuboriladi, shunda abonent oqimlari ularni qayta ishlay oladi.

RapidJSON unumdorligi funksiya bilan solishtirish mumkin strlen(), va minimal tizim resurslari talablari ushbu kutubxonadan o'rnatilgan qurilmalarda foydalanishga imkon beradi. JSON formatidagi xabarlar va mantiqiy qoidalardan foydalanish aqlli uy boshqaruvchisining barcha komponentlari o‘rtasida axborot almashinuvining moslashuvchan tizimini amalga oshirish imkonini beradi.

Z-to'lqinli datchiklar va aktuatorlar

Aqlli uyning asosiy afzalligi shundaki, u tashqi muhitning turli parametrlarini mustaqil ravishda o'lchashi va vaziyatga qarab foydali funktsiyalarni bajarishi mumkin. Buning uchun sensorlar va aktuatorlar aqlli uy boshqaruvchisiga ulangan. Joriy versiyada bu protokol yordamida ishlaydigan simsiz qurilmalar Z-to'lqin maxsus ajratilgan chastotada 869 MHz Rossiya uchun. Ishlash uchun ular qamrov maydonini oshirish uchun signal takrorlagichlarini o'z ichiga olgan tarmoqli tarmoqqa birlashtirilgan. Qurilmalar energiyani tejashning maxsus rejimiga ham ega – ular ko‘p vaqtlarini uyqu rejimida o‘tkazadilar va faqat holati o‘zgarganda ma’lumot jo‘natadi, bu esa o‘rnatilgan batareyaning ishlash muddatini sezilarli darajada uzaytirishi mumkin.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Endi bozorda juda ko'p turli xil Z-Wave qurilmalarini topishingiz mumkin. Keling, bir nechta misollarni ko'rib chiqaylik:

  1. Zipato PAN16 aqlli rozetkasi quyidagi parametrlarni o‘lchashi mumkin: elektr tarmog‘idagi elektr quvvati (kVt/soat), quvvat (Vt), kuchlanish (V) va oqim (A). Shuningdek, u o'rnatilgan kalitga ega, uning yordamida siz ulangan elektr moslamasini boshqarishingiz mumkin;
  2. Neo Coolcam oqish sensori masofaviy probning kontaktlarini yopish orqali to'kilgan suyuqlik mavjudligini aniqlaydi;
  3. Zipato PH-PSG01 tutun sensori tutun zarralari gaz analizatori kamerasiga kirganda ishga tushadi;
  4. Neo Coolcam harakat sensori inson tanasining infraqizil nurlanishini tahlil qiladi. Bundan tashqari, yorug'lik sensori (Lx) mavjud;
  5. Multisensor Philio PST02-A harorat (°C), yorug'lik (%), eshik ochilishi, xonada odam borligini o'lchaydi;
  6. Z-Wave USB Stick ZME E UZB1 tarmoq kontrolleri, unga sensorlar ulangan.

Qurilmalar va boshqaruvchi bir xil chastotada ishlashi juda muhim, aks holda ular ulanish vaqtida bir-birlarini ko'rmaydilar. Bitta Z-Wave tarmoq kontrolleriga 232 tagacha qurilmalar ulanishi mumkin, bu kvartira yoki qishloq uyi uchun etarli. Bino ichida tarmoq qamrovi maydonini kengaytirish uchun aqlli rozetkadan signalni takrorlovchi sifatida foydalanish mumkin.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Oldingi paragrafda muhokama qilingan aqlli uy boshqaruvchisi serveri jarayonida Z-Wave serveri Z-Wave qurilmalari bilan o'zaro aloqa qilish uchun javobgardir. Sensorlardan ma'lumot olish uchun kutubxonadan foydalanadi OpenZWave C++ da, u Z-Wave tarmog'ining USB kontrolleri bilan o'zaro ishlash uchun interfeysni ta'minlaydi va turli sensorlar va aktuatorlar bilan ishlaydi. Sensor tomonidan o'lchangan atrof-muhit parametrining qiymati Z-Wave serveri tomonidan JSON xabari ko'rinishida qayd etiladi:

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

Keyin u server jarayonining xabar boshqaruvchisiga yo'naltiriladi, shunda obunachilar uni qabul qilishlari mumkin. Asosiy abonent mantiqiy qoidalarning oldingi qismidagi xabarlar maydoni qiymatlariga mos keladigan ishlab chiqarish mantiqiy serveridir. Boshqaruv buyruqlarini o'z ichiga olgan xulosa natijalari xabarlar menejeriga yuboriladi va u yerdan Z-Wave serveriga o'tadi, u ularni dekodlaydi va Z-Wave tarmog'ining USB kontrolleriga yuboradi. Keyin ular atrof-muhit ob'ektlarining holatini o'zgartiradigan aktuatorga kiradilar va aqlli uy shunday qilib foydali ishlarni bajaradi.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar
(rasmni yuqori aniqlikda ochish uchun ustiga bosing)

Z-Wave qurilmalarini ulash aqlli uy boshqaruvchisining grafik interfeysida amalga oshiriladi. Buning uchun qurilmalar ro'yxati bilan sahifaga o'ting va "Qo'shish" tugmasini bosing. RESTful API interfeysi orqali qo'shish buyrug'i server jarayoniga kiradi va keyin xabar menejeri tomonidan Z-Wave serveriga yuboriladi, bu esa Z-Wave tarmog'ining USB kontroller qurilmasini qo'shish uchun maxsus rejimga o'tkazadi. Keyinchalik, Z-Wave qurilmasida xizmat ko'rsatish tugmachasini bir qator tez bosish (3 soniya ichida 1,5 marta bosish) qilishingiz kerak. USB kontroller qurilmani tarmoqqa ulaydi va u haqidagi ma'lumotlarni Z-Wave serveriga yuboradi. Bu, o'z navbatida, yangi qurilma parametrlari bilan SQLite ma'lumotlar bazasida yangi yozuvni yaratadi. Belgilangan vaqt oralig'idan so'ng, grafik interfeys Z-Wave qurilmalar ro'yxati sahifasiga qaytadi, ma'lumotlar bazasidan ma'lumotlarni o'qiydi va ro'yxatda yangi qurilmani ko'rsatadi. Har bir qurilma o'zining noyob identifikatorini oladi, u ishlab chiqarish xulosasi qoidalarida va bulutda ishlashda qo'llaniladi. Ushbu algoritmning ishlashi UML diagrammasida ko'rsatilgan:

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar
(rasmni yuqori aniqlikda ochish uchun ustiga bosing)

IP kameralarni ulash

Ushbu maqolada muhokama qilinadigan bulutli aqlli uy tizimi bulutli video kuzatuv tizimining yangilanishi bo'lib, u ham muallif tomonidan ishlab chiqilgan bo'lib, u bozorda bir necha yillardan beri mavjud va Rossiyada ko'plab o'rnatishlarga ega.

Bulutli video kuzatuv tizimlari uchun o'tkir muammolardan biri integratsiyani amalga oshirish mumkin bo'lgan uskunalarning cheklangan tanlovidir. Bulutga ulanish uchun mas'ul bo'lgan dasturiy ta'minot videokamera ichiga o'rnatilgan bo'lib, u darhol uning apparati - protsessor va bo'sh xotira hajmiga jiddiy talablarni qo'yadi. Bu, asosan, oddiy IP kameralarga nisbatan bulutli CCTV kameralarining yuqori narxini tushuntiradi. Bundan tashqari, kamera fayl tizimiga va barcha kerakli ishlab chiqish vositalariga kirish uchun CCTV kameralarini ishlab chiqaruvchi kompaniyalar bilan muzokaralarning uzoq bosqichi talab qilinadi.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Boshqa tomondan, barcha zamonaviy IP kameralar boshqa uskunalar (xususan, videoregistratorlar) bilan ishlash uchun standart protokollarga ega. Shunday qilib, standart protokol orqali ulanadigan va IP-kameralardan bulutga video oqimlarini uzatuvchi alohida kontrollerdan foydalanish bulutli video kuzatuv tizimlari uchun sezilarli raqobatdosh ustunliklarni beradi. Bundan tashqari, agar mijoz oddiy IP-kameralarga asoslangan video kuzatuv tizimini allaqachon o'rnatgan bo'lsa, uni kengaytirish va uni to'liq bulutli aqlli uyga aylantirish mumkin bo'ladi.

Hozirgi vaqtda barcha IP kamera ishlab chiqaruvchilari tomonidan istisnosiz qo'llab-quvvatlanadigan IP-video kuzatuv tizimlari uchun eng mashhur protokol. ONVIF profil S, spetsifikatsiyalari veb-xizmatlarni tavsiflash tilida mavjud wsdl. Asboblar to'plamidagi yordamchi dasturlardan foydalanish gSOAP IP kameralar bilan ishlaydigan xizmatlar uchun manba kodini yaratish mumkin:

$ 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

Natijada biz C++ tilidagi “*.h” sarlavhali va manba “*.cpp” fayllar to‘plamini olamiz, ularni to‘g‘ridan-to‘g‘ri ilovaga yoki alohida kutubxonaga joylashtirish va GCC kompilyatori yordamida kompilyatsiya qilish mumkin. Ko'p funktsiyalar tufayli kod katta va qo'shimcha optimallashtirishni talab qiladi. Raspberry Pi 3 modeli B+ mikrokompyuteri ushbu kodni bajarish uchun yetarli unumdorlikka ega, ammo kodni boshqa platformaga o‘tkazish zarurati tug‘ilsa, to‘g‘ri protsessor arxitekturasi va tizim resurslarini tanlash kerak.

ONVIF standartini qo'llab-quvvatlaydigan IP-kameralar mahalliy tarmoqda ishlaganda manzili bo'lgan maxsus multicast guruhiga ulangan. 239.255.255.250. Protokol mavjud WS Discovery, bu mahalliy tarmoqdagi qurilmalarni qidirishni avtomatlashtirish imkonini beradi.

Aqlli uy boshqaruvchisining grafik interfeysi PHP-da IP-kameralar uchun qidiruv funksiyasini amalga oshiradi, bu XML xabarlari orqali veb-xizmatlar bilan o'zaro aloqada bo'lganda juda qulaydir. Menyu bandlarini tanlashda Qurilmalar > IP kameralar > Skanerlash IP kameralarni qidirish algoritmi ishga tushirildi, natijani jadval shaklida ko'rsatadi:

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar
(rasmni yuqori aniqlikda ochish uchun ustiga bosing)

Tekshirish moslamasiga kamera qo'shsangiz, u bulut bilan o'zaro ta'sir qiladigan sozlamalarni belgilashingiz mumkin. Shuningdek, ushbu bosqichda unga avtomatik ravishda noyob qurilma identifikatori tayinlanadi, uning yordamida uni bulut ichida osongina aniqlash mumkin.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Keyinchalik, qo'shilgan kameraning barcha parametrlarini o'z ichiga olgan JSON formatida xabar yaratiladi va RESTful API buyrug'i orqali aqlli uy boshqaruvchisining server jarayoniga yuboriladi, bu erda kamera parametrlari dekodlanadi va ichki SQLite ma'lumotlar bazasida saqlanadi va quyidagi ishlov berish iplarini ishga tushirish uchun ham foydalaniladi:

  1. video va audio oqimlarni qabul qilish uchun RTSP ulanishini o'rnatish;
  2. G.711 mu-Law, G.711 A-Law, G.723 va boshqalar formatlaridan audio transkodlash. AAC formatiga;
  3. H.264 formatidagi video oqimlarni va AAC formatidagi audioni FLV konteyneriga transkodlash va RTMP protokoli orqali bulutga uzatish;
  4. ONVIF protokoli orqali IP kamera harakat detektorining so'nggi nuqtasi bilan aloqa o'rnatish va vaqti-vaqti bilan uni so'rov qilish;
  5. vaqti-vaqti bilan eskizni oldindan ko'rish tasvirini yaratish va uni MQTT protokoli orqali bulutga yuborish;
  6. aqlli uy boshqaruvchisining SD yoki Flash kartasiga MP4 formatidagi alohida fayllar ko'rinishidagi video va audio oqimlarni mahalliy yozib olish.

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Kameralar bilan aloqa o'rnatish, server jarayonida video oqimlarni kodlash, qayta ishlash va yozib olish uchun kutubxona funksiyalaridan foydalaniladi. ffmpeg 4.1.0.

Ishlash sinovi tajribasida kontrollerga 3 ta kamera ulangan:

  1. HiWatch DS-I114W (ravshanligi - 720p, siqish formati - H.264, bit tezligi - 1 Mb/s, ovoz G.711 mu-Law);
  2. Microdigital MDC-M6290FTD-1 (ravshanligi - 1080p, siqish formati - H.264, bit tezligi - 1 Mb/s, tovushsiz);
  3. Dahua DH-IPC-HDW4231EMP-AS-0360B (ravshanligi - 1080p, siqish formati - H.264, bit tezligi - 1.5 Mb/s, AAC audio).

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Barcha uchta oqim bir vaqtning o'zida bulutga chiqarildi, audio transkodlash faqat bitta kameradan amalga oshirildi va mahalliy arxivga yozib olish o'chirildi. CPU yuki taxminan 5% ni tashkil etdi, RAMdan foydalanish 32 MB (har bir jarayon uchun), 56 MB (jami OS bilan birga).

Shunday qilib, aqlli uy boshqaruvchisiga taxminan 20-30 kamerani ulash mumkin (ravshanligi va bit tezligiga qarab), bu uch qavatli yozgi uy yoki kichik ombor uchun video kuzatuv tizimi uchun etarli. Kattaroq ishlashni talab qiladigan vazifalar uchun siz ko'p yadroli Intel protsessorli nettop va Linux Debian Sarge OS dan foydalanishingiz mumkin. Tekshirgich hozirda sinovdan o'tkazilmoqda va uning ishlashi haqidagi ma'lumotlar yangilanadi.

Bulut bilan o'zaro ta'sir

Bulutga asoslangan aqlli uy foydalanuvchi ma'lumotlarini (video va sensor o'lchovlari) bulutda saqlaydi. Bulutli saqlash arxitekturasi bizning seriyamizdagi keyingi maqolada batafsilroq muhokama qilinadi. Endi aqlli uy boshqaruvchisidan bulutga axborot xabarlarini uzatish interfeysi haqida gapiraylik.

Ulangan qurilmalarning holati va sensor o'lchovlari protokol orqali uzatiladi MQTT, bu oddiyligi va energiya tejamkorligi tufayli narsalar Interneti loyihalarida tez-tez ishlatiladi. MQTT mijoz-server modelidan foydalanadi, bunda mijozlar broker ichidagi muayyan mavzularga obuna bo'ladilar va o'z xabarlarini nashr etadilar. Broker barcha abonentlarga xabarlarni QoS (Xizmat sifati) darajasida belgilangan qoidalarga muvofiq yuboradi:

  • QoS 0 - maksimal bir marta (etkazib berish kafolati yo'q);
  • QoS 1 - kamida bir marta (etkazib berishni tasdiqlash bilan);
  • QoS 2 - aynan bir marta (qo'shimcha yetkazib berishni tasdiqlash bilan).

Bizning holatlarimizda biz foydalanamiz Eclipse chivin. Mavzu nomi aqlli uy boshqaruvchisining noyob identifikatoridir. Server jarayoni ichidagi MQTT mijozi ushbu mavzuga obuna bo'ladi va xabar boshqaruvchisidan kelgan JSON xabarlarini unga tarjima qiladi. Aksincha, MQTT brokeridan kelgan xabarlar u tomonidan xabarlar menejeriga yo'naltiriladi, so'ngra ularni server jarayonida o'z abonentlariga multiplekslaydi:

Bulutli aqlli uy. 1-qism: Nazoratchi va sensorlar

Aqlli uy boshqaruvchisi holati haqidagi xabarlarni uzatish uchun saqlangan xabarlar mexanizmidan foydalaniladi saqlangan xabarlar MQTT protokoli. Bu elektr uzilishlari vaqtida qayta ulanish vaqtini to'g'ri kuzatish imkonini beradi.

MQTT mijozi kutubxonani amalga oshirish asosida ishlab chiqilgan Tutilish Paho C++ tilida.

H.264 + AAC media oqimlari RTMP protokoli orqali bulutga yuboriladi, bu erda media serverlar klasteri ularni qayta ishlash va saqlash uchun javobgardir. Klasterdagi yukni optimal taqsimlash va eng kam yuklangan media-serverni tanlash uchun aqlli uy boshqaruvchisi bulutli yuk balanslagichiga dastlabki so'rov yuboradi va shundan keyingina media oqimini yuboradi.

xulosa

Maqolada Raspberry Pi 3 B+ mikrokompyuteri asosidagi aqlli uy boshqaruvchisining o'ziga xos ilovasi ko'rib chiqildi, u Z-Wave protokoli orqali ma'lumotni qabul qilishi, qayta ishlashi va jihozlarini boshqarishi, ONVIF protokoli orqali IP kameralar bilan o'zaro aloqada bo'lishi, shuningdek, ma'lumot almashishi va MQTT va RTMP protokollari orqali bulut xizmati bilan buyruqlar. JSON formatida taqdim etilgan mantiqiy qoidalar va faktlarni taqqoslash asosida ishlab chiqarish mantiqiy dvigateli ishlab chiqilgan.

Aqlli uy boshqaruvchisi hozirda Moskva va Moskva viloyatidagi bir nechta saytlarda sinovdan o'tkazilmoqda.

Tekshirish moslamasining keyingi versiyasi boshqa turdagi qurilmalarni (RF, Bluetooth, WiFi, simli) ulashni rejalashtirmoqda. Foydalanuvchilarga qulaylik yaratish maqsadida sensorlar va IP kameralarni ulash tartibi mobil ilovaga o‘tkaziladi. Bundan tashqari, server jarayoni kodini optimallashtirish va dasturiy ta'minotni operatsion tizimga ko'chirish g'oyalari mavjud OpenWrt. Bu sizga alohida kontrollerni tejash va aqlli uyning funksionalligini oddiy maishiy routerga o'tkazish imkonini beradi.

Manba: www.habr.com

a Izoh qo'shish