Blue switch repeated clicks limited to > 500ms?

Before anyone asks - I disabled multi-click events by setting the Button Delay to 0ms - this isn’t an issue with configuration, the switch itself appears to have an internal debounce.

I’m attempting to use my automation system for handling multi-clicks instead of the builtin handler, and no matter what settings I use, the blue series switches do not send repeat button push events quicker than 500ms (507ms was my lowest measured repeated push). I’ve dumped the packet log, this isn’t an issue with my setup, the switch simply isn’t sending repeat events faster than this interval (presumably this is an internal debounce setting?).

@Eric_Inovelli is there a chance a future firmware update can allow for a parameter to set the internal debounce delay for this kind of usecase?

Button-push logs are below, there were many more clicks that were not sent by the switch. I’ve reproduced this on a conbee II and a homeassistant skyconnect setup, both have precisely the same behavior:

04-29 12:41:43:326: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_single","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":152,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'
04-29 12:41:44:189: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_double","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":156,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'
04-29 12:41:44:656: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_single","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":156,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'
04-29 12:41:45:943: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_triple","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":152,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'
04-29 12:41:46:497: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_single","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":156,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'

### Fastest: 507 MS between above and below ### 

04-29 12:41:47:004: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_single","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":152,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'
04-29 12:41:47:562: 'zigbee2mqtt/0xb43a31fffe33c246', '{"action":"down_single","brightness":254,"buttonDelay":"0ms","doubleTapDownToParam56":"Disabled","doubleTapUpToParam55":"Disabled","invertSwitch":"No","linkquality":156,"power":0,"rampRateOnToOffRemote":127,"smartBulbMode":"Disabled","state":"OFF","update":{"installed_version":16908815,"latest_version":16908815,"state":"idle"}}'```

I’m intrigued. What’s the use case for trying to recreate multitaps on the server side rather than using the built-in multitap of the switch?

1 Like

Somehow replies got bucketed into my ‘spam’ folder - sorry!

My motivation is a scene controller allowing for much longer time between taps while actuating the scenes ‘as-you-go’, allowing for a very responsive feel (the switch immediately does something, but subsequent taps do another thing) - you can fake multi tap intent by using a slower transition time in your automation platform.

The setup being ‘wife approved’ means things have to feel like they function immediately and locally

Maybe I’m still not understanding here.

The built-in multi tap function allows a delay of up to 900ms. If the goal is to allow longer time than 900ms between taps, I’m unsure how your automation platform receiving a tap event in 500ms is an issue?

The responsiveness will likely be diminished doing it this way as your automation will have to account for additional delay of X seconds based on whatever you define between taps.

This doesn’t sound like multi tap. This sounds more like 1 tap turns on light. Next tap, If light is on, turn on plug. Another tap If light and plug are on, turn on TV. Using logic in your automation can configure the single tap. Then you can use the built-in multi tap function to skip right to turn on light plug and TV if it’s multitapped from the start.

1 Like

I didn’t really reply earlier because I was a bit irked to be told that I was ‘holding it wrong’ (old iphone reference, look it up).

For some, the built-in multitap functionality would be fine - and yes I could absolutely program things to do a set of actions based on which multi-tap was activated, but I’m actually looking for the responsive feel of something happening after the first tap while the user doesn’t have to extremely quickly initiate and complete a second tap - this means that I can configure my automation system to still handle multiple taps with a more dynamic waiting time between them, all while actually beginning actions between the taps. If I were to (for example) set the maximum delay to 900ms, then a 4x tap would potentially be delayed by >3.5 seconds before starting any action - this is not a wife-friendly setup.

I’m still stumped at what exactly you’re strying to achieve here because there’s mixed messages in your posts.

the blue series switches do not send repeat button push events quicker than 500ms

My motivation is a scene controller allowing for much longer time between taps while actuating the scenes ‘as-you-go’

I’m sorry if this irks you, but I’m still not sure I understand why having an event fire every 500ms is an issue if your motivation is to allow longer than 900ms between events while still acting as “multi-tap”? I truly don’t mean this as insulting in any way, but if the motivation is to allow for a tap let’s say every 2s, then 500ms between events is well within that timespan.

I’ll also add in your initial logs your events are reporting down_double and down_triple which indicates that your button delay is still active. If your switch were set to 0, it should be disabling these button press events.

Personally, if I were looking to do this I’d set the button delay to 300ms which is about as fast as I can physically double tap these switches with 100% reliability. But I’d also implement a counter helper so subsequent presses increase the counter value by 1 (decrease for down taps). Then I’d use the double/triple tap events AND the counter value as triggers for the automations. That way I can mash the button quickly for a triple tap if I want, or just make 3 slow and steady up taps.

1 Like

Either that or have the event handler look to see if previous click had already been “implemented”.
E.g. Push_On handler; if light is off turn it on (at previous level), if light is already on, turn it full on. It wouldn’t matter how long between the first push (turn on) and the second (100%).
The other way of thinking of it, a Push_on cycles round states.
This what you’re thinking of?