dext0r / yandex_smart_home

Adds support for Yandex Smart Home (Alice voice assistant) into Home Assistant
https://docs.yaha-cloud.ru
MIT License
773 stars 108 forks source link

Новый способ настроить кнопки #395

Closed dext0r closed 2 years ago

dext0r commented 2 years ago

На текущий момент нет единого механизма, который позволит единообразно настроить кнопки для передачи в УДЯ. Реализация кнопок в HA - это зоопарк, кнопки бывают:

  1. В виде entity, у которой в state появляется click, double_click и т.п. - автоматически не обнаружить, нет device_class. Такая реализация в AlexxIT/XiaomiGateway3
  2. Как первая, только в state ничего не появляется, а при клике бросается событие: например xiaomi_aqara.click в ядерной интеграции xiaomi_aqara
  3. Только в виде событий Device Automation - entity нет вообще, а действия могут быть любыми. Такие кнопки в zigbee2mqtt с выключенным legacy режимом.

Предлагается сделать настройку кнопок через YAML в настройках интеграции (GUI позже):

yandex_smart_home:
  button:
    - platform: state  # для кнопок 1
      entity_id: sensor.some_button_action

    - platform: event  # для кнопок 2
      entity_id: sensor.xiaomi_button
      event_type: xiaomi_aqara.click

    - platform: device  # z2m через device automation
      device_id: 2842b2316f4f28b5354e8b0de3aad924  # это и следующее поле можно будет взять из конструктора автоматизаций
      type: action
      actions:  # маппинг удя-ха, по дефолту будут смаплены "популярные события", возможен для всех платформ
         click: brightness_move_up
         double_click: 'on'
dext0r commented 2 years ago

Углубленное исследование показало, что предложенный вариант нереализуем малой кровью. Остаёмся на реализации через input_text и автоматизации, но добавим два улучшения:

  1. Отметка "эта кнопка" через entity_config, а не customize (плохо вводить HA в заблуждение странным классом device_class: button
  2. Полностью переписать документацию по кнопкам, чтобы было наверняка понять как нужно настраивать в каких случаях