MCPcopy
hub / github.com/AlexxIT/YandexStation

github.com/AlexxIT/YandexStation @v3.21.3 sqlite

repository ↗ · DeepWiki ↗ · release v3.21.3 ↗
499 symbols 1,699 edges 54 files 43 documented · 9%
README

Яндекс.Станция для Home Assistant

hacs_badge

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

  • Колонки бренда Яндекс поддерживают локальное и облачное управление одновременно
  • Колонки других брендов поддерживают только облачное управление
  • Яндекс Модули поддерживают только локальное управление
  • Устройства из умного дома с Алисой поддерживают только облачное управление

В тексте часто используются термины локальная колонка, локальный режим и локальное управление (они несут одинаковый смысл). Внимательно изучите, какие колонки его поддерживают. Функции и возможности локального управления сильно превосходят облачное управление. Облачное управление поддерживается на всех колонках, но не поддерживается на модулях. Локальный режим включается автоматически на поддерживаемых колонках.

У облачного управления нет обратной связи от колонки. Неизвестно, играет ли колонка что-то или стоит на паузе, и какая у неё актуальная громкость. Так что состояние колонки в Home Assistant может отличаться от актуального состояния колонки, если вы давали ей команды не из компонента.

Возможности локального и облачного управления:

  • управление воспроизведением и громкостью станции
  • отправка TTS на станцию из окна медиаплеера и через сервисы (голосом Алисы!)
  • отправка любых текстовых команд на станцию из окна медиаплеера и через сервисы (например, включи мою музыку)
  • спецэффекты в TTS (библиотека звуков и наложение эффектов на голос Алисы)

Дополнительные возможности локального управления:

  • просмотр что играет на станции, включая обложку (только для музыки)
  • перемотка треков

Оглавление

Возможности всех колонок

Возможности локальных колонок

Прочие функции

Полезные компоненты

Не все из этих компонентов за моим авторством!

  • Yandex.Station - позволяет управлять вашими колонками с Алисой из Home Assistant, отправлять на них голосовые уведомления и много чего ещё
  • Yandex Smart Home - позволяет добавить ваши умные устройства из Home Assistant в умный дом Яндекса и управлять ими с любого устройства с Алисой, в том числе с колонок
  • Браузер Яндекс.Музыки - позволяет выбирать и включать треки Яндекс.Музыки из Home Assistant
  • YandexDialogs - позволяет получать команды от устройств с Алисой в Home Assistant через платформу Яндекс.Диалоги
  • Yandex.Station Intents - позволяет получать команды от устройств с Алисой в Home Assistant через сценарии Яндекса
  • HassWP - позволяет быстро и легко "попробовать" Home Assistant на компьютере Windows
  • Dataplicity - позволяет легко огранизовать публичный HTTPS-доступ к вашему серверу Home Assistant
  • Morph Numbers - позволяет правильно склонять числительные для отправки в TTS или Telegram
  • VacuumZones - позволяет легко управлять зональной уборкой на пылесосах Xiaomi с помощью голосовых команд

Установка

Способ 1. HACS > Интеграции > Добавить > Yandex.Station > Установить

Способ 2. Вручную скопируйте папку yandex_station из latest release в директорию /config/custom_components.

Настройка

Внимание: Для каждой вашей колонки в мобильном приложении Яндекса будет создан служебный сценарий с именем ХА UUID. Не трогайте его. Если случайно удалили - перезапустите Home Assistant.

Настройки > Интеграции > Добавить интеграцию > Yandex Station

Если интеграции нет в списке - очистите кэш браузера.

Стабильные способы авторизации:

  • QR-код - рекомендуется, самый удобный способ
  • Cookies - компонент подскажет, что нужно сделать
  • Токен - можно скопировать ТОЛЬКО из другого сервера Home Assistant, где уже была пройдена авторизация

Нестабильные способы авторизации (могут не работать):

  • Пароль - при обычной авторизации
  • Одноразовый пароль - из приложения Яндекс.Ключ, при включенной двухфакторной авторизации
  • Ссылка на E-mail - поддерживается не на всех аккаунтах

В итоге компонент получит токен Яндекса и сохранит именно его, ваш пароль нигде не сохраняется.

Возможности всех колонок

В тексте часто приводятся разные примеры скриптов и автоматизаций. Их можно использовать:

Полное состояние и доступные атрибуты ваших колонок можно посмотреть тут.

В некоторых примерах используются события (event_type). За их срабатыванием можно следить тут.

В случае возникновения ошибок, их список и описание можно посмотреть тут.

Данная документация не призвана научить вас основам работы с Home Assistant.

Первый способ вызвать TTS

Работает на всех колонках

Начиная с версии интеграции 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

Спецэффекты в TTS

Поддерживается:

  • только в локальном режиме (в режимах 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"> У вас получилось!

  • Собственное аудио Можно загрузить свои аудио файлы до 120 секунд. Для воспроизведение загруженного аудиофайла нет необходимости использовать Яндекс.Диалог, в контекст которого загружен файл.

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

Получение команд от станции

Работает на всех колонках

  1. Создайте новый Сценарий в интерфейсе Яндекса.
  2. Выберите "Фраза" в разделе Если
  3. Выберите "Любое у

Core symbols most depended-on inside this repo

get
called by 167
custom_components/yandex_station/core/utils.py
device_action
called by 40
custom_components/yandex_station/core/entity.py
debug
called by 39
custom_components/yandex_station/core/yandex_glagol.py
update_ha_state
called by 36
tests/__init__.py
send
called by 30
custom_components/yandex_station/core/yandex_quasar.py
device_actions
called by 16
custom_components/yandex_station/core/entity.py
post
called by 15
custom_components/yandex_station/core/yandex_session.py
async_set_state
called by 11
custom_components/yandex_station/core/yandex_station.py

Shape

Method 286
Function 165
Class 48

Languages

Python100%

Modules by API surface

custom_components/yandex_station/core/yandex_station.py61 symbols
custom_components/yandex_station/core/yandex_quasar.py41 symbols
custom_components/yandex_station/core/yandex_session.py31 symbols
custom_components/yandex_station/core/utils.py30 symbols
custom_components/yandex_station/core/yandex_glagol.py19 symbols
custom_components/yandex_station/climate.py18 symbols
custom_components/yandex_station/camera.py18 symbols
custom_components/yandex_station/media_player.py17 symbols
custom_components/yandex_station/config_flow.py15 symbols
tests/test_climate.py14 symbols
custom_components/yandex_station/core/entity.py14 symbols
custom_components/yandex_station/__init__.py14 symbols

For agents

$ claude mcp add YandexStation \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact