Перейти к содержанию

Голосовые команды

Голос идёт в Assist HA как обычный текст, поэтому команды должны подходить под шаблоны Assist. Для русского языка готовых шаблонов немного, и мост не передаёт HA, из какой комнаты пришла фраза.

Что работает «из коробки»

Простые команды с полным именем объекта, как оно записано в HA:

Фраза Результат
«Алиса, включи верхний свет гостиная» включается объект «Верхний свет гостиная»

Проверяйте фразу сначала в окне Assist (иконка диалога в HA), потом голосом. Если в окне она не работает, голосом тем более.

Что не работает

Псевдонимы (альтернативные названия) не помогают в двух случаях: - Если псевдоним похож на название области. Фраза «включи свет гостиная» не сработала: Assist разобрал «свет» как тип устройств, «гостиная» как область и ответил, что такой зоны нет. Рабочая форма — полное имя объекта. - Для вопросов о датчиках. Для «температура улица» с псевдонимом «Температура улица» Assist отвечает «Обращение не распознано»: подходящего шаблона вопроса в русском языке нет.

Своя фраза: автоматизация с триггером-фразой

Для нестандартных фраз и вопросов о датчиках надёжнее всего автоматизация с триггером conversation. Assist запоминает ваши фразы и отвечает тем, что вернёт шаблон.

Настройки → Автоматизации → Создать → Редактировать в YAML. Замените sensor.street_temperature на ID вашего датчика (виден в Настройки → Устройства и службы → Объекты):

alias: Голос — температура на улице
triggers:
  - trigger: conversation
    command:
      - "температура улица"
      - "какая температура на улице"
      - "сколько градусов на улице"
actions:
  - set_conversation_response: >-
      {% set n = states('sensor.street_temperature') | float(0) | round(0) | int %}
      {% set a = n | abs %}
      На улице {{ n }} {{ 'градус' if a % 10 == 1 and a % 100 != 11
         else 'градуса' if a % 10 in [2, 3, 4] and a % 100 not in [12, 13, 14]
         else 'градусов' }}

Шаблон склоняет слово «градус» по правилам русского языка: 1 градус, 3 градуса, 5 градусов, 11 градусов, 21 градус. Он работает на чистом Jinja без сторонних интеграций.

Если ответ приходит как «Готово», значит, шаблон не вычислился: проверьте ID датчика и откройте Трассировки автоматизации (⋮ → Трассировки).

Другие примеры

Любой вопрос или команду можно привязать к фразе так же. Сценарий вместо ответа:

alias: Голос — ночной режим
triggers:
  - trigger: conversation
    command:
      - "ночной режим"
      - "спокойной ночи"
actions:
  - action: scene.turn_on
    target:
      entity_id: scene.night
  - set_conversation_response: "Включаю ночной режим"

Ответ произносит Алиса через движок речи моста (Silero).