Yandex.Station Intents: продвинутое управление Home Assistant через Яндекс Алису

Администратор 23.09.2026 52 просмотров 9 мин
Yandex.Station Intents: продвинутое управление Home Assistant через Яндекс Алису

Компонент Yandex.Station Intents для Home Assistant генерирует события или запускает действия на конкретные голосовые команды, адресованные Яндекс.Станции (или колонкам с Алисой). Когда вы говорите «Алиса, сделай действие», в Home Assistant появляется событие с текстом «сделай действие», именем колонки и комнаты. Такие события удобно использовать в автоматизациях, либо вместо автоматизации можно сразу выполнить нужное действие.

Компонент адресован продвинутым пользователям, которые не боятся поредактировать YAML, и является продолжателем функции «Получение команд от станции» из компонента Yandex.Station от AlexxIT.

Основные преимущества и отличия:

  • Автоматическое создание/удаление/синхронизация сценариев в УДЯ (без перезагрузки HA!)
  • Понятная и однозначная переменная text в событиях (вместо Сделай громче на 0???!!!)
  • Возможность удалить все сценарии из УДЯ одним вызовом действия yandex_station_intents.clear_scenarios

Компонент «Yandex.Station Intents» никак не связан с компонентом «Yandex.Station» и его авторами!

Похожие компоненты

  • Yandex.Station: управляет Яндекс.Станцией (воспроизведение, громкость, синтез текста), также позволяет получать команды от Яндекс.Станции (с ручным созданием сценариев и в чуть менее удобной форме).
  • YandexDialogs: обрабатывает любые фразы, адресованные Алисе, через NLU (Natural Language Processing). При использовании обязательно называть имя навыка, например «Алиса, попроси мой_навык сделать что нибудь».
  • Yandex Smart Home: позволяет управлять устройствами, подключёнными к Home Assistant, через Алису и веб-интерфейс. Используйте его для «Алиса, включи лампочку зелёным на 50% яркости» или «Алиса, прибавь громкость на телевизоре».

Установка

Способ 1: HACS

  • Установите компонент HACS > Перезагрузите Home Assistant > Добавьте интеграцию HACS
  • Откройте HACS через боковую панель
  • В поиске введите Yandex.Station Intents -> Скачать
  • Перезагрузите Home Assistant

Способ 2: вручную, не рекомендуется

  • Скачайте архив yandex_station_intents.zip из последнего релиза
  • Создайте подкаталог custom_components/yandex_station_intents в каталоге, где расположен файл configuration.yaml
  • Распакуйте содержимое архива в custom_components/yandex_station_intents
  • Перезагрузите Home Assistant

Настройка

  • Добавьте интеграцию в Home Assistant: Настройки > Устройства и службы > Интеграции > Нажать Добавить интеграцию > Yandex.Station Intents (если интеграции нет в списке — обновите страницу)
  • Настройте список фраз или мигрируйте с yaml интентов компонента Yandex.Station
  • Перезагрузите YAML конфигурацию через Инструменты разработчика > YAML, в Настройки > Система > Журнал сервера появятся ошибки, если что-то пошло не так

Список фраз (интенты)

Интеграция работает с заранее сформированным списком фраз, на основе которых будут автоматически созданы сценарии в УДЯ. Активационные фразы могут содержать только кириллицу, цифры и пробелы. Максимальное количество сценариев в УДЯ — 200.

Настройка выполняется через основной файл конфигурации configuration.yaml. Пример конфигурации:

В данном случае интеграция автоматически создаст в УДЯ девять сценариев, каждый из которых начинается с символов ---. Не удаляйте эти символы и не модифицируйте никак название! По ним компонент понимает, что это его сценарий, и в случае необходимости синхронизирует/удалит его.

Дополнительные параметры say_phrase, extra_phrases, execute_command, account, action являются необязательными и могут использоваться в любых вариациях.

Как работает:

  1. Срабатывает от Алиса, как дела, генерирует событие с text: Как дела, колонка ничего не скажет в ответ
  2. Срабатывает от Алиса, кто нибудь дома, генерирует событие с text: Кто нибудь дома, колонка, которая нас услышала, ответит Сейчас проверю
  3. Срабатывает от Алиса, время кушать (или Алиса, время ужина, или Алиса, давай ужинать и т.п.), генерирует событие с text: Время ужинать, колонка ничего не скажет в ответ
  4. Срабатывает от Алиса, не выключай свет в прихожей (или Алиса, не выключай свет в коридоре), генерирует событие с text: Не выключай свет в прихожей, колонка, которая нас услышала, ответит случайной фразой из списка
  5. Срабатывает от Алиса, давай попьем чаю, генерирует событие с text: Давай попьем чаю, колонка, которая нас услышала, ответит Отличная идея, сейчас включу свет на кухне, после этого колонка выполнит команду Включи свет на кухне
  6. Срабатывает от Алиса, очень холодно, генерирует событие с text: Очень холодно, колонка выполнит команду Прибавь температуру кондиционера на 1 градус в КОМНАТА (вместо КОМНАТА будет подставлена комната, в которой находится колонка)
  7. Срабатывает от Алиса, точная температура в комнате, генерирует событие с text: Точная температура в комнате, колонка, которая нас услышала, ответит вычисленным шаблоном из say_phrase
  8. Срабатывает от Алиса, давай поиграем. Сценарий будет создан и работать только на аккаунте vasya (можно указать несколько аккаунтов через запятую). Аккаунт указывается в том же виде, как отображается в списке интеграций Yandex.Station Intents. Если аккаунты не указаны — сценарии будут созданы для всех активных интеграций.
  9. Срабатывает от Алиса, запусти отсчёт, запустит действие timer.start на таймере timer.countdown. В блоке action задаются параметры действия, которые можно сформировать через Настройки -> Инструменты разработчика -> Действия.

Обработка событий

После того как колонка услышит ключевую фразу, в Home Assistant сгенерируется событие yandex_intent с параметрами:

  • text: Основная фраза (смотрите примеры)
  • entity_id: ID колонки, которая услышала фразу активации (только mode: websocket)
  • room: Комната, в которой находится колонка (только mode: websocket)
  • account: Аккаунт, к которому привязана колонка

Пример обработки:

Режим синхронизации

По умолчанию сценарии синхронизируются с УДЯ автоматически при запуске Home Assistant. Это поведение можно отключить добавлением в конфигурацию опции autosync: false. После этого сценарии будут синхронизированы только при перезагрузке YAML конфигурации компонента со страницы Панель разработчика > YAML или через действие yandex_station_intents.reload.

Пример:

При синхронизации обновляются только изменённые сценарии: если сценарий в УДЯ уже соответствует интенту, он пропускается. Это уменьшает количество запросов к УДЯ и ускоряет синхронизацию.

Запустить синхронизацию вручную можно действием yandex_station_intents.sync. Опция full управляет режимом:

  • full: false (по умолчанию) — обычная синхронизация, обновляются только изменённые сценарии;
  • full: true — принудительная полная синхронизация, обновляются все сценарии, в том числе неизменённые (например, если по какой-то причине компонент считает сценарий идентичным, хотя это не так).

Пример вызова через Инструменты разработчика > Действия:

Важно: yandex_station_intents.sync синхронизирует уже загруженную конфигурацию и не учитывает изменения в YAML конфигурации.

Режимы работы (для продвинутых)

Интеграция поддерживает два режима работы: websocket (по умолчанию) и device. Режим задаётся через параметр mode в конфигурации (менять можно в любой момент).

Режим websocket (по умолчанию):

  • Для работы желательна настроенная интеграция Yandex.Station
  • Постоянное подключение к серверам Яндекса, не требует интеграцию Yandex Smart Home
  • Невозможно активировать событие из интерфейса УДЯ или голосом на телефоне, активация возможна только через колонку
  • Позволяет получать entity_id и room колонки, которая услышала активационную фразу
  • Использует недокументированную функцию УДЯ и в теории может быть отключён Яндексом

Режим device (условно-устаревший):

  • Требует установленный компонент Yandex Smart Home, в фильтрах необходимо разрешить плееры media_player.yandex_station_intents*
  • Можно активировать событие кнопкой в интерфейсе или голосом на телефоне
  • Невозможно определить колонку, которая услышала фразу, отсутствуют параметры entity_id и room в событиях
  • Будет работать всегда, так как активация происходит через управление виртуальным устройством в УДЯ
  • В этом режиме не поддерживаются:
    • Параметр execute_command
    • Шаблоны в say_phrase

Вопросы и ответы

Зачем это всё, если можно отдать скрипты через Yandex Smart Home?

  1. При активации скриптов Алиса много болтает («хорошо», «сделала» и т.п.). Болтовню можно отключить только для всего умного дома целиком, что не всегда удобно
  2. Невозможно достоверно определить колонку, которая активировала скрипт (только с некоторой вероятностью через мониторинг alice_state: BUSY)
  3. События очень удобно использовать в качестве триггера в автоматизациях

Как управлять светом и другими штуками?

Используйте интеграцию Yandex Smart Home

Миграция с YAML интентов Yandex.Station

  1. Установите и настройте интеграцию Yandex.Station Intents (YAML пока не меняйте)
  2. Удалите сценарии, которые были созданы компонентом Yandex.Station. Если в УДЯ нет вручную созданных сценариев — воспользуйтесь действием yandex_station_intents.clear_scenarios, в противном случае — удалите сценарии вручную.
  3. Убедитесь, что в УДЯ не осталось сценариев, созданных компонентом Yandex.Station
  4. В YAML конфигурации измените yandex_station на yandex_station_intents (при условии, что у вас в yandex_station есть только блок intents)
  5. Перезагрузите YAML конфигурацию Yandex.Station Intents, сценарии будут созданы автоматически
  6. Дождитесь появления всех сценариев в УДЯ (30–60 секунд), посмотрите Журнал Сервера на наличие ошибок
  7. Перезагрузите Home Assistant, убедитесь, что ошибок по-прежнему нет
  8. Проверьте работу интентов, изменения в автоматизациях не потребуются

Удаление всех сценариев

Компонент позволяет удалить абсолютно все сценарии из УДЯ через действие yandex_station_intents.clear_scenarios. Будут удалены в том числе и сценарии, созданные вручную.

Для удаления вызовите действие через Инструменты разработчика > Действия:

Ссылки

Даже просто подбор, перевод и оформление статей требуют времени. А самостоятельный обзор устройств требует еще и финансовых вложений. Если Вы хотите больше обзоров, Вы можете помочь автору.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *