
Днес, благодарение на бързото развитие на микроелектрониката, комуникационните канали, интернет технологиите и изкуствения интелект, темата за умните домове става все по-актуална. Човешкият дом е претърпял значителни промени от каменната ера насам, а в ерата на Индустриалната революция 4.0 и Интернет на нещата е станал удобен, функционален и безопасен. На пазара идват решения, които превръщат апартамент или селска къща в сложни информационни системи, управлявани от всяка точка на света с помощта на смартфон. Освен това за взаимодействие човек-машина вече не се изисква познаване на езици за програмиране - благодарение на алгоритмите за разпознаване на реч и синтез, човек говори с интелигентен дом на родния си език.
Някои системи за интелигентен дом, предлагани в момента на пазара, са логично развитие на облачните системи за видеонаблюдение, чиито разработчици са осъзнали необходимостта от цялостно решение не само за наблюдение, но и за управление на отдалечени обекти.
Вашето внимание е поканено на поредица от три статии, които ще говорят за всички основни компоненти на облачната система за интелигентен дом, лично разработена от автора и пусната в експлоатация. Първата статия е посветена на терминалното клиентско оборудване, инсталирано в интелигентния дом, втората е за архитектурата на облачната система за съхранение и обработка на данни и накрая, третата е за клиентското приложение за управление на системата на мобилен телефон и стационарни устройства.
Умно оборудване за дома
Първо, нека да поговорим за това как да направите умен дом от обикновен апартамент, лятна къща или вила. За да направите това, като правило, е необходимо да поставите следното оборудване в жилището:
- сензори, измерващи различни параметри на външната среда;
- изпълнителни механизми, действащи върху външни обекти;
- контролер, който извършва изчисления в съответствие с измерванията на сензорите и основната логика и издава команди към задвижващите механизми.
Следващата фигура показва диаграма на интелигентен дом, който съдържа сензори за теч на вода (1) в банята, сензори за температура (2) и осветление (3) в спалнята, интелигентен контакт (4) в кухнята и видеонаблюдение камера (5) в коридора.

В момента широко се използват безжични сензори, работещи по протоколите RF433, Z-Wave, ZigBee, Bluetooth и WiFi. Основните им предимства са лесна инсталация и използване, както и ниска цена и надеждност. производителите се стремят да представят своите устройства на масовия пазар и да ги направят достъпни за средния потребител.
Сензорите и изпълнителните механизми, като правило, се свързват чрез безжичен интерфейс към контролера за интелигентен дом (6) - специализиран микрокомпютър, който комбинира всички тези устройства в една мрежа и ги управлява.
Въпреки това, някои решения могат да комбинират сензор, задвижващ механизъм и контролер едновременно. Например, интелигентен щепсел може да бъде програмиран да се включва или изключва според график, а облачна камера за видеонаблюдение може да записва видео на сигнал на детектор за движение. В най-простите случаи можете да правите без отделен контролер, но за да създадете гъвкава система с много сценарии, е необходимо.
За да свържете интелигентния домашен контролер към глобалната мрежа, можете да използвате обикновен интернет рутер (7), който отдавна се е превърнал в познат домакински уред във всеки дом. Има още един аргумент в полза на контролера за интелигентен дом - ако връзката с интернет се загуби, тогава интелигентният дом ще продължи да работи нормално благодарение на логическия блок, съхраняван вътре в контролера, а не в облачната услуга.
интелигентен домашен контролер
Контролерът за системата за облачен интелигентен дом, разгледан в тази статия, е разработен на базата на едноплатков микрокомпютър , който беше пуснат през март 2018 г. и има достатъчно ресурси и производителност за интелигентни домашни задачи. Той включва четириядрен процесор Cortex-A53 на 64-битова ARMv8-A архитектура, с тактова честота 1.4 GHz, както и 1 GB RAM, Wi-Fi 802.11ac, Bluetooth 4.2 и гигабитов Ethernet адаптер, работещ през USB 2.0 автобус.

Сглобяването на контролера е много просто - микрокомпютърът (1) се монтира в пластмасов корпус (2), след което се монтират 8 GB microSD карта памет със софтуер (3) и USB Z-Wave мрежов контролер (4) подходящите слотове. Контролерът за интелигентен дом е свързан към електрическата мрежа чрез захранващ адаптер 5V, 2.1A (5) и USB-micro-USB кабел (6). Всеки контролер има уникален идентификационен номер, който се записва в конфигурационния файл при първото стартиране и е необходим за взаимодействие с облачните услуги за интелигентен дом.
Софтуерът за интелигентен домашен контролер е разработен от автора на тази статия въз основа на операционната система Linux Raspbian Stretch. Състои се от следните основни подсистеми:
- сървърен процес за взаимодействие с интелигентно домашно оборудване и облак;
- графичен потребителски интерфейс за настройка на конфигурацията и работните параметри на контролера;
- база данни за съхраняване на конфигурацията на контролера.

база данни интелигентен домашен контролер е реализиран на базата на вградена СУБД и е файл на SD картата със системен софтуер. Той служи като хранилище за конфигурация на контролера — информация за свързаното оборудване и текущото му състояние, блок от логически производствени правила, както и информация, изискваща индексиране (например имена на локални видеоархивни файлове). Когато контролерът се рестартира, тази информация се запазва, което прави възможно възстановяването на функционалността на контролера в случай на прекъсване на захранването.
Графичен интерфейс контролерът за интелигентен дом е разработен в PHP 7 с помощта на микрорамка . Уеб сървърът отговаря за стартирането на приложението. , често използван във вградени устройства поради добрата си производителност и ниските изисквания за ресурси.
(щракнете върху изображението, за да го отворите в по-голяма резолюция)
Основната функция на GUI е да свързва интелигентно домашно оборудване (IP камери и сензори) към контролера. Уеб приложението чете конфигурацията и текущото състояние на контролера и свързаните към него устройства от базата данни SQLite. За да промените конфигурацията на контролера, той изпраща контролни команди във формат JSON чрез RESTful API на сървърния процес.
Сървърен процес
Сървърен процес - ключов компонент, който изпълнява цялата основна работа по автоматизиране на информационните процеси, които формират основата на интелигентния дом: получаване и обработка на сензорни данни, издаване на контролни действия в зависимост от основната логика. Целта на сървърния процес е да взаимодейства с интелигентно домашно оборудване, да изпълнява производствени логически правила, да получава и обработва команди от графичния интерфейс и облака. Сървърният процес в разглеждания интелигентен домашен контролер е реализиран като многонишково приложение, разработено в C ++ и стартирано като отделна услуга systemd операционна система Linux Raspbian.
Основните блокове на сървърния процес са:
- Мениджър на съобщения;
- IP камера сървър;
- Z-Wave сървър на устройства;
- Сървър на производствени логически правила;
- База данни за конфигурация на контролера и блок от логически правила;
- RESTful API сървър за взаимодействие с графичния интерфейс;
- MQTT клиент за взаимодействие с облака.
Блоковете на сървърния процес се реализират като отделни потоци, информацията между които се прехвърля под формата на съобщения във формат JSON (или структури от данни, представляващи този формат в паметта на процеса).

Основният компонент на сървърния процес е мениджър на съобщения, който насочва JSON съобщения към всички блокове в сървърния процес. Типовете информационни полета в JSON съобщение и стойностите, които могат да приемат, са изброени в таблицата:
deviceType
протокол
messageType
deviceState
команда
стая
ONVIF
сензорни данни
on
поточно предаване (вкл./изкл.)
сензор
zwave
команда
от
запис (вкл./изкл.)
ефектор
mqtt
businessLogicRule
поточно предаване (вкл./изкл.)
устройство (Добавяне/Премахване)
businessLogic
конфигурационни данни
запис (вкл./изкл.)
Bluetooth
deviceState
грешка
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 двойки ключ-стойност:
- е равно на "равно";
- не е равно на "not_equal";
- по-малко от "по-малко";
- повече "по-голямо";
- по-малко или равно на "по-малко_или_равно";
- по-голямо или равно на "по-голямо_или_равно".
Резултатите от сравнението могат да бъдат свързани помежду си с помощта на оператори на булева алгебра:
- И "и";
- ИЛИ "или";
- НЕ "не".
По този начин, записвайки оператори и операнди в полска нотация, можете да формирате доста сложни условия с голям брой параметри.
Абсолютно същият механизъм, базиран на JSON съобщения и производствени правила във формат JSON, се използва в производствения логически сървърен блок за представяне на знания и извършване на изводи, използвайки сензорни данни от интелигентни домашни сензори.
Потребителят, използвайки мобилно приложение, създава сценарии, според които трябва да функционира интелигентен дом. Например: "Ако сензорът за отваряне на входната врата се задейства, тогава включете светлината в коридора". Приложението чете идентификаторите на сензори (сензор за отваряне) и изпълнителни механизми (интелигентен контакт или смарт лампа) от базата данни и генерира логическо правило в JSON формат, което се изпраща до контролера на интелигентния дом. Този механизъм ще бъде разгледан по-подробно в третата статия от нашия цикъл, където ще говорим за клиентското приложение за управление на интелигентен дом.
Обсъденият по-горе механизъм на производствена логика се реализира с помощта на библиотеката — SAX-парсер на JSON формат на език C++. Последователното четене и анализиране на масив от производствени правила улеснява прилагането на функция за съпоставяне на данни в предшестващите:
void CRuleEngine::Process(PProperties pFact)
{
m_pActions->clear();
rapidjson::Reader reader;
for(TStringMap::value_type& rRule : m_Rules)
{
std::string sRuleId = rRule.first;
std::string sRuleBody = rRule.second;
CRuleHandler ruleHandler(pFact);
rapidjson::StringStream ruleStream(sRuleBody.c_str());
rapidjson::ParseResult parseResult = reader.Parse(ruleStream, ruleHandler);
if(!parseResult)
{
m_Logger.LogMessage(
NLogger2::ePriorityLevelError,
std::string("JSON parse error"),
"CRuleEngine::Process()",
std::string("RuleId: ") + sRuleId);
}
PProperties pAction = ruleHandler.GetAction();
if(pAction)
{
pAction->Set("ruleId", sRuleId);
m_pActions->push_back(pAction);
}
}
}
Тук pФакт - структура, съдържаща двойки ключ-стойност от JSON съобщение, m_Правила — низов масив от производствени правила. Съпоставянето на входящото съобщение и производственото правило се извършва във функцията reader.Parse(ruleStream, ruleHandler)Където ruleHandler е обект, съдържащ логиката на булевите оператори и операторите за сравнение. sRuleId - уникален идентификатор на правило, благодарение на който е възможно да се съхраняват и редактират правила в базата данни на интелигентния домашен контролер. m_pActions - масив с резултатите от извода: JSON съобщения, съдържащи следствия от базата правила и изпратени по-нататък към мениджъра на съобщения, така че нишките на абонатите да могат да ги обработват.
Производителността на RapidJSON е сравнима с функцията strlen(), а минималните изисквания за системни ресурси позволяват тази библиотека да се използва във вградени устройства. Използването на съобщения и логически правила във формат JSON ви позволява да реализирате гъвкава система за обмен на информация между всички компоненти на интелигентния домашен контролер.
Сензори и изпълнителни механизми Z-Wave
Основното предимство на интелигентния дом е, че той може самостоятелно да измерва различни параметри на външната среда и да изпълнява полезни функции в зависимост от ситуацията. За да направите това, сензорите и задвижващите механизми са свързани към контролера за интелигентен дом. В текущата версия това са безжични устройства, работещи по протокола на специална честота 869 MHz За Русия. За своята работа те са обединени в mesh мрежа, в която има повторители на сигнала с цел увеличаване на зоната на покритие. Устройствата имат и специален режим за пестене на енергия - те прекарват по-голямата част от времето си в режим на заспиване и изпращат информация само когато състоянието им се промени, което може значително да удължи живота на вградената батерия.

Днес на пазара има доста различни Z-Wave устройства. Като пример, разгледайте няколко:
- Умният контакт Zipato PAN16 може да измерва следните параметри: консумация на електроенергия (kWh), мощност (W), напрежение (V) и ток (A) в мрежата. Разполага и с вграден ключ, с който можете да управлявате свързания електроуред;
- Сензорът за теч Neo Coolcam открива наличието на разлята течност чрез затваряне на контактите на дистанционната сонда;
- Детекторът за дим Zipato PH-PSG01 се задейства, когато частици дим навлязат в камерата на газоанализатора;
- Сензорът за движение Neo Coolcam анализира инфрачервеното излъчване на човешкото тяло. Освен това има сензор за светлина (Lx);
- Мултисензор 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 камери. Освен това е необходим дълъг етап на преговори с компаниите за камери за видеонаблюдение, за да се получи достъп до файловата система на камерата и всички необходими инструменти за разработка.

От друга страна, всички съвременни 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" на езика C ++, които могат да бъдат поставени директно в приложение или отделна библиотека и компилирани с помощта на GCC компилатора. Поради многото функции, кодът е голям и изисква допълнителна оптимизация. Микрокомпютърът Raspberry Pi 3 модел 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 протокол и периодично запитване;
- периодично генериране на миниатюрно изображение за предварителен преглед (предварителен преглед) и изпращането му в облака с помощта на протокола MQTT;
- локален запис на видео и аудио потоци като отделни файлове в MP4 формат на SD или Flash картата на интелигентния домашен контролер.

За установяване на връзка с камери, прекодиране, обработка и запис на видео потоци в сървърния процес се използват функции от библиотеката 4.1.0.
В експеримента за тестване на производителността 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 аудио).

И трите потока бяха едновременно изведени в облака, аудиото беше транскодирано само от една камера и записът на локален архив беше деактивиран. Натоварването на процесора беше около 5%, използването на RAM беше 32 MB (на процес), 56 MB (общо с ОС).
По този начин, приблизително 20-30 камери (в зависимост от резолюцията и битрейта) могат да бъдат свързани към контролер за интелигентен дом, което е достатъчно за система за видеонаблюдение на триетажна къща или малък склад. За задачи, изискващи по-висока производителност, може да се използва неттоп с многоядрен процесор и операционна система Intel. Linux Debian Сержант. Контролерът в момента е в пробна експлоатация и данните за производителността ще бъдат актуализирани.
Взаимодействие с облака
Интелигентният дом в облака съхранява потребителски данни (видео и сензорни измервания) в облака. Архитектурата на облачното хранилище ще бъде разгледана по-подробно в следващата статия от нашата серия. Сега нека поговорим за интерфейса за предаване на информационни съобщения от интелигентния домашен контролер към облака.
Състоянията на свързаните устройства и сензорните измервания се предават чрез протокола , който често се използва в проекти за интернет на нещата поради своята простота и енергийна ефективност. MQTT използва модел клиент-сървър, при който клиентите се абонират за определени теми в брокера и публикуват своите съобщения. Брокерът изпраща съобщения до всички абонати според правилата, определени от нивото на QoS (Quality of Service):
- QoS 0 - максимум веднъж (без гаранция за доставка);
- QoS 1 - поне веднъж (с потвърждение за доставка);
- QoS 2 - точно веднъж (с допълнително потвърждение за доставка).
В нашия случай това е брокерът MQTT . Името на темата е уникалният идентификатор на интелигентния домашен контролер. MQTT клиентът в сървърния процес се абонира за тази тема и превежда в нея JSON съобщения, идващи от диспечера на съобщения. И обратното, съобщенията от MQTT брокера се препращат към мениджъра на съобщенията, който след това ги мултиплексира към своите абонати в сървърния процес:

За изпращане на съобщения за състоянието на интелигентния домашен контролер се използва механизмът на съхранените съобщения. MQTT протокол. Това ви позволява да проследявате правилно моментите на повторно включване в случай на прекъсване на захранването.
MQTT клиентът е разработен въз основа на внедряването на библиотеката в C++.
Медийните потоци H.264 + AAC се изпращат в облака чрез RTMP протокола, където клъстер от медийни сървъри отговаря за тяхната обработка и съхранение. За оптимално разпределение на натоварването в клъстера и избор на най-малко натоварен медиен сървър, контролерът за интелигентен дом прави предварителна заявка към облачния балансьор на натоварването и едва след това изпраща медийния поток.
Заключение
Статията разглежда една конкретна реализация на интелигентен домашен контролер, базиран на микрокомпютъра Raspberry Pi 3 B+, който може да получава, обработва информация и управлява оборудване с помощта на протокола Z-Wave, да взаимодейства с IP камери с помощта на протокола ONVIF, както и да обменя данни и команди с облачната услуга чрез протоколи MQTT и RTMP. Разработен е производствен логически двигател въз основа на сравнение на логически правила и факти, представени във формат JSON.
Сега контролерът за интелигентен дом е в опитна експлоатация в няколко съоръжения в Москва и Московска област.
В следващата версия на контролера се планира да се свързват устройства от други типове (RF, Bluetooth, WiFi, кабелни). За удобство на потребителите процедурата за свързване на сензори и IP камери ще бъде прехвърлена в мобилното приложение. Има и идеи за оптимизиране на кода на процеса на сървъра и пренасяне на софтуер към операционната система . Това ще спести от отделен контролер и ще прехвърли функционалността на интелигентен дом към обикновен домашен рутер.
Източник: www.habr.com
