Remote Home Assistant: как объединить несколько серверов Home Assistant

Remote Home Assistant — интеграция для объединения нескольких серверов Home Assistant. В статье описаны установка, настройка и синхронизация устройств между системами.

В Telegram-канале @iot7m_ru публикуются практические заметки по Home Assistant: опыт эксплуатации устройств, интеграция с различным оборудованием, создание дашбордов и разбор типовых проблем. Многие материалы основаны на реальных запросах и консультациях. Подпишитесь на @iot7m_ru, если используете Home Assistant на практике.

Remote Home Assistant: как объединить несколько серверов Home Assistant

Введение

В большинстве инсталляций умного дома используется один сервер Home Assistant. Он управляет устройствами, выполняет автоматизации и предоставляет интерфейс для пользователей.

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

Чтобы объединить такие системы, можно использовать интеграцию Remote Home Assistant. Она позволяет подключить один сервер Home Assistant к другому и синхронизировать между ними сущности.

Архитектурные варианты работы с несколькими экземплярами Home Assistant разобраны в статье: Home Assistant: как объединить два сервера.

Важно понимать, что Remote Home Assistant не предназначен для организации удалённого доступа через интернет. Для этого обычно используют проброс портов, динамический DNS, VPN или сторонние сервисы. Подробнее об этом — в статье Удалённый доступ к Home Assistant: обзор способов.

Как работает интеграция

При использовании Remote Home Assistant обычно выделяют два типа серверов:

  • Основной сервер — это центральный экземпляр Home Assistant, через который пользователь управляет системой, просматривает дашборды и запускает автоматизации.
  • Удалённый сервер — это дополнительный экземпляр Home Assistant, который управляет устройствами на другой площадке или выполняет отдельные задачи.

Интеграция подключает удалённый сервер к основному через API. После подключения основной сервер получает доступ к состояниям сущностей удалённой системы и отображает их как обычные сущности. Когда пользователь управляет устройством из интерфейса Home Assistant, команда отправляется на удалённый сервер, где физически находится устройство.

Таким образом несколько серверов Home Assistant можно использовать как единую систему управления.

Установка через HACS

Интеграцию Remote Home Assistant необходимо установить на обоих серверах: на основном и на удалённом.

Самый простой способ установить интеграцию — использовать HACS (Home Assistant Community Store), менеджер установки кастомных интеграций и компонентов для Home Assistant.

Чтобы установить интеграцию:

  1. Откройте HACS → Интеграции.
  2. Найдите интеграцию Remote Home Assistant.
  3. Нажмите Скачать.
  4. Перезапустите Home Assistant.

После перезапуска интеграция появится в списке доступных интеграций. Далее нужно открыть Настройки → Устройства и службы → Добавить интеграцию, выбрать Remote Home Assistant и начать установку и последующую настройку.

Настройка интеграции

Настройка интеграции может выполняться как через графический интерфейс Home Assistant (GUI), так и через файл конфигурации configuration.yaml. В этой статье рассматривается настройка через интерфейс Home Assistant. Для конфигурации через YAML следует обратиться к README‑файлу проекта на GitHub.

Настройка удалённого узла

На сервере, который будет выступать удалённым узлом, нужно добавить интеграцию Remote Home Assistant и в процессе настройки выбрать вариант Setup as remote node. После этого сервер будет работать как источник данных, к которому смогут подключаться другие экземпляры Home Assistant.

Получение токена доступа

Для подключения основного сервера потребуется токен доступа(access token), который создаётся на удалённом сервере.

Чтобы создать токен:

  1. Откройте профиль пользователя в Home Assistant.
  2. Перейдите в раздел Безопасность.
  3. В блоке Долгосрочные токены доступа (Long-Lived Access Tokens) нажмите Создать токен.
  4. Скопируйте созданный токен.

Настройка основного сервера

На основном сервере нужно добавить интеграцию Remote Home Assistant и выбрать вариант Add a remote node, после чего откроется окно настройки подключения, где необходимо указать параметры удалённого сервера:

  • host — адрес удалённого Home Assistant,
  • port — порт сервера (обычно 8123),
  • access token — токен, созданный на удалённом сервере.

После ввода параметров мастер настройки продолжается следующими шагами. В них можно задать дополнительные параметры интеграции: префиксы сущностей (entity prefix), префиксы отображаемых имён (friendly name prefix), фильтрацию доменов и сущностей, а также события для подписки.

Если ничего не менять и просто завершить мастер, будут передаваться все доступные сущности удалённого сервера. При необходимости можно использовать фильтры и выбрать только нужные домены или конкретные entities.

При использовании префиксов стоит учитывать, что после префикса желательно добавлять разделитель. Для entity name обычно используют символ _, например dacha_, а для friendly name — пробел, например Дача . Это позволяет избежать ситуации, когда префикс и имя устройства «слипаются» в одно слово.

Сценарии использования

После синхронизации сущностей удалённые устройства можно использовать так же, как и локальные. Интеграция поддерживает большинство стандартных типов сущностей Home Assistant — sensors, binary sensors, switches, lights, climate, covers, cameras и media players, поэтому такие устройства можно отображать на дашбордах, использовать в автоматизациях и управлять ими через интерфейс Home Assistant.

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

automation:
  - alias: "Отопление на даче"
    trigger:
      - platform: state
        entity_id: sensor.remote_outdoor_temperature
    action:
      - service: climate.set_temperature
        target:
          entity_id: climate.remote_heater
        data:
          temperature: 18

Таким образом можно создавать сценарии, в которых устройства разных объектов работают как единая система.

Если в системе используется голосовой помощник (например Яндекс Алиса), для более простой настройки рекомендуется публиковать устройства только с основного сервера Home Assistant. В этом случае он выступает единой точкой интеграции с голосовым помощником и позволяет избежать дублирования устройств.

Подробнее о вариантах настройки и ограничениях — в статье Yandex Smart Home в Home Assistant: как работает управление Алисой в разделе «Поддержка нескольких экземпляров Home Assistant».

Возможные проблемы при настройке

Если при добавлении появляется ошибка «You need to install Remote Home Assistant on this host and add remote_homeassistant: to its configuration», это означает, что интеграция ещё не настроена на удалённом сервере. В этом случае сначала нужно установить Remote Home Assistant на удалённом сервере и настроить его как remote node, и только после этого подключать основной сервер.

Выводы

Remote Home Assistant позволяет объединить несколько серверов Home Assistant и управлять устройствами разных объектов из одного интерфейса. Такой подход особенно удобен, когда умный дом развёрнут на нескольких площадках или часть инфраструктуры вынесена на отдельный сервер.

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

Полезные ссылки