Inspired by ZHA - Philips Hue Dimmer Switch, but implemented for zigbee2mqtt
Control lights with a Philips Hue Dimmer Switch.
The top “on” button will turn the lights on to the last set
brightness.
Dim up/down buttons will change the brightness using predefined
step and can be pressed and hold until the brightness is
satisfactory.
The bottom “off” button will turn the lights off.
Long Off or On press will set brightness to the maximum or to the
minimum.
blueprint:
name: MQTT - Philips Hue Dimmer
description: 'Control lights with a Philips Hue Dimmer Switch.
The top "on" button will turn the lights on to the last set
brightness.
Dim up/down buttons will change the brightness using predefined
step and can be pressed and hold until the brightness is
satisfactory.
The bottom "off" button will turn the lights off.
Long Off or On press will set brightness to the maximum or to the
minimum.
'
domain: automation
input:
dimmer:
name: Philips Hue dimmer action sensor
description:
'This must be an "action" sensor provided by zigbee2mqtt. For
example "sensors.living_dimmer_action"
'
selector:
entity:
domain: sensor
light:
name: Target light
selector:
entity:
domain: light
step:
name: Dimming step in percent
default: 25
selector:
number:
min: 0.0
max: 50.0
mode: slider
step: 1.0
unit_of_measurement: "%"
lowest_brightness:
name: Lowest brightness level
description: 'Set this brightness level on long "Off" button press'
default: 3
selector:
number:
min: 1.0
max: 50.0
mode: slider
step: 1.0
unit_of_measurement: "%"
trigger:
platform: state
entity_id: !input dimmer
action:
- variables:
command: "{{ trigger.to_state.attributes.action }}"
step: !input step
negative_step: "{{ -1 * (step | int) }}"
- choose:
- conditions: "{{ command == 'on-press' }}"
sequence:
- service: light.turn_on
data_template:
entity_id: !input light
- conditions: "{{ command == 'off-press' }}"
sequence:
- service: light.turn_off
data_template:
entity_id: !input light
- conditions: "{{ command == 'down-press' or command == 'down-hold' }}"
sequence:
- service: light.turn_on
data_template:
entity_id: !input light
brightness_step_pct: "{{ negative_step }}"
transition: 1
- conditions: "{{ command == 'up-press' or command == 'up-hold' }}"
sequence:
- service: light.turn_on
data_template:
entity_id: !input light
brightness_step_pct: "{{ step }}"
transition: 1
- conditions: "{{ command == 'on-hold' }}"
sequence:
- service: light.turn_on
data_template:
entity_id: !input light
brightness: 255
transition: 1
- conditions: "{{ command == 'off-hold' }}"
sequence:
- service: light.turn_on
data_template:
entity_id: !input light
brightness_pct: !input lowest_brightness
transition: 1