Компонент для управления Яндекс.Станцией и другими устройствами Умного дома с Алисой из Home Assistant.

В тексте часто используются термины локальная колонка, локальный режим и локальное управление (они несут одинаковый смысл). Внимательно изучите, какие колонки его поддерживают. Функции и возможности локального управления сильно превосходят облачное управление. Облачное управление поддерживается на всех колонках, но не поддерживается на модулях. Локальный режим включается автоматически на поддерживаемых колонках.
У облачного управления нет обратной связи от колонки. Неизвестно, играет ли колонка что-то или стоит на паузе, и какая у неё актуальная громкость. Так что состояние колонки в Home Assistant может отличаться от актуального состояния колонки, если вы давали ей команды не из компонента.
Возможности локального и облачного управления:
Дополнительные возможности локального управления:
Не все из этих компонентов за моим авторством!
Способ 1. HACS > Интеграции > Добавить > Yandex.Station > Установить
Способ 2. Вручную скопируйте папку yandex_station из latest release в директорию /config/custom_components.
Внимание: Для каждой вашей колонки в мобильном приложении Яндекса будет создан служебный сценарий с именем ХА UUID. Не трогайте его. Если случайно удалили - перезапустите Home Assistant.
Настройки > Интеграции > Добавить интеграцию > Yandex Station
Если интеграции нет в списке - очистите кэш браузера.
Стабильные способы авторизации:
Нестабильные способы авторизации (могут не работать):
В итоге компонент получит токен Яндекса и сохранит именно его, ваш пароль нигде не сохраняется.
В тексте часто приводятся разные примеры скриптов и автоматизаций. Их можно использовать:
Полное состояние и доступные атрибуты ваших колонок можно посмотреть тут.
В некоторых примерах используются события (event_type). За их срабатыванием можно следить тут.
В случае возникновения ошибок, их список и описание можно посмотреть тут.
Данная документация не призвана научить вас основам работы с Home Assistant.
Работает на всех колонках
Начиная с версии интеграции v3.19.0, команда будет отправлена в локальном режиме, если колонка его поддерживает, и в облачном режиме, если колонка его не поддерживает.
В облачном режиме есть ограничение на 100 символов в тексте. Компонент автоматически ограничит длину текста до допустимой.
script:
yandex_tts1:
sequence:
- service: media_player.play_media
entity_id: media_player.yandex_station # замените на вашу колонку
data:
media_content_id: 'Температура в комнате {{ states("sensor.temperature_hall")|round }} градуса'
media_content_type: text
Поддерживается:
text и dialog)Доступны следующие эффекты, библиотека звуков, настройка речи и голоса:
yaml
media_content_id: смелость sil <[500]> город+а берёт
yaml
media_content_id: <speaker effect="megaphone">Ехал Грека через реку <speaker effect="-">видит Грека в реке рак
yaml
media_content_id: <speaker is_whisper="true">Хозяин, уже утро, пора вставать!
yaml
media_content_id: <speaker audio="alice-sounds-game-win-1.opus"> У вас получилось!
yaml
media_content_id: <speaker audio="dialogs-upload/5d77ecc4-b781-4baa-abdd-bd0127553b97/081b7f9e-e708-499c-a907-264e33f28ecd.opus">
yaml
media_content_id: <speaker voice="zahar">Всем привет. Меня зовут Захар...
script:
yandex_tts:
alias: TTS c эффектами
sequence:
- service: media_player.play_media
entity_id: media_player.yandex_station # замените на вашу колонку
data:
media_content_id: <speaker audio="alice-sounds-game-win-1.opus"> sil <[500]> Объявление погоды на сегодня...
media_content_type: dialog # работает только на локальной колонке
Фразы на колоки с Алисой можно отправлять, как из автоматизации, так и из интерфеса Home Assistant. Начиная с версии v2022.3 меню TTS перенесено в раздел Медиа, до этого оно находилось в окне Медиа плеера.
При желании вы можете настроить этот раздел через YAML:
Если в команде присутствует media_content_id или в template нет слова message - окно ввода сообщения будет пропущено.
Вот несколько примеров:
yandex_station:
media_source:
- title: Произнеси текст # обязательное поле
media_content_type: text # обязательное поле
thumbnail: https://brands.home-assistant.io/_/tts/icon.png
- title: Выполни команду
media_content_type: command
thumbnail: https://brands.home-assistant.io/_/automation/icon.png
- title: Включи любимое
media_content_id: Включи моё любимое вперемешку
media_content_type: command
- title: Произнеси шепотом
template: '<speaker is_whisper="true">{{ message }}'
media_content_type: dialog
extra:
volume_level: 0.2
- title: Статус эквалайзера
template: 'Эквалайзер установлен на {{ states("select.yandex_station_equalizer") }}'
media_content_type: text

Пример карточки плеера. Внимание: Этой карточки нет в Home Assistant по умолчанию. Она легко ставится через HACS. Если у вас сложности с установкой - просто используйте стандартную карточку. Она тоже работает.
Красивые иконки Яндекс устройств так же можно установить через HACS.
Работает на всех колонках
script:
yandex_command: # работает и в локальном и в облачном режиме
alias: Выполнить команду
sequence:
- service: media_player.play_media
entity_id: media_player.yandex_station # замените на вашу колонку
data:
media_content_id: Включи мою любимую музыку вперемешку
media_content_type: command
Поддерживаются команды на несколько станций одновременно (как TTS, так и media_player).
Работает на всех колонках
script:
yandex_volume_set: # в локальном или облачном режиме
alias: Меняем громкость нескольких станций
sequence:
- service: media_player.volume_set
data:
entity_id:
- media_player.yandex_station_12345678901234567890
- media_player.yandex_station_98765432109876543210
volume_level: 0.5
Только для локального режима!
script:
yandex_play_album: # только в локальном режиме!!!
alias: Включить Би-2 на Станции
sequence:
- service: media_player.play_media
entity_id: media_player.yandex_station # замените на вашу колонку
data:
media_content_id: 60062 # ID альбома в Яндекс.Музыка
media_content_type: album # album, track or playlist
Работает на всех колонках
$ claude mcp add YandexStation \
-- python -m otcore.mcp_server <graph>