Открытое ПО для управления умным домом
По мере развития оказалось, что сетей из умных гаджетов и узлов на основе Arduino или других открытых микрокомпьютерных платформ недостаточно, чтобы построить полноценную систему умного дома. Нехватало центральных процессоров и качественных пользовательских интерфейсов, которые играют заметную роль в популярных проприетарных системах умного дома, таких как Control4 или Vantage. Благодаря усилиям энтузиастов по всему миру стали появляться открытые программные платформы, которые решают и эту проблему. В настоящее время среди таких DIY-платформ (Open-source DIY home automation platform) наиболее известны:
- OpenHAB — одна из наиболее популярных открытых платформ с большим и активным сообществом разработчиков и последователей. Платформа реализована на Java и из-за этого считается тяжеловесной. Вместе с тем, именно это обстоятельство позволяет разворачивать OpenHAB на любых системах с поддержкой Java (Windows, Linux, MacOS, Raspberry Pi, PINE и др.). Разработано большое количество драйверов под эту платформу для подключения самого разного оборудования. Поскольку платформа не ориентирована ни на одного производителя, то наличие драйвера под определенное устройство определяется в большей степени его популярностью. Чем более известен и распространен на рынке конкретный гаджет, тем выше вероятность, что под него уже есть (или скоро будет написан) драйвер под OpenHAB. Система имеет достаточно аскетичный дизайн, поддерживает голосовое управление, мобильные приложения для iOS и Android, интегрируется с Apple HomeKit (то есть управление возможно с устройств Apple вообще без установки каких-либо приложений). Имеется возможность увязать друг с другом события, происходящие в доме, и настроить поведение устройств в зависимости от таких событий.
- MajorDoMo — динамично развивающаяся открытая платформа, имеющая большое сообщество русскоязычных пользователей. MajorDoMo поддерживает множество протоколов связи и большое количество оборудования от различных производителей. В целом концепция MajorDoMo не сильно отличается от концепции OpenHAB, но она реализована на совершенно другой программной архитектуре. Здесь используется Apache + PHP + MySQL, что также позволяет развертывать MajorDoMo на множестве разных платформ (Windows, Linux, Raspberry Pi). Поддерживается голосовое управление, есть возможность интеграции с Apple HomeKit. В целом развитие MajorDoMo подпитывается теми же идеями, которые реализуются в системе OpenHAB. Вместе с тем, MajorDoMo больше ориентируется на русскоязычное сообщество, а в плане архитектуры обладает несколько большей гибкостью, но и требует более специфического программирования при построении системы умного дома. MajorDoMo может брать на себя любые фунции по управлению устройствами, реагировать на события, рассылать уведомления. Сервер с системой MajorDoMo по сути берет на себя роль главного процессора в системах с централизованной архитектурой.
- ioBroker — один из «новичков», который быстро завоевывает авторитет и популярность, благодаря своей продуманной и универсальной архитектуре. ioBroker разработан на платформе Node.js (также как и HomeBridge). Благодаря этому, его можно развернуть и запустить практически на любой операционной системе или виртуальной машине: Windows, Mac, Linux, в контейнере Docker и даже на Android. Это позволяет масштабировать систему исходя из потребностей. Система имеет визуальный редактор планов помещений. Легко интегрируется с любыми MQTT-серверами (или брокерами), а также сама выступает в качестве MQTT-сервера/брокера для IoT-устройств, поддерживающих протокол MQTT. Большой упор сделан на возможности удобной настройки и конфигурации, что по сути составляет не менее половины функциональности всей системы, в отличие от OpenHAB или, например, FHEM, где настройки задаются посредством конфигурационных файлов. Имеется русскоязычное сообщество.
IoT Manager — это программное обеспечение для домашней автоматизации, которое не является полноценной системой управления умным домом, но может использоваться как средство мониторинга и передачи простых команд посредством протокола MQTT. Продукт сфокусирован на визуализации управления, отображении графиков и пр. на мобильных устройствах. Сами мобильные приложения не имеют собственной логики, которая должна быть реализована исключительно в оконечных устройствах. Приложение обращается непосредственно к устройствам с использованием шины MQTT и через нее же получает ответы, которые тут же визуализирует в графическом виде. IoT Manager представляет из себя гибридное (не нативное) приложение, созданное с помощью Ionic Framework, на HTML5 и AngularJS, обмен с брокером реализован на Paho, который обеспечивает полное соответствие стандарту MQTT.
Данный список является далеко не полным. Энтузиастами по всему миру также разработаны такие системы как: Calaos, DomotiGa, Freedomotic, Jeedom, MyController.org, PiDome, Pimatic и другие.
Важно понимать, что все перечисленные выше системы представляют из себя только лишь программные оболочки и предназначены для того, чтобы управлять каким-то оконечным оборудованием, из которого и состоят подсистемы умного дома. Концепция DIY предполагает совместное использование самых разнообразных устройств, в качестве которых могут выступать и умные гаджеты от известных производителей, и noname-оборудование со всех концов света, и какие-то подсистемы и исполнительные механизмы, полностью собранные пользователем самостоятельно из отдельных блоков и компонентов. Такая программная оболочка должна быть установлена на каком-то компьютере, в качестве которого может выступать обычный ПК или небольшой сервер. Очень часто в качестве упомянутого «сервера» принято использовать недорогие микрокомпьютеры типа Raspberry Pi или подобные.
Данный микрокомпьютер с установленной на нем программной составляющей становится по сути центральным процессором умного дома и берет на себя задачи по управлению логикой работы и взаимодействию различных подсистем умного дома. Для непосредственного взаимодействия с самими этими подсистемами управляющий микрокомпьютер должен быть оснащен соответствующими интерфейсами (Z-Wave, ZigBee, USB, Ethernet, Modbus, 1-Wire и т.п.).
Программное обеспечение для умного дома
Всем добрый день. В качестве хобби написал программу, которую можно использовать как часть системы “умный дом”. Чтобы сразу заинтересовать читателя, продемонстрирую некоторую малую часть сценариев использования ПО:
![]() | Включение и выключение ZWave лампочки через мобильное приложение |
![]() | При появлении устройства в сети (по приходу пользователя домой) происходит включение ZWave лампочки, релейного модуля Modbus RTU, запуск компьютера через WakeOnLan и включение ТВ |
![]() | Запуск браузера, переход на яндекс.радио, перелистывание треков (эмуляция горячих клавиш) |
Вкратце:
1. Основная часть ПО — сервер, который крутится на ОС Windows, написан на C#;
2. Клиент на ОС Android, написан на Java;
3. Планируются клиенты на UWP и IOS, web-клиент.
Некоторые особенности ПО:
1. Конструктор сценариев. Создание сложных сценариев с циклами и условиями;
2. Работа с устройствами ZWave и Modbus;
3. Вложенность сценариев. Можно один сценарий использовать в другом в качестве процедуры;
4. Запуск удаленного сценария. В сценарии текущего сервера можно запускать сценарий удаленного;
5. Возможность добавлять в систему свою функциональность посредством создания модулей;
6. Запуск сценариев с помощью смартфона.
Конструктор сценариев
Программа позволяет создавать как сложный сценарий, так и одиночное действие.
Одиночное действие — это сценарий, который содержит только одно действие. В нем нет возможности создавать циклы и условия, а можно лишь “замапить” определенное действие на кнопку в UI клиента.
В качестве примера приведу свой способ их использования: создал категорию “Розетки”, в ней собрал все лампы, бытовой вентилятор, светильники, телевизор и компьютер. Теперь, чтобы включить одно из этих устройств, следует открыть клиент на андроиде, зайти в категорию “Розетки” и выбрать соответствующий пункт меню.
Обычно, одиночные действия использовать неудобно, так как различные устройства удобно запускать при каком-то условии или хотя бы не по одному. Именно для этого нужен “сложный сценарий”, о чем далее.
Конструктор сложного сценария позволяет создавать сценарии с циклами и условиями. Имеет два режима: просмотр и редактирование.
Пример сценария в режиме просмотра | Пример сценария в режиме редактирования |
![]() | ![]() |
ЕСЛИ и ИНАЧЕ в конструкторе. В данных конструкциях можно создавать цепочки условий с логическими операторами НЕ, ИЛИ, И. Конструктор позволяет создавать группу условий и использовать операторы непосредственно с группой. Если условие остается пустым, то оно автоматом вычисляется как ложь.
Есть некоторое количество встроенных проверок (такие как проверка на дату, время и т.д.), а также некоторое количество в качестве подключаемых модулей.
Цикл ПОКА в конструкторе. Цикл состоит из условия и тела. Условие создается аналогично тому, как он создается в конструкции ЕСЛИ (группы условий, операторы НЕ, ИЛИ, И).
Оператор ЕСЛИ и возможные условия | Оператор ПОКА |
![]() | ![]() |
![]() | Тела ЕСЛИ, ИНАЧЕ и ПОКА нужно чем-то заполнять. Собственно, это содержимое и есть самое важное в сценарии. |
Основное окно конструктора сценариев |
![]() |
Также можно настроить следующие параметры сценариев:
— Запуск извне (вкл/выкл), позволяет запретить или разрешить запуск сценария с другой машины или из клиента;
— Автоматический запуск сценария при старте системы;
— Выбор категории сценария, позволяет отображать в UI клиента пункт меню для запуска сценария в определенной категории.
Работа с устройствами ZWave и Modbus
На данный момент система поддерживает устройства ZWave (на основе openzwave) и Modbus RTU (на основе nmodbus).
ZWave — это беспроводной протокол связи, использующийся в домашней автоматизации. Для реализации протокола используются миниатюрные маломощные радиочастотные модули. Сейчас на рынке ZWave представлен довольно обширный перечень устройств, таких как ZWave лампочки, розетки, релейные модули, переключатели, замки, датчики температуры (влажности, движения, протечки), терморегуляторы, устройства управления кондиционером и т.д. Также распространены мультисенсоры — устройства, сочетающие несколько датчиков (например, датчик освещенности, присутствия, температуры, дверной датчик и т.д.), что весьма привлекательно с точки зрения финансовых затрат и расположения в помещении.