yandex_smart_home icon indicating copy to clipboard operation
yandex_smart_home copied to clipboard

Расширить features в entity_config

Open dext0r opened this issue 3 years ago • 1 comments
trafficstars

Добавить play_pause и возможно другие. Кейс: universal mediaplayer с children. Дополнительно подумать о кешировании features (3508 когда ТВ выключен, 155581 при включенном).

см. https://t.me/yandex_smart_home/31853

dext0r avatar Jul 28 '22 16:07 dext0r

Интересную особенность увидел. Похоже universal когда все childs выключены не отдает реальный список фич.

Вот например интеграция LG Netcast:

Выключенный оригинал: supported_features: 20413 Эта же сущность через universal, команды on/off в оверайде: supported_features: 384

Благодаря этому, УДЯ также успешно теряет навык каналов (да и другие тоже) при обновлении с выключенным ТВ.

Теперь нужно понять связанно ли это с этим кривым PR, который пришлось фиксить еще потом. Раньше такого не замечал. И вообще насколько это поведение правильное. Как по мне - universal при всех выключенных childs должен отдавать supported_features от первого плеера в списка. Хотя, если взглянуть с другой стороны, то все верно - плеер выключен и список фич соответствует выключенному (пустому) universal. Upd: Да, похоже, это связанно с этим PR - ранее было как я описал в первом случае, сейчас как во втором.

С этими динамическими supported_features конечно лучшее решение было бы их обновлять. Но насколько я помню из нашего раннего разговора это пока затратно.

Drafteed avatar Jul 29 '22 14:07 Drafteed

https://github.com/dext0r/yandex_smart_home/commit/27df1e54cc255c313f2cd9e15e36c58472e947d2

Эх, еще бы play_media добавить, так как:

Благодаря этому, УДЯ также успешно теряет навык каналов (да и другие тоже) при обновлении с выключенным ТВ.

Drafteed avatar Aug 30 '22 13:08 Drafteed

Вообще, я бы этот список features превратил бы в dict[str, bool] чтобы можно было явно включать или принудительно выключать навык. Тогда, можно было бы избавиться от отдельной крутилки support_set_channel, которая его только принудительно выключает. Наверное и новую state_unknown можно было бы туда поместить как state: false.

Drafteed avatar Aug 30 '22 13:08 Drafteed

Эх, еще бы play_media добавить, так как:

Да, действительно нужен, добавил.

Вообще, я бы этот список features превратил бы в dict[str, bool] чтобы можно было явно включать или принудительно выключать навык. Тогда, можно было бы избавиться от отдельной крутилки support_set_channel, которая его только принудительно выключает.

Я всё ещё надеюсь на большие изменения в ядре HA для медиаплееров, потому что сейчас это очень похоже на кучу костылей, которую вряд ли получится адекватно сделать :) А от support_set_channel не получится отказаться, он управляет поведением +/- для каналов.

dext0r avatar Aug 30 '22 14:08 dext0r