Accessing ZEN71 advanced features in WC?


#1

1) Give a description of the problem
I picked up a few ZEN71 switches for their multi-tap capabilities, which I want to use for lighting control. I’ve installed the device handler, but I don’t see any way to access the scenes and attributes from webCore. I see a button option (selected in the screenshot below) with 32 available buttons, but they don’t seem to correspond to the attributes.

2) What is the expected behaviour?
WC provides a way to create a condition for multi-tap actions

3) What is happening/not happening?
I do not see a way to create a condition for multi-tap actions

**4) Post a Green Snapshot of the piston![image|45x37]
NA

5) Attach logs after turning logging level to Full
NA


#2

I believe you have to go into the device settings and turn on scene control for any of those features to appear.


#3

Thanks @guxdude, I have done that.

Below is my piston and the log from when I press the rocker as follows:

  1. paddle up
  2. paddle up_2x
  3. paddle down
  4. paddle down_2x
  • The first paddle up appears to generate both of the first 2 events, and one of them triggers my piston and hits the Test 1 case.
  • The paddle up_2x event doesn’t seem to match any condition in the piston.
  • The paddle down generates the “switch is off” event but doesn’t match any condition in the piston.
  • The paddle down_2x then hits the Test 2 case since the switch is now off.

What want is to be able to take action on either up or down 2x events, regardless of current switch state.

Any thoughts?

Piston: (the ZEN71 shows up in the green piston as “Keypad”)

Log (in chrono order):
10:56:32 AM: debug switch is on
10:56:34 AM: debug paddle up
10:56:34 AM: trace ║ test 1
10:56:34 AM: trace ║ “device: Carport light new, value: up”
10:56:34 AM: trace ║ “command: up”
10:56:42 AM: debug paddle up_2x
10:56:50 AM: debug switch is off
10:56:57 AM: debug paddle down_2x
10:56:57 AM: trace ║ test 2
10:56:57 AM: trace ║ “device: Carport light new, value: down_2x”
10:56:57 AM: trace ║ “command: down_2x”


#4

Here is what I did for a Zen23. I assume the same should work for you. I haven 't actually taken advantage of it yet but was just doing some testing a while back.

Here is the log after doing single, double, triple press up, then single double triple press down:

6/10/2022, 2:17:42 PM +522ms
+110ms	║Any button pushed
6/10/2022, 2:17:37 PM +10ms
+86ms	║Double press DOWN
+100ms	║Any button pushed
6/10/2022, 2:17:31 PM +378ms
+80ms	║Single press DOWN
+101ms	║Any button pushed
6/10/2022, 2:17:19 PM +777ms
+94ms	║Any button pushed
6/10/2022, 2:17:12 PM +818ms
+80ms	║Double press UP
+108ms	║Any button pushed
6/10/2022, 2:17:07 PM +262ms
+75ms	║Single press UP
+108ms	║Any button pushed

Hope this helps.


#5

That’s interesting. The ZEN71 (or perhaps the DTH) seems to work differently. It returns all events by name on button 1, e.g. ‘up’, ‘down_2x’, ‘up_hold’, so checks for ‘pushed’ always fail.

Instead I defined constants for the event names and compared the button to the variable instead of the value.

At the bottom of the piston I show an alternate way of checking the value; I haven’t tested it, but I don’t believe these comparisons subscribe to the button events so they’ll need to be used in conjunction with one of the earlier ones.

6/10/2022, 10:47:14 PM +36ms
+1ms 	╔Received event [Carport light new].button = up_released with a delay of 41ms
+10075ms 	║RunTime Analysis CS > 17ms > PS > 10017ms > PE > 41ms > CE
+10076ms 	║Piston waited at a semaphore for 10013ms
+10079ms 	║Runtime (49654 bytes) successfully initialized in 10017ms (v0.3.109.20181207) (10076ms)
+10080ms 	║╔Execution stage started
+10086ms 	║║Comparison (enum) up_released gets (string) up_2x = false (0ms)
+10088ms 	║║Condition #19 evaluated false (3ms)
+10089ms 	║║Condition group #18 evaluated false (state did not change) (5ms)
+10094ms 	║║Comparison (enum) up_released gets (string) down_2x = false (0ms)
+10095ms 	║║Condition #25 evaluated false (4ms)
+10096ms 	║║Condition group #24 evaluated false (state did not change) (5ms)
+10101ms 	║║Comparison (enum) up_released gets (string) up_3x = false (1ms)
+10102ms 	║║Condition #46 evaluated false (4ms)
+10103ms 	║║Condition group #45 evaluated false (state did not change) (5ms)
+10108ms 	║║Comparison (enum) up_released gets (string) down_3x = false (1ms)
+10110ms 	║║Condition #52 evaluated false (4ms)
+10111ms 	║║Condition group #51 evaluated false (state did not change) (5ms)
+10116ms 	║║Comparison (enum) up_released gets (string) up_hold = false (1ms)
+10117ms 	║║Condition #31 evaluated false (4ms)
+10118ms 	║║Condition group #30 evaluated false (state did not change) (5ms)
+10124ms 	║║Comparison (enum) up_released gets (string) down_hold = false (0ms)
+10125ms 	║║Condition #61 evaluated false (4ms)
+10126ms 	║║Condition group #60 evaluated false (state did not change) (6ms)
+10132ms 	║║Comparison (dynamic) up_released is (string) up_hold = false (1ms)
+10133ms 	║║Condition #37 evaluated false (5ms)
+10134ms 	║║Condition group #36 evaluated false (state did not change) (6ms)
+10140ms 	║║Comparison (dynamic) up_released is (string) down_hold = false (1ms)
+10142ms 	║║Condition #41 evaluated false (4ms)
+10142ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+10144ms 	║╚Execution stage complete. (65ms)
+10145ms 	╚Event processed successfully (10145ms)
6/10/2022, 10:47:16 PM +922ms
+2ms 	╔Received event [Carport light new].button = down_released with a delay of 48ms
+74ms 	║RunTime Analysis CS > 19ms > PS > 6ms > PE > 49ms > CE
+77ms 	║Runtime (49554 bytes) successfully initialized in 6ms (v0.3.109.20181207) (75ms)
+78ms 	║╔Execution stage started
+85ms 	║║Comparison (enum) down_released gets (string) up_2x = false (1ms)
+87ms 	║║Condition #19 evaluated false (5ms)
+88ms 	║║Condition group #18 evaluated false (state did not change) (6ms)
+93ms 	║║Comparison (enum) down_released gets (string) down_2x = false (0ms)
+95ms 	║║Condition #25 evaluated false (4ms)
+96ms 	║║Condition group #24 evaluated false (state did not change) (6ms)
+101ms 	║║Comparison (enum) down_released gets (string) up_3x = false (1ms)
+102ms 	║║Condition #46 evaluated false (4ms)
+103ms 	║║Condition group #45 evaluated false (state did not change) (5ms)
+109ms 	║║Comparison (enum) down_released gets (string) down_3x = false (1ms)
+111ms 	║║Condition #52 evaluated false (4ms)
+112ms 	║║Condition group #51 evaluated false (state did not change) (5ms)
+118ms 	║║Comparison (enum) down_released gets (string) up_hold = false (2ms)
+119ms 	║║Condition #31 evaluated false (5ms)
+120ms 	║║Condition group #30 evaluated false (state did not change) (6ms)
+126ms 	║║Comparison (enum) down_released gets (string) down_hold = false (0ms)
+127ms 	║║Cancelling condition #61's schedules...
+128ms 	║║Condition #61 evaluated false (5ms)
+129ms 	║║Cancelling condition #60's schedules...
+130ms 	║║Condition group #60 evaluated false (state changed) (8ms)
+137ms 	║║Comparison (dynamic) down_released is (string) up_hold = false (1ms)
+138ms 	║║Condition #37 evaluated false (5ms)
+139ms 	║║Condition group #36 evaluated false (state did not change) (7ms)
+146ms 	║║Comparison (dynamic) down_released is (string) down_hold = false (2ms)
+147ms 	║║Cancelling condition #41's schedules...
+148ms 	║║Condition #41 evaluated false (6ms)
+149ms 	║║Cancelling condition #40's schedules...
+150ms 	║║Condition group #40 evaluated false (state changed) (9ms)
+152ms 	║╚Execution stage complete. (74ms)
+153ms 	╚Event processed successfully (153ms)
6/10/2022, 10:47:16 PM +585ms
+1ms 	╔Received event [Carport light new].button = down_hold with a delay of 45ms
+61ms 	║RunTime Analysis CS > 18ms > PS > 4ms > PE > 40ms > CE
+64ms 	║Runtime (49547 bytes) successfully initialized in 4ms (v0.3.109.20181207) (63ms)
+65ms 	║╔Execution stage started
+72ms 	║║Comparison (enum) down_hold gets (string) up_2x = false (0ms)
+73ms 	║║Condition #19 evaluated false (4ms)
+74ms 	║║Condition group #18 evaluated false (state did not change) (5ms)
+79ms 	║║Comparison (enum) down_hold gets (string) down_2x = false (1ms)
+80ms 	║║Condition #25 evaluated false (4ms)
+81ms 	║║Condition group #24 evaluated false (state did not change) (5ms)
+86ms 	║║Comparison (enum) down_hold gets (string) up_3x = false (0ms)
+88ms 	║║Condition #46 evaluated false (4ms)
+89ms 	║║Condition group #45 evaluated false (state did not change) (6ms)
+95ms 	║║Comparison (enum) down_hold gets (string) down_3x = false (0ms)
+96ms 	║║Condition #52 evaluated false (5ms)
+97ms 	║║Condition group #51 evaluated false (state did not change) (6ms)
+104ms 	║║Comparison (enum) down_hold gets (string) up_hold = false (1ms)
+106ms 	║║Cancelling condition #31's schedules...
+107ms 	║║Condition #31 evaluated false (6ms)
+108ms 	║║Cancelling condition #30's schedules...
+109ms 	║║Condition group #30 evaluated false (state changed) (8ms)
+114ms 	║║Comparison (enum) down_hold gets (string) down_hold = true (1ms)
+115ms 	║║Cancelling condition #61's schedules...
+116ms 	║║Condition #61 evaluated true (5ms)
+117ms 	║║Cancelling condition #60's schedules...
+118ms 	║║Condition group #60 evaluated true (state changed) (7ms)
+120ms 	║║Cancelling statement #62's schedules...
+125ms 	║║button down_hold
+126ms 	║║Executed virtual command log (2ms)
+134ms 	║║Calculating (string) "device: + (string) Carport light new >> (string) "device: Carport light new
+137ms 	║║Calculating (string) "device: Carport light new + (string) , value: >> (string) "device: Carport light new, value:
+140ms 	║║Calculating (string) "device: Carport light new, value: + (string) down_hold >> (string) "device: Carport light new, value: down_hold
+143ms 	║║Calculating (string) "device: Carport light new, value: down_hold + (string) " >> (string) "device: Carport light new, value: down_hold"
+146ms 	║║"device: Carport light new, value: down_hold"
+147ms 	║║Executed virtual command log (2ms)
+153ms 	║║Comparison (dynamic) down_hold is (string) up_hold = false (1ms)
+155ms 	║║Cancelling condition #37's schedules...
+156ms 	║║Condition #37 evaluated false (5ms)
+157ms 	║║Cancelling condition #36's schedules...
+157ms 	║║Condition group #36 evaluated false (state changed) (8ms)
+164ms 	║║Comparison (dynamic) down_hold is (string) down_hold = true (1ms)
+165ms 	║║Cancelling condition #41's schedules...
+166ms 	║║Condition #41 evaluated true (6ms)
+167ms 	║║Cancelling condition #40's schedules...
+168ms 	║║Condition group #40 evaluated true (state changed) (8ms)
+170ms 	║║Cancelling statement #42's schedules...
+174ms 	║║down_hold
+175ms 	║║Executed virtual command log (1ms)
+178ms 	║╚Execution stage complete. (113ms)
+179ms 	╚Event processed successfully (179ms)
6/10/2022, 10:47:13 PM +838ms
+1ms 	╔Received event [Carport light new].button = up_hold with a delay of 39ms
+54ms 	║RunTime Analysis CS > 14ms > PS > 4ms > PE > 35ms > CE
+56ms 	║Runtime (49549 bytes) successfully initialized in 4ms (v0.3.109.20181207) (54ms)
+57ms 	║╔Execution stage started
+64ms 	║║Comparison (enum) up_hold gets (string) up_2x = false (1ms)
+65ms 	║║Condition #19 evaluated false (4ms)
+66ms 	║║Condition group #18 evaluated false (state did not change) (5ms)
+72ms 	║║Comparison (enum) up_hold gets (string) down_2x = false (1ms)
+73ms 	║║Condition #25 evaluated false (4ms)
+74ms 	║║Condition group #24 evaluated false (state did not change) (5ms)
+80ms 	║║Comparison (enum) up_hold gets (string) up_3x = false (0ms)
+81ms 	║║Condition #46 evaluated false (4ms)
+82ms 	║║Condition group #45 evaluated false (state did not change) (6ms)
+87ms 	║║Comparison (enum) up_hold gets (string) down_3x = false (0ms)
+89ms 	║║Condition #52 evaluated false (4ms)
+90ms 	║║Condition group #51 evaluated false (state did not change) (6ms)
+95ms 	║║Comparison (enum) up_hold gets (string) up_hold = true (1ms)
+97ms 	║║Cancelling condition #31's schedules...
+98ms 	║║Condition #31 evaluated true (5ms)
+99ms 	║║Cancelling condition #30's schedules...
+100ms 	║║Condition group #30 evaluated true (state changed) (7ms)
+102ms 	║║Cancelling statement #32's schedules...
+109ms 	║║button hold
+110ms 	║║Executed virtual command log (1ms)
+118ms 	║║Calculating (string) "device: + (string) Carport light new >> (string) "device: Carport light new
+122ms 	║║Calculating (string) "device: Carport light new + (string) value: >> (string) "device: Carport light new value:
+124ms 	║║Calculating (string) "device: Carport light new value: + (string) up_hold >> (string) "device: Carport light new value: up_hold
+127ms 	║║Calculating (string) "device: Carport light new value: up_hold + (string) " >> (string) "device: Carport light new value: up_hold"
+130ms 	║║"device: Carport light new value: up_hold"
+131ms 	║║Executed virtual command log (1ms)
+210ms 	║║Comparison (enum) up_hold gets (string) down_hold = false (73ms)
+211ms 	║║Condition #61 evaluated false (77ms)
+213ms 	║║Condition group #60 evaluated false (state did not change) (78ms)
+219ms 	║║Comparison (dynamic) up_hold is (string) up_hold = true (1ms)
+220ms 	║║Cancelling condition #37's schedules...
+221ms 	║║Condition #37 evaluated true (6ms)
+222ms 	║║Cancelling condition #36's schedules...
+223ms 	║║Condition group #36 evaluated true (state changed) (8ms)
+225ms 	║║Cancelling statement #38's schedules...
+230ms 	║║up_hold
+231ms 	║║Executed virtual command log (1ms)
+237ms 	║║Comparison (dynamic) up_hold is (string) down_hold = false (1ms)
+239ms 	║║Condition #41 evaluated false (4ms)
+240ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+242ms 	║╚Execution stage complete. (184ms)
+243ms 	╚Event processed successfully (243ms)
6/10/2022, 10:47:10 PM +824ms
+1ms 	╔Received event [Carport light new].button = down_4x with a delay of 42ms
+69ms 	║RunTime Analysis CS > 16ms > PS > 6ms > PE > 46ms > CE
+72ms 	║Runtime (49543 bytes) successfully initialized in 6ms (v0.3.109.20181207) (69ms)
+72ms 	║╔Execution stage started
+80ms 	║║Comparison (enum) down_4x gets (string) up_2x = false (0ms)
+81ms 	║║Condition #19 evaluated false (5ms)
+82ms 	║║Condition group #18 evaluated false (state did not change) (6ms)
+88ms 	║║Comparison (enum) down_4x gets (string) down_2x = false (1ms)
+89ms 	║║Condition #25 evaluated false (4ms)
+90ms 	║║Condition group #24 evaluated false (state did not change) (5ms)
+95ms 	║║Comparison (enum) down_4x gets (string) up_3x = false (0ms)
+97ms 	║║Condition #46 evaluated false (4ms)
+98ms 	║║Condition group #45 evaluated false (state did not change) (6ms)
+103ms 	║║Comparison (enum) down_4x gets (string) down_3x = false (1ms)
+105ms 	║║Condition #52 evaluated false (4ms)
+106ms 	║║Condition group #51 evaluated false (state did not change) (5ms)
+111ms 	║║Comparison (enum) down_4x gets (string) up_hold = false (1ms)
+112ms 	║║Condition #31 evaluated false (4ms)
+113ms 	║║Condition group #30 evaluated false (state did not change) (5ms)
+119ms 	║║Comparison (enum) down_4x gets (string) down_hold = false (1ms)
+120ms 	║║Condition #61 evaluated false (4ms)
+121ms 	║║Condition group #60 evaluated false (state did not change) (5ms)
+127ms 	║║Comparison (dynamic) down_4x is (string) up_hold = false (1ms)
+129ms 	║║Condition #37 evaluated false (5ms)
+130ms 	║║Condition group #36 evaluated false (state did not change) (6ms)
+136ms 	║║Comparison (dynamic) down_4x is (string) down_hold = false (1ms)
+137ms 	║║Condition #41 evaluated false (5ms)
+138ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+140ms 	║╚Execution stage complete. (68ms)
+141ms 	╚Event processed successfully (141ms)
6/10/2022, 10:47:08 PM +740ms
+1ms 	╔Received event [Carport light new].button = up_4x with a delay of 40ms
+54ms 	║RunTime Analysis CS > 15ms > PS > 5ms > PE > 34ms > CE
+57ms 	║Runtime (49539 bytes) successfully initialized in 5ms (v0.3.109.20181207) (55ms)
+58ms 	║╔Execution stage started
+64ms 	║║Comparison (enum) up_4x gets (string) up_2x = false (1ms)
+65ms 	║║Condition #19 evaluated false (4ms)
+66ms 	║║Condition group #18 evaluated false (state did not change) (5ms)
+71ms 	║║Comparison (enum) up_4x gets (string) down_2x = false (0ms)
+73ms 	║║Condition #25 evaluated false (3ms)
+73ms 	║║Condition group #24 evaluated false (state did not change) (5ms)
+78ms 	║║Comparison (enum) up_4x gets (string) up_3x = false (0ms)
+80ms 	║║Cancelling condition #46's schedules...
+80ms 	║║Condition #46 evaluated false (4ms)
+81ms 	║║Cancelling condition #45's schedules...
+82ms 	║║Condition group #45 evaluated false (state changed) (7ms)
+87ms 	║║Comparison (enum) up_4x gets (string) down_3x = false (1ms)
+88ms 	║║Condition #52 evaluated false (4ms)
+89ms 	║║Condition group #51 evaluated false (state did not change) (5ms)
+94ms 	║║Comparison (enum) up_4x gets (string) up_hold = false (1ms)
+95ms 	║║Condition #31 evaluated false (4ms)
+96ms 	║║Condition group #30 evaluated false (state did not change) (5ms)
+101ms 	║║Comparison (enum) up_4x gets (string) down_hold = false (1ms)
+102ms 	║║Condition #61 evaluated false (4ms)
+103ms 	║║Condition group #60 evaluated false (state did not change) (5ms)
+109ms 	║║Comparison (dynamic) up_4x is (string) up_hold = false (1ms)
+110ms 	║║Condition #37 evaluated false (4ms)
+111ms 	║║Condition group #36 evaluated false (state did not change) (6ms)
+117ms 	║║Comparison (dynamic) up_4x is (string) down_hold = false (1ms)
+118ms 	║║Condition #41 evaluated false (5ms)
+119ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+121ms 	║╚Execution stage complete. (64ms)
+122ms 	╚Event processed successfully (122ms)
6/10/2022, 10:46:56 PM +545ms
+1ms 	╔Received event [Carport light new].button = up_3x with a delay of 35ms
+52ms 	║RunTime Analysis CS > 14ms > PS > 5ms > PE > 33ms > CE
+55ms 	║Runtime (49545 bytes) successfully initialized in 5ms (v0.3.109.20181207) (53ms)
+56ms 	║╔Execution stage started
+63ms 	║║Comparison (enum) up_3x gets (string) up_2x = false (1ms)
+65ms 	║║Condition #19 evaluated false (4ms)
+66ms 	║║Condition group #18 evaluated false (state did not change) (5ms)
+71ms 	║║Comparison (enum) up_3x gets (string) down_2x = false (1ms)
+73ms 	║║Cancelling condition #25's schedules...
+74ms 	║║Condition #25 evaluated false (6ms)
+75ms 	║║Cancelling condition #24's schedules...
+76ms 	║║Condition group #24 evaluated false (state changed) (8ms)
+82ms 	║║Comparison (enum) up_3x gets (string) up_3x = true (1ms)
+84ms 	║║Cancelling condition #46's schedules...
+84ms 	║║Condition #46 evaluated true (6ms)
+86ms 	║║Cancelling condition #45's schedules...
+87ms 	║║Condition group #45 evaluated true (state changed) (8ms)
+89ms 	║║Cancelling statement #47's schedules...
+94ms 	║║button 1 up_3x
+95ms 	║║Executed virtual command log (2ms)
+104ms 	║║Calculating (string) "device: + (string) Carport light new >> (string) "device: Carport light new
+107ms 	║║Calculating (string) "device: Carport light new + (string) , value: >> (string) "device: Carport light new, value:
+110ms 	║║Calculating (string) "device: Carport light new, value: + (string) up_3x >> (string) "device: Carport light new, value: up_3x
+113ms 	║║Calculating (string) "device: Carport light new, value: up_3x + (string) " >> (string) "device: Carport light new, value: up_3x"
+117ms 	║║"device: Carport light new, value: up_3x"
+118ms 	║║Executed virtual command log (1ms)
+124ms 	║║Comparison (enum) up_3x gets (string) down_3x = false (0ms)
+125ms 	║║Condition #52 evaluated false (4ms)
+126ms 	║║Condition group #51 evaluated false (state did not change) (6ms)
+131ms 	║║Comparison (enum) up_3x gets (string) up_hold = false (0ms)
+133ms 	║║Condition #31 evaluated false (5ms)
+134ms 	║║Condition group #30 evaluated false (state did not change) (6ms)
+140ms 	║║Comparison (enum) up_3x gets (string) down_hold = false (0ms)
+141ms 	║║Condition #61 evaluated false (4ms)
+142ms 	║║Condition group #60 evaluated false (state did not change) (6ms)
+148ms 	║║Comparison (dynamic) up_3x is (string) up_hold = false (1ms)
+150ms 	║║Condition #37 evaluated false (6ms)
+151ms 	║║Condition group #36 evaluated false (state did not change) (7ms)
+157ms 	║║Comparison (dynamic) up_3x is (string) down_hold = false (1ms)
+159ms 	║║Condition #41 evaluated false (5ms)
+160ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+162ms 	║╚Execution stage complete. (106ms)
+163ms 	╚Event processed successfully (163ms)
6/10/2022, 10:46:52 PM +394ms
+1ms 	╔Received event [Carport light new].button = down_2x with a delay of 35ms
+50ms 	║RunTime Analysis CS > 14ms > PS > 4ms > PE > 32ms > CE
+53ms 	║Runtime (49541 bytes) successfully initialized in 4ms (v0.3.109.20181207) (52ms)
+54ms 	║╔Execution stage started
+61ms 	║║Comparison (enum) down_2x gets (string) up_2x = false (1ms)
+62ms 	║║Cancelling condition #19's schedules...
+63ms 	║║Condition #19 evaluated false (5ms)
+64ms 	║║Cancelling condition #18's schedules...
+65ms 	║║Condition group #18 evaluated false (state changed) (8ms)
+80ms 	║║Comparison (enum) down_2x gets (string) down_2x = true (10ms)
+81ms 	║║Cancelling condition #25's schedules...
+82ms 	║║Condition #25 evaluated true (14ms)
+83ms 	║║Cancelling condition #24's schedules...
+84ms 	║║Condition group #24 evaluated true (state changed) (17ms)
+86ms 	║║Cancelling statement #57's schedules...
+91ms 	║║button 1 down_2x
+92ms 	║║Executed virtual command log (1ms)
+100ms 	║║Calculating (string) "device: + (string) Carport light new >> (string) "device: Carport light new
+103ms 	║║Calculating (string) "device: Carport light new + (string) , value: >> (string) "device: Carport light new, value:
+106ms 	║║Calculating (string) "device: Carport light new, value: + (string) down_2x >> (string) "device: Carport light new, value: down_2x
+109ms 	║║Calculating (string) "device: Carport light new, value: down_2x + (string) " >> (string) "device: Carport light new, value: down_2x"
+112ms 	║║"device: Carport light new, value: down_2x"
+113ms 	║║Executed virtual command log (2ms)
+118ms 	║║Comparison (enum) down_2x gets (string) up_3x = false (0ms)
+120ms 	║║Condition #46 evaluated false (4ms)
+121ms 	║║Condition group #45 evaluated false (state did not change) (6ms)
+126ms 	║║Comparison (enum) down_2x gets (string) down_3x = false (1ms)
+127ms 	║║Condition #52 evaluated false (4ms)
+128ms 	║║Condition group #51 evaluated false (state did not change) (5ms)
+133ms 	║║Comparison (enum) down_2x gets (string) up_hold = false (1ms)
+134ms 	║║Condition #31 evaluated false (4ms)
+135ms 	║║Condition group #30 evaluated false (state did not change) (5ms)
+141ms 	║║Comparison (enum) down_2x gets (string) down_hold = false (0ms)
+142ms 	║║Condition #61 evaluated false (4ms)
+143ms 	║║Condition group #60 evaluated false (state did not change) (6ms)
+149ms 	║║Comparison (dynamic) down_2x is (string) up_hold = false (1ms)
+150ms 	║║Condition #37 evaluated false (5ms)
+151ms 	║║Condition group #36 evaluated false (state did not change) (6ms)
+157ms 	║║Comparison (dynamic) down_2x is (string) down_hold = false (1ms)
+158ms 	║║Condition #41 evaluated false (5ms)
+159ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+161ms 	║╚Execution stage complete. (108ms)
+163ms 	╚Event processed successfully (162ms)
6/10/2022, 10:46:49 PM +675ms
+1ms 	╔Received event [Carport light new].button = up_2x with a delay of 38ms
+51ms 	║RunTime Analysis CS > 14ms > PS > 4ms > PE > 33ms > CE
+54ms 	║Runtime (49565 bytes) successfully initialized in 4ms (v0.3.109.20181207) (52ms)
+55ms 	║╔Execution stage started
+71ms 	║║Comparison (enum) up_2x gets (string) up_2x = true (10ms)
+73ms 	║║Cancelling condition #19's schedules...
+74ms 	║║Condition #19 evaluated true (14ms)
+75ms 	║║Cancelling condition #18's schedules...
+75ms 	║║Condition group #18 evaluated true (state changed) (16ms)
+78ms 	║║Cancelling statement #20's schedules...
+83ms 	║║button 1 up_2x
+84ms 	║║Executed virtual command log (2ms)
+93ms 	║║Calculating (string) "device: + (string) Carport light new >> (string) "device: Carport light new
+96ms 	║║Calculating (string) "device: Carport light new + (string) , value: >> (string) "device: Carport light new, value:
+99ms 	║║Calculating (string) "device: Carport light new, value: + (string) up_2x >> (string) "device: Carport light new, value: up_2x
+102ms 	║║Calculating (string) "device: Carport light new, value: up_2x + (string) " >> (string) "device: Carport light new, value: up_2x"
+105ms 	║║"device: Carport light new, value: up_2x"
+106ms 	║║Executed virtual command log (1ms)
+112ms 	║║Comparison (enum) up_2x gets (string) down_2x = false (1ms)
+114ms 	║║Condition #25 evaluated false (4ms)
+115ms 	║║Condition group #24 evaluated false (state did not change) (5ms)
+120ms 	║║Comparison (enum) up_2x gets (string) up_3x = false (1ms)
+121ms 	║║Condition #46 evaluated false (4ms)
+122ms 	║║Condition group #45 evaluated false (state did not change) (5ms)
+128ms 	║║Comparison (enum) up_2x gets (string) down_3x = false (0ms)
+129ms 	║║Condition #52 evaluated false (4ms)
+130ms 	║║Condition group #51 evaluated false (state did not change) (6ms)
+135ms 	║║Comparison (enum) up_2x gets (string) up_hold = false (0ms)
+137ms 	║║Condition #31 evaluated false (5ms)
+138ms 	║║Condition group #30 evaluated false (state did not change) (6ms)
+143ms 	║║Comparison (enum) up_2x gets (string) down_hold = false (1ms)
+145ms 	║║Condition #61 evaluated false (4ms)
+146ms 	║║Condition group #60 evaluated false (state did not change) (5ms)
+152ms 	║║Comparison (dynamic) up_2x is (string) up_hold = false (1ms)
+153ms 	║║Condition #37 evaluated false (5ms)
+154ms 	║║Condition group #36 evaluated false (state did not change) (6ms)
+161ms 	║║Comparison (dynamic) up_2x is (string) down_hold = false (2ms)
+162ms 	║║Condition #41 evaluated false (5ms)
+163ms 	║║Condition group #40 evaluated false (state did not change) (6ms)
+165ms 	║╚Execution stage complete. (111ms)
+166ms 	╚Event processed successfully (166ms)

#6

Good you figured it out. I don’t have any ZEN71 as I prefer the lever type switches over the paddles.

Since you have figured out the behavior, you might try just triggering on button #1 [anything] and then do a switch on $currentEventValue with the cases for each of the values you are interested in. Something like:

if Keypad#1 button changes then
   switch $currentEventValue
   case UP
      do stuff
   case UP_2X
      do other stuff
   etc...
   end switch
end if

#7

I’m right with you on cleaning up the code to switch on the $currentEventValue, but there’s no changes trigger for button. There’s only gets, and the value options are pushed and held. Neither of them is emitted by the handler, unfortunately.

I was able to get it to work by changing from using an if statement to on events.

Note also that, in my case, I had to also handle the ‘released’ events which always follow ‘hold’.

Final working version: