Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Возврат любых доступных ошибок при управлении устройством #437

Closed
dext0r opened this issue Feb 16, 2023 · 3 comments
Labels
enhancement New feature or request
Milestone

Comments

@dext0r
Copy link
Owner

dext0r commented Feb 16, 2023

Сейчас при управлении устройством компонент умеет возвращать ограниченный набор ошибок ("устройство недоступно", "что-то пошло не так", "не поддерживается в текущем режиме"). УДЯ поддерживает куда больше ошибок (полный список), которая Алиса может озвучить.

Из интересных:

  • Недостаточно воды - мастхев для чайников, привет DIYщикам с HX711 ;)
  • Устройство застряло - пылесосы? (кейс придумать не могу, не владею :))
  • Удаленное управление устройством отключено - когда пытаешься включить кондиционер в -30 (а это очень плохая идея)

Сам HA никак не умеет возвращать адекватные ошибки при вызове сервисов, поэтому ошибку должен формировать компонент. Предлагается добавить в entity_config настройку error_code_template, в которой задавать шаблон, возвращающий код ответа. При получении команды на управление устройство этот шаблон будет рендерится (с передачей сырого capability), и если при рендеринге вернулось значение - отдавать его в качестве error_code в сторону УДЯ.

Пример как это может выглядеть:

yandex_smart_home:
  entity_config:
    climate.kettle:
      error_code_template: |
        {% if capability.type == 'devices.capabilities.on_off' and capability.state.instance == 'on' and capability.state.value %}
          {% if states('sensor.kettle_water_level')|int(0) < 10 %}  # тут 10 - это проценты
            NOT_ENOUGH_WATER
          {% endif %}
        {% endif %}

Содержимое capability для включения:

{
  "type": "devices.capabilities.on_off",
  "state": {
    "instance": "on",
     "value": false
  }
}
@dext0r dext0r added the enhancement New feature or request label Feb 16, 2023
@Sergey-SRG
Copy link

Недостаточно воды - не только для чайников но и для увлажнителя тоже крутая штука будет!

@dext0r dext0r added this to the v0.7.0 milestone Feb 20, 2023
@dext0r dext0r closed this as completed in f2e7e66 Feb 20, 2023
@Sergey-SRG
Copy link

Sergey-SRG commented Mar 12, 2023

Все отлично работает, не дает выключить!

Screenshot_2023-03-13-01-48-07-559_com.yandex.iot.jpg

switch.smart_energy_meter_switch:
      name: Электросеть
      properties:
        - type: voltage
          entity: sensor.smart_energy_meter_voltage
        - type: amperage
          entity: sensor.smart_energy_meter_current
        - type: power
          entity: sensor.smart_energy_meter_power
      error_code_template: |
        {% if capability.type == 'devices.capabilities.on_off' and capability.state.instance == 'on' and capability.state.value == false%}
            REMOTE_CONTROL_DISABLED
        {% endif %}

@dext0r
Copy link
Owner Author

dext0r commented Jan 10, 2024

Добавить в контекста шаблона entity_id и проверить, что это работает с шаблонными макросами

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants