Last active
December 12, 2025 14:33
-
-
Save pcastelo/a10816bbb074d73dcdbb5868ea7c44be to your computer and use it in GitHub Desktop.
Full control for Hue Dimmer V2. Optimized for Z2M
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: Philips Hue Dimmer V2 (MQTT Native) | |
| description: | | |
| Full control for Hue Dimmer V2. Optimized for Z2M. | |
| Includes 'Release' events necessary for smooth dimming. | |
| **Based on the work of patpac9.** | |
| *** | |
| # ⬇️⚠️⬇️ FRUSTRATION WARNING ⬇️⚠️⬇️ | |
| **__--------> READ CAREFULLY !! <--------__** | |
| * Only use the **'Press'** action if strictly necessary! | |
| * **Use the 'Release' action instead!!!** | |
| > *Remember: The 'Press' action ALSO triggers before 'Hold'.* | |
| domain: automation | |
| input: | |
| controller: | |
| name: Controller Name (Zigbee2MQTT) | |
| description: "Example: Dimmer_Pieza (Exact name from MQTT)" | |
| base_topic: | |
| name: MQTT Base Topic | |
| default: zigbee2mqtt | |
| # --- ON --- | |
| on_press: | |
| name: ON - Press (Caution) | |
| default: [] | |
| selector: { action: {} } | |
| on_hold: | |
| name: ON - Hold | |
| default: [] | |
| selector: { action: {} } | |
| on_released: | |
| name: ON - Release (Short) | |
| default: [] | |
| selector: { action: {} } | |
| on_hold_released: | |
| name: ON - Release (After Hold) | |
| default: [] | |
| selector: { action: {} } | |
| # --- UP --- | |
| up_press: | |
| name: UP - Press (Caution) | |
| default: [] | |
| selector: { action: {} } | |
| up_hold: | |
| name: UP - Hold | |
| default: [] | |
| selector: { action: {} } | |
| up_released: | |
| name: UP - Release (Short) | |
| default: [] | |
| selector: { action: {} } | |
| up_hold_released: | |
| name: UP - Release (After Hold) | |
| default: [] | |
| selector: { action: {} } | |
| # --- DOWN --- | |
| down_press: | |
| name: DOWN - Press (Caution) | |
| default: [] | |
| selector: { action: {} } | |
| down_hold: | |
| name: DOWN - Hold | |
| default: [] | |
| selector: { action: {} } | |
| down_released: | |
| name: DOWN - Release (Short) | |
| default: [] | |
| selector: { action: {} } | |
| down_hold_released: | |
| name: DOWN - Release (After Hold) | |
| default: [] | |
| selector: { action: {} } | |
| # --- OFF --- | |
| off_press: | |
| name: OFF - Press (Caution) | |
| default: [] | |
| selector: { action: {} } | |
| off_hold: | |
| name: OFF - Hold | |
| default: [] | |
| selector: { action: {} } | |
| off_released: | |
| name: OFF - Release (Short) | |
| default: [] | |
| selector: { action: {} } | |
| off_hold_released: | |
| name: OFF - Release (After Hold) | |
| default: [] | |
| selector: { action: {} } | |
| mode: restart | |
| max_exceeded: silent | |
| trigger_variables: | |
| base_topic: !input base_topic | |
| controller: !input controller | |
| trigger: | |
| - platform: mqtt | |
| topic: "{{ base_topic ~ '/' ~ controller }}" | |
| condition: | |
| - condition: template | |
| value_template: "{{ trigger.payload_json.action is defined and trigger.payload_json.action != '' }}" | |
| action: | |
| - variables: | |
| cmd: "{{ trigger.payload_json.action }}" | |
| - choose: | |
| # --- ON --- | |
| - conditions: '{{ cmd == "on_press" }}' | |
| sequence: !input on_press | |
| - conditions: '{{ cmd == "on_hold" }}' | |
| sequence: !input on_hold | |
| - conditions: '{{ cmd in ["on_press_release", "on-press-release"] }}' | |
| sequence: !input on_released | |
| - conditions: '{{ cmd in ["on_hold_release", "on-hold-release"] }}' | |
| sequence: !input on_hold_released | |
| # --- UP --- | |
| - conditions: '{{ cmd == "up_press" }}' | |
| sequence: !input up_press | |
| - conditions: '{{ cmd == "up_hold" }}' | |
| sequence: !input up_hold | |
| - conditions: '{{ cmd in ["up_press_release", "up-press-release"] }}' | |
| sequence: !input up_released | |
| - conditions: '{{ cmd in ["up_hold_release", "up-hold-release"] }}' | |
| sequence: !input up_hold_released | |
| # --- DOWN --- | |
| - conditions: '{{ cmd == "down_press" }}' | |
| sequence: !input down_press | |
| - conditions: '{{ cmd == "down_hold" }}' | |
| sequence: !input down_hold | |
| - conditions: '{{ cmd in ["down_press_release", "down-press-release"] }}' | |
| sequence: !input down_released | |
| - conditions: '{{ cmd in ["down_hold_release", "down-hold-release"] }}' | |
| sequence: !input down_hold_released | |
| # --- OFF --- | |
| - conditions: '{{ cmd == "off_press" }}' | |
| sequence: !input off_press | |
| - conditions: '{{ cmd == "off_hold" }}' | |
| sequence: !input off_hold | |
| - conditions: '{{ cmd in ["off_press_release", "off-press-release"] }}' | |
| sequence: !input off_released | |
| - conditions: '{{ cmd in ["off_hold_release", "off-hold-release"] }}' | |
| sequence: !input off_hold_released |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment