какие датчики нужны для умного дома
Элементы системы «Умный Дом»: для чего нужны датчики
Собрать «умный дом» «из коробки» по силам любому человеку. Один из важнейших элементов этой системы — датчики. Из материала вы узнаете, для чего они нужны и, где их ставить.
Умный дом, что это такое? Для чего он нужен?
«Умный дом» — это загородный дом, в котором всеми устройствами и инженерным оборудованием, по заранее созданным сценариям, управляет единая автоматизированная система, с возможностью удалённого доступа с помощью мобильного устройства.
Пользователь, в любой момент времени, и из любой точки мира, может контролировать все системы жизнеобеспечения в доме и получать уведомления об их работе на мобильный телефон.
Каким оборудованием может управлять система «Умного дома»?
«Умный дом» может управлять:
А что нужно купить, чтобы смонтировать систему «Умного дома»?
Для чего нужен датчик утечки газа? Как он работает в «умном доме»?
Датчик устанавливается на газовом оборудовании. Он реагирует на повышенную концентрацию газа в помещении. При утечке газа, включается сигнал тревоги и световая индикация на корпусе устройства, а на мобильное устройство пользователя отправляется уведомление об аварии.
Как работает датчик задымления? Зачем он нужен «умному дому»?
Датчик работает так — при повышении допустимой концентрации дыма включается сирена. В системе «Умного дома», на мобильное устройство пользователя придёт оповещение.
Например, включится аварийное освещение, светосигнализация, запустится система дымоудаления, перекроются вентили газового оборудования. Чтобы быстро покинуть дом в ночное время, будет подсвечена лестница. Также пойдёт сигнал вызова в пожарную часть.
Как датчик протечки воды в «умном доме» защищает ваше имущество от порчи, а соседей от затопления?
Эти датчики ставятся в местах вероятных протечек воды — на пол в ванной комнате, под мойкой, стиральной машиной, под трубами и батареями отопления.
Он отправляет на мобильное устройство владельцев недвижимости уведомление об аварии и, одновременно, даёт команду исполняющему устройству — запорной арматуре, например, шаровому крану с электроприводом, перекрыть подачу воды в доме или в квартире.
Для чего нужны датчики движения и «умное освещение»?
Рассмотрим стандартные бытовые сценарии:
А теперь рассмотрим, как работает освещение в «умном доме»:
По теме «умного дома» советуем изучить «Умный Дом» на KNX’се в Германии.
Умный дом: стартовый набор для начинающих
Содержание
Содержание
В экосистеме умного дома существуют десятки датчиков и актуаторов, отвечающих за безопасность, автоматизацию бытовой техники, освещения и поддержания климата. У нового пользователя возникает соблазн увешать квартиру датчиками, как новогоднюю елку игрушками. Цель статьи — выделить «основной состав» и рассмотреть аспекты его применения.
Какие бывают датчики
Датчики предназначены для преобразования физической величины в электрический сигнал. В результате мы можем измерить эту величину количественно (температура, влажность) или зафиксировать ее изменение (распознать движение). Ниже перечислены датчики, доступные в свободной продаже у большинства крупных игроков рынка:
Какие бывают актуаторы
Под актуаторами понимают исполнительные устройства, генерирующие сигналы для воздействия на другие элементы умного дома. Это прямое воздействие либо сигналом (кнопка), либо посредством привода (электронный клапан). Исполнительным устройством может быть также и бытовой прибор, управляемый со смартфона, например, умный кондиционер. При этом можно управлять и обычным кондиционером, но уже с помощью умного пульта, который станет посредником между прибором и смартфоном. Задача в данном случае одна, а варианты решения разные. Отдельный класс устройств составляют интеллектуальные световые приборы. Про умный свет подробно рассказано в недавней статье.
Перечень умных исполнительных устройств:
Рассмотрим подробнее, какие устройства являются самыми необходимыми для построения базовой системы домашней автоматизации. Есть несколько вариантов готовых стартовых наборов от производителя.
Каждый из них не полностью закрывает минимальные потребности, будучи более ориентированным либо на безопасность, либо на удобство. Соберем комплект, удовлетворяющий обеим задачам.
Датчики движения
Старожилы умного дома, известные еще со времен первых пультовых охранных систем. Чаще всего встречаются пассивные инфракрасные датчики (PIR-сенсоры). Они содержат чувствительный пироэлектрический элемент, регистрирующий изменение инфракрасного излучения при движении объекта в зоне контроля. Радиус такой зоны составляет 4-8 метров, что позволяет охватить комнату одним датчиком. Стандартное расположение — верхний угол стены, противоположной входу в помещение.
Датчики движения настолько распространены, что являются, в том числе, частью других устройств, например, лампочек. Наиболее активно такие датчики используются именно в сценариях освещения: автоматическое включение и отключение света, исходя из активности в помещении. В плане интеграции с остальной системой умного дома нет проблем, поскольку представлено множество девайсов с различными интерфейсами. Эти датчики, имеющие большое количество сценариев применения, железно входят в основу умного дома.
Датчики открытия окон/дверей
Датчики открытия дверей и окон состоят из двух частей — геркона и магнита. Они устанавливаются на дверной коробке/оконной раме и створке, а при их разъединении происходит срабатывание датчика.
Простая и долговечная конструкция давно зарекомендовала данные сенсоры как неотъемлемую часть охранных систем. Также они широко используются в сценариях умного света. Умный дом сложно представить без этих устройств.
Датчики протечки воды
В большинстве своем работают за счет разницы электропроводности воздуха и воды. Когда вода попадает на один из контактов, расположенных на дне устройства, возникает сигнал. Датчики устанавливаются в непосредственной близости от вероятных источников протечки: под шлангом стиральной машины, рядом со стояками, раковиной, радиатором отопления. Также в случае, если есть небольшой уклон, удачной для монтажа будет самая низкая по уровню точка.
Чтобы система не только сигнализировала о происшествии, но и предотвращала его последствия, применяют устройства, перекрывающие подачу воды. Обычно это специальный электронный клапан, но есть и оригинальные воплощения китайской инженерной мысли в виде электропривода для рукоятки шарового крана.
С точки зрения интеграции в умный дом данная система не всегда удобна, поскольку идет как самостоятельный комплект. Проприетарный контроллер не подружится с общим шлюзом и останутся только варианты с работой через умную розетку или поддержкой голосового помощника. Поэтому в основной состав проходят только датчики, а актуаторы — в запасной.
Датчики задымления
По принципу действия аналогичны стандартным пожарным извещателям, которые в обязательном порядке устанавливаются в новых домах. При попадании частиц дыма в поле фотоприемника датчика, изменяется интенсивность излучения и происходит срабатывание. При этом активируется сирена, а если извещатель адресный, то он передает сигнал на пульт пожарной охраны. При наличии такого оборудования смысла в дополнительном датчике дыма нет. В обратном случае датчик обязателен.
Датчики утечки газа
Реагируют на повышение концентрации бытового газа в воздухе. Имеет смысл использовать при наличии газовой плиты и (или) колонки. Устанавливать такие датчики необходимо поблизости от газовых приборов.
Датчики температуры и влажности
Контроль параметров окружающей среды — еще одна важная функция умного дома. Хороший климат в доме полезен для здоровья семьи, питомцев и комнатных растений. Измерения температуры и влажности все чаще доступны в рамках одного устройства. Без этих датчиков невозможно представить умный дом. К ним добавляют атмосферное давление, но на этот показатель повлиять нельзя, поэтому он носит справочный характер. А двумя основными параметрами управлять можно и нужно.
Для этого мы пользуемся кондиционерами и увлажнителями воздуха. Это уже более дорогие аппараты по сравнению с датчиками, их можно рассмотреть для приобретения в долгосрочной перспективе. Они также бывают умными и помогают полностью автоматизировать процесс регулировки погоды в доме. В случае выхода температуры или влажности за пределы заданных порогов, включится соответствующий прибор. Он будет работать до достижения необходимых показателей.
Кстати, не забудьте про уход за климатической техникой. Про кондиционеры мы писали тут.
Определяемся с актуаторами
В качестве базовых исполнительных устройств предлагаем рассмотреть умные розетки, выключатели, кнопки и лампы.
Некоторые умные розетки позволяют не только управлять состоянием светильников и бытовых приборов, но и вести учет потребляемой мощности. Выключатели и кнопки также пригодятся для реализации сценариев освещения и включения/выключения техники.
Еще одна удобная вещь — умный инфракрасный пульт. Им можно заменить все остальные пульты для телевизора, кондиционера и т. п. Представьте, что вам теперь вообще не придется их искать!
Во всех наборах умного дома присутствует обязательный элемент — блок управления, он же шлюз или центр управления. Это «мозг» системы, который отвечает за управление всеми устройствами умного дома и выполнение сценариев автоматизации. Он принимает данные от датчиков и передает их на сервер производителя для обработки. Благодаря этому вы можете отслеживать эти данные в удобном формате — в приложении на мобильном устройстве, откуда можно в пару кликов передать команды для исполнительных устройств.
Шлюзы поддерживают различные протоколы беспроводной передачи данных, необходимых для обмена данными со всеми компонентами системы: Wi-Fi, Bluetooth, ZigBee, Z-Wave, RF. Если устройств много, их объединяют в группы, для чего используются хабы.
Особняком стоят несколько облачных систем умного дома, не требующие управляющего блока. Это платформы Apple HomeKit, Google Home и Умный дом Яндекса. В таком случае команда из приложения улетает прямиком в облако, где обрабатывается при помощи библиотеки функций от производителя конкретного устройства. На примере Яндекса схематически это выглядит так:
Приложения для смартфонов
Каждый производитель имеет собственное приложение для управления умным домом. Все они умеют отображать список устройств, показания датчиков и передавать команды. Пример настройки Mi Home здесь, а Rubetek — здесь. С точки зрения поддержки сторонних вендоров хорошо себя зарекомендовал Mi Home.
Основная функция приложений — создать сценарии автоматизации для достижения заданных условий. Именно в них состоит главная «фишка» умного дома — автоматическое выполнение действий без участия человека. Есть и другая «фишка», о которой речь пойдет далее.
Будьте услышанным
Голосовое управление тесно интегрируется в умный дом. Все три рассмотренных выше разработчика облачных платформ развивают собственных голосовых помощников: Siri, Alexa и Алиса. На русском языке полноценно понимает только Алиса. Управление голосом выводит систему умного дома на совершенно иной уровень, но ему свойственны и некоторые недостатки.
По сравнению с приложениями производителей умных устройств голосовые помощники обладают более скромными возможностями по поддержке устройств и их функций. Список устройств, которые можно подружить с Mi Home, гораздо шире. Кроме того, Алиса пока не воспринимает все команды для устройств, доступных в приложении. Тем не менее, перечень будет расширяться, а удобство управления голосом нивелирует эти несовершенства.
Для того, чтобы Алиса увидела ваши девайсы, достаточно установить на смартфоне приложение Яндекс и перейти в меню «Устройства — Умный дом».
Далее необходимо выбрать производителя и на соответствующей вкладке объединить аккаунты, например, с Mi Home. После этого устройства будут отображены с доступными голосовыми командами.
Можно управлять отдельными устройствами и объединять их в группы. Для более комфортного общения с Алисой используйте умную колонку.
На видео демонстрируются несколько сценариев умного дома Xiaomi + Алиса.
Команда умного дома
Подведем итог в подборке минимального комплекта умных устройств:
Если пока нет четкого понимания, какие сценарии будут использоваться, то можно взять все устройства в одном экземпляре. Одно из преимуществ системы — масштабируемость. Большинство датчиков работает от батареек и крепятся на 3М-скотч, поэтому добавить такие элементы не составит труда. Не забывайте предварительно почитать про совместимость оборудования и приложения или голосового помощника. Если вы планируете монтаж на этапе ремонта, то рассмотрите варианты с умными реле и заранее определите выводы питания под устройства умного дома.
Добавление в систему датчиков и актуаторов у всех производителей максимально упрощено и состоит из нескольких шагов:
Умный дом — отдельная инженерная система, заслуживающая вдумчивого проектного подхода. В этом случае умные устройства станут вашими надежными помощниками по дому.
Облачный Умный Дом. Часть 1: Контроллер и датчики
Сегодня, благодаря бурному развитию микроэлектроники, каналов связи, Интернет-технологий и Искусственного Интеллекта, тема умных домов становится все более и более актуальной. Человеческое жилище претерпело существенные изменения со времен каменного века и в эпоху Промышленной Революции 4.0 и Интернета Вещей стало удобным, функциональным и безопасным. На рынок приходят решения, превращающие квартиру или загородный дом в сложные информационные системы, управляемые из любой точки мира с помощью смартфона. Причем, для человеко-машинного взаимодействия уже не требуются знания языков программирования, — благодаря алгоритмам распознавания и синтеза речи человек говорит с умным домом на родном языке.
Некоторые системы умного дома, представленные сейчас на рынке, являются логичным развитием систем облачного видеонаблюдения, разработчики которых осознали необходимость в комплексном решении не только для контроля, но и для управления удаленными объектами.
Вашему вниманию предлагается цикл из трех статей, где будет рассказано о всех основных компонентах системы облачного умного дома, лично разработанной автором и запущенной в эксплуатацию. Первая статья посвящена оконечному клиентскому оборудованию, устанавливаемому внутри умного дома, вторая — архитектуре системы облачного хранения и обработки данных, и, наконец, третья — клиентскому приложению для управления системой на мобильных и стационарных устройствах.
Оборудование для умного дома
Сперва поговорим о том, как из обыкновенной квартиры, дачи или коттеджа сделать умный дом. Для этого, как правило, требуется разместить в жилище следующее оборудование:
В настоящее время широкое распространение получили беспроводные датчики, работающие по протоколам RF433, Z-Wave, ZigBee, Bluetooth и WiFi. Их главные преимущества — удобство монтажа и использования, а также дешевизна и надежность, т.к. производители стремятся вывести свои устройства на массовый рынок и сделать их доступными рядовому пользователю.
Датчики и исполнительные устройства, как правило, подключаются по беспроводному интерфейсу к контроллеру умного дома (6) — специализированному микрокомпьютеру, объединяющему все эти устройства в единую сеть и управляющему ими.
Впрочем, некоторые решения могут совмещать в себе датчик, исполнительное устройство и контроллер одновременно. Например, умная розетка может быть запрограммирована на включение или выключение по расписанию, а камера облачного видеонаблюдения умеет записывать видео по сигналу детектора движения. В простейших случаях можно обойтись без отдельного контроллера, но для создания гибкой системы со множеством сценариев он необходим.
Для подключения контроллера умного дома к глобальной сети может быть использован обычный Интернет-роутер (7), который уже давно стал привычным бытовым прибором в любом доме. Здесь есть еще один аргумент в пользу контроллера умного дома — если пропадет связь с Интернет, то умный дом продолжит работу в штатном режиме благодаря блоку логики, хранящейся внутри контроллера, а не в облачном сервисе.
Контроллер умного дома
Контроллер для системы облачного умного дома, рассматриваемой в данной статье, разработан на основе одноплатного микрокомпьютера Raspberry Pi 3 model B+, который был выпущен в марте 2018 года и обладает достаточными ресурсами и производительностью для задач умного дома. В его состав входит четырехядерный процессор Cortex-A53 на 64-битной архитектуре ARMv8-A, с тактовой частотой 1.4 ГГц, а также 1 ГБ ОЗУ, Wi-Fi 802.11ac, Bluetooth 4.2 и гигабитный адаптер Ethernet, работающий через шину USB 2.0.
Сборка контроллера очень проста — микрокомпьютер (1) устанавливается в пластиковый корпус (2), далее в него в соответствующие слоты устанавливается 8 ГБ карта памяти в формате microSD с программным обеспечением (3) и USB-контроллер сети Z-Wave (4). Контроллер умного дома подключается к электросети через адаптер питания 5В, 2.1А (5) и кабель USB — micro-USB (6). Каждый контроллер имеет уникальный идентификационный номер, который записывается в файле конфигурации при первом запуске и необходим для взаимодействия с сервисами облачного умного дома.
Программное обеспечение контроллера умного дома разработано автором данной статьи на основе операционной системы Linux Raspbian Stretch. Оно состоит из следующих основных подсистем:
База данных контроллера умного дома реализована на основе встраиваемой СУБД SQLite и представляет собой файл на SD-карте с системным ПО. Она служит хранилищем конфигурации контроллера — информации о подключенном оборудовании и его текущем состоянии, блока логических продукционных правил, а также информации, требующей индексации (например, имен файлов локального видеоархива). При перезагрузке контроллера эта информация сохраняется, что делает возможным восстановление работоспособности контроллера в случае сбоев электропитания.
Графический интерфейс контроллера умного дома разработан на языке PHP 7 с использованием микрофреймворка Slim. За работу приложения отвечает веб-сервер lighttpd, часто применяющийся во встраиваемых устройствах благодаря своей хорошей производительности и низким требованиям к ресурсам.
(кликните на картинку, чтобы открыть в большем разрешении)
Основной функцией графического интерфейса является подключение оборудования умного дома (IP-камер видеонаблюдения и датчиков) к контроллеру. Веб-приложение считывает конфигурацию и текущее состояние контроллера и подключенных к нему устройств из БД SQLite. Для изменения конфигурации контроллера оно посылает управляющие команды в формате JSON через интерфейс RESTful API серверного процесса.
Серверный процесс
Серверный процесс — ключевой компонент, выполняющий всю основную работу по автоматизации информационных процессов, составляющих основу умного дома: получение и обработку сенсорных данных, выдачу управляющих воздействий в зависимости от заложенной логики. Назначение серверного процесса — взаимодействие с оборудованием умного дома, выполнение продукционных логических правил, получение и обработка команд от графического интерфейса и облака. Серверный процесс в рассматриваемом контроллере умного дома реализован как многопоточное приложение, разработанное на языке С++ и запускаемое как отдельный сервис systemd операционной системы Linux Raspbian.
Основными блоками серверного процесса являются:
Главным компонентом серверного процесса является диспетчер сообщений, который маршрутизирует сообщения в формате JSON для всех блоков серверного процесса. Типы информационных полей JSON-сообщения и значения, которые они могут принимать, перечислены в таблице:
deviceType | protocol | messageType | deviceState | command |
---|---|---|---|---|
camera | onvif | sensorData | on | streaming(On/Off) |
sensor | zwave | command | off | recording(On/Off) |
effector | mqtt | businessLogicRule | streaming(On/Off) | evice(Add/Remove) |
businessLogic | configurationData | recording(On/Off) | ||
bluetooth | deviceState | error | ||
wifi | ||||
rf |
Например, сообщение от детектора движения камеры выглядит следующим образом:
Продукционная логика
Чтобы получить или отправить сообщение от диспетчера, блок серверного процесса подписывается на сообщения определенного типа. Подписка представляет собой продукционное логическое правило типа «Если …, то … », представленное в JSON формате, и ссылку на обработчик сообщения внутри блока серверного процесса. Например, чтобы сервер IP-камеры мог получать команды от графического интерфейса и облака, нужно добавить следующее правило:
Если условия, указанные в антецеденте (левой части) правила являются истинными, то выполняется консиквент (правая часть) правила, и обработчик получает доступ к телу JSON-сообщения. В антецеденте поддерживаются логические операторы, выполняющие сравнение JSON-пар «ключ-значение»:
Точно такой же механизм, основанный на JSON-сообщениях и правилах продукций в JSON формате, применяется в блоке сервера продукционной логики для представления знаний и осуществления логического вывода с использованием сенсорных данных с датчиков умного дома.
Пользователь с помощью мобильного приложения составляет сценарии, по которым должен функционировать умный дом. Например: «Если сработал датчик открытия входной двери, то включить свет в прихожей». Приложение считывает из базы данных идентификаторы датчиков (датчик открытия) и исполнительных устройств (умная розетка или умная лампа) и формирует логическое правило в формате JSON, которое пересылается в контроллер умного дома. Более подробно этот механизм будет рассмотрен в третьей статье нашего цикла, где пойдет речь о клиентском приложении для управления умным домом.
Рассмотренный выше механизм продукционной логики реализован с помощью библиотеки RapidJSON — SAX-парсера формата JSON на языке С++. Последовательное чтение и разбор массива продукционных правил позволяет легко реализовать функцию сопоставления данных внутри антецедентов:
Здесь pFact — структура, содержащая пары «ключ-значение» из JSON-сообщения, m_Rules — строковый массив продукционных правил. Сопоставление входящего сообщения и правила продукции производится в функции reader.Parse(ruleStream, ruleHandler), где ruleHandler — это объект, содержащий логику булевых операторов и операторов сравнения. sRuleId — уникальный идентификатор правила, благодаря которому возможно хранить и редактировать правила внутри базы данных контроллера умного дома. m_pActions — массив с результатами логического вывода: JSON-сообщениями, содержащими консиквенты из базы правил и пересылаемые далее в диспетчер сообщений, чтобы потоки-подписчики могли их обработать.
Производительность RapidJSON сопоставима с функцией strlen(), а минимальные требования к системным ресурсам позволяют использовать эту библиотеку во встраиваемых устройствах. Использование сообщений и логических правил в JSON-формате позволяет реализовать гибкую систему информационного обмена между всеми компонентами контроллера умного дома.
Датчики и исполнительные устройства Z-Wave
Главное преимущество умного дома в том, что он умеет самостоятельно измерять различные параметры внешней среды и выполнять полезные функции в зависимости от ситуации. Для этого к контроллеру умного дома подключаются датчики и исполнительные устройства. В текущей версии — это беспроводные устройства, работающие по протоколу Z-Wave на специально выделенной частоте 869 МГц для России. Для своей работы они объединяются в mesh-сеть, в которой присутствуют ретрансляторы сигнала, чтобы увеличить зону покрытия. Также устройства имеют специальный режим энергосбережения — большую часть времени они проводят в спящем режиме и отправляют информацию только при изменении своего состояния, что позволяет существенно продлить жизнь встроенной батареи.
На рынке сейчас можно найти достаточно большое количество различных устройств Z-Wave. В качестве примера рассмотрим несколько:
В серверном процессе контроллера умного дома, рассмотренном в предыдущем пункте, за взаимодействие с устройствами Z-Wave отвечает сервер Z-Wave. Для получения информации с датчиков он использует библиотеку OpenZWave на языке С++, которая предоставляет интерфейс для взаимодействия с USB-контроллером сети Z-Wave и работает со множеством датчиков и исполнительных устройств. Значение параметра внешней среды, измеренной датчиком, записывается сервером Z-Wave в виде JSON-сообщения:
Далее оно пересылается в диспетчер сообщений серверного процесса, чтобы потоки-подписчики могли его получить. Основным подписчиком является сервер продукционной логики, который сопоставляет значения полей сообщения в антецедентах логических правил. Результаты логического вывода, содержащие команды управления, пересылаются обратно в диспетчер сообщений и оттуда попадают в сервер 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-камер, — это ONVIF Profile S, спецификации которого существуют на языке описания веб-сервисов WSDL. С помощью утилит из инструментария gSOAP возможно сгенерировать исходный код сервисов, работающих с IP-камерами:
В результате мы получаем набор заголовочных «*.h» и исходных «*.cpp» файлов на языке С++, который можно поместить прямо в приложение или отдельную библиотеку и откомпилировать с помощью компилятора GCC. Из-за множества функций код получается большим и требует дополнительной оптимизации. Микрокомпьютер Raspberry Pi 3 model B+ обладает достаточной производительностью, чтобы исполнять этот код, но в случае, если возникнет необходимость портировать код на другую платформу, необходимо правильно подобрать процессорную архитектуру и системные ресурсы.
IP-камеры, поддерживающие стандарт ONVIF, при функционировании в локальной сети подключаются к специальной мультикастовой группе с адресом 239.255.255.250. Существует протокол WS-Discovery, который позволяет автоматизировать поиск устройств в локальной сети.
В графическом интерфейсе контроллера умного дома реализована функция поиска IP-камер на языке PHP, который очень удобен при взаимодействии с веб-сервисами посредством XML-сообщений. При выборе пунктов меню Устройства > IP-камеры > Сканирование запускается алгоритм поиска IP-камер, выводящий результат в виде таблицы:
(кликните на картинку, чтобы открыть в большем разрешении)
При добавлении камеры в контроллер можно указать настройки, в соответствии с которыми она будет взаимодействовать с облаком. Также на этом этапе ей автоматически присваивается уникальный идентификатор устройства, по которому ее в дальнейшем можно будет легко иденифицировать внутри облака.
Далее формируется сообщение в формате JSON, содержащее все параметры добавляемой камеры, и отправляется в серверный процесс контроллера умного дома через команду RESTful API, где параметры камеры декодируются и сохраняются во внутренней БД SQLite, а также используются для запуска следующих потоков обработки:
Для установления соединения с камерами, транскодирования, обработки и записи видеопотоков в серверном процессе используются функции из библиотеки FFmpeg 4.1.0.
В эксперименте на тестирование производительности к контроллеру были подключены 3 камеры:
Все три потока одновременно выводились в облако, транскодирование звука осуществлялось только с одной камеры, запись локального архива была отключена. Загрузка CPU составила примерно 5%, использование RAM — 32 МБ (на процесс), 56 МБ (всего вместе с ОС).
Таким образом, к контроллеру умного дома можно подключить примерно 20 — 30 камер (в зависимости от разрешения и битрейта), что достаточно для системы видеонаблюдения трехэтажного коттеджа или небольшого склада. В задачах, где требуется большая производительность, можно использовать неттоп с многоядерным процессором Intel и ОС Linux Debian Sarge. В настоящее время контроллер проходит опытную эксплуатацию, и данные о производительности его работы будут уточняться.
Взаимодействие с облаком
Облачный умный дом хранит пользовательские данные (видео и измерения датчиков) в облаке. Более подробно архитектура облачного хранилища будет рассмотрена в следующей статье нашего цикла. Сейчас поговорим об интерфейсе передачи информационных сообщений от контроллера умного дома в облако.
Состояния подключенных устройств и измерения датчиков передаются по протоколу MQTT, который часто применяется в проектах Интернета Вещей из-за простоты и энергоэффективности. MQTT использует клиент-серверную модель, когда клиенты подписываются на определенные топики внутри брокера и публикуют свои сообщения. Брокер рассылает сообщения всем подписчикам по правилам, определяемым уровнем QoS (Quality of Service):
Для передачи сообщений о состоянии контроллера умного дома используется механизм сохраненных сообщений retained messages протокола MQTT. Это позволяет правильно отслеживать моменты переподключений при сбоях электропитания.
MQTT-клиент был разработан на основе реализации библиотеки Eclipse Paho на языке С++.
Медиапотоки H.264 + AAC отправляются в облако по протоколу RTMP, где за их обработку и хранение отвечает кластер медиасерверов. Для оптимального распределения нагрузки в кластере и выбора наименее загруженного медиасервера контроллер умного дома делает предварительный запрос к облачному балансировщику нагрузки и только после этого отправляет медиапоток.
Заключение
В статье была рассмотрена одна конкретная реализация контроллера умного дома на базе микрокомпьютера Raspberry Pi 3 B+, который умеет получать, обрабатывать информацию и управлять оборудованием по протоколу Z-Wave, взаимодействовать с IP-камерами по протоколу ONVIF, а также обменивается данными и командами с облачным сервисом по протоколам MQTT и RTMP. Разработан движок продукционной логики на основе сопоставления логических правил и фактов, представленных в JSON формате.
Сейчас контроллер умного дома проходит опытную эксплуатацию на нескольких объектах в Москве и Подмосковье.
В следующей версии контроллера планируется подключение устройств других типов (RF, Bluetooth, WiFi, проводные). Для удобства пользователей процедура подключения датчиков и IP-камер будет перенесена в мобильное приложение. Также есть идеи по оптимизации кода серверного процесса и портировании программного обеспечения на операционную систему OpenWrt. Это позволит сэкономить на отдельном контроллере и перенести функционал умного дома в обычный бытовой роутер.