Piston not running when condition met


#1

1) Give a description of the problem
I have a piston that i supposed to run when I close a door at night, however, it’s consistently failing to run on the first close, and requiring me to open then close the door again to activate it. What’d I miss?

2) What is the expected behavior?
Run the piston when the door is closed at night

3) What is happening/not happening?
Not always running

4) Post a Green Snapshot of the pistonimage

5) Attach any logs

1/15/2018, 9:28:20 PM +787ms
+1ms ╔Received event [Door - Tom’s Bedroom].contact = closed with a delay of 147ms
+94ms ║RunTime Analysis CS > 21ms > PS > 24ms > PE > 49ms > CE
+96ms ║Runtime (40417 bytes) successfully initialized in 24ms (v0.2.101.20171227) (94ms)
+97ms ║╔Execution stage started
+159ms ║║Comparison (time) 77300891 is_between (time) 1516060800000 … (time) 1516026000000 = true (9ms)
+160ms ║║Time restriction check passed
+162ms ║║Condition #11 evaluated true (58ms)
+167ms ║║Comparison (enum) closed changes_to (string) closed = true (0ms)
+168ms ║║Cancelling condition #12’s schedules…
+169ms ║║Condition #12 evaluated true (6ms)
+170ms ║║Cancelling condition #1’s schedules…
+171ms ║║Condition group #1 evaluated true (state changed) (68ms)
+173ms ║║Cancelling statement #2’s schedules…
+186ms ║║Skipped execution of physical command [Aux garage lights].off([]) because it would make no change to the device. (3ms)
+187ms ║║Executed [Aux garage lights].off (4ms)
+192ms ║║Skipped execution of physical command [Backyard Lights].off([]) because it would make no change to the device. (2ms)
+193ms ║║Executed [Backyard Lights].off (4ms)
+199ms ║║Skipped execution of physical command [Camera Monitor].off([]) because it would make no change to the device. (2ms)
+199ms ║║Executed [Camera Monitor].off (4ms)
+204ms ║║Skipped execution of physical command [Cameras [Harmony Activity]].off([]) because it would make no change to the device. (2ms)
+205ms ║║Executed [Cameras [Harmony Activity]].off (4ms)
+211ms ║║Skipped execution of physical command [Closet Light].off([]) because it would make no change to the device. (3ms)
+212ms ║║Executed [Closet Light].off (4ms)
+233ms ║║Executed physical command [Counter Lights].off() (19ms)
+234ms ║║Executed [Counter Lights].off (20ms)
+240ms ║║Skipped execution of physical command [Dining Room Lights].off([]) because it would make no change to the device. (2ms)
+240ms ║║Executed [Dining Room Lights].off (4ms)
+396ms ║║Executed physical command [Doggie Light].off() (153ms)
+397ms ║║Executed [Doggie Light].off (155ms)
+403ms ║║Skipped execution of physical command [Entry Light].off([]) because it would make no change to the device. (3ms)
+404ms ║║Executed [Entry Light].off (4ms)
+409ms ║║Skipped execution of physical command [Family room lights].off([]) because it would make no change to the device. (3ms)
+410ms ║║Executed [Family room lights].off (4ms)
+415ms ║║Skipped execution of physical command [Fountain].off([]) because it would make no change to the device. (2ms)
+415ms ║║Executed [Fountain].off (3ms)
+421ms ║║Skipped execution of physical command [Foyer light].off([]) because it would make no change to the device. (3ms)
+422ms ║║Executed [Foyer light].off (4ms)
+448ms ║║Executed physical command [Hall lights].off() (24ms)
+449ms ║║Executed [Hall lights].off (25ms)
+454ms ║║Skipped execution of physical command [Kitchen Light].off([]) because it would make no change to the device. (2ms)
+455ms ║║Executed [Kitchen Light].off (4ms)
+460ms ║║Skipped execution of physical command [Living Room Lights].off([]) because it would make no change to the device. (2ms)
+461ms ║║Executed [Living Room Lights].off (4ms)
+467ms ║║Skipped execution of physical command [Living Room Touch Lights].off([]) because it would make no change to the device. (2ms)
+467ms ║║Executed [Living Room Touch Lights].off (4ms)
+473ms ║║Skipped execution of physical command [Main garage lights].off([]) because it would make no change to the device. (3ms)
+474ms ║║Executed [Main garage lights].off (4ms)
+479ms ║║Skipped execution of physical command [Nook Light].off([]) because it would make no change to the device. (3ms)
+480ms ║║Executed [Nook Light].off (3ms)
+484ms ║║Skipped execution of physical command [Office Heater].off([]) because it would make no change to the device. (2ms)
+485ms ║║Executed [Office Heater].off (4ms)
+491ms ║║Skipped execution of physical command [Office Task Lights].off([]) because it would make no change to the device. (3ms)
+492ms ║║Executed [Office Task Lights].off (4ms)
+497ms ║║Skipped execution of physical command [Shop Lights].off([]) because it would make no change to the device. (3ms)
+498ms ║║Executed [Shop Lights].off (4ms)
+503ms ║║Skipped execution of physical command [Store Room Lights].off([]) because it would make no change to the device. (3ms)
+504ms ║║Executed [Store Room Lights].off (4ms)
+509ms ║║Skipped execution of physical command [Watch apple TV (Family Room) [Harmony Activity]].off([]) because it would make no change to the device. (3ms)
+510ms ║║Executed [Watch apple TV (Family Room) [Harmony Activity]].off (3ms)
+515ms ║║Skipped execution of physical command [Watch TV (Family Room) [Harmony Activity]].off([]) because it would make no change to the device. (3ms)
+516ms ║║Executed [Watch TV (Family Room) [Harmony Activity]].off (4ms)
+519ms ║║Cancelling statement #4’s schedules…
+580ms ║║Executed physical command [Back porch light].setColor([[hex: #FFFF00, hue:17, saturation:100, level:50]]) (55ms)
+580ms ║║Executed [Back porch light].setColor (58ms)
+595ms ║║Skipped execution of physical command [Back porch light].setLevel([5]) because it would make no change to the device. (6ms)
+596ms ║║Executed virtual command [Back porch light].fadeLevel (10ms)
+599ms ║║Cancelling statement #9’s schedules…
+606ms ║║Skipped execution of physical command [Lock - Front Door].lock([]) because it would make no change to the device. (3ms)
+607ms ║║Executed [Lock - Front Door].lock (4ms)
+609ms ║║Cancelling statement #13’s schedules…
+667ms ║║Executed virtual command setLocationMode (55ms)
+680ms ║║Executed virtual command setAlarmSystemStatus (8ms)
+683ms ║╚Execution stage complete. (585ms)
+684ms ╚Event processed successfully (684ms)
1/15/2018, 9:28:07 PM +131ms
+1ms ╔Received event [Door - Tom’s Bedroom].contact = open with a delay of 547ms
+81ms ║RunTime Analysis CS > 13ms > PS > 23ms > PE > 45ms > CE
+84ms ║Runtime (40417 bytes) successfully initialized in 23ms (v0.2.101.20171227) (81ms)
+85ms ║╔Execution stage started
+134ms ║║Comparison (time) 77287222 is_between (time) 1516060800000 … (time) 1516026000000 = true (9ms)
+135ms ║║Time restriction check passed
+137ms ║║Condition #11 evaluated true (47ms)
+141ms ║║Comparison (enum) open changes_to (string) closed = false (1ms)
+142ms ║║Condition #12 evaluated false (4ms)
+143ms ║║Condition group #1 evaluated false (state did not change) (53ms)
+145ms ║╚Execution stage complete. (61ms)
+147ms ╚Event processed successfully (146ms)
1/15/2018, 9:25:19 PM +995ms
+2ms ╔Received event [Door - Tom’s Bedroom].contact = closed with a delay of 665ms
+97ms ║RunTime Analysis CS > 23ms > PS > 27ms > PE > 46ms > CE
+99ms ║Runtime (40419 bytes) successfully initialized in 27ms (v0.2.101.20171227) (96ms)
+100ms ║╔Execution stage started
+162ms ║║Comparison (time) 77120101 is_between (time) 1516060800000 … (time) 1516026000000 = true (9ms)
+163ms ║║Time restriction check passed
+165ms ║║Cancelling condition #11’s schedules…
+166ms ║║Condition #11 evaluated true (60ms)
+170ms ║║Comparison (enum) closed changes_to (string) closed = false (0ms)
+172ms ║║Cancelling condition #12’s schedules…
+173ms ║║Condition #12 evaluated false (5ms)
+174ms ║║Condition group #1 evaluated false (state did not change) (67ms)
+176ms ║╚Execution stage complete. (76ms)
+177ms ╚Event processed successfully (177ms)`


#2

well… those logs pasted terrible, and it seems funny to post an green snapshot when all the devices show in the logs, but I don’t mind…


#3

I’m not sure if this is the issue but you are mixing triggers and conditions.
Try moving your ‘Time Is Between’ to a restriction.
So you have
ONLY WHEN
time is between.
IF
Contact changes to closed.


#4

I’ve had intermittent behavior with a condition statement like that, too. I moved the “xxx changes to” up to the first line in the IF condition and it worked every time from then on.

IF
Contact 6 contact changes to closed
AND
Time is between sunset and sunrise

Try that and see if it’s more repeatable?


#5

The logs show that the trigger event was detected, but that it was evaluated incorrectly the first time around.

closed changes_to closed = false ???


#6

I’ve seen incorrect evaluations using presence sensors, switches, and even time comparisons (if time is between X and Y). The fix (or workaround) I posted above resolved it each time so far.

Half the challenge of webCoRE, once you get past basic pistons, is figuring out how to work around its quirks. That’s why, as redundant as it seems at times, it can be near-to-impossible to help someone unless they post a green snapshot and their log details. A piston that reads like it should execute perfectly sometimes has an inexplicable… quirk. lol


Piston reading stale door sensor value when triggered by a timer?
#7

Cool, I figured that could be it… just some odd quirk…
I’ve flipped it around, will see if it works tonight!


#8

Alright, adjusting the condition order seems to have resolved.

I’m going to try using restrictions as well though, the goal being that I don’t have unnecessary executions.

Thanks all!