Philips Tap Dial Switch with double tap and 4 dial actions

Hi all,

maybe someone have a hint for me.
The blueprint works fine and as expectet.
Only thing what doesn’t work are the rotation steps.
Broker sees the rotation but dimming p.e. isn’t possible.
Which Action do you recomment to increase and decrease a light / light group?
I’ve testet it with Action = Device or Action = Light.

Both works for me if i use it to turn it on or off.

I’ve read the whole thread but didn’t found a solution for me.
Is there something where i do it wrong?

In addition here a bit of my yaml

button_3_rotate_clockwise:
      - action: light.turn_on
        target:
          entity_id: light.lampe_buro
        data:
          transition: 0
          brightness_step: 10
    button_3_rotate_counter_clockwise:
      - action: light.turn_on
        target:
          entity_id: light.lampe_buro
        data:
          brightness_step: -10 

I also have the problem that z2m sends 2 commands at a time. The counter jumps to 2 when you click once and to 4 when you double click. This must be related to some z2m update.

I deleted the dial switch, the counter, etc. Can someone tell me exactly where I need to change the blueprint or maybe make a small update.

thank you

So I am trying to figure this out.

What i wanted to do was utilize the step_size to make the increase the values faster or slower depending on amount of steps. E.g 0-15, 10% 16-30, 20% etc etc.
But then i walked into this.

The device seems to send two different payloads (dial_rotate* and brightness_step*) at the approximately same time (within 0.1s).
Both contain unique values. E.g action_direction and action_step_size.

This automation/blueprint seems to work with the first type of payload, rendering it impossible (as is) to get hold of the step_size.

I also notices that sometimes, instead of only 2 events. I get 4. i.e two of each kind, when spinning the dial fast, creating one a “slow” and a “fast” event for a single turn of the dial.

This made me start looking into de-bounce in z2m.
But doing that it will overwrite the action, and depending on what action triggered first i guess it will retain common attributes.

I do not know, is this intended behavior or not and is there other mitigation to be made and not only denounce?

I guess one could add a choice to act differently if the action is a _fast/_slow?
E.g slow = 10%, fast 20%.

Thoughts and suggestions?

  payload_json:
    action: dial_rotate_right_fast
    action_direction: right
    action_step_size: null
    action_time: 90
    action_type: step
    battery: 100
    brightness: null
    last_seen: '2025-01-08T19:21:36+01:00'
    linkquality: 98
    update:
      installed_version: 33569561
      latest_version: 33569561
      state: idle
  payload_json:
    action: brightness_step_up
    action_direction: null
    action_step_size: 38
    action_time: null
    action_transition_time: 0.04
    action_type: null
    battery: 100
    brightness: null
    last_seen: '2025-01-08T19:21:36+01:00'
    linkquality: 94
    update:
      installed_version: 33569561
      latest_version: 33569561
      state: idle

Debounce set to 0.1

payload_json:
    action: brightness_step_up
    action_direction: right
    action_step_size: 26
    action_time: 60
    action_transition_time: 0.04
    action_type: rotate
    battery: 100
    brightness: null
    last_seen: '2025-01-08T19:30:58+01:00'
    linkquality: 58
    update:
      installed_version: 33569561
      latest_version: 33569561
      state: idle

Ended up doing a choose block, with template conditions that check for :

dial_rotate_*_fast
dial_rotate_*_slow

And a default action for the step.
Also added a condition in the beginning of the blueprint so that it ignores the brightness_step* actions as early as possible to slightly speed up the execution time.

Experimenting with if using queued execution also feels more reliable than parallel as it seems like sometimes the turning of the wheel will send a fast and slow action and the light in/de-crease looks a bit jerky when it’s parallel. Could be imaginary though.

Love the blueprint and your work
Is there an easy way to modify the Zigbee2mqtt to set the dial to not turn on a light if it is off and I’m increasing brightness? I’m also looking to set different values (say eg. brightness change) for a fast and a slow rotation