title: Home Assistant
description: Control your smart home with Hermes Agent via Home Assistant integration.
sidebar_label: Home Assistant
sidebar_position: 5
lang: ru
Интеграция домашнего помощника
Hermes Agent интегрируется с Home Assistant двумя способами:
Платформа шлюза — подписывается на изменения состояния в реальном времени через WebSocket и реагирует на события.
Инструменты «умного дома» — четыре вызываемых из LLM инструмента для запроса и управления устройствами через REST API.
Настройка
1. Создайте долгосрочный токен доступа
Откройте экземпляр Home Assistant.
Перейдите в свой Профиль (нажмите свое имя на боковой панели).
Прокрутите до пункта Долгосрочные токены доступа.
Нажмите Создать токен, присвойте ему имя, например «Агент Гермеса».
Скопируйте токен
2. Настройка переменных среды
# Add to ~/.hermes/.env# Required: your Long-Lived Access TokenHASS_TOKEN=your-long-lived-access-token
# Optional: HA URL (default: http://homeassistant.local:8123)HASS_URL=http://192.168.1.100:8123
:::информация
Набор инструментов homeassistant включается автоматически, когда установлен HASS_TOKEN. И платформа шлюза, и инструменты управления устройствами активируются с помощью этого одного токена.
3. Запустите шлюз
hermesgateway
Home Assistant появится как подключенная платформа наряду с любыми другими платформами обмена сообщениями (Telegram, Discord и т. д.).
Доступные инструменты
Агент Hermes регистрирует четыре инструмента для управления умным домом:
ha_list_entities
Перечислите объекты Home Assistant, при необходимости отфильтрованные по домену или региону.
Параметры:
- domain(необязательно) — фильтрация по домену объекта: light, switch, climate, sensor, binary_sensor, cover, fan, media_player и т. д.
- area(необязательно) — фильтрация по названию области/комнаты (совпадает с понятными именами): living room, kitchen, bedroom и т. д.
Пример:
List all lights in the living room
Возвращает идентификаторы объектов, состояния и понятные имена.
ha_get_state
Получите подробное состояние одного объекта, включая все атрибуты (яркость, цвет, заданное значение температуры, показания датчиков и т. д.).
Параметры:
- entity_id(обязательно) — объект для запроса, например, light.living_room, climate.thermostat, sensor.temperature
Пример:
What's the current state of climate.thermostat?
Возвращает: состояние, все атрибуты, временные метки последнего изменения/обновления.
ha_list_services
Список доступных сервисов (действий) для управления устройством. Показывает, какие действия можно выполнять над каждым типом устройств и какие параметры они принимают.
Параметры:
- domain(необязательно) — фильтровать по домену, например, light, climate, switch
Пример:
Whatservicesareavailableforclimatedevices?
ha_call_service
Вызовите службу Home Assistant, чтобы управлять устройством.
Параметры:
- domain(обязательно) — Домен службы: light, switch, climate, cover, media_player, fan, scene, script
- service(обязательно) — Имя службы: turn_on, turn_off, toggle, set_temperature, set_hvac_mode, open_cover, close_cover, set_volume_level
- entity_id(необязательно) — целевой объект, например, light.living_room
- data(необязательно) — Дополнительные параметры в виде объекта JSON.
Примеры:
Turn on the living room lights
→ ha_call_service(domain="light", service="turn_on", entity_id="light.living_room")
Set the thermostat to 22 degrees in heat mode
→ ha_call_service(domain="climate", service="set_temperature",
entity_id="climate.thermostat", data={"temperature": 22, "hvac_mode": "heat"})
Set living room lights to blue at 50% brightness
→ ha_call_service(domain="light", service="turn_on",
entity_id="light.living_room", data={"brightness": 128, "color_name": "blue"})
Платформа шлюза: события в реальном времени
Адаптер шлюза Home Assistant подключается через WebSocket и подписывается на события state_changed. Когда состояние устройства изменяется и соответствует вашим фильтрам, оно пересылается агенту в виде сообщения.
Фильтрация событий
:::предупреждение Необходимая конфигурация
По умолчанию события не пересылаются. Для получения событий необходимо настроить хотя бы один из watch_domains, watch_entities или watch_all. Без фильтров при запуске регистрируется предупреждение, и все изменения состояния автоматически удаляются.
Настройте, какие события агент будет видеть в ~/.hermes/config.yaml в разделе extra платформы Home Assistant:
Просматривайте только эти домены объектов (например, climate, light, binary_sensor)
watch_entities
(нет)
Смотрите только эти конкретные идентификаторы объектов
watch_all
false
Установите true, чтобы получать все изменения состояния (не рекомендуется для большинства настроек)
ignore_entities
(нет)
Всегда игнорировать эти объекты (применяются перед фильтрами домена/сущности)
cooldown_seconds
30
Минимальное количество секунд между событиями для одного и того же объекта
:::совет
Начните с целевого набора доменов — climate, binary_sensor и alarm_control_panel, охватывающих наиболее полезные средства автоматизации. Добавьте больше по мере необходимости. Используйте ignore_entities для подавления шумов датчиков, таких как температура процессора или счетчики времени безотказной работы.
Форматирование событий
Изменения состояния форматируются как удобочитаемые сообщения на основе домена:
Домен
Формат
climate
«Режим HVAC изменен с «выключено» на «нагрев» (текущий: 21, целевой: 23)»
sensor
«изменилась с 21°C на 22°C»
binary_sensor
«сработало» / «очистилось»
light, switch, fan
"включил"/"выключил"
alarm_control_panel
«Состояние тревоги изменено с «armed_away» на «сработало»»
(другое)
«изменился со старого на новый»
Ответы агента
Исходящие сообщения от агента доставляются в виде постоянных уведомлений Home Assistant (через persistent_notification.create). Они появляются на панели уведомлений HA под заголовком «Агент Гермеса».
Управление соединениями
WebSocket с 30-секундным контрольным сигналом для событий в реальном времени.
Автоматическое переподключение с отсрочкой: 5 с → 10 с → 30 с → 60 с.
REST API для исходящих уведомлений (отдельный сеанс во избежание конфликтов WebSocket).
Авторизация — события HA всегда авторизуются (список разрешенных пользователей не требуется, поскольку HASS_TOKEN аутентифицирует соединение)
Безопасность
Инструменты Home Assistant обеспечивают соблюдение ограничений безопасности:
:::предупреждение о заблокированных доменах
Следующие домены служб заблокированы, чтобы предотвратить выполнение произвольного кода на узле высокой доступности:
shell_command — произвольные команды оболочки
command_line — датчики/переключатели, выполняющие команды
python_script — выполнение скрипта Python
pyscript — более широкая интеграция сценариев.
hassio — управление модулями, выключение/перезагрузка хоста
rest_command — HTTP-запросы от HA-сервера (вектор SSRF)
Попытка вызвать службы в этих доменах возвращает ошибку.
Идентификаторы объектов проверяются по шаблону ^[a-z_][a-z0-9_]*\.[a-z0-9_]+$ для предотвращения атак путем внедрения.
User:Isthehousesecure?Agent:1.ha_list_entities(domain="binary_sensor")→checksdoor/windowsensors2.ha_get_state(entity_id="alarm_control_panel.home")→checksalarmstatus3.ha_list_entities(domain="lock")→checkslockstates4.Reports:"All doors closed, alarm is armed_away, all locks engaged."
Реактивная автоматизация (через события шлюза)
При подключении в качестве шлюзовой платформы агент может реагировать на события:
[HomeAssistant]FrontDoor:triggered(wascleared)Agentautomatically:1.ha_get_state(entity_id="binary_sensor.front_door")2.ha_call_service(domain="light",service="turn_on",entity_id="light.hallway")3.Sendsnotification:"Front door opened. Hallway lights turned on."