AlexxIT / YandexStation

Управление Яндекс.Станцией и другими устройствами умного дома с Алисой из Home Assistant
https://t.me/AlexxIT_SmartHome
MIT License
1.35k stars 123 forks source link

Не работает стриминг музыки. #330

Closed urtaevS closed 11 months ago

urtaevS commented 1 year ago

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

voron92 commented 1 year ago

Такая же проблема, появилась около 3 дней назад. Пробовал передавать звук на dlna ресивер, а так же через chomecast на телек, поведение везде одинаково, первую песню играет, и дальше через раз воспроизводит, можно переключать песни, какие то передаёт, какие то нет. Ставил новый сервер ХА на виртуалку, такие же проблемы, может в яндексе что то сделали? Колонка яндекс станция 2

donskoyv commented 1 year ago

Аналогичная проблема. Играет 1-2 песни и стрим прерывается. Причем Яндекс станция продолжает играть. На двух разных серверах ХА в разных локациях ситуация одинаковая. Причем в первом случае стрим идёт на устройство Chromecast, а вот втором на dlna. Неделю назад все работало без проблем.

mitrokun commented 1 year ago

Использую стример Arylic. Изначально заметил, что интеграция Yandex отказывается транслировать звук на него, если проигрывать плейлисты залитые самолично. Но с Волной и прочим аудиоконтентом на платформе проблем не возникало, пока использовал media_player через интеграцию linkplay.

Когда подключил этот же стример, но через DLNA интеграцию, и стал использовать его как источник для станции, то периодически возникает ошибка. Из-за неё ссылка на новый трек не отправляется интеграцией на воспроизводящее устройство (плеер переходит в idle состояние с media_position на несколько секунд меньше полной длины трека). Получаются пропуски в потоке до следующей смены трека. Во время таких пропусков можно поставить на паузу и опять включить, тогда ссылка обновится и воспроизведение начнется с начала трека. Пока решил проблему простой автоматизацией, если плеер в простое 5 секунд, а станция в процессе стриминга на него, то выполняем пауза - воспроизведение. Кто является причиной этого (реализация поддержки dlna в устройсве, интеграция DMR или интеграция Станции) не имею понятия. Лог ошибки:

2023-01-11 14:07:57.237 ERROR (MainThread) [homeassistant.core] Error executing service: <ServiceCall media_player.media_pause (c:01GPG87SXKFKPHD4DQCV8F6D1G): entity_id=['media_player.bedroom']>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/core.py", line 1763, in catch_exceptions
await coro_or_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1782, in _execute_service
await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 213, in handle_service
await service.entity_service_call(
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 655, in entity_service_call
raise HomeAssistantError(
homeassistant.exceptions.HomeAssistantError: Entity media_player.bedroom does not support this service.
ildmgithub commented 1 year ago

По данной проблеме как я понимаю нет новостей. У меня тоже прерывается стрим на chromecast после проигрывания 1-2 треков. Колонка продолжает воспроизведение в приглушенном режиме.

BarkanovSergey commented 1 year ago

Подтверждаю. В большей или меньшей степени эта проблема проявляется уже несколько месяцев. Транслирую с Яндекс лайт на KODI. Пробовал установить KODI на другое устройство и другой версии. Отключал доступ по https, чтобы был доступ по внутреннему ip-адресу. Изменений никаких: через произвольное количество треков трансляция прерывается, переключив источник на станцию и обратно, продолжается. Замечу, что похожим образом начал вести себя плагин Яндекс.музыка (установленный на KODI, не имеющий отношения к home assistant) - также через произвольное число треков трансляция прерывается.

guru31337 commented 1 year ago

Столкнулся с такой же проблемой и вижу, что тема уже полгода как актуальна. Для себя пока сделал костыль, поделюсь - может кому поможет. У меня звук выводится на MPD, но думаю, что по аналогии можно настроить на любое устройство. Суть проблемы - иногда в момент начала воспроизведения нового трека и отправки его на плеер, тот просто выключается, то есть переходит в состояние off. Но трек в него при этом передаётся и если плеер просто включить, то всё начинает играть. Поэтому костыль работает так - по триггеру состояния станции media_position (Положение), то есть каждую секунду, срабатывает условие, которое проверяет включен ли плеер. Если включен, то ничего не происходит, а если выключен, то он включается. По факту, при прослушивании, если вылезает вышеописанная проблема, Станция может чуть икнуть (на секунду начать воспроизведение), но потом замолкает и воспроизведение начинается на плеере.

Код этой автоматизации:

  alias: Музыка С Алисой - Костыль для MPD
  description: ''
  trigger:
  - platform: state
    entity_id:
    - media_player.yandex_station_u007mt000dvgne
    attribute: media_position
  condition:
  - condition: state
    entity_id: media_player.mpd
    state: 'off'
  action:
  - service: media_player.turn_on
    data: {}
    target:
      entity_id: media_player.mpd
  mode: single
voron92 commented 1 year ago

Вот бы еще автоматизацию при переключении треков. Когда переключаешь треки с колонки не всегда переключается трек на внешнем устройстве. у себя сделал автоматизацию, когда говоришь например: алиса перезапусти, то посылается команда на колонку пауза и следом воспроизведение, тогда запускается новый трек на внешнем устройстве. Хотелось бы все это дело автоматизировать.

guru31337 commented 1 year ago

Я сделал через состояние Станции - alice_state (Alice state) - когда статус меняется с одного на другой, вот статусы:

Во-первых сделал постановку на паузу плеера, когда активируется Алиса, чтобы команда лучше воспринималась при высокой громкости:

- id: '1683204520688'
  alias: Музыка С Алисой - Слушать команду
  description: ''
  trigger:
  - platform: state
    entity_id:
    - media_player.yandex_station_u007mt000dvgne
    attribute: alice_state
    to: LISTENING
    from: IDLE
  condition: []
  action:
  - service: media_player.media_pause
    data: {}
    target:
      entity_id: media_player.mpd
  mode: single

Ну и запуск плеера после команды (заодно условие - если Станция на паузе, то музыка не заиграет, пока не снимешь с паузы):

- id: '1683204687130'
  alias: Музыка С Алисой - После команды Play
  description: ''
  trigger:
  - platform: state
    entity_id:
    - media_player.yandex_station_u007mt000dvgne
    attribute: alice_state
    from: LISTENING
    to: IDLE
  condition:
  - condition: not
    conditions:
    - condition: state
      entity_id: media_player.yandex_station_u007mt000dvgne
      state: paused
  action:
  - service: media_player.media_play
    data: {}
    target:
      entity_id: media_player.mpd
  mode: single

И саму паузу, чтобы уж всё было)

- id: '1683207544521'
  alias: Музыка С Алисой - Пауза
  description: ''
  trigger:
  - platform: device
    device_id: d082c59a30898e26f05c4790a5c8634a
    domain: media_player
    entity_id: media_player.yandex_station_u007mt000dvgne
    type: paused
  condition: []
  action:
  - service: media_player.media_pause
    data: {}
    target:
      entity_id: media_player.mpd
  mode: single

Пока это весь мой комплект костылей)

Den-88 commented 11 months ago

И у меня аналогичная проблема при трансляции на хромкаст.

AlexxIT commented 11 months ago

https://github.com/AlexxIT/YandexStation/releases/tag/v3.12.5