Умный дом на Home Assistant
При создании собственного «умного дома», прежде всего, приходится делать выбор платформы. Он далеко не прост и должен включать ответы на вопросы о поддержке различных стандартов обмена данными, наличии на рынке и возможности интеграции устройств (от простейших датчиков и исполнительных механизмов до самодостаточных девайсов вроде «умных» холодильников и пылесосов), удобства управления системой, стоимости решения и т.д.
Сегодня разработкой таких платформ занимаются сотни компаний, именитые производители, такие как Apple, Samsung, Ikea, Xiaomi создают собственные экосистемы, есть несколько очень интересных универсальных решений с закрытым и открытым кодом.
Отличное решение из числа последних – умный дом на Home Assistant. Платформа получила огромную популярность как у специалистов, так и у доморощенных мастеров, быстро развивается и способна удовлетворить все запросы домашней автоматизации.
Содержание
Что такое Home Assistant
Home Assistant (HA) – программная платформа для домашней автоматизации, обеспечивающая решение всех сопутствующих вопросов – от добавления устройств, до создания сценариев любой сложности и использования голосовых помощников. Ее отличают:
- открытый исходный код;
- поддержка всех стандартов (Wi-Fi, BlueTooth, Z-Wave, ZigBee и др.).
- решения практически для всех компонентов Home Automation различных производителей.
- Простота освоения и использования.
- Огромное сообщество, всегда готовое помочь и советами, и готовым программным кодом.
Основной язык разработки – Python, но для большинства задач пользователю не придется собственноручно написать ни одной строки кода.
Создание и функционирование «умного дома» на HA включает несколько шагов. Буквально каждый из них подчеркивает основные возможности и преимущества платформы.
Установка
Платформа поддерживает несколько вариантов установки:
- HA Operating System. Устанавливает Home Assistant как ОС для работы в задачах домашней автоматизации. Включает ядро, функционал Supervisor для управления последним, набор предустановленных плагинов для интеграции устройств и обращения к сервисам. На официальном сайте указан как рекомендуемый метод, который подходит как для старта работы, так и для решения задач home automation. Главным плюсом является простота развертывания системы.
- HA Core. Ручная установка ядра с использованием виртуального окружения Python (подходит для опытных пользователей). Полный доступо к платформе, требует минимальных знаний об ОС и умения работать с окружением Python и командной строкой.
- HA Supervised. Установка ядра платформы с функционалом Supervisor в ручном режиме (подходит для опытных пользователей). В результате такой вариант предоставляет самый полный контроль над системой, но в этом случае работает только с клонами Linux, кроме того, требуется от пользователя быть с данной операционной системой на «ты».
- HA Container. Установка ядра Home Assistant с использованием механизма контейнеров (например, Docker). Преимущество данного варианта установки – это надежность, быстрое развертывание, перенос на другие устройства без значительных проблем. Из минусов следует отметить, что есть необходимость уметь использовать Docker, что доступно далеко не каждому рядовому пользователю.
Установку можно произвести на микрокомпьютеры:
- Odroid;
- Raspberry Pi;
- Asus Tinkerboard;
- Intel NUC и др.
Возможно развертывание системы на компьютерах и серверах под управлением
- Windows;
- Клонов Linux;
- MacOS.
При этом установка HA Operating System производится на выделенные виртуальные машины (необходима установка соответствующего софта)
Установку ядра производят в Docker (на Linux) или виртуальном окружении Python (для всех поддерживаемых платформ, требуется установка Python 3/8 для последних версий HA).
Конфигурирование системы
Конфигурация сохраняется в YAML- файлах (при развертывании под Linux – в папке ~/.homeassistant, основной – configuration.yaml). Файлы без проблем редактируются в текстовом редакторе, все изменения применяются после перезагрузки настроек в веб-интерфейсе на вкладке Configuration – General.
Работа с удобным веб-интерфейсом
Во время первого запуска платформы система создаст конфигурационные файлы, произведет подгрузку предусмотренных вариантом установки дополнительных модулей, развернет локальный веб-сервис, доступный по адресу http://localhost:8123.
В браузере при переходе пользователю станет доступен веб-интерфейс. Предварительно придется:
- Создать учетную запись пользователя для локального сервера. Указываются имя пользователя, логин, пароль и его дубль для подтверждения.
- Указать имя экземпляра умного дома, для которого разворачивается платформа, и его расположение (определяется автоматически при разрешении доступа к сервису геолокации, может быть выбрано на карте самостоятельно).
- Дать разрешение на поиск интеграций, а также добавить нужные из предложенного платформой списка. На этом шаге будут автоматически дополнены файлы конфигураций. Если его пропустить, все те же действия можно выполнить в ходе работы с платформой по созданию и настройке конкретного экземпляра УД.
Для задания полной базовой информации вносятся (кроме имени экземпляра и географического положения) переменные:
- elevation –высота над уровнем моря;
- unit-system – используемая система измерений (метрическая или imperial, использующая футы, фунты, галлоны и т.д.);
- temperature_unit – шкала температур по Цельсию или Фаренгейту;
- time-zone – часовой пояс;
- internal_url и external_url – адреса для доступа к веб-сервису из внутренней и внешней сетей;
- разрешения на использование внешних URL и директорий, папки для размещения медиа файлов и т.д.
Основными средствами при работе с системой через веб-интерфейс являются:
- Панель инструментов УД LovelaceUI. Именно на ней отображаются устройства в сети, их состояние, действия и пр.
- Пользовательское меню. Включает все возможности контроля экземпляра УД, создания и изменения его конфигурации.
Фактически LovelaceUI является полностью настраиваемым инструментом для отслеживания (при необходимости) состояния системы в реальном времени. Базой для представления являются:
- Карточки. На них отображаются датчики, кнопки, информеры в виде списка (Entities) или набора подписанных иконок (Glance). Выбрать вариант отображения пользователь может по собственному усмотрению.
- Бейджи. Компактное представление компонентов. Не всегда удобно, поскольку в автоматическом режиме размещается системой хаотично и оказывается малоинформативным. На усмотрение пользователя могут быть полностью удалены или перегруппированы для быстрого доступа к информации.
Пользовательское меню открывает доступ к:
- Обзору системы (странице LovelaceUI).
- Карте, при необходимости изменения местоположения, задания дополнительных локаций и зон.
- Журналу событий, в котором ведется лог системы.
- Истории. По умолчанию записывает все используемые экземпляром УД события – изменение состояний сенсоров, срабатывание триггеров, действия, и множество дополнительных, например, изменение положения солнца. Владелец может настроить запись, чтоб уменьшить число операций и объемы информации (полезно при работе с микрокомпьютерами, чтобы продлить срок службы SD-карты).
- Инструментам разработчика и редактору конфигураций. Именно эти пункты меню содержат все необходимое для настройки экземпляра УД.
Использование интеграций, добавление компонентов, создание автоматизаций
Одним из главных преимуществ HA над основными конкурентами является огромное количество интеграций. На странице официального сайта (https://www.home-assistant.io/integrations/) сегодня предлагается 1765 проверенных и одобренных сообществом интеграций.
Они включают компоненты практически всех производителей, выпускающих устройства для УД. Здесь можно найти не только датчики и исполнительные механизмы, но шлюзы для подключения, в том числе для девайсов других экосистем – Apple, Samsung, Ikea, Xiaomi. В список включены не только физические устройства, но и многие онлайн-сервисы. Так, можно найти плагины для использования VLC-плеера, сервиса Yandex.Transport, мониторинга распространения эпидемии коронавируса (COVID Monitor), подключения голосовых помощников Amazon и Google и т.д.
Впрочем, даже если ее найти не удалось, вполне рабочий подход – найти похожее устройство в библиотеке исходников на GitHub и внести в код нужные коррекции.
Добавление компонентов
С таким набором интеграций добавление устройств становится максимально простым – достаточно найти нужный компонент в интеграциях и следовать инструкциям по установке.
После установки в файл конфигураций будут внесены данные о новом модуле, а сам он станет доступен в веб-интерфейсе.
Для доступа к модулю используются наборы:
- Объектов (entities), хранящих данные – состояние (state, основное значение) и дополнительные атрибуты (attributes). Набор последних практически не ограничен и может включать любые характеристики.
- Сервисов (services) – фактически, функций объекта, таких как включение, выключение, переключение и пр.
Доступ к конфигурациям пользователь получает из пункта «Инструменты разработчика» (Developer Tools).
Автоматизации
Не менее просто описываются автоматизации – действия, выполняемые компонентами системы при заданных условиях.
Каждая автоматизация включает в себя цепочки из трех основных компонентов:
- Триггеров – основных условий, при которых выполняется (triggers).
- Дополнительных условий (conditions).
- Действий (actions).
Например, автоматизацию можно описать выражением «Включить систему отопления, если температура в помещении снизилась до 16 градусов и в нем есть люди». Здесь:
- Триггер – снижение температуры ниже заданного порога (фактически – показания датчика температуры, получение от модуля значений state и нужного атрибута).
- Условие – в помещении есть люди (получение статусов или атрибутов от других датчиков, компонентов системы или сервисов).
- Действие – подача команды на исполнительное устройство для включения системы отопления (вызов соответствующего сервиса для компонента).
Пользователь выбирает сенсоры и объекты (entities) для триггеров и условий, вызываемые сервисы непосредственно в графическом интерфейсе. Таким образом, большинство автоматизаций могут быть заданы без написания кода.
Механизм триггеров и условий позволяет охватить все возможные ситуации, использовать:
- события, генерируемые компонентами;
- состояние системы или его изменение;
- сообщения MQTT;
- временные метки и интервалы и пр.
- информацию от внешних сервисов (положение солнца, температура наружного воздуха, системы геолокации и позиционирования и т.д.).
- статусы и атрибуты (значения измерений) датчиков;
Есть возможность включения множественных триггеров и условий, создания скриптов и шаблонов.
Альтернативные платформы home automation
Тем, кто ищет альтернативу умному дому на Home Assistant следует обратить внимание на:
- «Коробочные» системы известных производителей:
- Сторонние системы с закрытым кодом и разработкой на заказ. Отличный вариант для получения готового решения высокого качества, например Savant или Control4. Проблема в масштабируемости – для добавления компонентов и функций снова приходится обращаться к разработчикам и высокой стоимости.
- Аналоги с открытым кодом, такие как OpenHAB и Majordomo. Первый обладает практически аналогичными возможностями и функциональностью, однако развивается медленнее и говорить о том же уровне интеграции не приходится. Второй пока еще не достиг необходимого для широкого внедрения уровня.
Судя по написанному, Home Assistant – неплохая программная платформа. Функциональность у нее хорошая.
Кто хорошо в этом разбирается, не составит труда ввести необходимые параметры. Но, скорее всего это не для рядовых обывателей.
Не поняла, для подключения и программирования нужен компьютер или ноутбук? А может с помощью смартфона можно.
Насколько мне известно, НА устанавливается на Линукс и Виндовс. Вроде бы есть подобные системы для Андроид. Но это Умный дом, что подразумевает, что система должна всегда находиться внутри дома.