That is weird that your devices do not expose the _action
entity.
All my dimmers have those, for example:
sensor.bedroom_hue_dimmer_action
That is weird that your devices do not expose the _action
entity.
All my dimmers have those, for example:
sensor.bedroom_hue_dimmer_action
@thotha - Looks like your dimmer switch is not exactly the “Philips Hue Dimmer Switch v2” as indicated in the subject of this thread. Your’s dimmer got a dial, so that’s a different model.
Ok, so where should I search fir a solution?
In/for Zigbee2MQTT, MQTT, Mosqitto Brocker, Home Assistant Core, Hassio, Sonoff Stick?
After search the internet with this search one of the first results is this one and close to the bottom I did find the solution to this problem.
I do not know with which update within the last few days this happened but suddenly the mentioned setting legacy triggers
was disabled.
Maybe you could mention somewhere that if a user as problems with your blueprint, he should check that setting within Zigbee2MQTT.
Sorry for this trouble.
Bit confused, does this reprogram the buttons just like Switch Manager, and can it also support RWL021?
It’s a blueprint so that you can create an automation and specify different actions for different buttons and press types.
It may work with RWL021 as the action names look compatible, but I didn’t test it.
This blueprint is perfect for my needs!
Recently, I added a new automation to the blueprint and selected my light group. However, I have noticed a slight delay of around 1 second when I toggle the light and it turns on. But when I toggle it again and the light turns off, there is no delay. I wonder if anyone knows how I can change the delay only when the light turns off, so it matches the same delay as when the light goes on.
Thank you.
Thanks for this blueprint - works perfectly within areas or specific lights.
But I don’t understand why the dimming is not supported.
I tried to use “UP Button hold” to let the lights go up in 10% steps.
Tried to change the brightness_pct which didn’t work.
But changing it via yaml editor did not work:
service: light.toggle
metadata: {}
data:
brightness_step_pct: 10
transition: 1
target:
area_id: kuche
Why is that not supported and how can I achieve this?
THX!
You probably need to use light.turn_on
service instead of the toggle.
I’m trying to hunt down a hue dimmer switch v1 blueprint, if anyone has one?
Thanks @JetSerge, this is great! I’m new to HA and this is just what I was looking for. I have a few binary sensors for the times of day (e.g. morning, afternoon, evening, night) so I can change automations based on the time of day. I’m trying to figure out a way to add a control to the press release button where if the ‘night’ sensor is on, then it will trigger a dimmed light, but I can’t work out a way to do this as the blueprint throws up an error if I try if-then-else in the yaml. May I ask if you are able to provide any guidance? Thanks again!
You should be able to if-then-else via the UI editor in the automation, no need to use YAML. Sorry, it doesn’t seem to be specific to my automation, maybe post your code in another thread and ask the community for help?
Thanks @JetSerge , I love this blueprint. If double press could be implemented it would be perfect. I have tried some other ones for RWL022 and Zigbee2MQTT but double pressing does not work. somebody could help me? I need the double press please.
@JetSerge love your blueprint!
Just figured that something in z2m or HA must have changed with the recent updates.
My actions for up_hold_once and down_hold_once didn’t work anymore.
Everything else kept working like a charm.
Figured out that the helper field becomes “unknown” in between the real states.
So the following code needed to be changed to don’t let the helper field take status “unknown”:
condition:
- condition: template
value_template: '{{ trigger.event.data.new_state.state not in ("", "None", "unknown") }}'
After adding “unknown” to the exclusion list the up_hold_once und down_hold_once actions are working again
Maybe you want to add that to your great blueprint to keep it working?
If you’re already at it, this
- service: input_text.set_value
data:
entity_id: !input helper_last_controller_event
value: '{{ command }}'
should better become something like this
- action: input_text.set_value
metadata: {}
data:
value: '{{ command }}'
target:
entity_id: !input helper_last_controller_event
according to the new best practice I guess.
Thanks for the fix. I didn’t test it myself yet, but I updated the blueprint gist.
As for the new syntax keywords, I’ll wait for some time before updating it to maintain compatibility with the older HA versions.
Thanks for the template! It didn’t work until I replaced underscores with hypens in the dimmer actions.
e.g. {{ command == “on_press” }} becomes {{ command == “on-press” }}
I recently moved from ZHA to Zigbee2QTT so it may be a config issue on my side?
Edit: I realise that I’m using a V1 dimmer (324131137411), not V2 which might be the reason.
Hey @JetSerge,
with zigbee2mqtt 2.0 the support for Home Assistant legacy triggers will be removed.
Just tried to disable Home Assistant legacy triggers in z2m and all switches based on this blueprint stopped working.
Instead MQTT device trigger should be used.
Any chance, you will update your great blueprint to keep it working with z2m 2.0?
Regarding this post z2m 2.0 is expected to be released the 3rd January 2025.
I’ve updated the blueprint to listen on a MQTT topic. Now you have to insert the topic as a parameter:
blueprint:
name: Philips Hue Dimmer switch v2 (Zigbee2MQTT)
description:
"Tested with Philips Hue Smart Wireless Dimmer Switch V2 (929002398602).
\n\n To have different actions on short press and on hold (long press), use 'button
release' (`*_press_release`) and 'button hold once' (`*_hold_once`) commands,
as 'press' (`*_press`) will always trigger before 'button hold' (`*_hold`). \n\n
When you hold a button, 'button hold' (`*_hold`) command is repeated roughly once
per second. This may not work as desired with actions like toggling light/switch.
If you want an action to run only once when the button hold action is registered,
use 'button hold once' (`*_hold_once`). It's better than using 'button hold release'
as the result can be observed before releasing the button after holding. \n\n
As 'button hold' action is repeated by the device while you keep holding the button,
it's a good way to run actions which increment / decrement some value (such as
light dimming). To make it react as soon as the button is pressed, copy the same
action to 'button press' (press action occurs immediately, while hold action occurs
after a delay). \n\n Make sure to manually create a separate Text Helper per dimmer
device and define its entity in the automation. It's used to store the last controller
event to filter possible empty events and handle 'button hold once' actions. "
domain: automation
input:
mqtt_topic:
name: MQTT Topic
description: Topic of the Philips Hue Motion
default: zigbee2mqtt/<device name>
helper_last_controller_event:
name: (Required) Helper - Last Controller Event
description:
Input Text used to store the last event fired by the controller.
You will need to manually create a text input Helper entity for this.
default: ""
selector:
entity:
domain:
- input_text
multiple: false
on_press:
name: ON button press
description: Action to run
default: []
selector:
action: {}
on_press_release:
name: ON button release
description: Action to run
default: []
selector:
action: {}
on_hold:
name: ON button hold
description: Action to run (repeat while holding)
default: []
selector:
action: {}
on_hold_once:
name: ON button hold once
description: Action to run only once (no repeat)
default: []
selector:
action: {}
on_hold_release:
name: ON button hold release
description: Action to run
default: []
selector:
action: {}
up_press:
name: UP button press
description: Action to run
default: []
selector:
action: {}
up_press_release:
name: UP button release
description: Action to run
default: []
selector:
action: {}
up_hold:
name: UP button hold
description: Action to run (repeat while holding)
default: []
selector:
action: {}
up_hold_once:
name: UP button hold once
description: Action to run only once (no repeat)
default: []
selector:
action: {}
up_hold_release:
name: UP button hold release
description: Action to run
default: []
selector:
action: {}
down_press:
name: DOWN button press
description: Action to run
default: []
selector:
action: {}
down_press_release:
name: DOWN button release
description: Action to run
default: []
selector:
action: {}
down_hold:
name: DOWN button hold
description: Action to run (repeat while holding)
default: []
selector:
action: {}
down_hold_once:
name: DOWN button hold once
description: Action to run only once (no repeat)
default: []
selector:
action: {}
down_hold_release:
name: DOWN button hold release
description: Action to run
default: []
selector:
action: {}
off_press:
name: OFF/HUE button press
description: Action to run
default: []
selector:
action: {}
off_press_release:
name: OFF/HUE button release
description: Action to run
default: []
selector:
action: {}
off_hold:
name: OFF/HUE button hold
description: Action to run (repeat while holding)
default: []
selector:
action: {}
off_hold_once:
name: OFF/HUE button hold once
description: Action to run only once (no repeat)
default: []
selector:
action: {}
off_hold_release:
name: OFF/HUE button hold release
description: Action to run
default: []
selector:
action: {}
source_url: https://gist.github.com/CrazyCoder/28d660d9e2e8464458e591ad79b3698e
mode: restart
max_exceeded: silent
trigger:
- platform: mqtt
topic: !input mqtt_topic
condition:
- condition: template
value_template: "{{ trigger.payload_json.action != '' }}"
action:
- variables:
helper_last_controller_event: !input helper_last_controller_event
command: "{{ trigger.payload_json.action }}"
prev_command: "{{ states(helper_last_controller_event) }}"
- service: input_text.set_value
data:
entity_id: !input helper_last_controller_event
value: "{{ command }}"
- choose:
- conditions:
- '{{ command == "on_press" }}'
sequence: !input on_press
- conditions:
- '{{ command == "on_press_release" }}'
sequence: !input on_press_release
- conditions:
- '{{ command == "on_hold" }}'
sequence: !input on_hold
- conditions:
- '{{ command == "on_hold_release" }}'
sequence: !input on_hold_release
- conditions:
- '{{ command == "up_press" }}'
sequence: !input up_press
- conditions:
- '{{ command == "up_press_release" }}'
sequence: !input up_press_release
- conditions:
- '{{ command == "up_hold" }}'
sequence: !input up_hold
- conditions:
- '{{ command == "up_hold_release" }}'
sequence: !input up_hold_release
- conditions:
- '{{ command == "down_press" }}'
sequence: !input down_press
- conditions:
- '{{ command == "down_press_release" }}'
sequence: !input down_press_release
- conditions:
- '{{ command == "down_hold" }}'
sequence: !input down_hold
- conditions:
- '{{ command == "down_hold_release" }}'
sequence: !input down_hold_release
- conditions:
- '{{ command == "off_press" }}'
sequence: !input off_press
- conditions:
- '{{ command == "off_press_release" }}'
sequence: !input off_press_release
- conditions:
- '{{ command == "off_hold" }}'
sequence: !input off_hold
- conditions:
- '{{ command == "off_hold_release" }}'
sequence: !input off_hold_release
- choose:
- conditions:
- '{{ command == "on_hold" and prev_command == "on_press" }}'
sequence: !input on_hold_once
- conditions:
- '{{ command == "up_hold" and prev_command == "up_press" }}'
sequence: !input up_hold_once
- conditions:
- '{{ command == "down_hold" and prev_command == "down_press" }}'
sequence: !input down_hold_once
- conditions:
- '{{ command == "off_hold" and prev_command == "off_press" }}'
sequence: !input off_hold_once
if you enable the Z2M experimental features before 2.0.0
gets rolled out, it will be very simple to modify the blueprint:
event.dimmer_name_action
entity that we can assign to.command
variable to allow keeping original blueprint figures. Use the <button_name>_<event_type>
from the attributes.description: ""
triggers:
- trigger: state
entity_id:
- event.hue_dimmer_action
attribute: event_type
conditions: []
actions:
- variables:
command: >-
{{ trigger.to_state.attributes.button }}_{{
trigger.to_state.attributes.event_type }}
mode: single