Bug - Virtual button always triggers twice from iOS dashboard

Hubitat C8, v 2.4.2.134

Have an odd situation I don't understand.

Made a virtual button. Set it to # of buttons = 1. Virtual Button driver (built in).

Pushing the button triggers a rule machine script, which enables and then disables a smart switch for 5 seconds. Very simple. (the smart switch powers a linear actuator, so it must always get turned off, so I don't want to expose the smart switch directly).

I added the button to an Easy Dashboard.

Virtual Buttons in easy dashboard - by default when you touch them, a little menu pops up, offering options to push, double tap, etc. That's annoying. I just want to push the button. So I enable the "push only" slider.

Result:
When the push only slider is enabled and I tap the button, two button pushes are always sent (incorrect), thus triggering the script twice. 100% reproducible.

When the push only slider is disabled, and I tap the button and then choose 'push' from the popup menu, then only one event is sent (correct), and the script is only run once.

Further - this only happens from my iPhone (iOS 18.5 running latest version of Hubitat app). It does not happen when I push the button from my web browser on my Mac.

Known issue? Workarounds?

dev:1482025-07-27 02:32:10.760 PM

info

Garage Door Lock 1 power is 14W

app:2182025-07-27 02:32:10.308 PM

info

Action: Off: Garage Door Lock 1

app:2182025-07-27 02:32:10.290 PM

info

Action: Notify iPhone11ProMax: 'Garage door locked'

app:2182025-07-27 02:32:10.271 PM

info

Delay Over: Delay 0:00:05

dev:1482025-07-27 02:32:10.062 PM

info

Garage Door Lock 1 was turned off [digital]

app:2182025-07-27 02:32:09.987 PM

info

Action: Off: Garage Door Lock 1

app:2182025-07-27 02:32:09.972 PM

info

Action: Notify iPhone11ProMax: 'Garage door locked'

app:2182025-07-27 02:32:09.953 PM

info

Delay Over: Delay 0:00:05

app:2182025-07-27 02:32:05.241 PM

info

Action: Delay 0:00:05

app:2182025-07-27 02:32:05.230 PM

info

Action: On: Garage Door Lock 1

app:2182025-07-27 02:32:05.211 PM

info

Delay Over: Delay 0:00:02

dev:1482025-07-27 02:32:04.994 PM

info

Garage Door Lock 1 was turned on [digital]

app:2182025-07-27 02:32:04.928 PM

info

Action: Delay 0:00:05

app:2182025-07-27 02:32:04.913 PM

info

Action: On: Garage Door Lock 1

app:2182025-07-27 02:32:04.893 PM

info

Delay Over: Delay 0:00:02

app:2152025-07-27 02:32:03.217 PM

info

Action: Set garageDoorEval to false

app:2182025-07-27 02:32:03.183 PM

info

Action: Delay 0:00:02

app:2182025-07-27 02:32:03.163 PM

info

Action: Notify iPhone11ProMax: 'Garage door unlocked for 5 seconds'

app:2182025-07-27 02:32:03.145 PM

info

Event: Actions run by 'Event - Garage Door Button Pushed - Eval'

app:2152025-07-27 02:32:03.120 PM

info

Action: Run Actions: Event - Garage Door Unlock - Subroutine

app:2152025-07-27 02:32:03.096 PM

info

Action: Set garageDoorEval to true

app:2152025-07-27 02:32:03.073 PM

info

Triggered: Garage Lock C pushed 1

app:2152025-07-27 02:32:03.071 PM

info

Event: Garage Lock C pushed 1

app:2152025-07-27 02:32:02.908 PM

info

Action: Set garageDoorEval to false

app:2182025-07-27 02:32:02.866 PM

info

Action: Delay 0:00:02

app:2182025-07-27 02:32:02.848 PM

info

Action: Notify iPhone11ProMax: 'Garage door unlocked for 5 seconds'

app:2182025-07-27 02:32:02.832 PM

info

Event: Actions run by 'Event - Garage Door Button Pushed - Eval'

app:2152025-07-27 02:32:02.806 PM

info

Action: Run Actions: Event - Garage Door Unlock - Subroutine

dev:1492025-07-27 02:32:02.801 PM

info

Garage Lock C button 1 was pushed

app:2152025-07-27 02:32:02.778 PM

info

Action: Set garageDoorEval to true

app:2152025-07-27 02:32:02.756 PM

info

Triggered: Garage Lock C pushed 1

app:2152025-07-27 02:32:02.754 PM

info

Event: Garage Lock C pushed 1

dev:1492025-07-27 02:32:02.703 PM

info

Garage Lock C button 1 was pushed

The double trigger from the virtual button seemingly happens faster than the time it takes for the actions to begin, so even when I added a global/hub var "garageDoorEvalRunning" [bool] with a required expression garageDoorEvalRunning = false, and the first action in the script setting it to true and last action setting it to false, that's not fast enough to prevent the script from running twice every time the button is pushed.

??? :thinking: ???

Sorry, can't help you with your rule machine problem, but if all else fails, you could use a Zooz switch, or similar, where you set an AutoOff duration in Device Preferences to 5 seconds.

Thank you for the device recommendation. It's not a rule machine problem, or a device problem (the device at issue a Hubitat Virtual Button). It's seems to be an Easy Dashboard problem on iOS only. Again, the double-trigger does NOT occur from the dashboard on my Mac/Chrome web browser.

1 Like

Not a fix (but you asked for workarounds).

Use a virtual switch instead of button and set AutoTurnoff preference.
It acts like a button.

1 Like

I have the EXACT same problem except in my situation I am using an Android phone and Windows laptop. When the button is pushed(with the push only slider enabled) from the Android dashboard, it creates 2 events. When pushed from my laptop, it creates 1 event. Definite bug that needs to be addressed by someone at Hubitat.

In the meantime, I changed the button to a switch with auto off set and it works fine.