Сёння, дзякуючы бурнаму развіццю мікраэлектронікі, каналаў сувязі, Інтэрнэт-тэхналогій і Штучнага Інтэлекту, тэма разумных дамоў становіцца ўсё больш і больш актуальнай. Чалавечае жыллё зведала істотныя змены з часоў каменнага веку і ў эпоху Прамысловай Рэвалюцыі 4.0 і Інтэрнэту Рэчаў стала зручным, функцыянальным і бяспечным. На рынак прыходзяць рашэнні, якія ператвараюць кватэру ці загарадную хату ў складаныя інфармацыйныя сістэмы, кіраваныя з любой кропкі свету з дапамогай смартфона. Прычым, для чалавека-машыннага ўзаемадзеяння ўжо не патрабуюцца веды моў праграмавання, — дзякуючы алгарытмам распазнання і сінтэзу гаворкі чалавек гаворыць з разумнай хатай на роднай мове.
Некаторыя сістэмы разумнай хаты, прадстаўленыя цяпер на рынку, з'яўляюцца лагічным развіццём сістэм хмарнага відэаназірання, распрацоўнікі якіх усвядомілі неабходнасць у комплексным рашэнні не толькі для кантролю, але і для кіравання выдаленымі аб'ектамі.
Вашай увазе прапануецца цыкл з трох артыкулаў, дзе будзе расказана аб усіх асноўных кампанентах сістэмы хмарнага разумнага дома, асабіста распрацаванай аўтарам і запушчанай у эксплуатацыю. Першы артыкул прысвечаны канцавым кліенцкаму абсталяванню, якое ўсталёўваецца ўсярэдзіне разумнай хаты, другая - архітэктуры сістэмы хмарнага захоўвання і апрацоўкі дадзеных, і, нарэшце, трэцяя - кліенцкаму з дадаткам для кіравання сістэмай на мабільных і стацыянарных прыладах.
Абсталяванне для разумнага дома
Перш пагаворым аб тым, як з звычайнай кватэры, дачы ці катэджа зрабіць разумную хату. Для гэтага, як правіла, патрабуецца размясціць у жыллі наступнае абсталяванне:
- датчыкі, якія вымяраюць розныя параметры навакольнага асяроддзя;
- выканаўчыя прылады, якія ўздзейнічаюць на вонкавыя аб'екты;
- кантролер, які вырабляе вылічэнні ў адпаведнасці з вымярэннямі датчыкаў і закладзенай логікай, і які выдае каманды для выканаўчых прылад.
На наступным малюнку паказана схема разумнай хаты, на якой размешчаны датчыкі працёку вады (1) у ваннай, тэмпературы (2) і асвятленні (3) у спальні, разумная разетка (4) на кухні і камера відэаназірання (5) у пярэднім пакоі.
У цяперашні час шырокае распаўсюджванне атрымалі бесправадныя датчыкі, якія працуюць па пратаколах RF433, Z-Wave, ZigBee, Bluetooth і WiFi. Іх галоўныя перавагі - зручнасць мантажу і выкарыстання, а таксама таннасць і надзейнасць, т.я. вытворцы імкнуцца вывесці свае прылады на масавы рынак і зрабіць іх даступнымі радавому карыстачу.
Датчыкі і выканаўчыя прылады, як правіла, падлучаюцца па бесправадным інтэрфейсе да кантролера разумнай хаты (6) – спецыялізаванаму мікракампутару, які аб'ядноўвае ўсе гэтыя прылады ў адзіную сетку і кіраўніку імі.
Зрэшты, некаторыя рашэнні могуць сумяшчаць у сабе датчык, выканаўчая прылада і кантролер адначасова. Напрыклад, разумная разетка можа быць запраграмавана на ўключэнне ці выключэнне па раскладзе, а камера хмарнага відэаназірання ўмее запісваць відэа па сігнале дэтэктара руху. У найпростых выпадках можна абыйсціся без асобнага кантролера, але для стварэння гнуткай сістэмы са мноствам сцэнараў ён неабходзен.
Для падлучэння кантролера разумнай хаты да глабальнай сеткі можа быць скарыстаны звычайны Інтэрнэт-роўтар (7), які ўжо даўно стаў звыклым бытавым прыборам у любой хаце. Тут ёсць яшчэ адзін аргумент у карысць кантролера разумнай хаты - калі знікне сувязь з Інтэрнэт, то разумная хата працягне працу ў штатным рэжыме дзякуючы блоку логікі, якая захоўваецца ўсярэдзіне кантролера, а не ў хмарным сэрвісе.
Кантролер разумнай хаты
Кантролер для сістэмы хмарнай разумнай хаты, разгляданай у дадзеным артыкуле, распрацаваны на аснове аднаплатнага мікракампутара
Зборка кантролера вельмі простая – мікракампутар (1) усталёўваецца ў пластыкавы корпус (2), далей у яго ў адпаведныя слоты усталёўваецца 8 ГБ карта памяці ў фармаце microSD з праграмным забеспячэннем (3) і USB-кантролер сеткі Z-Wave (4). Кантролер разумнай хаты падлучаецца да электрасеткі праз адаптар сілкавання 5В, 2.1А (5) і кабель USB – micro-USB (6). Кожны кантролер мае ўнікальны ідэнтыфікацыйны нумар, які запісваецца ў файле канфігурацыі пры першым запуску і неабходзен для ўзаемадзеяння з сэрвісамі хмарнай разумнай хаты.
Праграмнае забеспячэнне кантролера разумнай хаты распрацавана аўтарам дадзенага артыкула на аснове аперацыйнай сістэмы Linux Raspbian Stretch. Яно складаецца з наступных асноўных падсістэм:
- сервернага працэсу для ўзаемадзеяння з абсталяваннем разумнага дома і воблакам;
- графічнага інтэрфейсу карыстальніка для наладкі канфігурацыі і працоўных параметраў кантролера;
- базы дадзеных для захоўвання канфігурацыі кантролера.
База дадзеных кантролера разумнага дома рэалізавана на аснове ўбудаванай СКБД
графічны інтэрфейс кантролера разумнага дома распрацаваны на мове PHP 7 з выкарыстаннем мікрафрэймворка
(клікніце на карцінку, каб адкрыць у большым дазволе)
Асноўнай функцыяй графічнага інтэрфейсу з'яўляецца падлучэнне абсталявання разумнай хаты (IP-камер відэаназірання і датчыкаў) да кантролера. Вэб-дадатак счытвае канфігурацыю і бягучы стан кантролера і падлучаных да яго прылад з БД SQLite. Для змены канфігурацыі кантролера яно пасылае кіравальныя каманды ў фармаце JSON праз інтэрфейс RESTful API сервернага працэсу.
Серверны працэс
Серверны працэс - Ключавы кампанент, які выконвае ўсю асноўную працу па аўтаматызацыі інфармацыйных працэсаў, якія складаюць аснову разумнага дома: атрыманне і апрацоўку сэнсарных дадзеных, выдачу кіраўнікоў уздзеянняў у залежнасці ад закладзенай логікі. Прызначэнне сервернага працэсу - узаемадзеянне з абсталяваннем разумнай хаты, выкананне прадукцыйных лагічных правіл, атрыманне і апрацоўка каманд ад графічнага інтэрфейсу і аблокі. Серверны працэс у разгляданым кантролеры разумнай хаты рэалізаваны як шматструменнае прыкладанне, распрацаванае на мове С++ і якое запускаецца як асобны сэрвіс Systemd аперацыйнай сістэмы Linux Raspbian.
Асноўнымі блокамі сервернага працэсу з'яўляюцца:
- Дыспетчар паведамленняў;
- Сервер IP-камеры;
- Сервер прылад Z-Wave;
- Сервер прадукцыйных лагічных правіл;
- База дадзеных канфігурацыі кантролера і блока лагічных правілаў;
- RESTful API сервер для ўзаемадзеяння з графічным інтэрфейсам;
- MQTT кліент для ўзаемадзеяння з воблакам.
Блокі сервернага працэсу рэалізаваны як асобныя патокі, інфармацыя паміж якімі перадаецца ў выглядзе паведамленняў у фармаце JSON (або структур даных, якія прадстаўляюць гэты фармат у памяці працэсу).
Галоўным кампанентам сервернага працэсу з'яўляецца дыспетчар паведамленняў, Які маршрутызуе паведамленні ў фармаце JSON для ўсіх блокаў сервернага працэсу. Тыпы інфармацыйных палёў JSON-паведамлення і значэнні, якія яны могуць прымаць, пералічаны ў табліцы:
тып прылады
пратакол
messageType
deviceState
каманда
камера
onvif
sensorData
on
streaming(On/Off)
датчык
zwave
каманда
ад
recording(On/Off)
эффектор
MQTT
businessLogicRule
streaming(On/Off)
evice(Add/Remove)
businessLogic
configurationData
recording(On/Off)
Bluetooth
deviceState
памылка
Wi-Fi
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-камеры мог атрымліваць каманды ад графічнага інтэрфейсу і аблокі, трэба дадаць наступнае правіла:
{
"if": {
"and": [{
"equal": {
"deviceId": "1616453d-30cd-44b7-9bf0-************"
}
},
{
"equal": {
"messageType": "command"
}
}
]
},
"then": {
"result": "true"
}
}
Калі ўмовы, указаныя ў антэдэнтэ (левай частцы) правілы з'яўляюцца сапраўднымі, то выконваецца кансіквент (правая частка) правілы, і апрацоўшчык атрымлівае доступ да цела JSON-паведамленні. У антцэдэнце падтрымліваюцца лагічныя аператары, якія выконваюць параўнанне JSON-пар "ключ-значэнне":
- роўна "equal";
- не роўна "not_equal";
- менш "less";
- больш "greater";
- менш або роўна "less_or_equal";
- больш ці роўна "greater_or_equal".
Вынікі параўнання можна звязваць паміж сабой з дапамогай аператараў булевай алгебры:
- І "and";
- АБО "or";
- НЕ "not".
Такім чынам, запісваючы аператары і аперанд ў польскай натацыі, можна фармаваць досыць складаныя ўмовы з вялікай колькасцю параметраў.
Дакладна такі ж механізм, заснаваны на JSON-паведамленнях і правілах прадукцый у JSON фармаце, ужываецца ў блоку сервера прадукцыйнай логікі для прадстаўлення ведаў і ажыццяўленні лагічнай высновы з выкарыстаннем сэнсарных дадзеных з датчыкаў разумнай хаты.
Карыстальнік з дапамогай мабільнага прыкладання складае сцэнары, па якіх павінен функцыянаваць разумны дом. Напрыклад: "Калі спрацаваў датчык адкрыцця ўваходных дзвярэй, то ўключыць святло ў пярэднім пакоі". Прыкладанне счытвае з базы дадзеных ідэнтыфікатары датчыкаў (датчык адкрыцця) і выканаўчых прылад (разумная разетка або разумная лямпа) і фармуе лагічнае правіла ў фармаце JSON, якое перасылаецца ў кантролер разумнай хаты. Больш падрабязна гэты механізм будзе разгледжаны ў трэцім артыкуле нашага цыклу, дзе пойдзе размова аб кліенцкім дадатку для кіравання разумным домам.
Разгледжаны вышэй механізм прадукцыйнай логікі рэалізаваны з дапамогай бібліятэкі
void CRuleEngine::Process(PProperties pFact)
{
m_pActions->clear();
rapidjson::Reader reader;
for(TStringMap::value_type& rRule : m_Rules)
{
std::string sRuleId = rRule.first;
std::string sRuleBody = rRule.second;
CRuleHandler ruleHandler(pFact);
rapidjson::StringStream ruleStream(sRuleBody.c_str());
rapidjson::ParseResult parseResult = reader.Parse(ruleStream, ruleHandler);
if(!parseResult)
{
m_Logger.LogMessage(
NLogger2::ePriorityLevelError,
std::string("JSON parse error"),
"CRuleEngine::Process()",
std::string("RuleId: ") + sRuleId);
}
PProperties pAction = ruleHandler.GetAction();
if(pAction)
{
pAction->Set("ruleId", sRuleId);
m_pActions->push_back(pAction);
}
}
}
Тут pFact - структура, якая змяшчае пары «ключ-значэнне» з JSON-паведамлення, m_Rules - Радковы масіў прадукцыйных правілаў. Супастаўленне ўваходнага паведамлення і правілы прадукцыі вырабляецца ў функцыі reader.Parse(ruleStream, ruleHandler), Дзе ruleHandler - Гэта аб'ект, які змяшчае логіку булева аператараў і аператараў параўнання. sRuleId - Унікальны ідэнтыфікатар правіла, дзякуючы якому магчыма захоўваць і рэдагаваць правілы ўнутры базы дадзеных кантролера разумнага дома. m_pActions - масіў з вынікамі лагічнай высновы: JSON-паведамленнямі, утрымоўвальнымі кансіквенты з базы правіл і перасыланыя далей у дыспетчар паведамленняў, каб струмені-падпісчыкі маглі іх апрацаваць.
Прадукцыйнасць RapidJSON супастаўная з функцыяй strlen(), а мінімальныя патрабаванні да сістэмных рэсурсаў дазваляюць выкарыстоўваць гэтую бібліятэку ва ўбудаваных прыладах. Выкарыстанне паведамленняў і лагічных правіл у JSON-фармаце дазваляе рэалізаваць гнуткую сістэму інфармацыйнага абмену паміж усімі кампанентамі кантролера разумнай хаты.
Датчыкі і выканаўчыя прылады Z-Wave
Галоўная перавага разумнай хаты ў тым, што ён умее самастойна вымяраць розныя параметры навакольнага асяроддзя і выконваць карысныя функцыі ў залежнасці ад сітуацыі. Для гэтага да кантролера разумнай хаты падлучаюцца датчыкі і выканаўчыя прылады. У бягучай версіі - гэта бесправадныя прылады, якія працуюць па пратаколе
На рынку зараз можна знайсці дастаткова вялікая колькасць розных прылад Z-Wave. У якасці прыкладу разгледзім некалькі:
- Разумная разетка Zipato PAN16 можа вымяраць наступныя параметры: спажыванне электраэнергіі (кВт/ч), магутнасць (Вт), напруга (У) і ток (А) у электрасеткі. Таксама яна мае ўбудаваны выключальнік, з дапамогай якога можна кіраваць падлучаным электрапрыборам;
- Датчык працёку Neo Coolcam вызначае наяўнасць разлітай вадкасці па замыканні кантактаў выноснага маца;
- Датчык задымлення Zipato PH-PSG01 спрацоўвае пры трапленні часціц дыму ў камеру газааналізатара;
- Датчык руху Neo Coolcam аналізуе інфрачырвонае выпраменьванне цела чалавека. Дадаткова маецца датчык асветленасці (Лк);
- Мультысэнсар Philio PST02-A вымярае тэмпературу (°C), асветленасць (%), адкрыццё дзвярэй, прысутнасць чалавека ў памяшканні;
- Кантролер сеткі Z-Wave USB Stick ZME E UZB1, да якога падключаюцца датчыкі.
Вельмі важна, каб прылады і кантролер працавалі на адной частаце, - інакш яны, па-просту, не ўбачаць адзін-аднаго ў момант падключэння. Да аднаго кантролеру сеткі Z-Wave можна падлучыць да 232 прылад, што цалкам дастаткова для кватэры ці загараднай хаты. Для пашырэння зоны пакрыцця сеткі ўсярэдзіне памяшканняў разумная разетка можа быць скарыстана як рэтранслятар сігналу.
У серверным працэсе кантролера разумнай хаты, разгледжаным у папярэднім пункце, за ўзаемадзеянне з прыладамі Z-Wave адказвае сервер Z-Wave. Для атрымання інфармацыі з датчыкаў ён выкарыстоўвае бібліятэку
{
"vendor": "*****",
"version": "3.0.0",
"timestampMs": "1566479791290",
"clientType": "gateway",
"deviceId": "20873eb0-dd5e-4213-a175-************",
"deviceType": "sensor",
"protocol": "zwave",
"messageType": "sensorData",
"homeId": "0xefa0cfa7",
"nodeId": "20",
"sensorType": "METER",
"label": "Voltage",
"sensorData": "229.3",
"units": "V"
}
Далей яно перасылаецца ў дыспетчар паведамленняў сервернага працэсу, каб плыні-падпісчыкі маглі яго атрымаць. Асноўным падпісчыкам з'яўляецца сервер прадукцыйнай логікі, які супастаўляе значэнні палёў паведамлення ў антцэдэнтах лагічных правіл. Вынікі лагічнай высновы, утрымоўвальныя каманды кіравання, перасылаюцца зваротна ў дыспетчар паведамленняў і адтуль пападаюць у сервер Z-Wave, які іх дэкадуе і адсылае ў USB-кантролер сеткі Z-Wave. Далей яны трапляюць у выканаўчую прыладу, якое змяняе стан аб'ектаў навакольнага асяроддзя, і разумная хата, такім чынам, здзяйсняе карысную працу.
(клікніце на карцінку, каб адкрыць у большым дазволе)
Падлучэнне прылад Z-Wave вырабляецца ў графічным інтэрфейсе кантролера разумнай хаты. Для гэтага трэба перайсці на старонку са спісам прылад і націснуць кнопку "Дадаць". Каманда дадання праз інтэрфейс RESTful API пападае ў серверны працэс і, затым, перасылаецца дыспетчарам паведамленняў серверу Z-Wave, які перакладае USB-кантролер сеткі Z-Wave у адмысловы рэжым дадання прылад. Далей, на прыладзе Z-Wave трэба вырабіць серыю хуткіх націскаў (3 націскі ў плыні 1,5 секунд) сэрвіснай кнопкі. USB-кантролер падлучае прыладу ў сетку і адпраўляе інфармацыю аб ім у сервер Z-Wave. Той, у сваю чаргу, стварае новы запіс у БД SQLite з параметрамі новай прылады. Графічны інтэрфейс па заканчэнні зададзенага інтэрвалу часу вяртаецца на старонку спісу прылад Z-Wave, счытвае інфармацыю з БД і адлюстроўвае новую прыладу ў спісе. Кожная прылада пры гэтым атрымлівае свой унікальны ідэнтыфікатар, які выкарыстоўваецца ў правілах прадукцыйнай лагічнай высновы і пры працы ў воблаку. Праца гэтага алгарытму паказана на UML-дыяграме:
(клікніце на карцінку, каб адкрыць у большым дазволе)
Падключэнне IP-камер
Сістэма хмарнага разумнага дома, разгляданая ў дадзеным артыкуле, з'яўляецца мадэрнізацыяй сістэмы хмарнага відэаназірання, таксама распрацаванай аўтарам, якая ўжо некалькі гадоў прысутнічае на рынку і мае мноства усталёвак у Расіі.
Для сістэм хмарнага відэаназірання адной з вострых праблем з'яўляецца абмежаваны выбар абсталявання, з якім можна зрабіць інтэграцыю. Праграмнае забеспячэнне, якое адказвае за падлучэнне да воблака, усталёўваецца ўсярэдзіне відэакамеры, што адразу ж прад'яўляе сур'ёзныя патрабаванні да яе апаратнага начыння - працэсару і колькасці вольнай памяці. Гэтым, галоўным чынам, і тлумачыцца больш высокі кошт камер хмарнага відэаназірання ў параўнанні са звычайнымі 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
У выніку мы атрымліваем набор загалоўкавых "*.h" і зыходных "*.cpp" файлаў на мове З++, які можна змясціць прама ў дадатак або асобную бібліятэку і адкампіляваць з дапамогай кампілятара GCC. З-за мноства функцый код атрымоўваецца вялікім і патрабуе дадатковай аптымізацыі. Мікракампутар Raspberry Pi 3 model B+ валодае дастатковай прадукцыйнасцю, каб выконваць гэты код, але ў выпадку, калі ўзнікне неабходнасць партаваць код на іншую платформу, неабходна правільна падабраць працэсарную архітэктуру і сістэмныя рэсурсы.
IP-камеры, якія падтрымліваюць стандарт ONVIF, пры функцыянаванні ў лакальнай сетцы падлучаюцца да спецыяльнай мультыкаставай групы з адрасам 239.255.255.250. Існуе пратакол
У графічным інтэрфейсе кантролера разумнай хаты рэалізаваная функцыя пошуку IP-камер на мове PHP, які вельмі зручны пры ўзаемадзеянні з вэб-сэрвісамі пасродкам XML-паведамленняў. Пры выбары пунктаў меню Прылады > IP-камеры > Сканіраванне запускаецца алгарытм пошуку IP-камер, які выводзіць вынік у выглядзе табліцы:
(клікніце на карцінку, каб адкрыць у большым дазволе)
Пры даданні камеры ў кантролер можна паказаць налады, у адпаведнасці з якімі яна будзе ўзаемадзейнічаць з воблакам. Таксама на гэтым этапе ёй аўтаматычна прысвойваецца ўнікальны ідэнтыфікатар прылады, па якім яе ў далейшым можна будзе лёгка ідэнтыфікаваць усярэдзіне аблокаў.
Далей фармуецца паведамленне ў фармаце JSON, утрымоўвальнае ўсе параметры якая дадаецца камеры, і адпраўляецца ў серверны працэс кантролера разумнай хаты праз каманду RESTful API, дзе параметры камеры дэкадуюцца і захоўваюцца ва ўнутранай БД SQLite, а таксама выкарыстоўваюцца для запуску наступных струменяў апрацоўкі:
- ўсталявання RTSP-злучэнні для атрымання відэа і аўдыё струменяў;
- транскадавання аўдыё з фарматаў G.711 mu-Law, G.711 A-Law, G.723, ітд. у фармат AAC;
- транскадавання струменяў відэа ў фармаце H.264 і аўдыё ў фармаце AAC у кантэйнер FLV і перадача яго ў воблака па пратаколе RTMP;
- усталяванні злучэння з канчатковай кропкай дэтэктара руху IP-камеры па пратаколе ONVIF і яе перыядычнае апытанне;
- перыядычнай генерацыі паменшанай выявы папярэдняга прагляду (preview) і перасылцы яго ў воблака па пратаколе MQTT;
- лакальнай запісу відэа і аўдыё патокаў у выглядзе асобных файлаў у фармаце MP4 на SD- або Flash-карту кантролера разумнага дома.
Для ўсталявання злучэння з камерамі, транскадавання, апрацоўкі і запісы відэаструменяў у серверным працэсе выкарыстоўваюцца функцыі з бібліятэкі
У эксперыменце на тэставанне прадукцыйнасці да кантролера былі падлучаныя 3 камеры:
- HiWatch DS-I114W (дазвол – 720p, фармат сціску – H.264, бітрэйт – 1 Mb/s, гук G.711 mu-Law);
- 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 і АС Linux Debian Sarge. Цяпер кантролер праходзіць доследную эксплуатацыю, і даныя аб прадукцыйнасці яго работы будуць удакладняцца.
Узаемадзеянне з воблакам
Воблачнае разумны дом захоўвае карыстацкія дадзеныя (відэа і вымярэння датчыкаў) у воблаку. Больш падрабязна архітэктура воблачнага сховішча будзе разгледжана ў наступным артыкуле нашага цыкла. Цяпер пагаворым аб інтэрфейсе перадачы інфармацыйных паведамленняў ад кантролера разумнага дома ў воблака.
Станы падлучаных прылад і вымярэнні датчыкаў перадаюцца па пратаколе
- QoS 0 - максімум адзін раз (няма гарантыі дастаўкі);
- QoS 1 - хоць бы адзін раз (з пацверджаннем дастаўкі);
- QoS 2 – роўна адзін раз (з дадатковым пацверджаннем дастаўкі).
У нашым выпадку ў якасці MQTT-брокера выкарыстоўваецца
Для перадачы паведамленняў аб стане кантролера разумнай хаты выкарыстоўваецца механізм захаваных паведамленняў
MQTT-кліент быў распрацаваны на аснове рэалізацыі бібліятэкі
Медыяструмені H.264 + AAC адпраўляюцца ў воблака па пратаколе RTMP, дзе за іх апрацоўку і захоўванне адказвае кластар медыясервераў. Для аптымальнага размеркавання нагрузкі ў кластары і выбару найменш загружанага медыясервера кантролер разумнай хаты робіць папярэдні запыт да хмарнага балансавальніка нагрузкі і толькі пасля гэтага адпраўляе медыяпаток.
Заключэнне
У артыкуле была разгледжана адна канкрэтная рэалізацыя кантролера разумнай хаты на базе мікракампутара Raspberry Pi 3 B+, які ўмее атрымліваць, апрацоўваць інфармацыю і кіраваць абсталяваннем па пратаколе Z-Wave, узаемадзейнічаць з IP-камерамі па пратаколе ONVIF, а таксама абменьваецца дадзенымі і камандамі з хмарным сэрвісам па пратаколах MQTT і RTMP. Распрацаваны рухавічок прадукцыйнай логікі на аснове супастаўлення лагічных правіл і фактаў, прадстаўленых у JSON фармаце.
Цяпер кантролер разумнай хаты праходзіць доследную эксплуатацыю на некалькіх аб'ектах у Маскве і Падмаскоўі.
У наступнай версіі кантролера плануецца падлучэнне прылад іншых тыпаў (RF, Bluetooth, WiFi, правадныя). Для зручнасці карыстальнікаў працэдура падключэння датчыкаў і IP-камер будзе перанесена ў мабільнае прыкладанне. Таксама ёсць ідэі па аптымізацыі кода сервернага працэсу і партаванні праграмнага забеспячэння на аперацыйную сістэму.
Крыніца: habr.com