Condition group #20 is the problem here. As you can see from the log below, at 11:59:24 Multisensor Deck motion becomes active, which satisfies the first step of the condition group.
15 seconds later (the followed by time) at 11:59:39, condition #20 makes progress up the ladder and the entire group mysteriously becomes true, even though the 2nd trigger (condition #21) never becomes true. I don’t see why the time event is causing the whole condition group to evaluate true.
I thought perhaps the problem was that I wasn’t subscribing to all the devices in the piston somehow, so I forced them all with Always Subscribe, but its still happening. This sure looks like a bug to me. I can’t follow the logic of it if it isn’t.
5/12/2018, 11:59:39 PM +405ms
+0ms ╔Received event [Home].time = 1526194780247 with a delay of -843ms
+246ms ║RunTime Analysis CS > 18ms > PS > 86ms > PE > 142ms > CE
+249ms ║Runtime (50262 bytes) successfully initialized in 86ms (v0.3.104.20180323) (248ms)
+250ms ║╔Execution stage started
+258ms ║║Cancelling condition #19’s schedules…
+263ms ║║Cancelling statement #20’s schedules…
+264ms ║║Condition group #20 made progress up the ladder, currently at step 2 of 2
+264ms ║║Cancelling statement #20’s schedules…
+265ms ║║Cancelling condition #20’s schedules…
+266ms ║║Condition group #20 evaluated true (state changed) (7ms)
+267ms ║║Cancelling condition #1’s schedules…
+268ms ║║Condition group #1 evaluated true (state changed) (11ms)
+285ms ║║Comparison (time) 86379676 is_between (time) 1526182260000 … (time) 1526129040000 = true (9ms)
+286ms ║║Time restriction check passed
+288ms ║║Condition #29 evaluated true (18ms)
+289ms ║║Condition group #2 evaluated true (state did not change) (18ms)
+290ms ║║Cancelling statement #2’s schedules…
+295ms ║║Skipped execution of physical command [East Rear].on([]) because it would make no change to the device. (2ms)
+296ms ║║Executed [East Rear].on (4ms)
+301ms ║║Skipped execution of physical command [Yard Lights].on([]) because it would make no change to the device. (3ms)
+301ms ║║Executed [Yard Lights].on (4ms)
+329ms ║║Executed physical command [Yard Lights].setLevel([100]) (24ms)
+330ms ║║Executed [Yard Lights].setLevel (26ms)
+333ms ║║Cancelling statement #15’s schedules…
+336ms ║║Executed virtual command setState (1ms)
+339ms ║╚Execution stage complete. (90ms)
+340ms ╚Event processed successfully (340ms)
5/12/2018, 11:59:24 PM +983ms
+1ms ╔Received event [Multisensor Deck].motion = active with a delay of 220ms
+236ms ║RunTime Analysis CS > 34ms > PS > 82ms > PE > 119ms > CE
+239ms ║Runtime (50259 bytes) successfully initialized in 82ms (v0.3.104.20180323) (237ms)
+240ms ║╔Execution stage started
+252ms ║║Condition #9 evaluated false (6ms)
+253ms ║║Cancelling statement #19’s schedules…
+254ms ║║Condition group #19 evaluated false (state did not change) (9ms)
+259ms ║║Comparison (enum) active changes_to (string) active = true (1ms)
+260ms ║║Cancelling condition #22’s schedules…
+261ms ║║Condition #22 evaluated true (5ms)
+262ms ║║Cancelling statement #20’s schedules…
+262ms ║║Condition group #20 made progress up the ladder, currently at step 1 of 2
+266ms ║║Condition group #1 evaluated false (state did not change) (21ms)
+275ms ║║Comparison (enum) active stays (string) inactive = false (2ms)
+277ms ║║Cancelling any timed trigger schedules for condition 12
+278ms ║║Cancelling statement #12’s schedules…
+279ms ║║Condition #12 evaluated false (11ms)
+279ms ║║Condition group #7 evaluated false (state did not change) (12ms)
+288ms ║║Condition #27 evaluated false (7ms)
+295ms ║║Condition #34 evaluated false (5ms)
+295ms ║║Cancelling statement #33’s schedules…
+296ms ║║Condition group #33 evaluated false (state did not change) (7ms)
+297ms ║║Condition group #23 evaluated false (state did not change) (17ms)
+300ms ║╚Execution stage complete. (60ms)
+301ms ║Setting up scheduled job for Sat, May 12 2018 @ 11:59:40 PM PDT (in 14.964s)
+310ms ╚Event processed successfully (309ms)
And just for the sake of completeness, here’s the device events showing that the contact sensor in question never opened: