Skip to content

Instantly share code, notes, and snippets.

@irakhlin
Last active January 31, 2025 06:27
Show Gist options
  • Save irakhlin/a57d8a30256bd11517ed24f39988e8bd to your computer and use it in GitHub Desktop.
Save irakhlin/a57d8a30256bd11517ed24f39988e8bd to your computer and use it in GitHub Desktop.
blueprint:
name: Zigbee2MQTT - Philips Hue Tap dial switch (8719514440937/8719514440999) MQTT with brightness
description: >
Define actions your Philips Hue Tap dial switch using Zigbee2MQTT.
This blueprint requires a MQTT topic for your button and the actions you want to take for each button press type.
domain: automation
input:
mqtt_topic:
name: MQTT Topic for device updates
description: MQTT topic for Philips Hue Tap dial switch. e.g. "zigbee2mqtt/Bedroom Bed Tap Dial Switch"
# Button 1
remote_button_1_single_press:
name: Button 1 Single Press
description: Action to run on button 1 single press
default: []
selector:
action:
remote_button_1_press_release:
name: Button 1 Press Release
description: Action to run on button 1 press release
default: []
selector:
action:
remote_button_1_hold:
name: Button 1 Hold
description: Action to run on button 1 hold
default: []
selector:
action:
remote_button_1_hold_release:
name: Button 1 Hold Release
description: Action to run on button 1 hold release
default: []
selector:
action:
# Button 2
remote_button_2_single_press:
name: Button 2 Single Press
description: Action to run on button 2 single press
default: []
selector:
action:
remote_button_2_press_release:
name: Button 2 Press Release
description: Action to run on button 2 press release
default: []
selector:
action:
remote_button_2_hold:
name: Button 2 Hold
description: Action to run on button 2 hold
default: []
selector:
action:
remote_button_2_hold_release:
name: Button 2 Hold Release
description: Action to run on button 2 hold release
default: []
selector:
action:
# Button 3
remote_button_3_single_press:
name: Button 3 Single Press
description: Action to run on button 3 single press
default: []
selector:
action:
remote_button_3_press_release:
name: Button 3 Press Release
description: Action to run on button 3 press release
default: []
selector:
action:
remote_button_3_hold:
name: Button 3 Hold
description: Action to run on button 3 hold
default: []
selector:
action:
remote_button_3_hold_release:
name: Button 3 Hold Release
description: Action to run on button 3 hold release
default: []
selector:
action:
# Button 4
remote_button_4_single_press:
name: Button 4 Single Press
description: Action to run on button 4 single press
default: []
selector:
action:
remote_button_4_press_release:
name: Button 4 Press Release
description: Action to run on button 4 press release
default: []
selector:
action:
remote_button_4_hold:
name: Button 4 Hold
description: Action to run on button 4 hold
default: []
selector:
action:
remote_button_4_hold_release:
name: Button 4 Hold Release
description: Action to run on button 4 hold release
default: []
selector:
action:
# Dial rotate left
remote_dial_rotate_left_step:
name: Dial rotate left step
description: Action to run on dial rotate left step
default: []
selector:
action:
remote_dial_rotate_left_slow:
name: Dial rotate left slow
description: Action to run on dial rotate left slow
default: []
selector:
action:
remote_dial_rotate_left_fast:
name: Dial rotate left fast
description: Action to run on dial rotate left fast
default: []
selector:
action:
# Dial rotate right
remote_dial_rotate_right_step:
name: Dial rotate right step
description: Action to run on dial rotate right step
default: []
selector:
action:
remote_dial_rotate_right_slow:
name: Dial rotate right slow
description: Action to run on dial rotate right slow
default: []
selector:
action:
remote_dial_rotate_right_fast:
name: Dial rotate right fast
description: Action to run on dial rotate right fast
default: []
selector:
action:
remote_dial_brightness_up:
name: Dial brightness up
description: Action to run on dial brightness up
default: []
selector:
action:
remote_dial_brightness_down:
name: Dial brightness down
description: Action to run on dial brightness down
default: []
selector:
action:
mode: restart
max_exceeded: silent
# Each option is explicitly defined as a trigger because sensor reports empty values as well.
# Not defining explicit triggers causes the automation to show up in the log multiple times per button press.
trigger:
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_1_press"
value_template: "{{ value_json.action }}"
id: "button_1_press"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_1_press_release"
value_template: "{{ value_json.action }}"
id: "button_1_press_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_1_hold"
value_template: "{{ value_json.action }}"
id: "button_1_hold"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_1_hold_release"
value_template: "{{ value_json.action }}"
id: "button_1_hold_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_2_press"
value_template: "{{ value_json.action }}"
id: "button_2_press"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_2_press_release"
value_template: "{{ value_json.action }}"
id: "button_2_press_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_2_hold"
value_template: "{{ value_json.action }}"
id: "button_2_hold"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_2_hold_release"
value_template: "{{ value_json.action }}"
id: "button_2_hold_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_3_press"
value_template: "{{ value_json.action }}"
id: "button_3_press"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_3_press_release"
value_template: "{{ value_json.action }}"
id: "button_3_press_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_3_hold"
value_template: "{{ value_json.action }}"
id: "button_3_hold"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_3_hold_release"
value_template: "{{ value_json.action }}"
id: "button_3_hold_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_4_press"
value_template: "{{ value_json.action }}"
id: "button_4_press"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_4_press_release"
value_template: "{{ value_json.action }}"
id: "button_4_press_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_4_hold"
value_template: "{{ value_json.action }}"
id: "button_4_hold"
- trigger: mqtt
topic: !input mqtt_topic
payload: "button_4_hold_release"
value_template: "{{ value_json.action }}"
id: "button_4_hold_release"
- trigger: mqtt
topic: !input mqtt_topic
payload: "dial_rotate_left_step"
value_template: "{{ value_json.action }}"
id: "dial_rotate_left_step"
- trigger: mqtt
topic: !input mqtt_topic
payload: "dial_rotate_left_slow"
value_template: "{{ value_json.action }}"
id: "dial_rotate_left_slow"
- trigger: mqtt
topic: !input mqtt_topic
payload: "dial_rotate_left_fast"
value_template: "{{ value_json.action }}"
id: "dial_rotate_left_fast"
- trigger: mqtt
topic: !input mqtt_topic
payload: "dial_rotate_right_step"
value_template: "{{ value_json.action }}"
id: "dial_rotate_right_step"
- trigger: mqtt
topic: !input mqtt_topic
payload: "dial_rotate_right_slow"
value_template: "{{ value_json.action }}"
id: "dial_rotate_right_slow"
- trigger: mqtt
topic: !input mqtt_topic
payload: "dial_rotate_right_fast"
value_template: "{{ value_json.action }}"
id: "dial_rotate_right_fast"
- trigger: mqtt
topic: !input mqtt_topic
payload: "brightness_step_up"
value_template: "{{ value_json.action }}"
id: "dial_brightness_up"
- trigger: mqtt
topic: !input mqtt_topic
payload: "brightness_step_down"
value_template: "{{ value_json.action }}"
id: "dial_brightness_down"
action:
- choose:
- conditions:
- condition: trigger
id: "button_1_press"
sequence: !input remote_button_1_single_press
- conditions:
- condition: trigger
id: "button_1_press_release"
sequence: !input remote_button_1_press_release
- conditions:
- condition: trigger
id: "button_1_hold"
sequence: !input remote_button_1_hold
- conditions:
- condition: trigger
id: "button_1_hold_release"
sequence: !input remote_button_1_hold_release
- conditions:
- condition: trigger
id: "button_2_press"
sequence: !input remote_button_2_single_press
- conditions:
- condition: trigger
id: "button_2_press_release"
sequence: !input remote_button_2_press_release
- conditions:
- condition: trigger
id: "button_2_hold"
sequence: !input remote_button_2_hold
- conditions:
- condition: trigger
id: "button_2_hold_release"
sequence: !input remote_button_2_hold_release
- conditions:
- condition: trigger
id: "button_3_press"
sequence: !input remote_button_3_single_press
- conditions:
- condition: trigger
id: "button_3_press_release"
sequence: !input remote_button_3_press_release
- conditions:
- condition: trigger
id: "button_3_hold"
sequence: !input remote_button_3_hold
- conditions:
- condition: trigger
id: "button_3_hold_release"
sequence: !input remote_button_3_hold_release
- conditions:
- condition: trigger
id: "button_4_press"
sequence: !input remote_button_4_single_press
- conditions:
- condition: trigger
id: "button_4_press_release"
sequence: !input remote_button_4_press_release
- conditions:
- condition: trigger
id: "button_4_hold"
sequence: !input remote_button_4_hold
- conditions:
- condition: trigger
id: "button_4_hold_release"
sequence: !input remote_button_4_hold_release
- conditions:
- condition: trigger
id: "dial_rotate_left_step"
sequence: !input remote_dial_rotate_left_step
- conditions:
- condition: trigger
id: "dial_rotate_left_slow"
sequence: !input remote_dial_rotate_left_slow
- conditions:
- condition: trigger
id: "dial_rotate_left_fast"
sequence: !input remote_dial_rotate_left_fast
- conditions:
- condition: trigger
id: "dial_rotate_right_step"
sequence: !input remote_dial_rotate_right_step
- conditions:
- condition: trigger
id: "dial_rotate_right_slow"
sequence: !input remote_dial_rotate_right_slow
- conditions:
- condition: trigger
id: "dial_rotate_right_fast"
sequence: !input remote_dial_rotate_right_fast
- conditions:
- condition: trigger
id: "dial_brightness_up"
sequence: !input remote_dial_brightness_up
- conditions:
- condition: trigger
id: "dial_brightness_down"
sequence: !input remote_dial_brightness_down
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment