yandex_smart_home
yandex_smart_home copied to clipboard
Расширить features в entity_config
Добавить play_pause и возможно другие. Кейс: universal mediaplayer с children. Дополнительно подумать о кешировании features (3508 когда ТВ выключен, 155581 при включенном).
см. https://t.me/yandex_smart_home/31853
Интересную особенность увидел. Похоже universal когда все childs выключены не отдает реальный список фич.
Вот например интеграция LG Netcast:
Выключенный оригинал: supported_features: 20413
Эта же сущность через universal, команды on/off в оверайде: supported_features: 384
Благодаря этому, УДЯ также успешно теряет навык каналов (да и другие тоже) при обновлении с выключенным ТВ.
Теперь нужно понять связанно ли это с этим кривым PR, который пришлось фиксить еще потом. Раньше такого не замечал. И вообще насколько это поведение правильное. Как по мне - universal при всех выключенных childs должен отдавать supported_features от первого плеера в списка. Хотя, если взглянуть с другой стороны, то все верно - плеер выключен и список фич соответствует выключенному (пустому) universal. Upd: Да, похоже, это связанно с этим PR - ранее было как я описал в первом случае, сейчас как во втором.
С этими динамическими supported_features конечно лучшее решение было бы их обновлять. Но насколько я помню из нашего раннего разговора это пока затратно.
https://github.com/dext0r/yandex_smart_home/commit/27df1e54cc255c313f2cd9e15e36c58472e947d2
Эх, еще бы play_media добавить, так как:
Благодаря этому, УДЯ также успешно теряет навык каналов (да и другие тоже) при обновлении с выключенным ТВ.
Вообще, я бы этот список features превратил бы в dict[str, bool] чтобы можно было явно включать или принудительно выключать навык. Тогда, можно было бы избавиться от отдельной крутилки support_set_channel, которая его только принудительно выключает. Наверное и новую state_unknown можно было бы туда поместить как state: false.
Эх, еще бы play_media добавить, так как:
Да, действительно нужен, добавил.
Вообще, я бы этот список features превратил бы в dict[str, bool] чтобы можно было явно включать или принудительно выключать навык. Тогда, можно было бы избавиться от отдельной крутилки support_set_channel, которая его только принудительно выключает.
Я всё ещё надеюсь на большие изменения в ядре HA для медиаплееров, потому что сейчас это очень похоже на кучу костылей, которую вряд ли получится адекватно сделать :) А от support_set_channel не получится отказаться, он управляет поведением +/- для каналов.