yandex_smart_home
yandex_smart_home copied to clipboard
Хелперы в пользовательских умениях
Типичный сценарий для пользовательских умений - подключить switch или number в качество toggle или range соответственно. При этом приходится описывать вручную сервисы включения/выключения/увеличения/уменьшения. В итоге это выглядит монструозно:
yandex_smart_home:
entity_config:
switch.foo:
custom_toggles:
ionization:
state_entity_id: switch.ion
turn_on:
action: switch.turn_on
entity_id: switch.ion
turn_off:
action: switch.turn_off
entity_id: switch.ion
custom_ranges:
temperature:
state_entity_id: input_number.bar
set_value:
action: input_number.set_value
entity_id: input_number.bar
data:
value: '{{ value }}'
increase_value:
action: input_number.increment
entity_id: input_number.bar
decrease_value:
action: input_number.decrement
entity_id: input_number.bar
range:
min: 0
max: 1000
precision: 0.1
Для многих доменов мы уже знаем сервисы для управления ими и параметры. Например для number, мы знаем не только сервисы для set/increase/decrease, но и даже range! Для упрощения конфигурирования пользовательских умений можно просто передавать объект, которым хочется управлять, а компонент должен сам определить сервисы и параметры. В конфиге это может выглядеть как-то так:
yandex_smart_home:
entity_config:
switch.foo:
custom_toggles:
ionization:
entity_id: switch.ion
custom_ranges:
temperature:
entity_id: input_number.bar
Важно: при таком сокращении нужно запрещать конфигурировать остальные параметры, так как это усложнит понимание результирующей конфигурации. То есть возможны два пути: либо короткий через entity_id, либо длинный через state_* + сервисы (как сейчас).