Last active
April 16, 2026 08:11
-
-
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"
This file contains hidden or 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: 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