Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save RagingRoosevelt/2d8de699a7b715011c49df2646821fba to your computer and use it in GitHub Desktop.

Select an option

Save RagingRoosevelt/2d8de699a7b715011c49df2646821fba to your computer and use it in GitHub Desktop.
This home assistant blueprint allows you to use the buttons on a hue dial controller to toggle several lights and switch between adaptive lighting mode and "work mode"
blueprint:
name: Hue Dial Adaptive Lighting Controller
description: Control several adaptive-lighting-associated devices with a hue dial
domain: automation
input:
hue_dial:
name: Hue Dial Device
description: Dial device from your zigbee2mqtt integration
selector:
device:
integration: mqtt
text_helper_recent_target:
name: '"Last Target" Helper Entity'
description: Helper entity to track last targeted device when turning the brightness dial
selector:
entity:
domain: input_text
timer_helper_reset_recent_target:
name: '"Last Target" Reset Timer'
description: 'Helper entity to trigger reset of "Last Target" helper'
selector:
entity:
domain: timer
button_1_group:
name: "Button #1"
collapsed: false
icon: mdi:numeric-1-box
input:
light_1:
name: "Light entity"
selector:
entity:
domain: light
multiple: true
adaptive_lighting_1:
name: "Adaptive Lighting Switch"
selector:
entity:
domain: switch
integration: adaptive_lighting
multiple: true
recent_target_string_1:
name: '"Last Target" ID String'
description: String for identifying the target for the first button
selector:
text:
default: "Light 1"
button_2_group:
name: "Button #2"
collapsed: true
icon: mdi:numeric-2-box
input:
light_2:
name: "Light entity"
default: []
selector:
entity:
domain: light
multiple: true
adaptive_lighting_2:
name: "Adaptive Lighting Switch"
default: []
selector:
entity:
domain: switch
integration: adaptive_lighting
multiple: true
recent_target_string_2:
name: '"Last Target" ID String'
description: String for identifying the target for the second button
selector:
text:
default: "Light 2"
button_3_group:
name: "Button #3"
collapsed: true
icon: mdi:numeric-3-box
input:
light_3:
name: "Light entity"
default: []
selector:
entity:
domain: light
multiple: true
adaptive_lighting_3:
name: "Adaptive Lighting Switch"
default: []
selector:
entity:
domain: switch
integration: adaptive_lighting
multiple: true
recent_target_string_3:
name: '"Last Target" ID String'
description: String for identifying the target for the third button
selector:
text:
default: "Light 3"
button_4_group:
name: "Button #4"
collapsed: true
icon: mdi:numeric-4-box
input:
light_4:
name: "Light entity"
default: []
selector:
entity:
domain: light
multiple: true
adaptive_lighting_4:
name: "Adaptive Lighting Switch"
default: []
selector:
entity:
domain: switch
integration: adaptive_lighting
multiple: true
recent_target_string_4:
name: '"Last Target" ID String'
description: String for identifying the target for the fourth button
selector:
text:
default: "Light 4"
addtl_settings:
name: Additional Settings
collapsed: true
icon: mdi:cog
input:
work_mode_brightness:
name: '"Work Mode" brightness'
description: 'The brightness that lights should be set to when put into "Work Mode" with a button hold'
selector:
number:
min: 0
max: 100
step: 1
mode: slider
default: 100
brightness_step_amount:
name: "Brightness Step Amount"
description: "How much should the brightness change when turning the dial?"
selector:
number:
min: 1
max: 100
step: 1
mode: slider
default: 10
triggers:
- id: recent_target_reset_timer_fired
trigger: state
entity_id:
- !input timer_helper_reset_recent_target
from: active
to: idle
- id: dial_rotate_right_fast
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: dial_rotate_right_fast
- id: dial_rotate_right_slow
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: dial_rotate_right_slow
- id: dial_rotate_left_fast
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: dial_rotate_left_fast
- id: dial_rotate_left_slow
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: dial_rotate_left_slow
- id: button_1_press_release
type: action
subtype: button_1_press_release
device_id: !input hue_dial
trigger: device
domain: mqtt
- id: button_2_press_release
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_2_press_release
- id: button_3_press_release
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_3_press_release
- id: button_4_press_release
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_4_press_release
- id: button_1_hold
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_1_hold
- id: button_2_hold
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_2_hold
- id: button_3_hold
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_3_hold
- id: button_4_hold
trigger: device
domain: mqtt
device_id: !input hue_dial
type: action
subtype: button_4_hold
actions:
- choose:
- conditions:
- id: recent_target_reset_timer_fired
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: ""
target:
entity_id: !input text_helper_recent_target
- conditions:
- id: button_1_hold
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_1
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: !input adaptive_lighting_1
- if:
- condition: state
entity_id: !input adaptive_lighting_1
state: "on"
then:
- action: light.turn_on
metadata: {}
data: {}
target:
entity_id: !input light_1
else:
- action: light.turn_on
metadata: {}
data:
brightness_pct: !input work_mode_brightness
target:
entity_id: !input light_1
- conditions:
- id: button_2_hold
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_2
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: !input adaptive_lighting_2
- if:
- condition: state
entity_id: !input adaptive_lighting_2
state: "on"
then:
- action: light.turn_on
metadata: {}
data: {}
target:
entity_id: !input light_2
else:
- action: light.turn_on
metadata: {}
data:
brightness_pct: !input work_mode_brightness
target:
entity_id: !input light_2
- conditions:
- id: button_3_hold
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_3
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: !input adaptive_lighting_3
- if:
- condition: state
entity_id: !input adaptive_lighting_3
state: "on"
then:
- action: light.turn_on
metadata: {}
data: {}
target:
entity_id: !input light_3
else:
- action: light.turn_on
metadata: {}
data:
brightness_pct: !input work_mode_brightness
target:
entity_id: !input light_3
- conditions:
- id: button_4_hold
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_4
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: switch.toggle
metadata: {}
data: {}
target:
entity_id: !input adaptive_lighting_4
- if:
- condition: state
entity_id: !input adaptive_lighting_4
state: "on"
then:
- action: light.turn_on
metadata: {}
data: {}
target:
entity_id: !input light_4
else:
- action: light.turn_on
metadata: {}
data:
brightness_pct: !input work_mode_brightness
target:
entity_id: !input light_4
- conditions:
- id: button_1_press_release
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_1
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: !input light_1
- conditions:
- id: button_2_press_release
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_2
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: !input light_2
- conditions:
- id: button_3_press_release
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_3
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: !input light_3
- conditions:
- id: button_4_press_release
condition: trigger
sequence:
- action: input_text.set_value
metadata: {}
data:
value: !input recent_target_string_4
target:
entity_id: !input text_helper_recent_target
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
- action: light.toggle
metadata: {}
data: {}
target:
entity_id: !input light_4
- conditions:
- condition: trigger
id:
- dial_rotate_right_fast
- dial_rotate_right_slow
- dial_rotate_left_fast
- dial_rotate_left_slow
sequence:
- variables:
brightness_step_amount: !input brightness_step_amount
step_amount: >
{% if trigger.id == 'dial_rotate_right_fast' %}
{{ 2 * (brightness_step_amount | int) }}
{% elif trigger.id == 'dial_rotate_left_fast' %}
{{ -2 * (brightness_step_amount | int) }}
{% elif trigger.id == 'dial_rotate_right_slow' %}
{{ brightness_step_amount | int }}
{% else %}
{{ -1 * (brightness_step_amount | int) }}
{% endif %}
- choose:
- conditions:
- condition: state
entity_id: !input text_helper_recent_target
state: !input recent_target_string_1
sequence:
- action: light.turn_on
metadata: {}
data:
brightness_step: "{{step_amount}}"
target:
entity_id: !input light_1
- conditions:
- condition: state
entity_id: !input text_helper_recent_target
state: !input recent_target_string_2
sequence:
- action: light.turn_on
metadata: {}
data:
brightness_step: "{{step_amount}}"
target:
entity_id: !input light_2
- conditions:
- condition: state
entity_id: !input text_helper_recent_target
state: !input recent_target_string_3
sequence:
- action: light.turn_on
metadata: {}
data:
brightness_step: "{{step_amount}}"
target:
entity_id: !input light_3
- conditions:
- condition: state
entity_id: !input text_helper_recent_target
state: !input recent_target_string_4
sequence:
- action: light.turn_on
metadata: {}
data:
brightness_step: "{{step_amount}}"
target:
entity_id: !input light_4
- action: timer.start
metadata: {}
data:
duration: "120"
target:
entity_id: !input timer_helper_reset_recent_target
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment