Giter Club home page Giter Club logo

yandexstation's Introduction

Яндекс.Станция для 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.

Настройка

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

Способ 1. GUI (рекомендуется)

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

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

Поддерживается несколько способов авторизации:

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

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

Способ 2. YAML (устаревший)

yandex_station:
  username: myuser
  password: mypass

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

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

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

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

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

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

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

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

Внимание. Команда всегда отправляется через облако, даже на локальный колонках, чтоб станция НЕ продолжала слушать после TTS.

В облачном режиме есть два ограничения:

  • Команда Алисе может содержать только кириллицу, латиницу, цифры и спецсимволы: "-,!.:=?".
  • Команда Алисе должна быть не длиннее 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

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

Доступны следующие эффекты, библиотека звуков, настройка речи и голоса:

  • Настройка генерацию речи

    media_content_id: смелость sil <[500]> город+а берёт
  • Наложение эффектов на голос

    media_content_id: <speaker effect="megaphone">Ехал Грека через реку <speaker effect="-">видит Грека в реке рак
  • Шёпот

    media_content_id: <speaker is_whisper="true">Хозяин, уже утро, пора вставать!
  • Библиотека звуков

    media_content_id: <speaker audio="alice-sounds-game-win-1.opus"> У вас получилось!
  • Собственное аудио Можно загрузить свои аудио файлы до 120 секунд. Для воспроизведение загруженного аудиофайла нет необходимости использовать Яндекс.Диалог, в контекст которого загружен файл.

    media_content_id: <speaker audio="dialogs-upload/5d77ecc4-b781-4baa-abdd-bd0127553b97/081b7f9e-e708-499c-a907-264e33f28ecd.opus">
  • Разные голоса можно посмотреть тут. Работают не все голоса. Если указать неправильный голос - колонка заглючит. Тогда на неё нужно отправить команду стоп или перезагрузить.

    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. Выберите "Любое умное устройство" в разделе Тогда

Далее можете выбрать "Ответить на вопрос или выполнить команду", "Прочитать текст вслух", "Проиграть звук" и прочее.

Если хотите, чтоб команда бесшумно ушла в ХА - укажите выполнить команду Сделай громче на 0. Такие команды колонка выполняет бесшумно и по факту громкость не меняется.

Когда колонка выполнит такой сценарий, в ХА появятся два события с дополнительными параметрами:

  • yandex_speaker - срабатывает ТОЛЬКО на "Выполнить команду" и может не срабатывать, если включена бета YandexGPT 2
    instance: text_action
    value: Сделай громче на 0             # фраза колонке из раздела То
    entity_id: media_player.station_mini  # ID колонки в ХА
    name: Яндекс Мини                     # имя колонки в ХА
  • yandex_scenario - срабатывает почти на любые действия в "Тогда"
    instance: sound_play
    value:
      sound: boot-1
      sound_name: Загрузка (8 бит)
    entity_id: media_player.station_mini  # ID колонки в ХА
    name: Яндекс Мини                     # имя колонки в ХА
    scenario_name: Тест                   # имя сценария в Яндексе

По любому из событий вы можете создавать автоматизации:

automation:
- alias: Расскажи шутку
  trigger:
  - platform: event
    event_type: yandex_speaker
    event_data:
      value: Сделай громче на 0  # фраза из Сценария Яндекса (раздел То) 
  action:
  - service: media_player.play_media
    target:
      entity_id: '{{ trigger.event.data.entity_id }}'  # ответить той же колонкой
    data:
      media_content_type: text
      media_content_id: '{{ ["На связи", "Смольный слушает", "Тут я"]|random }}'
  mode: single

К сожалению, нельзя узнать фразу, которую сказали колонке. Можно узнать только фразу, которую колонка выполнила.

Для создания нескольких сценариев с "бешумным выполнением", используйте знаки пунктуации -,!.:=? и их комбинации Сделай громче на 0???!!!. Эффект не изменится, а в ХА вы сможете различать, на какую фразу произошла реакция.

В разделе trigger: > event_data: вы можете фильтровать колонки, чтоб выполнять разные автоматизации для разных комнат на одну и ту же фразу.

Внимание! Вызов TTS из ХА так же активирует эти события.

Для отладки событий перейдите в панель разработчика вашего ХА по адресу http://192.168.1.123:8123/developer-tools/event, в разделе "подписаться на событие" укажите yandex_speaker и нажмите "подписаться".

PS. Так же есть cтарый способ получения команд только для продвинутых пользователей!

Интеграция с Яндекс.Диалогами

Компонент поддерживает интеграцию с другим моим компонентом - YandexDialogs. При его наличии вам доступны функции:

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

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

Поддерживает спецэффекты TTS. Нет ограничения на 100 символов. Послее TTS колонка НЕ слушает пользователя.

В media_content_type вы должны указать имя своего Яндекс.Диалога через двоеточие без пробелов. Регистр неважен.

script:
  yandex_tts3:
    sequence:
      - service: media_player.play_media
        entity_id: media_player.yandex_station_irbis
        data:
          media_content_id: <speaker is_whisper="true">Хозяин, пора бы спать
          media_content_type: text:умный дом

Диалог с колонкой

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

Вы можете начать диалог с пользователем, получить на него ответ и выполнить нужные вам действия, в зависимости от ответа пользователя.

В media_content_type вы должны указать имя своего Яндекс.Диалога через двоеточие без пробелов. Регистр неважен. И через второе двоеточие некий "тег" диалога, чтоб потом в автоматизации понять, на какой вопрос вам пришёл ответ.

script:
  yandex_dialog:
    sequence:
      - service: media_player.play_media
        entity_id: media_player.yandex_station_mini
        data:
          media_content_id: <speaker is_whisper="true">Хозяин, уже утро, пора вставать!
          media_content_type: dialog:умный дом:утро

Пример реакции на ответ пользователя можно посмотреть тут. Этим подходом легко пользоваться как в автоматизациях Home Assistant, так и в Node-RED.

Уведомления и предупреждения

Компонент поддерживает уведомления и предупреждения.

Уведомления это альтернативный способ вызвать TTS. Уведомления настраиваются в configuration.yaml. Минимально, вы должны указать имя нового уведомления и перечень колонок, где оно должно звучать. Для каждого уведомления будет создан отдельный сервис. Далее необходимо вызывать этот сервис с параметром message.

Опционально уведомления поддерживают параметр title. Для его поддержки вы можете использовать шаблон из примера ниже.

При настройке уведомлений параметры media_content_id и media_content_type необязательные.

Уведомления можно использовать в предупреждениях. Например, если вы забыли закрыть выходную дверь - предупреждение будет отправлять вам уведомление с заданным интервалом, до тех пор, пока проблема не будет решена.

notify:
  - name: alice_alert  # любое название
    platform: yandex_station
    data:
      entity_id: media_player.yandex_station_mini  # замените на вашу колонку
      media_content_id: >-
        {% if title is defined %}<speaker effect="megaphone">{{ title }}<speaker effect="-"> sil <[200]>{% endif %}{{ message }}
      media_content_type: dialog

input_boolean: # просто для примера
  garage_door:
    name: Дверь гаража

alert:
  garage_door:
    name: Гараж открыт
    done_message: Гараж закрыт
    entity_id: input_boolean.garage_door
    state: "on"  # опционально, потому что "on" это значение по умолчанию
    repeat: 5  # как часто повторять, в минутах
    can_acknowledge: true  # разрешить выключить уведомления вручную
    skip_first: true  # пропустить первое (мгновенное) уведомление
    notifiers:
      - alice_alert  # название, которые указали выше

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

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

Только для локального режима!

Продолжает слушать после произнесения текста! Зато нет ограничения на количество символов. Поддерживает спецэффекты.

script:
  yandex_tts4:
    alias: TTS только для локального режима
    sequence:
    - service: media_player.play_media
      entity_id: media_player.yandex_station  # замените на вашу колонку
      data:
        media_content_id: <speaker effect="megaphone">Объявление погоды на сегодня...
        media_content_type: dialog

Громкость TTS

Только для локального режима!

Колонка произнесёт текст с заданной громкостью и вернёт громкость на прежний уровень.

script:
  alice_custom_volume1:
    sequence:
    - service: tts.yandex_station_say
      entity_id: media_player.yandex_station  # замените на вашу колонку
      data:
        message: Внимание! Важное сообщение...
        options:
          volume_level: 0.8

Или так

script:
  alice_custom_volume2:
    sequence:
    - service: media_player.play_media
      entity_id: media_player.yandex_station  # замените на вашу колонку
      data:
        media_content_id: Внимание! Важное сообщение...
        media_content_type: text  # поддерживается text и dialog
        extra:
          volume_level: 0.8

Стриминг музыки

Только для локального режима!

Поддерживается стриминг (трансляция) музыки с колонки Яндекса на умные колонки других производителей. Условия такие:

  • Нужна Яндекс колонка с поддержкой локального управления. Яндекс Модули функцию НЕ поддерживают.
  • Нужна подписка Яндекса на музыку.
  • Сторонняя колонка должна иметь интеграцию в Home Assistant с поддержкой потокового воспроизведения музыки. Если она умеет функцию "воспроизвести текст" из окна медиа-плеера, то поддержка скорее всего есть.
  • Синхронизовать колонки разных производителей в идеальный мультирум нереально, поэтому звук на колонке Яндекса во время трансляции приглушается. Но при общении с Алисой звук временно возвращается.
  • Громкость колонки Яндекса также синхронизируется с внешней акустикой.

Протестирована поддержка интеграций:

  • Chromecast:
    • колонки с Google Assistant
    • медиаплееры/телевизоры/проекторы на Android TV
  • DLNA:
    • саундбар Samsung HW-MS6500
    • саундбар Yamaha YAS-306
    • телевизор Philips 2011 года
    • телевизоры Samsung Tizen 2016+ год
  • Kodi
  • MPD
  • SamsungTV
    • телевизоры Samsung Tizen 2016+ год
    • важно указать в конфиге media_content_type: url
  • Sonos
  • Yamaha MusicCast

Внимание. Для корректной работы некоторых интеграций, ваш сервер ХА должен быть доступен в локальной сети по протоколу HTTP и IP-адресу:

Настройки > Общие > URL-адрес для домашней сети > http://192.168.1.123:8123/

Стоит понимать, что при правильной настройке внешнего доступа через различные аддоны, вы можете пользоваться ХА по адресу вида https://myhome.duckdns.org/. И при правильной настройке такая ссылка будет работать как во внешней, так и в локальной сети. А ссылка вида HTTP/IP будет использоваться только локальными медиа-плеерами.

Компонент автоматически найдёт все теоретически подходящие media_player и добавит их в список source_list у колонки. При желании вы можете вручную указать список колонок в configuration.yaml:

yandex_station:
  media_players:
    - entity_id: media_player.yas_306
      name: Yamaha
    - entity_id: media_player.mpd
      name: MPD
      speaker_id: [media_player.yandex_station]  # опциональная привязка к конкретным колонкам Яндекса
    - entity_id: media_player.yas_306
      name: Yamaha (no sync)
      sync_volume: False  # опциональное отключение синхронизации громкости звука
    - entity_id: media_player.samsung
      name: SamsungTV
      media_content_type: url  # важно для интеграции SamsungTV из HACS

Вы можете переключать трансляцию через:

  • Переключатель source в карточке Mini Media Player
  • Переключатель source в стандартном окне медиа-плеера колонки
  • Сервис media_player.select_source
  • Получение команд от станции, например на фразу "Алиса, включи трансляцию на Ямаху"
  • Интеграцию колонок в умный дом Яндекса, единственное ограничение - вместо нормальных названий источников там будет "один", "два", "три"...
  • Интеграцию колонок в HomeKit

Караоке

Только для локального режима!

YandexStation - караоке

Для каждой колонки создаётся camera (выключена по умолчанию), которая может отображать текст текущей песни в режиме караоке.

Поток с текстом можно отправить на телевизор, например Chromecast:

alias: Включить караоке на ТВ
sequence:
  - service: media_player.play_media
    target:
      entity_id: media_player.mibox
    data:
      media_content_id: >-
        http://192.168.1.123:8123/api/camera_proxy_stream/camera.hall_speaker_lyrics?token={{ state_attr('camera.hall_speaker_lyrics', 'access_token') }}
      media_content_type: image/jpeg

Проигрывание медиа по ссылкам

Только для локального режима!

Поддерживаются только ссылки, которые умеют устройства Яндекса!

  • Песня на Яндекс.Музыке - пример
  • Альбом на Яндекс.Музыке - пример
  • Исполнитель на Яндекс.Музыке - пример
  • Плейлист на Яндекс.Музыке - пример

Только на устройствах с экраном (большая Станция или Модуль)

Это работает в том числе из GUI, если вставить ссылку в поле "воспроизвести текст".

script:
  yandex_play_url:
    alias: Проигрывание медиа по ссылке
    sequence:
    - service: media_player.play_media
      entity_id: media_player.yandex_station  # замените на вашу колонку
      data:
        media_content_id: https://music.yandex.ru/album/2150009/track/19174962
        media_content_type: xxx  # тип не важен, но должен быть!

Яндекс Алиса в Telegram

Только для локального режима!

Вы можете общаться со своей Алисой через Telegram. И она вам будет отвечать в Telegram! Можете спросить погоду, вызвать такси, включить песню, поиграть в города или управлять вашим умным домом (если настроили интеграцию с умным домом Яндекса). Никаких слеш-команд Telegram, общайтесь с Алисой обычным текстом.

При этом Home Assistant не обязательно "прокидывать" в Интернет. Telegram в режиме polling может работать без внешнего доступа.

При этом проигрывание медиа по ссылкам тоже будет работать. Просто поделитесь со своим Telegram ботом ссылкой на фильм Кинопоиска, ролик YouTube или песню/альбом/плейлист на Яндекс Музыке - и они запустятся на вашей колонке!

telegram_bot:
- platform: polling
  api_key: TELEGRAM_BOT_API_KEY  # создайте своего Телеграм бота
  allowed_chat_ids:
  - TELEGRAM_USER1_ID  # укажите ID своего аккаунта
  - TELEGRAM_USER2_ID  # при желании, поддерживается несколько аккаунтов

automation:
- trigger:
    platform: event
    event_type: telegram_text
  action:
    service: media_player.play_media
    entity_id: media_player.yandex_station_mini  # замените на вашу станцию
    data:
      media_content_id: "{{ trigger.event.data.text }}"
      media_content_type: "question:{{ trigger.event.data.chat_id }}"
- trigger:
    platform: event
    event_type: yandex_station_response
  action:
    service: telegram_bot.send_message
    data:
      target: "{{ trigger.event.data.request_id }}"
      message: "{{ trigger.event.data.text }}"

Для отправки Telegram сообщений разным станциям @ProstoMaksks предложил такое решение.

Список покупок

Только для локального режима!

Поддерживается двухсторонняя синхронизация списка покупок Алисы и стандартного компонента Shopping List. Можно добавлять и удалять элементы списка как из ХА, так и голосом с колонки.

Предварительно необходимо добавить стандартный компонент, через GUI или YAML.

Для синхронизации списков необходимо вызвать следующий сервис. При желании, вызов этого сервиса можно выполнять голосом с колонки, через получение команд от станции.

script:
  update_shopping_list:
    alias: Обновить список покупок
    sequence:
      - service: media_player.play_media
        entity_id: media_player.yandex_station_mini  # замените на вашу колонку
        data:
          media_content_id: update
          media_content_type: shopping_list

После синхронизации вы можете удалять элементы голосом на колонке. Такие элементы будут удалены из ХА при следующей синхронизации, даже если на них не стоит галка.

Или вы можете отмечать элементы как завершенные в интерфейсе ХА. Такие элементы будут удалены из Яндекса при следующей синхронизации. Только не очищайте вручную список завершенных элементов в ХА до синхронизации! Иначе синхронизация нарушится.

Синхронизация происходит по следующим правилам:

  1. Завершенные (отмеченные) элементы списка ХА - удаляются из Яндекса (если они там были)
  2. Новые элементы, созданные именно из ХА - добавляются в Яндекс (если их там не было)
  3. Список ХА полностью заменяется тем, что получилось в Яндексе после 1 и 2
  4. Список завершенных элементов ХА очищается

Нужно учитывать, что некоторые названия Яндекс не может добавить в свой список. Поэтому они могут бесследно пропасть.

Статический IP для колонки

Только для локального режима!

Проще всего проверить работу локального режима - запустить на колонке песню и посмотреть, отображается ли обложка в Home Assistant.

Локальные устройства ищутся автоматически по протоколу mDNS (zeroconf). Он не будет работать, если вы открыли только один порт для Home Assistant. Например, установка в Docker (в Hass.io всё хорошо) без настройки network=host или виртуальная машина с NAT.

Если у вас есть с этим какие-то проблемы - можно указать для колонок статический IP-адрес на роутере и в конфиге Home Assistant. device_id вашей колонки можно посмотреть в мобильном приложении Яндекса.

yandex_station:
  devices:
    12345678901234567890:  # device_id вашей колонки
      host: 192.168.1.123
      name: Яндекс Станция  # имя можно задать и тут

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

Управление умным домом Яндекса

  • В конфиге нужно указать, какие устройства умного дома с Алисой необходимо добавить в Home Assistant
  • Большинство типов устройств поддерживаются напрямую:
    • климат: Кондиционеры (добавленные как через ИК-пульт, так и напрямую), Обогреватели, Очистители, Термостаты
    • медиа: Телевизоры (добавленные как через ИК-пульт, так и напрямую), ИК-пульты
    • свет
    • сенсоры
    • выключатели
    • пылесосы
    • чайники
  • Также любые устройства можно собрать из простых элементов (switch, sensor, select, number)

В качестве ИК-пультов можно использовать Яндекс Пульт или более дешевую версию от Tuya (добавляется напрямую как родной пульт Яндекса).

В конфиге нужно перечислить имена ваших устройств:

yandex_station:
  include:
    - Кондиционер                                                 # добавить ВСЕ устройства с этим именем
    - name: Очиститель Xiaomi
      properties: [ "temperature", "humidity", "pm2.5_density" ]  # опционально создать сенсоры
    - name: Чайник Polaris
      capabilities: [ "mute", "keep_warm" ]                       # опционально создать контролы
    - name: Увлажнитель Polaris
      capabilities: [ "mute", "controls_locked", "ionization", "backlight" ]  # опционально создать контролы
      properties: [ "temperature","humidity" ]                                # опционально создать сенсоры
    - name: Кондиционер
      room_name: Зал                                              # опционально указать комнату
      capabilities: [ "temperature", "fan_speed", "thermostat" ]  # опционально создать контролы
      current_temperature: "{{ states('sensor.temperature') }}"   # опционально указать сенсор температуры
    - name: Увлажнитель
      current_humidity: "{{ states('sensor.humidity') }}"         # опционально указать сенсор влажности
    - room_name: Ванная                                           # добавить ВСЕ устройства из этой комнаты
    - type: devices.types.sensor                                  # добавить ВСЕ устройства такого типа
    - id: 96581cf1-dad4-4329-bbe9-0c843128f60a                    # добавить устройство по ID

Кондиционер будет добавлен как термостат:

Настроенное вручную ИК-устройство будет добавлено как Remote. Команды отправляются через сервис remote.send_command. Можно отправить несколько команд за раз, настроить задержку и количество повторов. Пример вызова.

Изменение настроек Алисы

script:
  change_settings:
    alias: Изменение настроек Алисы
    sequence:
      - service: media_player.play_media
        data:
          entity_id: media_player.yandex_station  # замените на любую вашу колонку
          media_content_id: 'без лишних слов: да'  # пробел после двоеточия
          media_content_type: settings

Поддерживаемые значения:

  • без лишних слов: да/нет
  • ответить шепотом: да/нет
  • анонсировать треки: да/нет
  • скрывать названия товаров: да/нет
  • звук активации: да/нет
  • одним устройством: да/нет
  • понимать детей: да/нет
  • рассказывать о навыках: да/нет
  • взрослый голос: умеренный/семейный/безопасный/без ограничений
  • детский голос: безопасный/семейный
  • имя: алиса/яндекс
  • адаптивная громкость: да/нет
  • кроссфейд: да/нет

Несколько TTS в конфиге

Если в Home Assistant подключены несколько TTS-сервисов - из карточки медиа-плеера будет вызываться самый первый из них (сортировка по имени). Например, tts.google_translate_say будет приоритетнее tts.yandex_station_say. А tts.yandex_station_say будет приоритетнее tts.yandextts_say.

Компонент Яндекс.Станции умеет поддерживать другие TTS, а вот другие колонки могут не поддерживать TTS yandex_station_say. При необходимости вы можете:

  • отключить ненужные TTS в конфиге ХА
  • использовать mini-media-player, где можно указать имя TTS-сервиса для каждой колонки
  • изменить название TTS-сервиса:
yandex_station:
  tts_service_name: alice_say

Звук Яндекс.Станции по HDMI

Только для станций с HDMI

Функция переключения выхода звука находится у Яндекса в бете. На телевизор выводится только звук видео (например YouTube). Звук музыки и голос Алисы остаются на Станции.

Раньше функция включалась в конфиге. Теперь включена по умолчанию для всех владельцев больших Станций.

script:
  yandex_hdmi_sound:
    alias: Звук Станции на HDMI
    sequence:
    - service: media_player.select_source
      entity_id: media_player.yandex_station  # поменяйте на вашу станцию
      data:
        source: HDMI

Управление яркостью экрана станции Макс

Только для Яндекс.Станции Макс

script:
  yandex_brightness:
    sequence:
    - service: media_player.play_media
      entity_id: media_player.yandex_station_max
      data:
        media_content_id: 0.5  # допустимые значения от 0 до 1, или -1 для включения авто режима
        media_content_type: brightness

Настройки Proxy

# обязательно использование proxy с поддержкой HTTPS!
yandex_station:
  proxy: http://94.130.49.151:3128

Troubleshooting

Поиск и устранение проблем

  1. Посмотрите лог Home Assistant на наличие ошибок интеграции Yandex.Station.
  2. Если в логе есть ошибка, постарайтесь прочитать её. Среди непонятных букв может быть прямой ответ на проблему на русском или английском языке.
  3. Поищите похожую ошибку на GitHub проекта (включая закрые issue) или в чатах Telegram: 1, 2, 3.
  4. Если ошибки нет, можно включить отладочные логи интеграции и посмотреть, что проиходит там.
    logger:
      default: info
      logs: { custom_components.yandex_station: debug }
    
  5. Если самостоятельно не справились - переходите по ссылкам в пункте 3 и подробно опишите проблему. Обязательно приложите ошибку из лога, если она есть. При наличии чего-то полезного в пункте 4, приложите и этот лог.

Полезные автоматизации

Отображаем статус Яндекс Станции с помощью умных ламп

Полезные ссылки

yandexstation's People

Contributors

alexxit avatar ckesc avatar den67rus avatar dext0r avatar drewpo28 avatar dronix27 avatar enzokot avatar evgeniavolkova avatar glebsterx avatar hepoh3 avatar kapji avatar kasitoru avatar lexus-dev avatar lufton avatar malinovsku avatar megavasiliy007 avatar panfmik avatar sashaxser avatar shammysha avatar skrashevich avatar vova-sh avatar vovanmozg avatar vring0 avatar zuz666 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yandexstation's Issues

В мануале не явно прописано как происходит обнаружение media_player yandex station

У меня есть Яндекс.Станция (большая) в одной сети WIFI,
прописал аккаунт yandex в configuration.yaml как по мануалу,
но дальше ничего не произошло, перезагружал HA.

Судя по картинке в мануале, у меня в списках entities автоматический должно было появится что то вроде

media_player.yandex_station_12345678901234567890

но увы у меня ничего нет кроме моих google_home_mini, да и в логах пишет что, значить плагин установлен норм!

2020-02-10 11:19:18 WARNING (MainThread) [homeassistant.loader] You are using a custom integration for yandex_station which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you do experience issues with Home Assistant.

затем вот такая штука

Device 34007890c4084813068c not found in Yandex account.

хотя у себя на телефоне я колонку вижу, колонка работает. ее както поособому надо привязать к аккаунту ?

Алиса в телеграм многопользовательский режим

А есть воможность сделать так, чтобы с алисой могли в телеге общаться несоклько человек и она отвечала конкретно тому, кто ее спрашивал. Пытался сделать через

data_template:
target: '{{ trigger.event.data.user_id }}'

но этот вариант не взлетел

CAPTCHA required

Уровень: ERROR
Logger: custom_components.yandex_station.yandex_quasar
Source: custom_components/yandex_station/yandex_quasar.py:124
Integration: yandex_station (documentation)
First occurred: 16:35:31 (1 occurrences)
Last logged: 16:35:31

Init
Traceback (most recent call last):
File "/config/custom_components/yandex_station/yandex_quasar.py", line 48, in init
self.main_token = await self.get_main_token(username, password)
File "/config/custom_components/yandex_station/yandex_quasar.py", line 124, in get_main_token
assert 'access_token' in resp, resp
AssertionError: {'error': '403', 'error_description': 'CAPTCHA required', 'x_captcha_key': '00AkMIvlxCsrus1DatF2sVVkJLc5C4Iw', 'x_captcha_url': 'https://ext.captcha.yandex.net/image?key=00AkMIvlxCsrus1DatF2sVVkJLc5C4Iw'}

Перестала работать озвучка голосом Алисы

На яндекс станции мини перестала работать произношение фраз голосом алисы.
Так же перестала работать озвучка при нажатии на кнопку лайк, и прочие шорткаты у маленького плеера

Алиса слушает пользователя после любого вида TTS

Хочу вызывать TTS, при котором Алиса произнесет заданную фразу и продолжит текущее медиа-действие (например, проигрывание музыки). Однако все варианты вызова tts приводят к тому, что Алиса после вывода фразы ожидает ответа от пользователя (проигрывается звуковой сигнал, сигнализирующий о том, что Алиса слушает, и уменьшается громкость музыки).

Является ли это ограничением Яндекса или багом?

Ошибки при установке аддона

Пытаюсь установить ваш аддон в homeassistant

Но при добавлении вашего репозитория
https://github.com/AlexxIT/YandexStation

В логе вижу следующий текст

20-04-17 04:03:45 INFO (MainThread) [supervisor.store.git] Clone add-on https://github.com/AlexxIT/YandexStation repository
20-04-17 04:03:48 ERROR (MainThread) [supervisor.utils.json] Can't read json from /data/addons/git/b61114b4/repository.json: [Errno 2] No such file or directory: '/data/addons/git/b61114b4/repository.json'
20-04-17 04:03:48 WARNING (MainThread) [supervisor.store.data] Can't read repository information from /data/addons/git/b61114b4/repository.json

Сам репозиторий появляется среди прочих
Но с именем ‘unknown’ и без каких либо аддонов

Возможно я что-то не так делаю...
Помогите пожалуйста

Не озвучивает состояние с сенсора

Я новичек и тольно разбираюсь в теме. Пытаюсь сделать уведомление о состоянии датчика через станцию.мини.
Начал с пробного скрипта:

'1591616034809':
  alias: test. Alisa temp TTS
  sequence:
  - data:
      media_content_id: Температура в комнате {{ states('sensor.temperature_158d000215b167')|round
        }}
      media_content_type: text
    entity_id: media_player.yandex_station
    service: media_player.play_media

По итогу Алиса просто зачитывает всю строку включая скобки и назавание сенсора, но данные с него не вытягивает. Я что-то сделал не так?

MediaPlayerDevice is deprecated

Log Details (WARNING)
Logger: homeassistant.components.media_player
Source: components/media_player/init.py:938
Integration: Media player (documentation, issues)
First occurred: 9:46:58 PM (2 occurrences)
Last logged: 9:46:58 PM

MediaPlayerDevice is deprecated, modify YandexStation to extend MediaPlayerEntity
MediaPlayerDevice is deprecated, modify YandexStationHDMI to extend MediaPlayerEntity

Не находит Irbis

Привет. Подскажи, никак не могу подключить Irbis к HA. В паспорте яндекса устройство есть. И устройство заново отвязывал-привязывал и пароли менял. Ни в какую не хочет.
2020-06-10_18-48-51
2020-06-10_18-50-27

Алиса зависает на фразах с точкой

Собственно после произнесения фразы Какая температура в комнате: .
Алиса продолжает крутить фиолетовую подсветку и ничего не происходит.
1
Полная строка Data из node red {"media_content_id":"Повторяю вашу фразу","media_content_type":"text"}

Чтобы остановить фиолетовый индикатор нажимаю на Алисе кнопку команды, и она произносит "Повторяю вашу фразу"

UPD
Много экспериментировал. Видимо проблема в
intents:
Романтический вечер: приятно провести время
Какая температура в комнате: .

Романтический вечер отрабатывает и фиолетовая индикация гаснет.
Какая температура в комнате Индикация продолжает крутиться.
Алиса не может произнести . (точка). Из за этого и продолжает гореть индикатор.

Авторизация Яндекс ПДД и второй фактор

Приветствую, как правильно авторизовываться, если я использую свой домен и двухфакторную авторизацию?

File "/config/custom_components/yandex_station/utils.py", line 43, in get_yandex_token

return r.json()['access_token']

KeyError: 'access_token'

Эх! Под "IRBIS A" бы!

Приветствую! Пользуюсь 4-мя колонками IRBIS A. Хочется таки прикрутить к HA tts от Яндекса. Планируется под колонки IRBIS?

Команда cancelVoiceDialog не работает?

Кажется, что команда cancelVoiceDialog либо не работает, либо её вообще нет. По-крайней мере, тут она не встречается.

В качестве замены можно использовать media_player.play_media с данными

{
    "media_content_id": "Хватит",
    "media_content_type": "command"
}

Не уверен, что это лучшее решение =)

Ругается на yandex_tts

Добрый день.
Подключил по инструкции, колонку в конфигурации создает. Но при попытке прописать скрипт ругается на yandex_tts:
Invalid config for [script]: [yandex_tts] is an invalid option for [script]. Check: script->script->script->yandex_tts
Подскажите, куда копать. TTS гугла закомментирован. Home Assistant 0.105.3

Получение идентификатора устройства для ответа на него в intent

Хотелось бы иметь возможность задать вопрос Алисе и получить на него динамический ответ
Например:

  • Алиса, какая температура на сенсоре
  • action: trigger: yandex_intent
  • action: call_service: tts entity_id: {{trigger.id}} message: сейчас температура {%states('sensor')%} градусов

В идеале вообще вызывать сервис типа intent_replay, который бы отвечал обратно.

Но и в первом случае иметь информацию о колонке тоже было бы полезно, например, для определения комнаты, в которой была произнесена команда.

Но судя по тому, что вообще функционал indent реализован через жопу громкость, то можно на это особо не надеяться на это до тех пор, пока яндекс не прикрутит полноценную апишку.

No module named 'websockets'

Setup failed for yandex_station: Unable to import component: No module named 'websockets'

Raspberry Pi
Home Assistant 0.106.4

поведение "воспроизвести текст" в медиаплеере

Сейчас оно работает как и задумывалось - воспроизводит текст, однако для алисы ИМХО удобнее чтобы это было полноценной командой для нее (у себя я в коде просто убрал "повторяй за мной").
Это позволяет запустить любую композицию/видео удаленно.
Предлагаю добавить параметр в конфиг, который это регулирует (по умолчанию пусть воспроизводит текст, для совместимости)

Не работает локальное управл

Добрый день! Почему-то перестало нормально работать локальное упр на всех колонках (2 мини и одна станция)
Сначала неск дней локалка (обложки и обратная связь) работала на одной мини, а на второй и на станции не работало, а сегодня локалка стала на второй мини, а на первой перестало. На станции также не работает. Подскажите, в чем может быть причина? Спасибо большое!

Unsupported media: question

Logger: custom_components.yandex_station.media_player
Source: custom_components/yandex_station/media_player.py:444
Integration: YandexStation (documentation)
First occurred: 13:54:29 (1 occurrences)
Last logged: 13:54:29

Unsupported media: question

Включить плейлист пользователя

В автоматизацию ввёл:

  - data:
      entity_id: media_player.yandex_station_040078
      media_content_id: 1008    # ID альбома в Яндекс.Музыка
      media_content_type: playlist  # album, track or playlist
    service: media_player.play_media

Но заиграла песня, которой нет в плейлисте... :(
ID плейлиста взял из урла:
https://music.yandex.ru/users/mylogin/playlists/1008

Что не так? Please, help! )

После обновления компонента, станция недоступна

После обновления компонента, станция перестает быть доступной, пробовал удалять .yandex_station.txt не помогает, создается объект media_player.yandex_station_04007884c9143c2907cf с пометкой:
Этот объект в настоящее время недоступен.

Неделю назад все работало, конфигурацию не менял. В чем может быть проблема куда копать?
Спасибо!

Changelog

А почему удалили changelog? Как теперь следить за появлением новых версий?)

Не работают события yandex.intent

Добрый день, перестали работать события из такой автоматизации:

  trigger:
    platform: event
    event_type: yandex_intent
    event_data:
      text: Какая температура в зале
  action:
    - service: tts.alice_say
      entity_id: media_player.yandex_station_xxxxx
      data_template:
        message: "blablabla

Еще вчера утром все работало и станция отвечала на мои кастомные команды.

В логах пишет это на любую из автоматизаций с yandex_intent:

Error executing script. Unexpected error for call_service at pos 1: 0, message='Attempt to decode JSON with unexpected mimetype: text/plain; charset=utf-8', url='https://iot.quasar.yandex.ru/m/user/scenarios/blablabla

Не подскажите, куда смотреть?

HA версия: 0.110.4, бежит в докере на synology. Версия компонента - последная. yandex smart home - тоже последней версии.

ServerDisconnectedError

Здравствуйте, часто появляются ошибки в логе, после этого нагрузка на процессор возрастает, до перезагрузки "HA".
Home assistant крутится в докере.
По конфигурации у меня одна Яндекс станция и три Мини.

Не самая частая:

Уровень: ERROR
Logger: custom_components.yandex_station.yandex_glagol
Source: custom_components/yandex_station/yandex_glagol.py:58
Integration: YandexStation (documentation)
First occurred: 4:47:53 (4 occurrences)
Last logged: 5:49:11

Station connect
Traceback (most recent call last):
  File "/config/custom_components/yandex_station/yandex_glagol.py", line 58, in _connect
    self.ws = await session.ws_connect(uri, heartbeat=55, ssl=False)
  File "/usr/local/lib/python3.7/site-packages/aiohttp/client.py", line 728, in _ws_connect
    proxy_headers=proxy_headers)
  File "/usr/local/lib/python3.7/site-packages/aiohttp/client.py", line 504, in _request
    await resp.start(conn)
  File "/usr/local/lib/python3.7/site-packages/aiohttp/client_reqrep.py", line 847, in start
    message, payload = await self._protocol.read()  # type: ignore  # noqa
  File "/usr/local/lib/python3.7/site-packages/aiohttp/streams.py", line 591, in read
    await self._waiter
aiohttp.client_exceptions.ServerDisconnectedError: None

Самая частая:

Уровень: ERROR
Logger: custom_components.yandex_station.yandex_glagol
Source: custom_components/yandex_station/yandex_glagol.py:89
Integration: YandexStation (documentation)
First occurred: 2:27:37 (20 occurrences)
Last logged: 6:02:30

Station connect error [None] Cannot connect to host 192.168.1.21:1961 ssl:False [None]
Station connect error [113] Cannot connect to host 192.168.1.21:1961 ssl:False [Connect call failed ('192.168.1.21', 1961)]
Station connect error [111] Cannot connect to host 192.168.1.21:1961 ssl:False [Connect call failed ('192.168.1.21', 1961)]
Station connect error [110] Cannot connect to host 192.168.1.21:1961 ssl:False [Connect call failed ('192.168.1.21', 1961)]

unauthorized_client

Уровень: ERROR
Logger: custom_components.yandex_station.yandex_quasar
Source: custom_components/yandex_station/yandex_quasar.py:143
Integration: yandex_station
First occurred: 18:59:26 (1 occurrences)
Last logged: 18:59:26

Init
Traceback (most recent call last):
File "/config/custom_components/yandex_station/yandex_quasar.py", line 69, in init
self.main_token = await self.get_main_token(username, password)
File "/config/custom_components/yandex_station/yandex_quasar.py", line 143, in get_main_token
assert 'access_token' in resp, resp
AssertionError: {'error': 'unauthorized_client'}

Удаление файла с расширение .json из папки yandex_station, с последующем перезапуском HA также не решило проблему. Выскакивает таже ошибка.

Unknown host for device

У меня две станции. Большая и мини.
При попытке отправить команду, например:

command: sendText
text: Повтори за мной 'Тестовое уведомление
В логе появляется ошибка:

Unknown host for device ТУТИДЕНТИФИКАТОРСТАНЦИИМИНИ

В конфиге прописано так:
yandex_station:
username: ИМЯПОЛЬЗОВАТЕЛЯ@yandex.ru
password: ПАРОЛЬ
host: 192.168.2.19 #IP Большой станции

Что я делаю не так?

service

на самом деле это конфиг скрипта судя по синтаксису. Или тогда непонятно куда это в НА вписывать. В configuration.yaml оно не проходит проверку

Проблема с yandex_station - Attempt to decode JSON with unexpected

Был в отпуске, стояла версия 2.2.0 и все отлично работало (Irbis A). Приехал, вижу изменилось API. Поставил последнюю 2.2.8 и не подключается. В логах такое:

Traceback (most recent call last):
  File "/config/custom_components/yandex_station/yandex_quasar.py", line 82, in init
    speakers = await self.load_speakers()
  File "/config/custom_components/yandex_station/yandex_quasar.py", line 208, in load_speakers
    resp = await r.json()
  File "/usr/local/lib/python3.8/site-packages/aiohttp/client_reqrep.py", line 1026, in json
    raise ContentTypeError(
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/plain; charset=utf-8', url='https://iot.quasar.yandex.ru/m/user/devices
2020-08-10 10:08:59 ERROR (MainThread) [homeassistant.setup] Error during setup of component yandex_station
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/setup.py", line 193, in _async_setup_component
    result = await asyncio.wait_for(task, SLOW_SETUP_MAX_WAIT)
  File "/usr/local/lib/python3.8/asyncio/tasks.py", line 483, in wait_for
    return fut.result()
  File "/config/custom_components/yandex_station/__init__.py", line 151, in async_setup
    for speaker in speakers:

Причем руками при заходе на https://iot.quasar.yandex.ru/m/user/devices все отдается. JSON, хотя и не с первого символа идет, а пару пробелов в начале.

Правда, я пока был в отпуске, то меня на двухфакторную, но потом заметил, что с подключением тут гемор будет и вернул все обратно - колонку переподключил конечно с новым паролем и его же в конфиге прописал.

при инициализции ошибка: в аккаунте нет устройств

До обновления компонента все работало через токен (яндекс станция большая), после стала выдавать ошибку медиаплеера что нет токена, сессион ид.

Поменял авторизацию на логин пароль и получил ошибку: в аккаунте нет устройств

Read.me - Несколько TTS в конфиге

Так же столкнулся с одновременной работой нескольких tts и нескольких колонок ( Google Home Mini, Sonos ) и Яндекс.Станция как в issue #8

На данный момент функция воспроизвести голос на интерфейсе вообще перестала работать для Google Mini

В доке написано что ...

В этом случае вы можете настроить несколько TTS сервисов. Из окна медиа плеера всех колонок всегда будет стартовать первый повавшийся сервис (в алфавитном порядке). Поэтому название TTS сервиса Яндекса можно переименовать, например, в alice_say

получается что если по алфавиту, то alice_say будет всегда первой, так как на a, а google_translate_say будет вторым, соотвественно на интерфейсе медиа плеер для Google Home mini не сможет воспроизвести через alice_say, будет тишина и при этом Яндекс плеер будет работать. Если переименовать в yandex_say то будет наоборот, Google Mini заговорит но Яндекс плеер будет молчать,

Как быть ? в доке не сказано, либо мы что то недопонимаем

Не работает получение команд от станции

Пытаюсь разобраться с получением команд от станции (Мини). Есть вот такой configuration.yaml:

yandex_station:
  username: login
  password: pass
  tts_service_name: alice_say
  intents:
    Найди телефон Андрея: .
    Найди телефон Кати: .

yandex_smart_home:
  filter:
    include_entities:
      - media_player.yandex_intents

Соответственно, установлены последние версии интеграций YandexStation и yandex_smart_home. Устройства на https://dialogs.yandex.ru/developer/ обновлены, появился медиаплеер Yandex Intents, который я не трогал (не менял имя и не переносил в комнату). Вот такой ответ получаю на https://iot.quasar.yandex.ru/m/user/devices (убрал остальные устройства и айдишники):

{
    "groups": [],
    "request_id": "ID",
    "rooms": "Тут мои другие устройства",
    "speakers": [],
    "status": "ok",
    "unconfigured_devices": [
        {
            "capabilities": [
                {
                    "last_updated": 0,
                    "parameters": {
                        "split": false
                    },
                    "retrievable": true,
                    "state": null,
                    "type": "devices.capabilities.on_off"
                }
            ],
            "groups": [],
            "id": "ID",
            "name": "Yandex Intents",
            "properties": [],
            "skill_id": "ID",
            "type": "devices.types.media_device"
        }
    ]
}

При произношении обеих ключевых фраз ("Алиса, найди телефон Андрея" и "Алиса, найди телефон Кати") получаю от алисы сообщение, что она не умеет это делать. Ивенты yandex_intent в HA не приходят.

Error during setup of component yandex_station

Добрый день!

Перестал работать компонент, при загрузке HA ошибки:

Logger: custom_components.yandex_station.yandex_quasar
Source: custom_components/yandex_station/yandex_quasar.py:208
Integration: yandex_station (documentation)
First occurred: 9:39:23 (1 occurrences)
Last logged: 9:39:23

Init
Traceback (most recent call last):
File "/config/custom_components/yandex_station/yandex_quasar.py", line 82, in init
speakers = await self.load_speakers()
File "/config/custom_components/yandex_station/yandex_quasar.py", line 208, in load_speakers
resp = await r.json()
File "/usr/local/lib/python3.8/site-packages/aiohttp/client_reqrep.py", line 1026, in json
raise ContentTypeError(
aiohttp.client_exceptions.ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: text/plain; charset=utf-8', url=URL('https://iot.quasar.yandex.ru/m/user/devices')

и

Logger: homeassistant.setup
Source: custom_components/yandex_station/init.py:151
First occurred: 9:39:23 (1 occurrences)
Last logged: 9:39:23

Error during setup of component yandex_station
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/setup.py", line 191, in _async_setup_component
result = await task
File "/config/custom_components/yandex_station/init.py", line 151, in async_setup
for speaker in speakers:
TypeError: 'NoneType' object is not iterable

Yandex.Station 2.2.8
Home Assistant 0.114.3

Should use `tts.yandex_station_say` service

При попытке выполнить команду или произнести фразу из медиаплеера возникает ошибка:
Should use tts.yandex_station_say service

Перестали работать все виды TTS

При использовании любого из трёх вариантов TTS колонка молчит. При этом возможность управлять музыкой и громкостью сохраняется (по локальному протоколу).
Проверено на двух Яндекс Мини.

Я заметил, что интерфейс сценариев в Квазаре слегка изменился, может, и в апи изменения какие-то произошли? Однако это не объяснит нерабочий TTS по локальному протоколу.

В логах ошибок нет, только штатные дебаг-выводы.

HA не перезагружается из web-интерфейса: Station connect error

...а из systemctl перезагружается, но только через 1-2 минуты по SIGKILL.
Конфигурация: homeassistant-0.109.2 in a Virtual Environment (до этого был 108.6 с теми же симптомами)
Версия Python:
Package: python3.7
Version: 3.7.3-2+deb10u1

Последние строки в "syslog | grep hass":

May 2 00:09:23 pi-redarmy hass[15021]: 2020-05-02 00:09:23 ERROR (MainThread) [homeassistant.core] Error doing job: Future exception was never retrieved
May 2 00:09:23 pi-redarmy hass[15021]: Traceback (most recent call last):
May 2 00:09:23 pi-redarmy hass[15021]: File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
May 2 00:09:23 pi-redarmy hass[15021]: result = self.fn(*self.args, **self.kwargs)
May 2 00:09:23 pi-redarmy hass[15021]: File "/srv/homeassistant/lib/python3.7/site-packages/homeassistant/components/zeroconf/init.py", line 111, in stop_zeroconf
May 2 00:09:23 pi-redarmy hass[15021]: zeroconf.close()
May 2 00:09:23 pi-redarmy hass[15021]: File "/srv/homeassistant/lib/python3.7/site-packages/zeroconf/init.py", line 2654, in close
May 2 00:09:23 pi-redarmy hass[15021]: # on send errors, log the exception and keep going
May 2 00:09:23 pi-redarmy hass[15021]: File "/srv/homeassistant/lib/python3.7/site-packages/zeroconf/init.py", line 1239, in del_reader
May 2 00:09:23 pi-redarmy hass[15021]: KeyError: <socket.socket [closed] fd=-1, family=AddressFamily.AF_INET, type=SocketKind.SOCK_DGRAM, proto=0>
May 2 00:09:23 pi-redarmy hass[15021]: 2020-05-02 00:09:23 ERROR (MainThread) [custom_components.yandex_station.utils] Station connect error:

(последняя строчка отсутствует в логе HA, но есть в syslog, поэтому приложил именно его)

LG XBOOM

Привет

Я владею LG XBOOM и яндекс мини. Удачно смог запустить локальный режим на мини.

Локальный режим на XBOOM не запускается, могу помочь потестировать, если есть желание допилить функционал для LG

SSL error

aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host yandex.ru:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate (_ssl.c:1076)')]

Steps to reproduse - install and try to make something with station

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.