
Өнөөдөр микроэлектроник, харилцаа холбооны суваг, интернет технологи, хиймэл оюун ухааны хурдацтай хөгжлийн ачаар ухаалаг байшингийн сэдэв улам бүр хамааралтай болж байна. Чулуун зэвсгийн үеэс хойш хүний орон сууц ихээхэн өөрчлөлтийг авч, Аж үйлдвэрийн хувьсгал 4.0, эд зүйлсийн интернетийн эрин үед тав тухтай, ажиллагаатай, аюулгүй болсон. Орон сууц, хөдөөгийн байшинг дэлхийн хаанаас ч ухаалаг утас ашиглан удирддаг мэдээллийн цогц систем болгон хувиргах шийдлүүд зах зээлд гарч байна. Түүгээр ч зогсохгүй хүн-машины харилцан үйлчлэл нь програмчлалын хэлний мэдлэг шаарддаггүй болсон - яриа таних болон синтезийн алгоритмын ачаар хүн ухаалаг гэрт төрөлх хэлээрээ ярьдаг.
Одоогийн байдлаар зах зээл дээр байгаа зарим ухаалаг гэрийн системүүд нь үүлэн видео тандалтын системийн логик хөгжил бөгөөд үүнийг хөгжүүлэгчид зөвхөн хяналт тавих төдийгүй алслагдсан объектуудыг удирдах цогц шийдэл хэрэгтэйг ойлгосон.
Зохиогчийн биечлэн боловсруулж ашиглалтад оруулсан үүлэн ухаалаг гэрийн системийн бүх үндсэн бүрэлдэхүүн хэсгүүдийн талаар өгүүлэх гурван цуврал нийтлэлийг бид та бүхний анхааралд хүргэж байна. Эхний нийтлэл нь ухаалаг гэрт суурилуулсан терминалын үйлчлүүлэгчийн тоног төхөөрөмж, хоёрдугаарт үүлэн хадгалах, өгөгдөл боловсруулах системийн архитектур, гуравдугаарт, хөдөлгөөнт болон суурин төхөөрөмж дээрх системийг удирдах клиент програмд зориулагдсан болно.
Ухаалаг гэрийн тоног төхөөрөмж
Нэгдүгээрт, энгийн орон сууц, дача эсвэл зуслангийн байшингаас ухаалаг байшинг хэрхэн яаж хийх талаар ярилцъя. Үүнийг хийхийн тулд, дүрмээр бол гэртээ дараахь тоног төхөөрөмжийг байрлуулах шаардлагатай.
- хүрээлэн буй орчны янз бүрийн параметрүүдийг хэмждэг мэдрэгч;
- гадаад объект дээр ажилладаг идэвхжүүлэгч;
- мэдрэгчийн хэмжилт болон суулгагдсан логикийн дагуу тооцооллыг гүйцэтгэдэг хянагч, идэвхжүүлэгчид команд өгдөг.
Дараах зурагт угаалгын өрөөнд ус гоожих мэдрэгч (1), унтлагын өрөөнд температур (2), гэрэлтүүлэг (3), гал тогооны өрөөнд ухаалаг залгуур (4) суурилуулсан ухаалаг байшингийн диаграммыг үзүүлэв. коридорт видео хяналтын камер (5).

Одоогийн байдлаар RF433, Z-Wave, ZigBee, Bluetooth, WiFi протоколуудыг ашиглан ажилладаг утасгүй мэдрэгчийг өргөн ашиглаж байна. Тэдний гол давуу тал нь суурилуулах, ашиглахад хялбар, хямд өртөг, найдвартай байдал юм, учир нь Үйлдвэрлэгчид өөрсдийн төхөөрөмжийг олон нийтийн зах зээлд гаргаж, энгийн хэрэглэгчдэд хүртээмжтэй болгохыг хичээж байна.
Мэдрэгч ба идэвхжүүлэгч нь дүрмээр бол утасгүй интерфейсээр дамжуулан ухаалаг гэрийн хянагч (6) - эдгээр бүх төхөөрөмжийг нэг сүлжээнд нэгтгэж, удирддаг тусгай микрокомпьютерт холбогддог.
Гэсэн хэдий ч зарим шийдэл нь мэдрэгч, идэвхжүүлэгч, хянагчийг нэгэн зэрэг нэгтгэж чаддаг. Тухайлбал, ухаалаг залгуурыг хуваарийн дагуу асаах, унтраахаар програмчлах, үүлэн видео хяналтын камер нь хөдөлгөөн мэдрэгчийн дохиогоор дүрс бичлэг хийх боломжтой. Хамгийн энгийн тохиолдолд та тусдаа хянагчгүйгээр хийж болно, гэхдээ олон хувилбар бүхий уян хатан системийг бий болгох нь зайлшгүй шаардлагатай.
Ухаалаг гэрийн хянагчийг дэлхийн сүлжээнд холбохын тулд ердийн интернет чиглүүлэгчийг (7) ашиглаж болох бөгөөд энэ нь аль ч гэрт нийтлэг гэр ахуйн хэрэгсэл болжээ. Ухаалаг гэрийн хянагчийг дэмжсэн өөр нэг аргумент энд байна - хэрэв интернетийн холболт тасарсан бол ухаалаг гэр нь үүлэн үйлчилгээнд биш харин хянагч дотор хадгалагдсан логик блокийн ачаар хэвийн ажиллах болно.
Ухаалаг гэрийн хянагч
Энэ нийтлэлд авч үзсэн үүлэн ухаалаг гэрийн системийн хянагчийг нэг самбарт микрокомпьютер дээр үндэслэн боловсруулсан болно 2018 оны 53-р сард гарсан бөгөөд ухаалаг гэрийн даалгаварт хангалттай нөөц, гүйцэтгэлтэй. Үүнд 64 GHz давтамжтай, 8 битийн ARMv1.4-A архитектурт суурилсан дөрвөлсөн цөмт Cortex-A1 процессор, мөн 802.11 ГБ RAM, Wi-Fi 4.2ac, Bluetooth 2.0, USB XNUMX-ээр ажилладаг гигабит Ethernet адаптер орно. .

Хянагчийг угсрах нь маш энгийн - микрокомпьютерийг (1) хуванцар хайрцагт (2) суулгаж, дараа нь програм хангамж (8) бүхий microSD форматтай 3 ГБ санах ойн карт болон USB Z-Wave сүлжээний хянагч (4) суулгасан. харгалзах үүрүүд. Ухаалаг гэрийн хянагч нь 5V, 2.1А тэжээлийн адаптер (5) болон USB - микро-USB кабелиар (6) цахилгаан тэжээлд холбогдсон. Удирдагч бүр өвөрмөц таних дугаартай бөгөөд энэ дугаарыг анх эхлүүлэх үед тохиргооны файлд бичдэг бөгөөд үүлэн ухаалаг гэрийн үйлчилгээтэй харилцахад шаардлагатай байдаг.
Ухаалаг гэрийн хянагч программ хангамжийг энэ нийтлэлийн зохиогч үйлдлийн систем дээр үндэслэн боловсруулсан Linux Распбиан суналт. Энэ нь дараах үндсэн дэд системүүдээс бүрдэнэ.
- ухаалаг гэрийн тоног төхөөрөмж болон үүлтэй харилцах серверийн процесс;
- хянагчийн тохиргоо, үйлдлийн параметрүүдийг тохируулах хэрэглэгчийн график интерфейс;
- хянагчийн тохиргоог хадгалах мэдээллийн сан.

Өгөгдлийн сан Ухаалаг гэрийн хянагч нь суулгагдсан DBMS дээр суурилсан бөгөөд системийн программ хангамж бүхий SD карт дээрх файл юм. Энэ нь хянагчийн тохиргооны хадгалалтын үүрэг гүйцэтгэдэг - холбогдсон төхөөрөмж, түүний одоогийн төлөвийн талаархи мэдээлэл, үйлдвэрлэлийн логик дүрмийн блок, түүнчлэн индексжүүлэх шаардлагатай мэдээлэл (жишээлбэл, орон нутгийн видео архивын файлын нэр). Хянагчийг дахин ачаалах үед энэ мэдээлэл хадгалагдаж, цахилгаан тасарсан тохиолдолд хянагчийг сэргээх боломжтой болно.
GUI PHP 7 дээр микрофрэймворк ашиглан бүтээсэн ухаалаг гэрийн хянагч . Вэб сервер нь програмыг ажиллуулах үүрэгтэй. , гүйцэтгэл сайтай, нөөц багатай тул суулгагдсан төхөөрөмжид ихэвчлэн ашиглагддаг.
(зураг дээр дарж өндөр нарийвчлалтайгаар нээнэ үү)
График интерфейсийн гол үүрэг нь ухаалаг гэрийн төхөөрөмжийг (IP хяналтын камер ба мэдрэгч) хянагчтай холбох явдал юм. Вэб програм нь SQLite мэдээллийн сангаас хянагч болон түүнд холбогдсон төхөөрөмжүүдийн тохиргоо болон одоогийн төлөвийг уншдаг. Хянагчийн тохиргоог өөрчлөхийн тулд серверийн процессын RESTful API интерфейсээр дамжуулан JSON форматаар хяналтын командуудыг илгээдэг.
Серверийн үйл явц
Серверийн үйл явц - ухаалаг байшингийн үндэс болсон мэдээллийн процессыг автоматжуулах бүх үндсэн ажлыг гүйцэтгэдэг гол бүрэлдэхүүн хэсэг: мэдрэхүйн өгөгдлийг хүлээн авах, боловсруулах, суулгагдсан логикоос хамааран хяналтын үйлдлийг гаргах. Серверийн үйл явцын зорилго нь ухаалаг гэрийн тоног төхөөрөмжтэй харилцах, үйлдвэрлэлийн логик дүрмийг хэрэгжүүлэх, график интерфэйс болон үүлнээс тушаал хүлээн авах, боловсруулах явдал юм. Ухаалаг гэрийн хянагч дахь серверийн процессыг C++ хэл дээр боловсруулсан олон урсгалтай програм хэлбэрээр хэрэгжүүлж, тусдаа үйлчилгээ болгон эхлүүлсэн. системд үйлдлийн систем Linux Распьбиа.
Серверийн процессын үндсэн блокууд нь:
- Мессеж менежер;
- IP камерын сервер;
- Z-Wave төхөөрөмжийн сервер;
- Үйлдвэрлэлийн логик дүрмийн сервер;
- Хянагчийн тохиргооны мэдээллийн сан ба логик дүрмийн блок;
- График интерфэйстэй ажиллахад зориулагдсан RESTful API сервер;
- Үүлтэй ажиллахад зориулсан MQTT үйлчлүүлэгч.
Серверийн процессын блокууд нь тусдаа хэлхээ хэлбэрээр хэрэгждэг бөгөөд тэдгээрийн хооронд мэдээлэл нь JSON формат дахь мессеж хэлбэрээр (эсвэл процессын санах ойд энэ форматыг төлөөлөх өгөгдлийн бүтэц) дамждаг.

Серверийн процессын гол бүрэлдэхүүн хэсэг нь мессеж менежер, JSON мессежийг серверийн бүх процессын блок руу чиглүүлдэг. JSON мессежийн мэдээллийн талбаруудын төрлүүд болон тэдгээрийн хүлээн зөвшөөрч болох утгуудыг хүснэгтэд жагсаав.
төхөөрөмжийн төрөл
протокол
мессежийн төрөл
төхөөрөмжийн төлөв
Тушаал
зургийн аппарат
onvif
мэдрэгчийн өгөгдөл
on
урсгал (Асаах/унтраах)
мэдрэгч
zwave
Тушаал
унтраах
бичлэг (асаах/унтраах)
үржүүлэгч
мктт
businessLogicRule
урсгал (Асаах/унтраах)
device(Нэмэх/Устгах)
бизнесийн логик
тохиргооны өгөгдөл
бичлэг (асаах/унтраах)
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 түлхүүр-утга хосыг харьцуулах логик операторуудыг дэмждэг:
- тэнцүү "тэнцүү";
- "тэнцүү биш" -тэй тэнцүү биш;
- бага "бага";
- илүү "илүү";
- "бага_эсвэл_тэнцүү" -ээс бага буюу тэнцүү;
- "их_эсвэл_тэнцүү"-ээс их буюу тэнцүү.
Харьцуулалтын үр дүнг Булийн алгебрийн операторуудыг ашиглан өөр хоорондоо холбож болно.
- Мөн "ба"
- OR "эсвэл";
- "үгүй" БИШ.
Тиймээс, операторууд болон операндуудыг Польшийн тэмдэглэгээгээр бичснээр та олон тооны параметр бүхий нэлээд төвөгтэй нөхцлийг бүрдүүлж чадна.
JSON мессеж болон JSON формат дахь үйлдвэрлэлийн дүрэмд суурилсан яг ижил механизмыг үйлдвэрлэлийн логик серверийн блокод ухаалаг гэрийн мэдрэгчээс мэдрэхүйн өгөгдлийг ашиглан мэдлэгийг илэрхийлэх, логик дүгнэлт хийхэд ашигладаг.
Мобайл програмыг ашиглан хэрэглэгч ухаалаг гэр ажиллах ёстой хувилбаруудыг бий болгодог. Жишээлбэл: "Хэрэв урд хаалгыг онгойлгох мэдрэгч асаалттай байвал коридорын гэрлийг асаана уу.". Аппликейшн нь мэдээллийн сангаас мэдрэгч (нээх мэдрэгч) болон идэвхжүүлэгчийн (ухаалаг залгуур эсвэл ухаалаг чийдэн) танигчийг уншиж, JSON форматаар логик дүрмийг үүсгэж, ухаалаг гэрийн хянагч руу илгээдэг. Энэ механизмыг манай цувралын гурав дахь нийтлэлд илүү дэлгэрэнгүй авч үзэх бөгөөд бид ухаалаг байшинг удирдах үйлчлүүлэгчийн програмын талаар ярих болно.
Дээр дурдсан үйлдвэрлэлийн логик механизмыг номын санг ашиглан хэрэгжүүлдэг — 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_Дүрэм - үйлдвэрлэлийн дүрмийн мөрийн массив. Ирж буй мессеж ба үйлдвэрлэлийн дүрмийг харьцуулах ажлыг функцэд гүйцэтгэдэг уншигч.Parse(ruleStream, ruleHandler)хаана ruleHandler нь Boolean болон харьцуулах операторуудын логикийг агуулсан объект юм. RuleId — өвөрмөц дүрэм танигч, үүний ачаар ухаалаг гэрийн хянагчийн мэдээллийн санд дүрмийг хадгалах, засах боломжтой. m_pActions — логик дүгнэлтийн үр дүн бүхий массив: Дүрмийн сангаас гарсан үр дагаврыг агуулсан JSON мессежүүд бөгөөд захиалагчийн хэлхээнүүд тэдгээрийг боловсруулахын тулд мессежийн менежерт илгээгдэнэ.
RapidJSON гүйцэтгэлийг функцтэй харьцуулж болно strlen(), мөн системийн нөөцийн хамгийн бага шаардлагууд нь суулгагдсан төхөөрөмжүүдэд энэ номын санг ашиглах боломжийг олгодог. JSON формат дахь мессеж, логик дүрмийг ашиглах нь ухаалаг гэрийн удирдлагын бүх бүрэлдэхүүн хэсгүүдийн хооронд мэдээлэл солилцох уян хатан системийг хэрэгжүүлэх боломжийг танд олгоно.
Z долгионы мэдрэгч ба идэвхжүүлэгч
Ухаалаг байшингийн гол давуу тал нь гадаад орчны янз бүрийн параметрүүдийг бие даан хэмжиж, нөхцөл байдлаас шалтгаалан ашигтай функцуудыг гүйцэтгэх боломжтой юм. Үүнийг хийхийн тулд мэдрэгч ба идэвхжүүлэгчийг ухаалаг гэрийн хянагчтай холбосон. Одоогийн хувилбарт эдгээр нь протокол ашиглан ажилладаг утасгүй төхөөрөмжүүд юм тусгайлан хуваарилсан давтамж дээр 869 МГц Оросын хувьд. Ашиглахын тулд тэдгээрийг торон сүлжээнд нэгтгэж, хамрах хүрээг нэмэгдүүлэхийн тулд дохионы давталтуудыг агуулдаг. Эдгээр төхөөрөмжүүд нь мөн эрчим хүч хэмнэх тусгай горимтой байдаг - тэд ихэнх цагийг унтах горимд өнгөрөөж, зөвхөн төлөв өөрчлөгдөх үед мэдээлэл илгээдэг бөгөөд энэ нь суурилуулсан батерейны ашиглалтын хугацааг мэдэгдэхүйц уртасгах боломжтой юм.

Та одоо зах зээл дээр нэлээд олон тооны өөр өөр 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 төхөөрөмжтэй харилцах үүрэгтэй. Энэ нь мэдрэгчээс мэдээлэл хүлээн авахын тулд номын санг ашигладаг 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 хянагч руу илгээдэг. Дараа нь тэд хүрээлэн буй орчны объектын төлөв байдлыг өөрчилдөг идэвхжүүлэгч рүү ордог бөгөөд ухаалаг гэр нь ашигтай ажил гүйцэтгэдэг.
(зураг дээр дарж өндөр нарийвчлалтайгаар нээнэ үү)
Z-Wave төхөөрөмжүүдийг холбох нь ухаалаг гэрийн удирдлагын график интерфэйсээр хийгддэг. Үүнийг хийхийн тулд төхөөрөмжүүдийн жагсаалт бүхий хуудас руу очоод "Нэмэх" товчийг дарна уу. RESTful API интерфейсээр дамжуулан нэмэх команд нь серверийн процесс руу орж, мессежийн менежерээс Z-Wave сервер рүү илгээгдэж, Z-Wave сүлжээний USB хянагчийг төхөөрөмж нэмэх тусгай горимд оруулдаг. Дараа нь Z-Wave төхөөрөмж дээр та үйлчилгээний товчлуурыг хэд хэдэн хурдан дарах хэрэгтэй (3 секундын дотор 1,5 удаа дарах). USB хянагч нь төхөөрөмжийг сүлжээнд холбож, түүний талаарх мэдээллийг Z-Wave сервер рүү илгээдэг. Энэ нь эргээд SQLite мэдээллийн санд шинэ төхөөрөмжийн параметрүүдтэй шинэ оруулга үүсгэдэг. Тодорхой хугацааны дараа график интерфэйс нь Z-Wave төхөөрөмжийн жагсаалтын хуудас руу буцаж, мэдээллийн сангаас мэдээллийг уншиж, жагсаалтад шинэ төхөөрөмжийг харуулна. Төхөөрөмж бүр өөрийн гэсэн өвөрмөц танигчийг хүлээн авдаг бөгөөд үүнийг үйлдвэрлэлийн дүгнэлтийн дүрэмд болон үүлэн дээр ажиллахад ашигладаг. Энэ алгоритмын ажиллагааг UML диаграммд харуулав.
(зураг дээр дарж өндөр нарийвчлалтайгаар нээнэ үү)
IP камеруудыг холбох
Энэ нийтлэлд авч үзсэн үүлэн ухаалаг гэрийн систем нь зохиогчийн боловсруулсан үүлэн видео тандалтын системийн шинэчлэл бөгөөд энэ нь хэдэн жилийн турш зах зээл дээр гарч ирсэн бөгөөд Орос улсад олон суурилуулалттай байдаг.
Үүлэн видео тандалтын системийн хувьд хурц асуудлуудын нэг бол нэгтгэх боломжтой тоног төхөөрөмжийн хязгаарлагдмал сонголт юм. Клоудтай холбогдох үүрэгтэй программ хангамжийг видео камерын дотор суулгасан бөгөөд энэ нь түүний техник хангамж - процессор болон сул санах ойн хэмжээ зэрэгт ноцтой шаардлага тавьдаг. Энэ нь ердийн IP камертай харьцуулахад үүлэн хяналтын камерын үнэ өндөр байгааг голчлон тайлбарлаж байна. Нэмж дурдахад камерын файлын систем болон шаардлагатай бүх хөгжүүлэлтийн хэрэгсэлд нэвтрэхийн тулд CCTV камер үйлдвэрлэгч компаниудтай урт хугацааны хэлэлцээр хийх шаардлагатай байна.

Нөгөө талаас орчин үеийн бүх IP камерууд нь бусад төхөөрөмжтэй (ялангуяа видео бичигч) харилцах стандарт протоколуудтай байдаг. Тиймээс стандарт протоколоор холбогдож, 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
Үүний үр дүнд бид C++ хэл дээрх “*.h” толгой болон эх “*.cpp” файлуудыг авдаг бөгөөд тэдгээрийг шууд програм эсвэл тусдаа номын санд байрлуулж, GCC хөрвүүлэгч ашиглан эмхэтгэх боломжтой. Олон функцээс шалтгаалан код нь том бөгөөд нэмэлт оновчлол шаарддаг. Raspberry Pi 3 загварын B+ микрокомпьютер нь энэ кодыг гүйцэтгэхэд хангалттай гүйцэтгэлтэй боловч хэрэв кодыг өөр платформ руу шилжүүлэх шаардлагатай бол процессорын зөв бүтэц, системийн нөөцийг сонгох шаардлагатай.
Дотоод сүлжээнд ажиллахдаа ONVIF стандартыг дэмждэг IP камерууд нь хаягтай тусгай multicast бүлэгт холбогдсон байдаг. 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 протоколоор клоуд руу дамжуулах;
- ONVIF протоколоор дамжуулан IP камерын хөдөлгөөн мэдрэгчийн төгсгөлийн цэгтэй холболт тогтоож, үе үе санал асуулга явуулах;
- үе үе өнгөц зургийг урьдчилан харах, MQTT протоколоор дамжуулан үүлэн рүү илгээх;
- Ухаалаг гэрийн удирдлагын SD эсвэл Flash карт дээр MP4 форматаар тусдаа файл хэлбэрээр видео болон аудио урсгалыг орон нутгийн бичлэг хийх.

Камертай холболт тогтоох, серверийн процесс дахь видео урсгалыг кодлох, боловсруулах, бичихийн тулд номын сангийн функцуудыг ашигладаг. 4.1.0.
Гүйцэтгэлийн туршилтын туршилтанд 3 камерыг хянагчтай холбосон.
- HiWatch DS-I114W (нарийвчлал - 720p, шахалтын формат - H.264, битийн хурд - 1 Mb/s, дууны G.711 му-Хууль);
- Microdigital MDC-M6290FTD-1 (нарийвчлал - 1080p, шахалтын формат - H.264, битийн хурд - 1 Mb/s, дуу чимээ байхгүй);
- Dahua DH-IPC-HDW4231EMP-AS-0360B (нарийсалт - 1080p, шахалтын формат - H.264, битийн хурд - 1.5 Mb/s, AAC аудио).

Бүх гурван урсгалыг нэгэн зэрэг үүлэн дээр гаргаж, аудио кодчилолыг зөвхөн нэг камераас хийж, орон нутгийн архивын бичлэгийг идэвхгүй болгосон. CPU-ийн ачаалал ойролцоогоор 5%, RAM-ийн хэрэглээ 32 МБ (нэг процесс бүрт), 56 МБ (үйлдвэрлэлийн системийг оруулаад нийт) байсан.
Тиймээс ойролцоогоор 20-30 камер (нягтрал болон битийн хурдаас хамаарч) ухаалаг гэрийн хянагчтай холбогдож болох бөгөөд энэ нь гурван давхар байшин эсвэл жижиг агуулахын видео хяналтын системд хангалттай юм. Илүү өндөр гүйцэтгэл шаарддаг ажлуудад олон цөмт Intel процессор болон үйлдлийн системтэй nettop ашиглаж болно. Linux Debian Ахлах ажилтан. Хянагч одоогоор туршилтын ажиллагаа явуулж байгаа бөгөөд гүйцэтгэлийн мэдээллийг шинэчлэх болно.
Үүлтэй харилцах
Үүлэнд суурилсан ухаалаг гэр нь хэрэглэгчийн өгөгдлийг (видео болон мэдрэгчийн хэмжилт) үүлэн дотор хадгалдаг. Үүл хадгалалтын архитектурыг манай цувралын дараагийн өгүүллээр илүү дэлгэрэнгүй авч үзэх болно. Одоо ухаалаг гэрийн хянагчаас үүлэн рүү мэдээллийн мессеж дамжуулах интерфейсийн талаар ярилцъя.
Холбогдсон төхөөрөмжүүдийн төлөв байдал, мэдрэгчийн хэмжилтийг протоколоор дамжуулдаг , энэ нь энгийн бөгөөд эрчим хүчний хэмнэлттэй байдгаараа Интернетийн зүйлсийн төслүүдэд ихэвчлэн ашиглагддаг. MQTT нь үйлчлүүлэгч-серверийн загварыг ашигладаг бөгөөд үйлчлүүлэгчид брокер доторх тодорхой сэдвүүдийг захиалж, мессежээ нийтэлдэг. Брокер нь QoS (Үйлчилгээний чанар) түвшингээс тодорхойлсон дүрмийн дагуу бүх захиалагчдад мессеж илгээдэг.
- QoS 0 - хамгийн ихдээ нэг удаа (хүргэх баталгаа байхгүй);
- QoS 1 - дор хаяж нэг удаа (хүргэлтийн баталгаатай);
- QoS 2 - яг нэг удаа (нэмэлт хүргэлтийн баталгаажуулалттай).
Манай тохиолдолд бид ашигладаг . Сэдвийн нэр нь ухаалаг гэрийн хянагчийн өвөрмөц танигч юм. Серверийн процесс доторх MQTT клиент нь энэ сэдвийг захиалж, мессежийн менежерээс ирсэн JSON мессежийг орчуулдаг. Үүний эсрэгээр, MQTT брокерын мессежийг мессежийн менежер рүү дамжуулж, дараа нь серверийн процессын дотор захиалагч нартаа олон талт шилжүүлдэг.

Ухаалаг гэрийн хянагчийн статусын талаархи мессежийг дамжуулахын тулд хадгалсан мессежийн механизмыг ашигладаг MQTT протокол. Энэ нь цахилгаан тасрах үед дахин холболт хийх хугацааг зөв хянах боломжийг танд олгоно.
MQTT үйлчлүүлэгчийг номын сангийн хэрэгжилтэд үндэслэн боловсруулсан C++ хэл дээр.
H.264 + AAC медиа урсгалыг RTMP протоколоор дамжуулан үүлэн рүү илгээдэг бөгөөд медиа серверүүдийн кластер нь тэдгээрийг боловсруулах, хадгалах үүрэгтэй. Кластер дахь ачааллыг оновчтой хуваарилж, хамгийн бага ачаалалтай медиа серверийг сонгохын тулд ухаалаг гэрийн хянагч нь үүлэн ачааллын тэнцвэржүүлэгч рүү урьдчилсан хүсэлт гаргаж, үүний дараа л медиа урсгалыг илгээдэг.
дүгнэлт
Уг нийтлэлд Raspberry Pi 3 B+ микрокомпьютер дээр суурилсан ухаалаг гэрийн удирдлагын нэг онцлог хэрэгжилтийг авч үзсэн бөгөөд энэ нь Z-Wave протоколоор дамжуулан мэдээлэл хүлээн авах, боловсруулах, тоног төхөөрөмжийг удирдах, ONVIF протоколоор дамжуулан IP камертай харилцах, мэдээлэл солилцох, мэдээлэл солилцох боломжтой. MQTT болон RTMP протоколуудаар дамжуулан үүлэн үйлчилгээ. JSON форматаар танилцуулсан логик дүрэм, баримтуудын харьцуулалт дээр үндэслэн үйлдвэрлэлийн логик хөдөлгүүрийг боловсруулсан.
Ухаалаг гэрийн хянагч одоогоор Москва болон Москва мужид хэд хэдэн сайт дээр туршилтын ажиллагаа явуулж байна.
Удирдлагын дараагийн хувилбар нь бусад төрлийн төхөөрөмжүүдийг (RF, Bluetooth, WiFi, утастай) холбохоор төлөвлөж байна. Хэрэглэгчдийн тав тухыг хангах үүднээс мэдрэгч, IP камерыг холбох журмыг гар утасны програм руу шилжүүлэх болно. Мөн серверийн процессын кодыг оновчтой болгох, програм хангамжийг үйлдлийн систем рүү шилжүүлэх санаанууд бий . Энэ нь танд тусдаа хянагчийг хэмнэж, ухаалаг байшингийн функцийг ердийн өрхийн чиглүүлэгч рүү шилжүүлэх боломжийг олгоно.
Эх сурвалж: www.habr.com
