Last active
November 28, 2025 11:28
-
-
Save benperiton/e58995752b3500e6726ca40472905137 to your computer and use it in GitHub Desktop.
Hue Dimmer blueprint that supports multi-press
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: Easy Customizable Controller (Multi-Press) for Hue Dimmer Switch in Zigbee2MQTT | |
| description: 'Controller automation for easy customizable buttons with Philips Hue | |
| Dimmer Switch (Zigbee2MQTT). | |
| Based on: https://gist.github.com/patpac9/2a378fa410d393501da6e35efb4277f7 | |
| IMPORTANT: | |
| - Prefer using the "released" actions where possible. | |
| - A "pressed" action will also trigger when the button is held. | |
| ' | |
| domain: automation | |
| input: | |
| # Pinched from https://github.com/yarafie/awesome-ha-blueprints/blob/5b3710fc4a982a83e5e6754a2b3966b422c9462c/blueprints/controllers/philips_324131092621/philips_324131092621.yaml#L36 | |
| controller: | |
| name: (Zigbee2MQTT) Controller Name | |
| description: The name of the controller/Dimmer-Switch in Zigbee2MQTT. | |
| default: '' | |
| selector: | |
| device: | |
| filter: | |
| # source: https://www.zigbee2mqtt.io/devices/324131092621.html#philips-324131092621 | |
| - integration: mqtt | |
| manufacturer: Philips | |
| model: Hue dimmer switch | |
| # For backwards compatability with z2m 1.x. model_id is added to end of model rather than a seperate attribute in z2m 2.x | |
| - integration: mqtt | |
| manufacturer: Philips | |
| model: Hue dimmer switch (324131092621) | |
| multiple: false | |
| base_topic: | |
| name: Root/Base MQTT Topic from Zigbee2MQTT | |
| description: The Root/Base topic as configured in Zigbee2MQTT (leave as "zigbee2mqtt" | |
| if you haven't changed it). | |
| default: zigbee2mqtt | |
| on_press: | |
| name: Button On Pressed | |
| description: Action to run when the On button is pressed (also fires on hold). | |
| default: [] | |
| selector: | |
| action: {} | |
| on_held: | |
| name: Button On Held | |
| description: Action to run when the On button is held. | |
| default: [] | |
| selector: | |
| action: {} | |
| on_released: | |
| name: Button On Released | |
| description: Action to run when the On button is released. | |
| default: [] | |
| selector: | |
| action: {} | |
| on_hold_released: | |
| name: Button On Hold Released | |
| description: Action to run when the On button is released after a long press. | |
| default: [] | |
| selector: | |
| action: {} | |
| on_double_press_release: | |
| name: Button On Double Press Released | |
| description: Action to run when the On button is double-pressed and then released. | |
| default: [] | |
| selector: | |
| action: {} | |
| on_triple_press_release: | |
| name: Button On Triple Press Released | |
| description: Action to run when the On button is triple-pressed and then released. | |
| default: [] | |
| selector: | |
| action: {} | |
| on_quadruple_press_release: | |
| name: Button On Quadruple Press Released | |
| description: Action to run when the On button is quadruple-pressed and then | |
| released. | |
| default: [] | |
| selector: | |
| action: {} | |
| on_quintuple_press_release: | |
| name: Button On Quintuple Press Released | |
| description: Action to run when the On button is quintuple-pressed and then | |
| released. | |
| default: [] | |
| selector: | |
| action: {} | |
| up_pressed: | |
| name: Up Pressed | |
| description: Action to run when the Up button is pressed (also fires on hold). | |
| default: [] | |
| selector: | |
| action: {} | |
| up_held: | |
| name: Up Held | |
| description: Action to run when the Up button is held. | |
| default: [] | |
| selector: | |
| action: {} | |
| up_released: | |
| name: Up Released | |
| description: Action to run when the Up button is released. | |
| default: [] | |
| selector: | |
| action: {} | |
| up_hold_released: | |
| name: Button Up Hold Released | |
| description: Action to run when the Up button is released after a long press. | |
| default: [] | |
| selector: | |
| action: {} | |
| down_pressed: | |
| name: Down Pressed | |
| description: Action to run when the Down button is pressed (also fires on hold). | |
| default: [] | |
| selector: | |
| action: {} | |
| down_held: | |
| name: Down Held | |
| description: Action to run when the Down button is held. | |
| default: [] | |
| selector: | |
| action: {} | |
| down_released: | |
| name: Down Released | |
| description: Action to run when the Down button is released. | |
| default: [] | |
| selector: | |
| action: {} | |
| down_hold_released: | |
| name: Button Down Hold Released | |
| description: Action to run when the Down button is released after a long press. | |
| default: [] | |
| selector: | |
| action: {} | |
| off_pressed: | |
| name: Off Pressed | |
| description: Action to run when the Off button is pressed (also fires on hold). | |
| (Off is also the "Hue" button.) | |
| default: [] | |
| selector: | |
| action: {} | |
| off_held: | |
| name: Off Held | |
| description: Action to run when the Off button is held. (Off is also the "Hue" | |
| button.) | |
| default: [] | |
| selector: | |
| action: {} | |
| off_released: | |
| name: Off Released | |
| description: Action to run when the Off button is released. (Off is also the | |
| "Hue" button.) | |
| default: [] | |
| selector: | |
| action: {} | |
| off_hold_released: | |
| name: Button Off Hold Released | |
| description: Action to run when the Off button is released after a long press. | |
| (Off is also the "Hue" button.) | |
| default: [] | |
| selector: | |
| action: {} | |
| off_double_press_release: | |
| name: Button Off Double Press Released | |
| description: Action to run when the Off button is double-pressed and then released. | |
| default: [] | |
| selector: | |
| action: {} | |
| off_triple_press_release: | |
| name: Button Off Triple Press Released | |
| description: Action to run when the Off button is triple-pressed and then released. | |
| default: [] | |
| selector: | |
| action: {} | |
| off_quadruple_press_release: | |
| name: Button Off Quadruple Press Released | |
| description: Action to run when the Off button is quadruple-pressed and then | |
| released. | |
| default: [] | |
| selector: | |
| action: {} | |
| off_quintuple_press_release: | |
| name: Button Off Quintuple Press Released | |
| description: Action to run when the Off button is quintuple-pressed and then | |
| released. | |
| default: [] | |
| selector: | |
| action: {} | |
| source_url: https://gist.github.com/benperiton/e58995752b3500e6726ca40472905137 | |
| mode: parallel | |
| max: 6 | |
| trigger_variables: | |
| base_topic: !input base_topic | |
| controller_device: !input controller | |
| controller: "{{ device_name(controller_device) }}" | |
| trigger: | |
| - platform: mqtt | |
| topic: '{{ base_topic ~ ''/'' ~ controller }}' | |
| action: | |
| - choose: | |
| - conditions: "{{ ('hold' in trigger.payload_json.action)\n or ('release' in trigger.payload_json.action)\n | |
| \ or ('press' in trigger.payload_json.action) }}\n" | |
| sequence: | |
| - choose: | |
| - conditions: '{{ trigger.payload_json.action == "on_press" or trigger.payload_json.action | |
| == "on-press" }}' | |
| sequence: !input on_press | |
| - conditions: '{{ trigger.payload_json.action == "on_hold" or trigger.payload_json.action | |
| == "on-hold" }}' | |
| sequence: !input on_held | |
| - conditions: '{{ trigger.payload_json.action == "on_press_release" or trigger.payload_json.action | |
| == "on-press-release" }}' | |
| sequence: !input on_released | |
| - conditions: '{{ trigger.payload_json.action == "on_hold_release" or trigger.payload_json.action | |
| == "on-hold-release" }}' | |
| sequence: !input on_hold_released | |
| - conditions: '{{ trigger.payload_json.action == "on_double_press_release" or | |
| trigger.payload_json.action == "on-double-press-release" }}' | |
| sequence: !input on_double_press_release | |
| - conditions: '{{ trigger.payload_json.action == "on_triple_press_release" or | |
| trigger.payload_json.action == "on-triple-press-release" }}' | |
| sequence: !input on_triple_press_release | |
| - conditions: '{{ trigger.payload_json.action == "on_quadruple_press_release" | |
| or trigger.payload_json.action == "on-quadruple-press-release" }}' | |
| sequence: !input on_quadruple_press_release | |
| - conditions: '{{ trigger.payload_json.action == "on_quintuple_press_release" | |
| or trigger.payload_json.action == "on-quintuple-press-release" }}' | |
| sequence: !input on_quintuple_press_release | |
| - conditions: '{{ trigger.payload_json.action == "up_press" or trigger.payload_json.action | |
| == "up-press" }}' | |
| sequence: !input up_pressed | |
| - conditions: '{{ trigger.payload_json.action == "up_hold" or trigger.payload_json.action | |
| == "up-hold" }}' | |
| sequence: !input up_held | |
| - conditions: '{{ trigger.payload_json.action == "up_press_release" or trigger.payload_json.action | |
| == "up-press-release" }}' | |
| sequence: !input up_released | |
| - conditions: '{{ trigger.payload_json.action == "up_hold_release" or trigger.payload_json.action | |
| == "up-hold-release" }}' | |
| sequence: !input up_hold_released | |
| - conditions: '{{ trigger.payload_json.action == "down_press" or trigger.payload_json.action | |
| == "down-press" }}' | |
| sequence: !input down_pressed | |
| - conditions: '{{ trigger.payload_json.action == "down_hold" or trigger.payload_json.action | |
| == "down-hold" }}' | |
| sequence: !input down_held | |
| - conditions: '{{ trigger.payload_json.action == "down_press_release" or trigger.payload_json.action | |
| == "down-press-release" }}' | |
| sequence: !input down_released | |
| - conditions: '{{ trigger.payload_json.action == "down_hold_release" or trigger.payload_json.action | |
| == "down-hold-release" }}' | |
| sequence: !input down_hold_released | |
| - conditions: '{{ trigger.payload_json.action == "off_press" or trigger.payload_json.action | |
| == "off-press" }}' | |
| sequence: !input off_pressed | |
| - conditions: '{{ trigger.payload_json.action == "off_hold" or trigger.payload_json.action | |
| == "off-hold" }}' | |
| sequence: !input off_held | |
| - conditions: '{{ trigger.payload_json.action == "off_press_release" or trigger.payload_json.action | |
| == "off-press-release" }}' | |
| sequence: !input off_released | |
| - conditions: '{{ trigger.payload_json.action == "off_hold_release" or trigger.payload_json.action | |
| == "off-hold-release" }}' | |
| sequence: !input off_hold_released | |
| - conditions: '{{ trigger.payload_json.action == "off_double_press_release" | |
| or trigger.payload_json.action == "off-double-press-release" }}' | |
| sequence: !input off_double_press_release | |
| - conditions: '{{ trigger.payload_json.action == "off_triple_press_release" | |
| or trigger.payload_json.action == "off-triple-press-release" }}' | |
| sequence: !input off_triple_press_release | |
| - conditions: '{{ trigger.payload_json.action == "off_quadruple_press_release" | |
| or trigger.payload_json.action == "off-quadruple-press-release" }}' | |
| sequence: !input off_quadruple_press_release | |
| - conditions: '{{ trigger.payload_json.action == "off_quintuple_press_release" | |
| or trigger.payload_json.action == "off-quintuple-press-release" }}' | |
| sequence: !input off_quintuple_press_release |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment