Piston triggers not being evaluated correctly


#1

1) Give a description of the problem
This piston has been working pretty well for a few days. Today, however, it did not fire for some reason.
Looks like triggers are not being evaluated incorrectly (bolded by me in the logs).

2) What is the expected behaviour?
Plug should turn on when temperature drops below certain point.

3) What is happening/not happening?
It is not turning on

4) Post a Green Snapshot of the pistonimage

5) Attach logs after turning logging level to Full

1/17/2021, 6:41:17 AM +669ms
+1ms ╔Received event [Temp Bedroom].temperature = 62 with a delay of 79ms
+83ms ║RunTime Analysis CS > 21ms > PS > 5ms > PE > 57ms > CE
+85ms ║Runtime (39078 bytes) successfully initialized in 5ms (v0.3.110.20191009) (83ms)
+86ms ║╔Execution stage started
+106ms ║║Comparison (string) Sleep is_any_of (string) PreSleep, Sleep = true (2ms)
+107ms ║║Condition #22 evaluated true (18ms)
+117ms ║║Comparison (enum) heat is_any_of (string) auto,heat,off = true (2ms)
+119ms ║║Condition #23 evaluated true (10ms)
+127ms ║║Comparison (decimal) 43.8 is_less_than (integer) 65 = true (1ms)
+128ms ║║Condition #24 evaluated true (9ms)
+129ms ║║Condition group #null evaluated true (state did not change) (40ms)
+134ms ║║Comparison (decimal) 62.0 drops_to_or_below (integer) 65 = false (1ms)
+135ms ║║Condition #15 evaluated false (4ms)
+136ms ║║Condition group #12 evaluated false (state did not change) (6ms)
+140ms ║║Comparison (decimal) 62.0 rises_to_or_above (integer) 68 = false (1ms)
+142ms ║║Condition #26 evaluated false (5ms)
+143ms ║║Condition group #25 evaluated false (state did not change) (6ms)
+144ms ║╚Execution stage complete. (58ms)
+146ms ╚Event processed successfully (145ms)
1/17/2021, 6:00:18 AM +685ms
+2ms ╔Received event [Temp Bedroom].temperature = 63 with a delay of 98ms
+71ms ║RunTime Analysis CS > 22ms > PS > 5ms > PE > 44ms > CE
+73ms ║Runtime (39078 bytes) successfully initialized in 5ms (v0.3.110.20191009) (70ms)
+74ms ║╔Execution stage started
+92ms ║║Comparison (string) Sleep is_any_of (string) PreSleep, Sleep = true (2ms)
+93ms ║║Condition #22 evaluated true (16ms)
+104ms ║║Comparison (enum) heat is_any_of (string) auto,heat,off = true (1ms)
+105ms ║║Condition #23 evaluated true (11ms)
+114ms ║║Comparison (decimal) 44.8 is_less_than (integer) 65 = true (1ms)
+115ms ║║Condition #24 evaluated true (10ms)
+116ms ║║Condition group #null evaluated true (state did not change) (38ms)
+120ms ║║Comparison (decimal) 63.0 drops_to_or_below (integer) 65 = false (1ms)
+121ms ║║Condition #15 evaluated false (4ms)
+122ms ║║Condition group #12 evaluated false (state did not change) (5ms)
+126ms ║║Comparison (decimal) 63.0 rises_to_or_above (integer) 68 = false (0ms)
+127ms ║║Condition #26 evaluated false (4ms)
+128ms ║║Condition group #25 evaluated false (state did not change) (4ms)
+129ms ║╚Execution stage complete. (55ms)
+130ms ╚Event processed successfully (130ms)


#2

Just a shot in the dark, but try converting your “decimal” to an integer for the comparison.


#3

When was the temperature above 65C and when did it drop to or below 65C?

At those times would the only when group have evaluated as true or false?

If the drop had already happened when the only when conditions became true then the trigger oppurtunity has simply been missed.

If the temperature only ever climbed above 65C while only when is false, then the trigger would not know the temperature was ever above 65C and so doesn’t know it has dropped (triggers typically compare the current event value to what it was last time it was evaluated).

You really need the trigger to see all the temperature changes. The only when can prevent that.