Fix mode switching in ERS light dial

This commit is contained in:
Nate Harris 2023-08-04 11:35:15 -06:00 committed by GitHub
parent 9807e810fb
commit 38ded1e467
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 10 deletions

View File

@ -4,8 +4,6 @@ blueprint:
name: ERS Rotary Dial - Light Control
description: Control light brightness, hue and color with an ERS rotary dial
source_url: https://raw.githubusercontent.com/nwithan8/configs/main/home_assistant/blueprints/automations/ers_rotary_dial_light_control.yaml
domain: automation
input:
@ -16,8 +14,8 @@ blueprint:
entity:
filter:
- domain:
- light
- group
- light
- group
multiple: false
dial:
@ -61,8 +59,9 @@ blueprint:
filter:
domain: input_number
# Only single, otherwise could flood with attempts
mode: single
# Queued, to ignore non-matched events but capture existing ones
mode: queued
max: 20
max_exceeded: silent
variables:
@ -89,7 +88,12 @@ variables:
max_hue: "{{ state_attr(hue_tracker, 'max') | int }}"
# How many steps to go full min-max spectrum
hue_steps: "{{ full_rotate_step_count * 2 | int }}"
hue_delta: "{{ (trigger.event.data.params.step_size | float(0) / hue_steps) * (max_hue - min_hue) }}"
hue_delta: >
{% if trigger.event.data.command != 'step' %}
{{ 0 }}
{% else %}
{{ (trigger.event.data.params.step_size | float(0) / hue_steps) * (max_hue - min_hue) }}
{% endif %}
# don't loop when reached max or min
next_hue: >
{%- set val = states(hue_tracker) | float(0) -%}
@ -108,7 +112,12 @@ variables:
max_brightness: "{{ state_attr(brightness_tracker, 'max') | int }}"
# How many steps to go full min-max spectrum
brightness_steps: "{{ full_rotate_step_count * 2 | int }}"
brightness_delta: "{{ (trigger.event.data.params.step_size | float(0) / brightness_steps) * (max_brightness - min_brightness) }}"
brightness_delta: >
{% if trigger.event.data.command != 'step' %}
{{ 0 }}
{% else %}
{{ (trigger.event.data.params.step_size | float(0) / brightness_steps) * (max_brightness - min_brightness) }}
{% endif %}
# don't loop when reached max or min
next_brightness: >
{%- set val = states(brightness_tracker) | float(0) -%}
@ -127,7 +136,12 @@ variables:
max_color: "{{ state_attr(color_tracker, 'max') | int }}"
# How many steps to go full min-max spectrum
color_steps: "{{ full_rotate_step_count * 3 | int }}"
color_delta: "{{ (trigger.event.data.params.step_size | float(0) / color_steps) * (max_color - min_color) }}"
color_delta: >
{% if trigger.event.data.command != 'step' %}
{{ 0 }}
{% else %}
{{ (trigger.event.data.params.step_size | float(0) / color_steps) * (max_color - min_color) }}
{% endif %}
# loop when reached max or min
next_color: >
{%- set val = states(color_tracker) | float(0) -%}
@ -144,7 +158,6 @@ variables:
{%- endif -%}
{{ val | int }}
trigger:
- platform: event
event_type: zha_event