Голосовые уведомления TTS на Яндекс Станции из Home Assistant
Использование голосового помощника Алиса для озвучки событий умного дома выводит комфорт проживания на совершенно новый уровень. Вместо безликих push-уведомлений на экране смартфона ваш дом может вежливо сообщить: «Стиральная машина закончила стирку, пора развесить белье», «Обнаружено движение на заднем дворе» или «Чайник закипел, приятного чаепития».
Реализовать это можно с помощью интеграции Яндекс Станции в Home Assistant и использования службы TTS (Text-to-Speech). В данном практическом руководстве мы подробно разберем процесс настройки голосовых уведомлений на примере автоматизации для стиральной машины.
Подготовка интеграции Яндекс Станции
Для отправки текстовых сообщений на Яндекс Станцию используется популярный кастомный компонент yandex_station (разработчик AlexxIT), устанавливаемый через HACS (Home Assistant Community Store).
- Установка: Перейдите в HACS ➡️ Интеграции ➡️ нажмите «Исследовать и добавить интеграции» ➡️ найдите Yandex Station и установите ее.
- Авторизация: Перезагрузите Home Assistant, зайдите в Настройки ➡️ Устройства и службы ➡️ Добавить интеграцию ➡️ выберите Yandex Station. Выберите метод авторизации (через логин/пароль или по токену Yandex) и завершите настройку.
- Проверка сущностей: В системе появятся медиаплееры вида
media_player.yandex_station_kitchenили аналогичные.
Шаг 1. Тестирование службы TTS
Перед созданием автоматизации важно убедиться, что служба синтеза речи работает корректно.
- Зайдите в Инструменты разработчика ➡️ вкладка Службы (Services).
- Выберите службу
tts.yandex_station_say(илиmedia_player.play_media). - В качестве цели (Target) выберите вашу колонку.
- В поле данных (Data) введите тестовое сообщение:
message: "Проверка работы голосового оповещения" - Нажмите «Вызвать службу». Колонка должна четко произнести фразу.
Шаг 2. Определение окончания работы стиральной машины
Чтобы автоматизация понимала, когда стиральная машина завершила работу, мы будем отслеживать ее энергопотребление с помощью умной розетки с датчиком мощности.
Типичный цикл стирки выглядит так: мощность колеблется от 100 Вт до 2000 Вт, а в конце падает до нуля или минимального значения режима ожидания (около 1–3 Вт) и остается таковым в течение нескольких минут.
Создадим автоматизацию со следующими условиями:
- Триггер: Мощность розетки падает ниже
4 Вти держится на этом уровне в течение3 минут. - Условие: Предыдущее состояние мощности было выше
10 Вт(чтобы избежать ложных срабатываний при включении розетки без запуска стирки).
Шаг 3. Написание сценария автоматизации в YAML
Откройте редактор автоматизаций в Home Assistant или отредактируйте файл automations.yaml:
alias: "Стиральная машина: Озвучка завершения"
description: "Голосовое оповещение на Яндекс Станцию об окончании стирки"
trigger:
- platform: numeric_state
entity_id: sensor.washing_machine_power
below: 4
for:
minutes: 3
condition:
- condition: time
after: "09:00:00"
before: "21:30:00"
action:
- service: media_player.volume_set
target:
entity_id: media_player.yandex_station_kitchen
data:
volume_level: 0.5
- service: tts.yandex_station_say
target:
entity_id: media_player.yandex_station_kitchen
data:
message: "Внимание, стиральная машина закончила цикл стирки. Пожалуйста, разгрузите барабан."
- delay: "00:00:10"
target:
entity_id: media_player.yandex_station_kitchen
- service: media_player.volume_set
target:
entity_id: media_player.yandex_station_kitchen
data:
volume_level: 0.3
В этой автоматизации мы сначала поднимаем громкость колонки до 50%, произносим фразу, выдерживаем паузу в 10 секунд (пока Алиса говорит) и возвращаем громкость на комфортный уровень 30%.
Использование динамических шаблонов в сообщениях TTS
Помимо статического текста, вы можете использовать шаблонизатор Jinja2 в Home Assistant для генерации динамических сообщений. Это делает оповещения информативнее. Например, вы можете заставить Алису сообщать текущие параметры окружающей среды или указывать имя члена семьи, который пришел домой.
Пример динамического шаблона для TTS:
message: >
{{"Стирка завершена. Потребление составило "}}
{{ states('sensor.washing_machine_energy') }} {{"киловатт-час."}}
{{"Температура на улице сейчас составляет "}}
{{ states('sensor.outdoor_temperature') }} {{"градусов Цельсия."}}
При запуске автоматизации Home Assistant вычислит значения датчиков в реальном времени и передаст готовый текст в службу TTS Яндекса. Такое динамическое информирование позволяет создавать по-настоящему полезные сценарии климат-контроля и бытового мониторинга.
IMPORTANT
Обратите внимание на условие времени (condition: time). Оно критически важно, чтобы Станция не разбудила вас глубокой ночью, если вы запустили стирку с отложенным стартом по ночному тарифу. Также учитывайте, что динамический рендеринг шаблонов в YAML требует точного синтаксиса и правильного экранирования кавычек, чтобы избежать синтаксических ошибок парсера конфигураций.
Шаг 4. Умное распределение звука и присутствие
Если вы живете в большом доме или квартире, полезно отправлять оповещения только в те комнаты, где сейчас находятся люди, чтобы не беспокоить остальных.
TIP
Свяжите отправку TTS с датчиками движения или присутствия. Например, проверяйте состояние датчиков в комнатах: если в гостиной за последние 5 минут было движение, отправляйте уведомление на колонку в гостиной. Если движение зафиксировано в спальне — отправляйте туда. Если вы хотите объединить это с приветственными сценариями, изучите наш сценарий «Добро пожаловать» при открытии двери.
WARNING
При частых запросах к TTS-сервисам Яндекса без использования кэширования локальных аудиофайлов на сервере Home Assistant могут возникать кратковременные задержки воспроизведения речи из-за сетевого пинга до облака. Для критических уведомлений безопасности всегда дублируйте голосовые оповещения push-уведомлениями на телефоны членов семьи.
Такая гибкая настройка делает уведомления ненавязчивыми и по-настоящему интеллектуальными.
Для вывода изображений и распознавания людей на камерах настройте интеграцию Frigate NVR с Яндекс Станцией.
Инструкция по настройке
Установка интеграции Yandex Station
Установите компонент Yandex Station через HACS и авторизуйтесь под своим аккаунтом Яндекса для получения доступа к медиаплеерам.
Проверка службы TTS в системе
Перейдите в Инструменты разработчика -> Службы и отправьте тестовое текстовое сообщение (TTS) на вашу Яндекс Станцию.
Создание автоматизации стирки
Настройте триггер по энергопотреблению розетки стиральной машины и добавьте действие вызова службы TTS для озвучки окончания стирки.
Настройка тихих часов и громкости
Добавьте логические условия по времени и настройте временное повышение громкости перед озвучкой с возвратом на исходный уровень.