Если еще несколько лет назад фраза «умный дом» звучала как что-то фантастическое, дорогое и недоступное, то сегодня все больше людей оснащают свои жилища смарт-устройствами и комплексами. Существуют различные подходы к организации интеллектуального домашнего хозяйства, отличающиеся протоколами, программными оболочками и нюансами настройки. Обычно сборка и конфигурирование такой системы требует определенных специальных познаний в IT, но некоторые разработчики предлагают готовые решения для построения «умного дома». Одно из таких решений — open-source проект MajorDoMo.
Majordomo — свободно распространяемая кроссплатформенная программа, предоставляющая все необходимы инструменты для организации смарт-жилища:
«Мажордомо» умеет взаимодействовать с умными выключателями, розетками, датчиками и реле. Все элементы настройки и управления сведены в едином простом веб-интерфейсе, устанавливающемся на центральный хаб системы.
Таким образом, MajorDoMo — сервер «умного дома» обеспечивающий согласованную работу прочих его компонентов. Он может быть установлен как на обычный ПК, так и ноутбук или поддерживаемый микрокомпьютер (например, Raspberry Pi, Arduino и прочие). Программа получает данные от сопряженных с ней датчиков и отдает заданные владельцем команды, исполняемые конечными устройствами и контроллерами.
Для понимания работы программы необходимо выяснить ее логическое устройство.
С точки зрения MajorDoMo умный дом состоит из логических элементов. Платформа оперирует четырьмя основными понятиями — объекты, классы, свойства и методы.
В терминологии ПО объект представляет собой физический контроллер с обратной связью, обеспечивающий взаимодействие между сервером и управляемым контроллером датчиком. Таким устройством может являться и самостоятельно собранный прибор, и заводской. Умный дом «Мажордомо» поддерживает множество основных протоколов smart home:
Следующая сущность в экосистеме рассматриваемого ПО — класс. В нем объединены однотипные объекты. Например, это может быть класс устройств «выключатели» с двумя состояниями (вкл/выкл) и методами «включить» и «выключить». Или «датчики движения», чье состояние изменяется по детекции перемещения в зоне действия.
Система позволяет создавать и подклассы оборудования: например, в классе выключателей добавляются меняющие яркость или цвет освещения контроллеры.
Каждый элемент «умного дома» обладает собственным состоянием, которое он возвращает контроллеру и в MajorDoMo. Это состояние и называется свойством объекта. Его можно не только получать, но и отправлять на устройство, которое обработает команду и вернет некий заданный результат (например, пользователь задаст кондиционеру уровень поддерживаемой температуры, а прибор перейдет в соответствующий режим работы).
В логике «Мажордомо» метод — некоторое управляющее действие, команда, принятая и обработанная устройством/датчиком.
Платформа MajorDoMo — полноценное и весьма мощное решение для хаба «умного дома». Мощь заключена в модульности системы: все используемые объекты заводятся в виде плагинов. Пользователю не придется разбираться в коде, тонкостях протоколов взаимодействия и сопряжения контроллеров и датчиков, если для них написан модуль, все будет работать, конфигурироваться, мониториться и управляться из единого интерфейса. Сложность возникнет лишь в случае, если готового решения нет: тогда понадобится или учиться языку PHP, или привлекать специалистов.
Сами по себе модули содержат обширные настройки: в соответствующем разделе интерфейса можно, например, указать цвет пользователя, разрешенные ему компьютеры для входа, и так далее.
Электронный «мажордом» способен управлять многочисленными умными устройствами:
Умеет он взаимодействовать и с интернет-сервисами (например, для поиска новостей). Кроме того, через глобальную сеть обеспечивается удаленный доступ и своевременное обновление.
Интересна добавленная разработчиками функция интеграции с помощником «Алиса» от Яндекса. С ее помощью можно осуществлять голосовое управление компонентами смарт-дома и выполнять другие действия.
Для продвинутых пользователей существует возможность дописывать модули и сценарии на языке программирования PHP. В системе также присутствует встроенный визуальный конструктор Blockly, обеспечивающий простое создание алгоритмов:
Комплекс наверняка станет интересен начинающим и продвинутым программистам. Разработка ПО под MajorDoMo не отличается высоким порогом входа, необходимо лишь обладать пониманием языка PHP и некоторых смежных дисциплин (таких, как JS, CSS). С них и следует начинать осваивающим разработку под эту платформу джуниор-кодерам.
Прежде, чем начать развертывание, следует подобрать оборудование для системы. Под «Мажордомо» допустимо использовать практически любой не очень старый компьютер или ноутбук. Но, как правило, при реализации смарт-дома используют одноплатные миникомпьютеры: они бесшумны, надежны, дешевы и достаточно производительны.
Рекомендуем к прочтению: как выполнить монтаж умного дома быстро и правильно.
Для этой задачи хорошо подходят платы Raspberry Pi 2/3, на примере которых мы далее рассмотрим основные моменты установки и конфигурирования.
Версии ПО существуют и под Windows, и для Linux. Неискушенному пользователю стоит выбрать Windows-вариант, поскольку он проще в настройке и конфигурации. В рамках данной статьи мы приведем базовые шаги в случае с Linux и RPI.
Win-версия устанавливается как обычное приложение. Для RPI разработчики создали и поддерживают специально собранный образ, доступный на странице https://mjdm.ru/skachat-majordomo/:
Существует возможность развертывания и с нуля на «чистый» Raspbian (или другую версию Linux). Для этого необходимо присутствие в ОС:
Установка MajorDoMo и его тонкая настройка подробно описаны в официальной документации к Windows- и Linux-вариантам. Энтузиасты также создали скрипт автоматизации, который развертывает весь программный комплекс самостоятельно. Получить его и запустить инсталляцию можно следующими командами:
wget https://raw.githubusercontent.com/immortalserg/installmd/master/installmd
chmod +x installmd
./installmd -t
Результаты появятся в командной строке. Красный цвет выводимого текста отмечает критические предупреждения.
Скрипт запросит пароль пользователя root создаваемой БД MySQL и учетной записи Pi. Данные аккаунта Pi вводить необходимо в любом случае, даже если такого пользователя в системе нет.
Иных действий не понадобится. После завершения работы скрипта будет выдано сообщение «Готово».
На этом этапе следует перезагрузить компьютер, после чего интерфейс умного дома MajorDoMo станет доступен для настройки через браузер по IP-адресу или имени узла md.lan. Имеется также доступ по протоколу SSH и проброс vlc over http.
Пример главной страницы:
Дополнительно потребуется установить PhpMyAdmin:
./installmd -p
А также Java и сервер Blynk (нужен для разработки и функционирования приложений на iOS/Android).
./installmd -j
./installmd -b
Для добавления расширенной конфигурации выполняется команда:
./installmd -c.
Она дополняет базовую поставку некоторыми скриптами, сценами и элементами, а также оптимизирует работу с базой.
После этого можно приступать к тонкой настройке и сопряжению с периферией.
MajorDoMo — интересный, активно развивающийся, мощный и многофункциональный сервер «умного дома» с поддержкой большинства основных протоколов и технологий. Его ключевые преимущества:
Из минусов можно отметить относительно высокий порог входа, поскольку ряд задач способен потребовать от пользователя некоторых специальных знаний. Но разработчики стараются устранять эти недочеты, упрощая процесс конфигурирования и установки скриптами автоматизации и разнообразными модулями.