Created
January 14, 2024 19:40
-
-
Save abefroman77/74391ab0c59bb4c5197fcfc1aa59c928 to your computer and use it in GitHub Desktop.
Home Assistant Blueprint for Philips Dial Switch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: Philips Tap Dial Switch | |
description: 'Control lights with a Philips Hue Tap Switch. Use the four buttons | |
to control up to four light(s) with an on/off toggle. The dial can be used to | |
dim the most recently used light. ' | |
domain: automation | |
input: | |
remote: | |
name: Philips Hue Tap Switch | |
selector: | |
device: | |
integration: zha | |
manufacturer: Signify Netherlands B.V. | |
model: RDM002 | |
multiple: false | |
first_light: | |
name: First Light | |
description: The light(s) to control with first button | |
selector: | |
target: | |
entity: | |
- {} | |
first_script: | |
name: (OPTIONAL) On/Off Script for First Light | |
description: Script to call if you do not want to use a simple toggle command for the first light. | |
default: | |
selector: | |
entity: | |
domain: | |
- script | |
multiple: false | |
second_light: | |
name: (OPTIONAL) Second Light | |
description: The light(s) to control with second button | |
default: {} | |
selector: | |
target: | |
entity: | |
- {} | |
second_script: | |
name: (OPTIONAL) On/Off Script for Second Light | |
description: Script to call if you do not want to use a simple toggle command for the second light. | |
default: | |
selector: | |
entity: | |
domain: | |
- script | |
multiple: false | |
third_light: | |
name: (OPTIONAL) Third Light | |
description: The light(s) to control with third button | |
default: {} | |
selector: | |
target: | |
entity: | |
- {} | |
third_script: | |
name: (OPTIONAL) On/Off Script for Third Light | |
description: Script to call if you do not want to use a simple toggle command for the third light. | |
default: | |
selector: | |
entity: | |
domain: | |
- script | |
multiple: false | |
fourth_light: | |
name: (OPTIONAL) Fourth Light | |
description: The light(s) to control with fourth button | |
default: {} | |
selector: | |
target: | |
entity: | |
- {} | |
fourth_script: | |
name: (OPTIONAL) On/Off Script for Fourth Light | |
description: Script to call if you do not want to use a simple toggle command for the fourth light. | |
default: | |
selector: | |
entity: | |
domain: | |
- script | |
multiple: false | |
current_light: | |
name: (OPTIONAL) Current Light | |
description: Text helper to track the current light to dim. Set for the dimmer | |
controls to change which light they are controlling according to the last | |
one turned on. | |
default: | |
selector: | |
entity: | |
domain: | |
- input_text | |
multiple: false | |
dim_scale: | |
name: Diming Scale | |
description: Scale factor for the dimming. This value will be multiplied by | |
the value given from the dial. So lower number, more gradual dimming. Larger | |
number, faster dimming. | |
default: 0.2 | |
selector: | |
number: | |
min: 0.0 | |
max: 5.0 | |
step: 0.01 | |
mode: slider | |
min_brightness: | |
name: Minimum brightness | |
description: Minimum brightness (as a percent) to dim the light to. Setting this value above 0 will not allow the light to turn off when dimming the light. Leaving the default value of 0 will turn the light off while dimming. | |
default: 5 | |
selector: | |
number: | |
min: 0 | |
max: 100 | |
step: 1 | |
mode: slider | |
max_brightness: | |
name: Maximum brightness | |
description: Maximum brightness (as a percent) to dim the light to. Setting this value below 100 will limit the maximum brightness when dimming the light. | |
default: 100 | |
selector: | |
number: | |
min: 0 | |
max: 100 | |
step: 1 | |
mode: slider | |
source_url: https://github.com/apollo1220/blueprints/blob/main/philips_zigbee_dial.yaml | |
mode: restart | |
max_exceeded: silent | |
variables: | |
first_light: !input first_light | |
first_script: !input first_script | |
second_light: !input second_light | |
second_script: !input second_script | |
third_light: !input third_light | |
third_script: !input third_script | |
fourth_light: !input fourth_light | |
fourth_script: !input fourth_script | |
current_light: !input current_light | |
dim_scale: !input dim_scale | |
min_brightness: !input min_brightness | |
max_brightness: !input max_brightness | |
lights: | |
first_light: !input first_light | |
second_light: !input second_light | |
third_light: !input third_light | |
fourth_light: !input fourth_light | |
trigger: | |
- platform: event | |
event_type: zha_event | |
event_data: | |
device_id: !input remote | |
action: | |
- variables: | |
current_id: '{{ lights[states(current_light)].entity_id }}' | |
command: '{{ trigger.event.data.command }}' | |
args: '{% if (trigger.event.data.args is defined) %}{{trigger.event.data.args}}{% | |
endif %}' | |
params: '{% if (trigger.event.data.params is defined) %}{{trigger.event.data.params}}{% | |
endif %}' | |
step_size: '{% if (trigger.event.data.params is defined) and (trigger.event.data.params.step_size | |
is defined) %}{{trigger.event.data.params.step_size}}{% else %}{{ 1 }}{% endif %}' | |
step_mode: '{% if (trigger.event.data.params is defined) and (trigger.event.data.params.step_mode | |
is defined) %}{{trigger.event.data.params.step_mode}}{% endif %}' | |
scene: '{% if (trigger.event.data.params is defined) and (trigger.event.data.params.scene_id | |
is defined) %}{{trigger.event.data.params.scene_id}}{% endif %}' | |
pct_change: '{% if step_size != none and dim_scale != none %} {{ (step_size * dim_scale) | int }} {% else %} {{ 1 }} {% endif %}' | |
current_brightness: '{% if current_light != none and current_id != none and state_attr(current_id, ''brightness'') != none %} {{ (( state_attr(current_id, ''brightness'') / 254 ) * 100 ) | int }} {% else %} {{ 0 }} {% endif %}' | |
up_pct: '{% if current_brightness + pct_change > max_brightness %} | |
{{ (max_brightness - current_brightness) | int }} | |
{% else %} | |
{{ pct_change }} | |
{% endif %}' | |
down_pct: '{% if current_brightness - pct_change < min_brightness %} | |
{{ (current_brightness - min_brightness) | int }} | |
{% else %} | |
{{ -pct_change }} | |
{% endif %}' | |
- choose: | |
- conditions: | |
- '{{ command == ''recall'' }}' | |
- '{{ scene == 1 }}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{ first_script != none }}' | |
sequence: | |
- service: script.turn_on | |
target: | |
entity_id: '{{ first_script }}' | |
default: | |
- service: homeassistant.toggle | |
target: !input first_light | |
- choose: | |
- conditions: '{{ current_light != none }}' | |
sequence: | |
- service: input_text.set_value | |
target: | |
entity_id: !input current_light | |
data: | |
value: first_light | |
- variables: | |
current_id: '{{ first_light }}' | |
- conditions: | |
- '{{ command == ''recall'' }}' | |
- '{{ second_light != none }}' | |
- '{{ scene == 0 }}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{ second_script != none }}' | |
sequence: | |
- service: script.turn_on | |
target: | |
entity_id: '{{ second_script }}' | |
default: | |
- service: homeassistant.toggle | |
target: !input second_light | |
- choose: | |
- conditions: '{{ current_light != none }}' | |
sequence: | |
- variables: | |
current_id: '{{ second_light }}' | |
- service: input_text.set_value | |
target: | |
entity_id: !input current_light | |
data: | |
value: second_light | |
- conditions: | |
- '{{ command == ''recall'' }}' | |
- '{{ third_light != none }}' | |
- '{{ scene == 5 }}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{ third_script != none }}' | |
sequence: | |
- service: script.turn_on | |
target: | |
entity_id: '{{ third_script }}' | |
default: | |
- service: homeassistant.toggle | |
target: !input third_light | |
- choose: | |
- conditions: '{{ current_light != none }}' | |
sequence: | |
- service: input_text.set_value | |
target: | |
entity_id: !input current_light | |
data: | |
value: third_light | |
- variables: | |
current_id: '{{ third_light }}' | |
- conditions: | |
- '{{ command == ''recall'' }}' | |
- '{{ fourth_light != none }}' | |
- '{{ scene == 4 }}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{ fourth_script != none }}' | |
sequence: | |
- service: script.turn_on | |
target: | |
entity_id: '{{ fourth_script }}' | |
default: | |
- service: homeassistant.toggle | |
target: !input fourth_light | |
- choose: | |
- conditions: '{{ current_light != none }}' | |
sequence: | |
- service: input_text.set_value | |
target: | |
entity_id: !input current_light | |
data: | |
value: fourth_light | |
- variables: | |
current_id: '{{ fourth_light }}' | |
- conditions: | |
- '{{ command == ''step_with_on_off'' }}' | |
- '{{ step_mode == ''StepMode.Up'' }}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{ current_light != none }}' | |
- '{{ up_pct != none }}' | |
sequence: | |
- service: light.turn_on | |
target: '{{ lights[states(current_light)] }}' | |
data: | |
brightness_step_pct: '{{ up_pct }}' | |
transition: 1 | |
default: | |
- service: light.turn_on | |
target: !input first_light | |
data: | |
brightness_step_pct: '{{ pct_change }}' | |
transition: 1 | |
- conditions: | |
- '{{ command == ''step_with_on_off'' }}' | |
- '{{ step_mode == ''StepMode.Down'' }}' | |
sequence: | |
- choose: | |
- conditions: | |
- '{{ current_light != none }}' | |
- '{{ down_pct != none }}' | |
sequence: | |
- service: light.turn_on | |
target: '{{ lights[states(current_light)] }}' | |
data: | |
brightness_step_pct: '{{ down_pct }}' | |
transition: 1 | |
default: | |
- service: light.turn_on | |
target: !input first_light | |
data: | |
brightness_step_pct: '{{ -pct_change }}' | |
transition: 1 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment