Как написать программу для умного дома

Не так давно наша компания завершила очередной этап проекта по разработке программной части системы «умный дом» для компании Nero Electronics. В работе над умным домом Nero нам пришлось работать сразу с двумя протоколами. Один – это общедоступный z-wave, а второй – собственная разработка Nero.

И второй момент очень интересен. Разработка «самописного» протокола связана с несколькими серьезными вызовами.

  • Во-первых, его нужно постоянно поддерживать, то есть его доработка и улучшение не заканчиваются, что ведет к дополнительным затратам на команду и инфраструктуру.
  • Во-вторых, нужна очень сильная инженерная команда. Например, для организации канала связи, на котором будут работать устройства, требуются очень сильные математики. Они должны помочь обеспечить защиту от помех. Ведь радиоэлектронный мир сейчас перенасыщен сигналами.

Есть ли альтернативы самописным протоколам?

Да. Это публичные протоколы Z-wave, ZigBee и Bluetooth LE. Они уже «из коробки» обеспечивают помехоустойчивость, приличный радиус действия, хорошо справляются с препятствиями типа стен. Их множество, но для умных домов подходят только протоколы с низким энергопотреблением.

HTML CSS JavaScript! Верстка и программирование мобильного приложения — умный дом  

При этом у Z-wave есть одна существенная проблема – это дорогие устройства (датчики, управляющие элементы и прочее), которые с ним совместимы. Их цена может быть в два-три раза выше, чем у устройств, работающих с другими протоколами. Как следствие, выбор Z-wave отсекает огромный пласт клиентов, которые не готовы платить за устройства большие деньги.

Все сервисы и компании, связанные с релокацией, на одной карте

У ZigBee небольшими минусами является низкая скорость передачи данных (что допустимо для систем умного дома). Еще один недостаток заключается в том, что устройства ZigBee, выпущенные разными производителям, нередко оказываются несовместимы друг с другом.

В этом плане Bluetooth LE может показаться оптимальным решением, так как он обеспечивает хорошую дальность работы и низкое энергопотребление.

Но его существенным минусом является топология работы. Если устройства Z-wave и ZigBee могут сами ретранслировать сигнал от роутера, позволяя расширять сеть, то каждое Bluetooth-устройство должно взаимодействовать напрямую с роутером. И если в квартире еще можно построить сеть с прямой видимостью роутера, то в загородном доме дальности действия Bluetooth может не хватить.

Почему мы работали с самописным решением?

Когда мы только начинали работу, указанных протоколов или еще не было, или же они были «сырыми». Приходилось «отсекать» большой кусок потенциальных покупателей, выбирая Z-wave с его дорогими устройствами.

На данный момент разработка собственного протокола мне видится нецелесообразной. Уже есть из чего выбирать.

Две сложности в разработке умного дома

Для разработчика сложной частью является организация простой настройки умного дома. Наша задача – сделать так, чтобы систему мог установить обычный пользователь, не прибегая к помощи специалиста.

Обычно у пользователей возникают проблемы именно на этом этапе. Например, в решениях типа того, что предлагает Xiaomi, нужно «руками» объединять устройства в сеть – вручную находить и прописывать номера, настраивать все в интерфейсе и так далее.

Наш замысел состоял в том, чтобы система все делала автоматически. Причем сразу после того, как включается в розетку. В итоге процесс выглядит так: при первом включении управляющее устройство всего дома подключается к Wi-Fi, затем сканирует пространство вокруг себя, находит устройства умного дома (датчики, исполняющие устройства), включает их в сеть и настраивает. Мы даже предусмотрели систему идентификации по QR-кодам на тот случай, если кто-то вдруг боится, что сеть «прихватит» соседские устройства. Чтобы этого не произошло, достаточно лишь сфотографировать этот QR-код – и система распознает устройство.

Второй сложный момент – организация доступа к умным домам с мобильных устройств из других сетей. Например, из офиса или через мобильный интернет. Дело в том, что когда пользователь дома, обычно он находится в одной Wi-Fi сети с умным домом – тогда проблем нет. Но что делать, если доступ нужно получить удаленно?

Проблема могла бы решиться «белым» IP-адресом (то есть IP, под которым устройство всегда находится в сети), к которому всегда можно подключиться. Проблема в том, что таких адресов очень мало. Провайдеры не предоставляют их своим клиентам, выдавая постоянно меняющиеся. И здесь встает задача: как «связать» пользователя именно с его домом?

Решить такую проблему помогает технология WebRTC. Если вкратце описать суть ее работы, то она помогает пользователю и умному дому «находить» друг друга посредством «облачного посредника». Используя облачную инфраструктуру, мы смогли построить решение, которое знает обо всех подключенных умных домах.

Рабочий процесс выглядит так: когда к платформе подключается пользователь, то с его устройства поступает запрос: «А дай-ка мне такой-то дом». «Посредник» (это могут быть сервера Amazon или Google, например) ищет IP-адрес, который прямо сейчас присвоен умному дому, после чего соединяет обе стороны, давая доступ пользователю к его управлению.

Читайте также:
Как сохранить документ если программа не отвечает

О проблемах с видеонаблюдением

Видеонаблюдение – одна из важных функций в умном доме. Ее наличие само собой разумеется, но при разработке мы столкнулись с серьезной проблемой. И с этой проблемой, скорее всего, столкнется каждый, кто будет работать в этой индустрии.

Когда речь идет об управлении устройствами, входящими в умный дом, то для этого требуется очень небольшой объем трафика – килобайты (всего-то нужно пересылать команды). Проблемы начинаются тогда, когда мы работаем с видеонаблюдением и передачей видео.

Передача видео с одной Full HD-камеры способна потреблять примерно мегабит трафика в секунду. А теперь представим, что вы захотели посмотреть трансляцию из дома, сидя на работе. Как уже было сказано выше, напрямую подключиться к умному дому нельзя из-за динамического IP, так что в дело снова вступает «облачный посредник». И вот здесь возникает большая статья расходов – передача видеотрафика.

Представим, что в сети тысяча домов – это гигабит в секунду. Многие провайдеры не способны предоставить скорость выше 100 мегабит в секунду. Следовательно, мы упираемся в инфраструктурные ограничения. И это без учета тех затрат на трафик, которые понесет владелец дома.

В общем, задача с передачей видео до сих пор не решена в полной мере.

Служба поддержки и ведения логов

Важная часть работы над «умным домом» – это организация пользовательской поддержки. И здесь есть свои сложности: как понять, что делал клиент (или что произошло), перед тем как что-то пошло не так?

Перед нами встала задача организовать систему поддержки. Для этого мы разработали специальную систему логов, которая записывает все происходящее в системе, а затем отправляет информацию в «облако», откуда она перенаправляются на специальный сервер обработки. Там все данные структурируются.

В итоге мы построили систему таким образом, что специалист службы поддержки имеет доступ ко всем логам и данным в них за любую дату. Это нужно, чтобы можно было быстро выяснить, что происходило с системой до выхода из строя, какие ошибки в ней появились. Например, специалист увидит, что пропало интернет-соединение или не работает GSM-модуль. Имея эту информацию, он уже сможет посоветовать клиенту что-то конкретное вместо того, чтобы «вслепую» выдвигать гипотезы или просто гадать.

Разработка системы логирования оказалась довольно сложной. Ведь нам нужно было организовать все так, чтобы она умела обрабатывать записи с тысяч умных домов. Данные собираются из разных систем, поэтому их нужно структурировать, а это терабайты информации, которые сложно обрабатывать в онлайне.

Например, в одном доме есть GSM-модуль, устройства с LCD-дисплеями, система управления устройствами, связь мобильного клиента и сервера – это все разные системы. Например, если сломался GSM-модуль, то система потеряла возможность отправлять SMS-сообщения. В этом случае мы имеем дело уже с двумя записями в логах – поломка GSM-модуля и невозможность отправки сообщения. Службе поддержки же нужно собрать их все вместе, чтобы получить цельную картину состояния дел в доме и выявить причину проблемы.

В общем, задача оказалась сложной, но решить мы ее смогли с помощью стека Elasticsearch плюс Kibana. Логи хранятся в базе Elasticsearch, а просматриваются с помощью приложения Kibana, которое и выдает всю картину по дому.

О безопасности

Конечно, когда разрабатывается умный дом, то безопасности придается большое значение. Все-таки он управляет большим количеством критически важных вещей: видеонаблюдение, двери, свет… В чем опасность? Получив доступ к системе, злоумышленник, например, может открывать двери или ворота.

Важно не дать ему эту возможность. Но как это сделать, если все работает через интернет, а трафик вполне может быть перехвачен?

Создание программы для умного дома

Действия домашней аппаратуры, которые она должна выполнить при определенных внешних условиях или при поступлении команды, называют сценарием. Его программирование подразумевает голосовое, пультовое управление и контроль с помощью цифровой аппаратуры.

управления домом с помощью планшета

Обзор возможностей по управлению

Сценарии настраиваются на защиту и помощь владельцу дома. Их разработка довольно долгая, но для большей функциональности умного дома следует очень тщательно подходить к этому вопросу.

Самые популярные сценарии

Запрограммированная модель «поведения» датчиков обычно срабатывает в отношении следующих факторов:

  • определенное время суток (включается свет, компьютер, отключается микроволновка и так далее);
  • датчики могут реагировать на движение и изменение температуры;
  • поступила команда на выполнение (она может быть отдана с телефона или ноутбука, в том числе в online-режиме, а также голосом или при помощи пульта).

Можно запрограммировать любую индивидуальную ситуацию, начиная от возвращения семьи домой и заканчивая отъездом в отпуск. Набирают популярность нестандартные сценарии:

  • уход за аквариумными рыбками и комнатными растениями;
  • подсушивание крыши и подъездов к дому;
  • наполнение и нагрев бассейна и сауны.

Отдельно создаются сценарии для обеспечения безопасности дома. Если посторонними совершена попытка проникнуть в помещение, система включает сигнализацию, оповещает владельца и охрану.

Проектировка и программирование системы

Создание умного дома состоит из следующих пунктов:

  1. Набросок общего плана. В нем подробно рассматривают этапы взаимодействия внутренних составляющих сценария с пользователем и между собой, а также отклик программы на нестандартные ситуации.
  2. Подбираются или пишутся с нуля драйвера для дома, и подходящий интерфейс. Не для каждого устройства производитель предлагает оригинальный драйвер, поэтому задача специалиста – его создать. Дополнительно идет написание различных модулей. Что касается интерфейса – обычно все устройства управления разбиваются на отдельные группы; за каждой дальнейшее программирование закрепляет свой интерфейс. Его можно установить для каждого пульта, но это будет неудобно в первую очередь для самого пользователя.
  3. Затем идет непосредственно программирование на основе предыдущих пунктов. Используя ранее логически выверенный проект, подготовленное для него программное обеспечение, специалисты приступают к написанию собственно программы сценария.
  4. Монтаж, тестирование, сдача в эксплуатацию.
Читайте также:
Как установить программу nero

интерфейс для создания сценария управления умным домом

Интерфейс для создания сценария управления умным домом

Но перед этим выбираются сценарии, которые в полной мере будут отвечать потребностям заказчика. Процесс создания умного дома долгий, настройка программного обеспечения и тестовый запуск потребуют немало времени.

Обычно фирмы, предоставляющие подобные услуги, включают в обслуживание абонента вторичное программирование системы, которая чем-то не устроила заказчика. Резервные копии создаются в обязательном порядке и сохраняются отдельно для каждого дома, чтобы в случае неполадок можно было все переустановить.

Поделитесь с друзьями
Комментарии:
Светлана 06.12.2016 09:28

Умный дом это шаг от фантастики к реальности, как когда то сотовые телефоны были предметом роскоши, а сейчас это вещь без которой практически никто не обходится.
Пока в своем доме мы оборудовали только оповещение от котельной, мне приходит смс если котел встал и присылает код ошибки. Так же я дистанционно с помощью мобильного телефона могу управлять температурным режимом. Полностью все оборудовать пока не позволяют средства, но даже, то что есть уже не мало. Конечно у меня не «умный дом» в полном смысле, но через пару лет запланировала капитальный ремонт и решила откладывать средства на установку полного функционала. Пока собираю информацию.)

Вацлав 10.12.2016 10:19

Лично мое мнение, что умны дом это один из видов деградации населения живущих как в городах, так и на селе. Я понимаю, что очень удобно и очень хорошо сидя на работе управлять своим домом, но не понимаю зачем? В статье написали, что уход за комнатными растениями можно прописать в сценарии, а разве не приятно самому за ними ухаживать, ведь для этого и разводили их, так же как и рыбок. Я конечно могу понят некоторые необходимые функции умного дома, но автоматизировать все и вся считаю полной глупостью. Это мое сугубо личное мнение.

Анюта 22.12.2016 00:09

Программное обеспечение для умного дома

Всем добрый день. В качестве хобби написал программу, которую можно использовать как часть системы “умный дом”. Чтобы сразу заинтересовать читателя, продемонстрирую некоторую малую часть сценариев использования ПО:

image

Включение и выключение ZWave лампочки через мобильное приложение
При появлении устройства в сети (по приходу пользователя домой) происходит
включение ZWave лампочки, релейного модуля Modbus RTU, запуск компьютера через WakeOnLan и включение ТВ
Запуск браузера, переход на яндекс.радио,
перелистывание треков (эмуляция горячих клавиш)

Вкратце:

1. Основная часть ПО — сервер, который крутится на ОС Windows, написан на C#;
2. Клиент на ОС Android, написан на Java;
3. Планируются клиенты на UWP и IOS, web-клиент.

Некоторые особенности ПО:

1. Конструктор сценариев. Создание сложных сценариев с циклами и условиями;
2. Работа с устройствами ZWave и Modbus;
3. Вложенность сценариев. Можно один сценарий использовать в другом в качестве процедуры;
4. Запуск удаленного сценария. В сценарии текущего сервера можно запускать сценарий удаленного;
5. Возможность добавлять в систему свою функциональность посредством создания модулей;
6. Запуск сценариев с помощью смартфона.

Конструктор сценариев

Программа позволяет создавать как сложный сценарий, так и одиночное действие.

Одиночное действие — это сценарий, который содержит только одно действие. В нем нет возможности создавать циклы и условия, а можно лишь “замапить” определенное действие на кнопку в UI клиента.

В качестве примера приведу свой способ их использования: создал категорию “Розетки”, в ней собрал все лампы, бытовой вентилятор, светильники, телевизор и компьютер. Теперь, чтобы включить одно из этих устройств, следует открыть клиент на андроиде, зайти в категорию “Розетки” и выбрать соответствующий пункт меню.

Обычно, одиночные действия использовать неудобно, так как различные устройства удобно запускать при каком-то условии или хотя бы не по одному. Именно для этого нужен “сложный сценарий”, о чем далее.

Конструктор сложного сценария позволяет создавать сценарии с циклами и условиями. Имеет два режима: просмотр и редактирование.

Пример сценария в режиме просмотра Пример сценария в режиме редактирования
image image

ЕСЛИ и ИНАЧЕ в конструкторе. В данных конструкциях можно создавать цепочки условий с логическими операторами НЕ, ИЛИ, И. Конструктор позволяет создавать группу условий и использовать операторы непосредственно с группой. Если условие остается пустым, то оно автоматом вычисляется как ложь.

Есть некоторое количество встроенных проверок (такие как проверка на дату, время и т.д.), а также некоторое количество в качестве подключаемых модулей.

Цикл ПОКА в конструкторе. Цикл состоит из условия и тела. Условие создается аналогично тому, как он создается в конструкции ЕСЛИ (группы условий, операторы НЕ, ИЛИ, И).

Читайте также:
Составить линейную программу для вычисления значения функции при заданных параметрах
Оператор ЕСЛИ и возможные условия Оператор ПОКА
image image

image Тела ЕСЛИ, ИНАЧЕ и ПОКА нужно чем-то заполнять. Собственно, это содержимое и есть самое важное в сценарии.

Основное окно конструктора сценариев
image

Также можно настроить следующие параметры сценариев:

— Запуск извне (вкл/выкл), позволяет запретить или разрешить запуск сценария с другой машины или из клиента;
— Автоматический запуск сценария при старте системы;
— Выбор категории сценария, позволяет отображать в UI клиента пункт меню для запуска сценария в определенной категории.

Работа с устройствами ZWave и Modbus

На данный момент система поддерживает устройства ZWave (на основе openzwave) и Modbus RTU (на основе nmodbus).

ZWave — это беспроводной протокол связи, использующийся в домашней автоматизации. Для реализации протокола используются миниатюрные маломощные радиочастотные модули. Сейчас на рынке ZWave представлен довольно обширный перечень устройств, таких как ZWave лампочки, розетки, релейные модули, переключатели, замки, датчики температуры (влажности, движения, протечки), терморегуляторы, устройства управления кондиционером и т.д. Также распространены мультисенсоры — устройства, сочетающие несколько датчиков (например, датчик освещенности, присутствия, температуры, дверной датчик и т.д.), что весьма привлекательно с точки зрения финансовых затрат и расположения в помещении.

В моей программе модуль ZWave позволяет производить все стандартные операции с устройствами, такие как удаление, добавление устройств, сброс контроллера. Также можно использовать несколько ZWave контроллеров, конечный пользователь не увидит разницы. К примеру, можно осуществить снятие показаний температуры с датчика, который соединён с контроллером «А», и запустить кондиционер с помощью контроллера «Б». Тут нет ни каких ограничений, любое действие и проверка осуществляются стандартными способами и добавляются в конструкторе сценариев.

image Рынок ZWave устройств достаточно широк. Имеется множество исполнительных устройств, таких как релейные модули, лампочки, устройства для работы с кондиционером, терморегуляторы, регуляторы теплого пола, розетки, переключатели. Так же существует множество датчиков: датчик открытия двери, температуры, датчик протечки, датчик присутствия и т.д. В качестве контроллера ZWave можно использовать USB stick.
image Основное окно ZWave модуля
image Окно выбора контроллера и операций с ним
image Выбор узла (датчики, переключатели и т.д.)
image Выбор параметра узла (включен/выключен, различные числовые параметры, такие как температура, влажность и т.д.)

Modbus — это проводной протокол, применяемый для связи между электронными устройствами, которые его поддерживают. В контексте нашей программы может быть полезен для работы с релейными модулями, для чего я его и использую у себя дома.

image Релейный модуль Modbus. Соединяется с контроллером через COM-порт
image Основное окно Modbus RTU модуля

Вложенность сценариев


Вложенность сценариев используется для декомпозиции сценариев умного дома. Часто бывают такие ситуации, когда одно действие участвует во многих сценариях (например, отключение всех бытовых устройств может происходить по нажатию на пункт меню в программе, по сценарию выхода всех wi-fi устройств из сети, просто по таймеру), и поэтому каждый раз создавать (или править) одинаковый алгоритм в каждом из сценариев не представляется удобным. Для этого существует такое встроенное действие, которое позволяет запускать уже созданный сценарий в текущем. Также это может быть удобно, когда часто добавляются новые бытовые устройства (или другие частые изменения в алгоритме работы “умного дома”), для изменения работы всех сценариев достаточно будет изменить лишь один сценарий, который используется в них.

Действие «Существующий сценарий» в списке Выбор существующего сценария
image image

Запуск удаленных сценариев


Посредством запуска удаленных сценариев можно запускать сценарий одного сервера в сценарии другого. В качестве примера хочу привести мой вариант использования этого функционала: создал сценарий (на домашнем сервере) под названием “свет+мультимедиа”, который включает свет в помещении, запускает мой десктоп (используя WakeOnLan), включает тв, к которому подключен десктоп и ждет пока на нем (десктопе) запустится экземпляр нашей программы, затем запускает на ней сценарии “включить музыку” и “звук на 20 единиц” с помощью запуска удаленных сценариев.

«Запуск удаленного сценария» в списке Выбор сервера и его сценария
image image

Написание собственных модулей


Помимо того, что пользователь может создавать сложные сценарии штатными средствами, программа позволяет “расширять” ее пользовательскими модулями на C#. Все элементы действий и проверок в сценариях (такие как “Проверка по дате”, “Показать сообщение”, “Действие Modbus”, “Действие ZWave” и т.п.) это классы, унаследованные от ICustomAction и ICustomChecker. Следуя определенным правилам, любой пользователь может создать свой модуль, который может быть как очень простым (например, озвучивание текущей температуры воздуха за окном), так и сложным, за которым может крыться целый фреймворк. Достаточно наследоваться от интерфейсов ICustomAction или ICustomChecker, расставить несколько атрибутов, скомпилировать DLL и добавить в программу через вкладку “МОДУЛИ” ( полная инструкция создания модулей).

Вкладка «МОДУЛИ»
image

Запуск сценариев с помощью смартфона

*пока только OS Android

Сценарии отображаются на главном экране и в категориях. Категория является виртуальной “папкой”. При запуске сценария обновляется статус соответствующей кнопки.

Экран настроек соединения Экран с запуском сценариев
image image

Помимо этого, есть возможность запускать сценарии из меню быстрого запуска на PC.

Меню быстрого запуска
image

В дальнейшем планируется клиент для UWP, IOS, web, а так же голосовой модуль для управления устройствами (планы на ближайшее будущее) и создания сценариев с помощью голоса (стратегические планы).

P.S.: Если нашли ошибку в программе, то пожалуйста, перешлите её на почту.

Источник: h.amazingsoftworks.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru