Голосовые команды¶
Голос идёт в 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).