How to automatically lock door lock between only at night?


#1

1) Give a description of the problem
This piston works, but it continuously sends SMS messages after it relocks the door.

2) What is the expected behaviour?
Only send 1 SMS message.

3) What is happening/not happening?
It continuously sends SMS messages after it relocks the door.

4) Post a Green Snapshot of the piston

5) Attach logs after turning logging level to Full
10/26/2019, 8:38:08 PM +100ms
+1ms ╔Received event [Home].time = 1572143889715 with a delay of -1616ms
+101ms ║RunTime Analysis CS > 29ms > PS > 37ms > PE > 36ms > CE
+104ms ║Runtime (39604 bytes) successfully initialized in 37ms (v0.3.110.20191009) (102ms)
+106ms ║╔Execution stage started
+195ms ║║Executed physical command [Front Door].lock() (71ms)
+196ms ║║Executed [Front Door].lock (73ms)
+204ms ║║Calculating (string) Front door was unlocked at: + (string) Sat, Oct 26 2019 @ 8:38:08 PM MDT >> (string) Front door was unlocked at: Sat, Oct 26 2019 @ 8:38:08 PM MDT
+218ms ║║Executed virtual command [Front Door].sendSMSNotification (10ms)
+230ms ║║Comparison (time) 74288321 is_between (time) 70200000 … (time) 25200000 = true (7ms)
+231ms ║║Time restriction check passed
+232ms ║║Condition #2 evaluated true (12ms)
+252ms ║║Cancelling statement #2’s schedules…
+258ms ║║Requesting time schedule wake up at Sun, Oct 27 2019 @ 7:00:00 AM MDT
+261ms ║║Condition group #1 evaluated true (state did not change) (40ms)
+271ms ║║Comparison (enum) unlocked is_not (string) locked = true (2ms)
+272ms ║║Condition #4 evaluated true (9ms)
+273ms ║║Condition group #3 evaluated true (state did not change) (11ms)
+275ms ║║Cancelling statement #5’s schedules…
+288ms ║║Executed virtual command [Front Door].wait (2ms)
+289ms ║║Requesting a wake up for Sat, Oct 26 2019 @ 8:38:23 PM MDT (in 15.0s)
+299ms ║╚Execution stage complete. (194ms)
+301ms ║Setting up scheduled job for Sat, Oct 26 2019 @ 8:38:23 PM MDT (in 14.992s), with 1 more job pending
+309ms ╚Event processed successfully (309ms)
10/26/2019, 8:37:54 PM +583ms
+1ms ╔Received event [Front Door].lock = unlocked with a delay of 109ms
+83ms ║RunTime Analysis CS > 19ms > PS > 30ms > PE > 35ms > CE
+86ms ║Runtime (39602 bytes) successfully initialized in 30ms (v0.3.110.20191009) (84ms)
+87ms ║╔Execution stage started
+100ms ║║Comparison (time) 74274674 is_between (time) 70200000 … (time) 25200000 = true (7ms)
+102ms ║║Time restriction check passed
+103ms ║║Condition #2 evaluated true (12ms)
+104ms ║║Cancelling statement #2’s schedules…
+109ms ║║Requesting time schedule wake up at Sun, Oct 27 2019 @ 7:00:00 AM MDT
+111ms ║║Condition group #1 evaluated true (state did not change) (20ms)
+118ms ║║Comparison (enum) unlocked is_not (string) locked = true (2ms)
+119ms ║║Cancelling condition #4’s schedules…
+120ms ║║Condition #4 evaluated true (7ms)
+121ms ║║Cancelling condition #3’s schedules…
+122ms ║║Condition group #3 evaluated true (state changed) (9ms)
+124ms ║║Cancelling statement #5’s schedules…
+130ms ║║Executed virtual command [Front Door].wait (1ms)
+131ms ║║Requesting a wake up for Sat, Oct 26 2019 @ 8:38:09 PM MDT (in 15.0s)
+136ms ║╚Execution stage complete. (50ms)
+137ms ║Setting up scheduled job for Sat, Oct 26 2019 @ 8:38:09 PM MDT (in 14.995s), with 1 more job pending
+159ms ╚Event processed successfully (159ms)
10/26/2019, 8:37:35 PM +267ms
+1ms ╔Received event [Home].test = 1572143855267 with a delay of 0ms
+63ms ║RunTime Analysis CS > 14ms > PS > 23ms > PE > 26ms > CE
+66ms ║Runtime (39599 bytes) successfully initialized in 23ms (v0.3.110.20191009) (64ms)
+67ms ║╔Execution stage started
+84ms ║║Comparison (time) 74255340 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+86ms ║║Time restriction check passed
+88ms ║║Condition #2 evaluated true (15ms)
+91ms ║║Cancelling statement #2’s schedules…
+98ms ║║Requesting time schedule wake up at Sun, Oct 27 2019 @ 7:00:00 AM MDT
+102ms ║║Condition group #1 evaluated true (state did not change) (30ms)
+114ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+116ms ║║Condition #4 evaluated false (10ms)
+117ms ║║Condition group #3 evaluated false (state did not change) (12ms)
+131ms ║║Comparison (time) 74255386 is_between (time) 70200000 … (time) 25200000 = true (10ms)
+132ms ║║Time restriction check passed
+134ms ║║Condition #2 evaluated true (15ms)
+140ms ║║Condition group #1 evaluated true (state did not change) (21ms)
+150ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+152ms ║║Condition #4 evaluated false (8ms)
+153ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+172ms ║║Comparison (time) 74255422 is_between (time) 70200000 … (time) 25200000 = true (15ms)
+173ms ║║Time restriction check passed
+175ms ║║Condition #2 evaluated true (20ms)
+177ms ║║Condition group #1 evaluated true (state did not change) (22ms)
+186ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+188ms ║║Condition #4 evaluated false (8ms)
+189ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+202ms ║║Comparison (time) 74255458 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+204ms ║║Time restriction check passed
+205ms ║║Condition #2 evaluated true (14ms)
+207ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+217ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+218ms ║║Condition #4 evaluated false (9ms)
+220ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+234ms ║║Comparison (time) 74255489 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+235ms ║║Time restriction check passed
+237ms ║║Condition #2 evaluated true (15ms)
+239ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+249ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+251ms ║║Condition #4 evaluated false (9ms)
+252ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+266ms ║║Comparison (time) 74255521 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+267ms ║║Time restriction check passed
+269ms ║║Condition #2 evaluated true (15ms)
+271ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+280ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+282ms ║║Condition #4 evaluated false (9ms)
+283ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+297ms ║║Comparison (time) 74255552 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+298ms ║║Time restriction check passed
+300ms ║║Condition #2 evaluated true (15ms)
+301ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+312ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+314ms ║║Condition #4 evaluated false (9ms)
+315ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+328ms ║║Comparison (time) 74255584 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+330ms ║║Time restriction check passed
+332ms ║║Condition #2 evaluated true (14ms)
+333ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+343ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+345ms ║║Condition #4 evaluated false (9ms)
+346ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+360ms ║║Comparison (time) 74255615 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+361ms ║║Time restriction check passed
+363ms ║║Condition #2 evaluated true (15ms)
+364ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+374ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+376ms ║║Condition #4 evaluated false (9ms)
+378ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+391ms ║║Comparison (time) 74255647 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+392ms ║║Time restriction check passed
+394ms ║║Condition #2 evaluated true (15ms)
+396ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+405ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+407ms ║║Condition #4 evaluated false (8ms)
+408ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+421ms ║║Comparison (time) 74255677 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+423ms ║║Time restriction check passed
+425ms ║║Condition #2 evaluated true (14ms)
+426ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+436ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+438ms ║║Condition #4 evaluated false (9ms)
+439ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+453ms ║║Comparison (time) 74255709 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+455ms ║║Time restriction check passed
+457ms ║║Condition #2 evaluated true (16ms)
+459ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+468ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+470ms ║║Condition #4 evaluated false (9ms)
+471ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+484ms ║║Comparison (time) 74255740 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+486ms ║║Time restriction check passed
+488ms ║║Condition #2 evaluated true (15ms)
+490ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+500ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+502ms ║║Condition #4 evaluated false (9ms)
+503ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+517ms ║║Comparison (time) 74255772 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+518ms ║║Time restriction check passed
+520ms ║║Condition #2 evaluated true (15ms)
+522ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+531ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+533ms ║║Condition #4 evaluated false (9ms)
+534ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+548ms ║║Comparison (time) 74255803 is_between (time) 70200000 … (time) 25200000 = true (10ms)
+550ms ║║Time restriction check passed
+552ms ║║Condition #2 evaluated true (16ms)
+554ms ║║Condition group #1 evaluated true (state did not change) (18ms)
+564ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+566ms ║║Condition #4 evaluated false (9ms)
+567ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+581ms ║║Comparison (time) 74255837 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+583ms ║║Time restriction check passed
+585ms ║║Condition #2 evaluated true (15ms)
+586ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+597ms ║║Comparison (enum) locked is_not (string) locked = false (3ms)
+599ms ║║Condition #4 evaluated false (9ms)
+600ms ║║Condition group #3 evaluated false (state did not change) (12ms)
+613ms ║║Comparison (time) 74255869 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+614ms ║║Time restriction check passed
+616ms ║║Condition #2 evaluated true (14ms)
+618ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+629ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+630ms ║║Condition #4 evaluated false (9ms)
+632ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+645ms ║║Comparison (time) 74255901 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+647ms ║║Time restriction check passed
+649ms ║║Condition #2 evaluated true (15ms)
+651ms ║║Condition group #1 evaluated true (state did not change) (18ms)
+661ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+663ms ║║Condition #4 evaluated false (9ms)
+664ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+678ms ║║Comparison (time) 74255934 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+679ms ║║Time restriction check passed
+681ms ║║Condition #2 evaluated true (15ms)
+683ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+693ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+694ms ║║Condition #4 evaluated false (9ms)
+696ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+710ms ║║Comparison (time) 74255965 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+711ms ║║Time restriction check passed
+713ms ║║Condition #2 evaluated true (15ms)
+715ms ║║Condition group #1 evaluated true (state did not change) (18ms)
+724ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+726ms ║║Condition #4 evaluated false (9ms)
+728ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+741ms ║║Comparison (time) 74255997 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+743ms ║║Time restriction check passed
+744ms ║║Condition #2 evaluated true (15ms)
+746ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+755ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+757ms ║║Condition #4 evaluated false (9ms)
+758ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+771ms ║║Comparison (time) 74256028 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+773ms ║║Time restriction check passed
+775ms ║║Condition #2 evaluated true (15ms)
+776ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+786ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+788ms ║║Condition #4 evaluated false (8ms)
+789ms ║║Condition group #3 evaluated false (state did not change) (9ms)
+802ms ║║Comparison (time) 74256058 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+803ms ║║Time restriction check passed
+805ms ║║Condition #2 evaluated true (13ms)
+806ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+816ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+817ms ║║Condition #4 evaluated false (8ms)
+819ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+832ms ║║Comparison (time) 74256088 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+833ms ║║Time restriction check passed
+835ms ║║Condition #2 evaluated true (14ms)
+836ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+846ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+848ms ║║Condition #4 evaluated false (8ms)
+849ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+863ms ║║Comparison (time) 74256118 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+864ms ║║Time restriction check passed
+866ms ║║Condition #2 evaluated true (15ms)
+868ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+878ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+880ms ║║Condition #4 evaluated false (10ms)
+881ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+895ms ║║Comparison (time) 74256151 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+896ms ║║Time restriction check passed
+898ms ║║Condition #2 evaluated true (15ms)
+900ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+909ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+911ms ║║Condition #4 evaluated false (8ms)
+913ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+927ms ║║Comparison (time) 74256182 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+928ms ║║Time restriction check passed
+930ms ║║Condition #2 evaluated true (15ms)
+932ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+942ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+944ms ║║Condition #4 evaluated false (10ms)
+945ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+959ms ║║Comparison (time) 74256215 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+961ms ║║Time restriction check passed
+963ms ║║Condition #2 evaluated true (15ms)
+964ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+974ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+976ms ║║Condition #4 evaluated false (8ms)
+977ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+991ms ║║Comparison (time) 74256246 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+992ms ║║Time restriction check passed
+994ms ║║Condition #2 evaluated true (15ms)
+995ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1006ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1007ms ║║Condition #4 evaluated false (9ms)
+1008ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1021ms ║║Comparison (time) 74256278 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1023ms ║║Time restriction check passed
+1025ms ║║Condition #2 evaluated true (14ms)
+1026ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1036ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1037ms ║║Condition #4 evaluated false (8ms)
+1039ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1052ms ║║Comparison (time) 74256308 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1053ms ║║Time restriction check passed
+1055ms ║║Condition #2 evaluated true (14ms)
+1057ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1067ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1069ms ║║Condition #4 evaluated false (10ms)
+1070ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1083ms ║║Comparison (time) 74256340 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1085ms ║║Time restriction check passed
+1087ms ║║Condition #2 evaluated true (15ms)
+1089ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1099ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1101ms ║║Condition #4 evaluated false (9ms)
+1102ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1115ms ║║Comparison (time) 74256371 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1117ms ║║Time restriction check passed
+1119ms ║║Condition #2 evaluated true (14ms)
+1120ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+1130ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1132ms ║║Condition #4 evaluated false (9ms)
+1133ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1147ms ║║Comparison (time) 74256403 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1148ms ║║Time restriction check passed
+1150ms ║║Condition #2 evaluated true (15ms)
+1152ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1162ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1164ms ║║Condition #4 evaluated false (9ms)
+1170ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1186ms ║║Comparison (time) 74256440 is_between (time) 70200000 … (time) 25200000 = true (10ms)
+1187ms ║║Time restriction check passed
+1189ms ║║Condition #2 evaluated true (16ms)
+1191ms ║║Condition group #1 evaluated true (state did not change) (18ms)
+1200ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1202ms ║║Condition #4 evaluated false (9ms)
+1203ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1218ms ║║Comparison (time) 74256473 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1219ms ║║Time restriction check passed
+1221ms ║║Condition #2 evaluated true (16ms)
+1223ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+1234ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1235ms ║║Condition #4 evaluated false (9ms)
+1237ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1251ms ║║Comparison (time) 74256506 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1252ms ║║Time restriction check passed
+1254ms ║║Condition #2 evaluated true (15ms)
+1256ms ║║Condition group #1 evaluated true (state did not change) (18ms)
+1267ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1269ms ║║Condition #4 evaluated false (9ms)
+1270ms ║║Condition group #3 evaluated false (state did not change) (12ms)
+1284ms ║║Comparison (time) 74256539 is_between (time) 70200000 … (time) 25200000 = true (10ms)
+1285ms ║║Time restriction check passed
+1287ms ║║Condition #2 evaluated true (15ms)
+1289ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+1300ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1302ms ║║Condition #4 evaluated false (9ms)
+1303ms ║║Condition group #3 evaluated false (state did not change) (12ms)
+1316ms ║║Comparison (time) 74256572 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1317ms ║║Time restriction check passed
+1319ms ║║Condition #2 evaluated true (14ms)
+1321ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+1331ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1333ms ║║Condition #4 evaluated false (10ms)
+1334ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1348ms ║║Comparison (time) 74256604 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1349ms ║║Time restriction check passed
+1351ms ║║Condition #2 evaluated true (15ms)
+1352ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1361ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1363ms ║║Condition #4 evaluated false (8ms)
+1364ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1378ms ║║Comparison (time) 74256634 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1379ms ║║Time restriction check passed
+1381ms ║║Condition #2 evaluated true (15ms)
+1383ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1467ms ║║Comparison (enum) locked is_not (string) locked = false (77ms)
+1469ms ║║Condition #4 evaluated false (84ms)
+1471ms ║║Condition group #3 evaluated false (state did not change) (85ms)
+1485ms ║║Comparison (time) 74256740 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1487ms ║║Time restriction check passed
+1489ms ║║Condition #2 evaluated true (15ms)
+1490ms ║║Condition group #1 evaluated true (state did not change) (18ms)
+1500ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1501ms ║║Condition #4 evaluated false (8ms)
+1503ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1516ms ║║Comparison (time) 74256772 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1517ms ║║Time restriction check passed
+1519ms ║║Condition #2 evaluated true (14ms)
+1520ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1530ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1531ms ║║Condition #4 evaluated false (8ms)
+1533ms ║║Condition group #3 evaluated false (state did not change) (9ms)
+1546ms ║║Comparison (time) 74256802 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1548ms ║║Time restriction check passed
+1549ms ║║Condition #2 evaluated true (14ms)
+1551ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+1560ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1562ms ║║Condition #4 evaluated false (9ms)
+1563ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1576ms ║║Comparison (time) 74256832 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1578ms ║║Time restriction check passed
+1580ms ║║Condition #2 evaluated true (14ms)
+1581ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1591ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1592ms ║║Condition #4 evaluated false (8ms)
+1593ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1606ms ║║Comparison (time) 74256862 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1607ms ║║Time restriction check passed
+1609ms ║║Condition #2 evaluated true (14ms)
+1611ms ║║Condition group #1 evaluated true (state did not change) (15ms)
+1620ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1621ms ║║Condition #4 evaluated false (8ms)
+1623ms ║║Condition group #3 evaluated false (state did not change) (9ms)
+1635ms ║║Comparison (time) 74256892 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1637ms ║║Time restriction check passed
+1639ms ║║Condition #2 evaluated true (14ms)
+1640ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1649ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1651ms ║║Condition #4 evaluated false (7ms)
+1652ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1665ms ║║Comparison (time) 74256921 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1666ms ║║Time restriction check passed
+1668ms ║║Condition #2 evaluated true (14ms)
+1670ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1680ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1682ms ║║Condition #4 evaluated false (10ms)
+1683ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1696ms ║║Comparison (time) 74256952 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1697ms ║║Time restriction check passed
+1699ms ║║Condition #2 evaluated true (14ms)
+1700ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1709ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1711ms ║║Condition #4 evaluated false (8ms)
+1712ms ║║Condition group #3 evaluated false (state did not change) (9ms)
+1725ms ║║Comparison (time) 74256981 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1727ms ║║Time restriction check passed
+1728ms ║║Condition #2 evaluated true (14ms)
+1730ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1740ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1742ms ║║Condition #4 evaluated false (10ms)
+1744ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1756ms ║║Comparison (time) 74257013 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1758ms ║║Time restriction check passed
+1760ms ║║Condition #2 evaluated true (13ms)
+1761ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1771ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1772ms ║║Condition #4 evaluated false (8ms)
+1774ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1787ms ║║Comparison (time) 74257043 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1789ms ║║Time restriction check passed
+1791ms ║║Condition #2 evaluated true (15ms)
+1792ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+1801ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1803ms ║║Condition #4 evaluated false (8ms)
+1804ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1817ms ║║Comparison (time) 74257073 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+1819ms ║║Time restriction check passed
+1821ms ║║Condition #2 evaluated true (14ms)
+1822ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1831ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1833ms ║║Condition #4 evaluated false (8ms)
+1834ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1847ms ║║Comparison (time) 74257103 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1849ms ║║Time restriction check passed
+1851ms ║║Condition #2 evaluated true (14ms)
+1852ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1862ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1864ms ║║Condition #4 evaluated false (10ms)
+1865ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1878ms ║║Comparison (time) 74257134 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1880ms ║║Time restriction check passed
+1881ms ║║Condition #2 evaluated true (14ms)
+1883ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1892ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1894ms ║║Condition #4 evaluated false (9ms)
+1895ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+1908ms ║║Comparison (time) 74257164 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1910ms ║║Time restriction check passed
+1912ms ║║Condition #2 evaluated true (14ms)
+1913ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1923ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1925ms ║║Condition #4 evaluated false (9ms)
+1926ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+1939ms ║║Comparison (time) 74257195 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1940ms ║║Time restriction check passed
+1942ms ║║Condition #2 evaluated true (14ms)
+1944ms ║║Condition group #1 evaluated true (state did not change) (15ms)
+1952ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+1954ms ║║Condition #4 evaluated false (8ms)
+1955ms ║║Condition group #3 evaluated false (state did not change) (9ms)
+1968ms ║║Comparison (time) 74257224 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+1970ms ║║Time restriction check passed
+1972ms ║║Condition #2 evaluated true (14ms)
+1973ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+1983ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+1985ms ║║Condition #4 evaluated false (10ms)
+1987ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+2000ms ║║Comparison (time) 74257256 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+2001ms ║║Time restriction check passed
+2003ms ║║Condition #2 evaluated true (15ms)
+2005ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+2014ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+2016ms ║║Condition #4 evaluated false (9ms)
+2017ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+2030ms ║║Comparison (time) 74257286 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+2032ms ║║Time restriction check passed
+2034ms ║║Condition #2 evaluated true (15ms)
+2036ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+2048ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+2051ms ║║Condition #4 evaluated false (10ms)
+2052ms ║║Condition group #3 evaluated false (state did not change) (13ms)
+2070ms ║║Comparison (time) 74257323 is_between (time) 70200000 … (time) 25200000 = true (11ms)
+2072ms ║║Time restriction check passed
+2074ms ║║Condition #2 evaluated true (19ms)
+2076ms ║║Condition group #1 evaluated true (state did not change) (21ms)
+2089ms ║║Comparison (enum) locked is_not (string) locked = false (3ms)
+2092ms ║║Condition #4 evaluated false (12ms)
+2093ms ║║Condition group #3 evaluated false (state did not change) (14ms)
+2111ms ║║Comparison (time) 74257363 is_between (time) 70200000 … (time) 25200000 = true (11ms)
+2113ms ║║Time restriction check passed
+2115ms ║║Condition #2 evaluated true (19ms)
+2117ms ║║Condition group #1 evaluated true (state did not change) (22ms)
+2127ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+2129ms ║║Condition #4 evaluated false (8ms)
+2130ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+2143ms ║║Comparison (time) 74257400 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+2145ms ║║Time restriction check passed
+2147ms ║║Condition #2 evaluated true (14ms)
+2148ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+2159ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+2161ms ║║Condition #4 evaluated false (9ms)
+2162ms ║║Condition group #3 evaluated false (state did not change) (12ms)
+2175ms ║║Comparison (time) 74257431 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+2176ms ║║Time restriction check passed
+2178ms ║║Condition #2 evaluated true (14ms)
+2180ms ║║Condition group #1 evaluated true (state did not change) (17ms)
+2190ms ║║Comparison (enum) locked is_not (string) locked = false (2ms)
+2192ms ║║Condition #4 evaluated false (10ms)
+2193ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+2206ms ║║Comparison (time) 74257462 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+2208ms ║║Time restriction check passed
+2210ms ║║Condition #2 evaluated true (14ms)
+2211ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+2221ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+2222ms ║║Condition #4 evaluated false (8ms)
+2224ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+2237ms ║║Comparison (time) 74257493 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+2238ms ║║Time restriction check passed
+2240ms ║║Condition #2 evaluated true (15ms)
+2241ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+2252ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+2253ms ║║Condition #4 evaluated false (9ms)
+2255ms ║║Condition group #3 evaluated false (state did not change) (10ms)
+2268ms ║║Comparison (time) 74257524 is_between (time) 70200000 … (time) 25200000 = true (8ms)
+2269ms ║║Time restriction check passed
+2271ms ║║Condition #2 evaluated true (15ms)
+2272ms ║║Condition group #1 evaluated true (state did not change) (16ms)
+2283ms ║║Comparison (enum) locked is_not (string) locked = false (1ms)
+2284ms ║║Condition #4 evaluated false (9ms)
+2286ms ║║Condition group #3 evaluated false (state did not change) (11ms)
+2299ms ║║Comparison (time) 74257555 is_between (time) 70200000 … (time) 25200000 = true (9ms)
+2300ms ║║Time restriction check passed
+2302ms ║║Condition #2 evaluated true (14ms)


#2

Your lightning bolts on lines 18 & 21 are very vague conditions
(Meaning that they could be true for hours at a time)

You either need to make your trigger precise (my preference) or use variables to dictate when to send a SMS, and when not to send… If you choose this second route, the piston will still fire over and over until the door is locked.


One way that I sometimes approach this is:

IF Door's lock stays away from lock for X min  <-- Trigger
Then 
    IF Time is between Y & Z                   <-- Condition
        Then Lock door
        Wait 5 seconds
            IF Door is unlocked                <-- Condition
                Then send SMS
            END IF
END IF

Every day at Y PM                              <-- Trigger
    Lock Door's lock
END EVERY

This last IF block catches those stray events…


#3

My quick suggestion. But @WCmore is the professional here, so his suggestion seems more applicable.

IF Front Door's lock changes to unlocked
And
Time is between 7:30 PM and 7 AM
THEN
    WITH Front Door
    Do
        Wait
        Lock
        Send SMS
    END WITH
END IF

#4

Your logic is solid, @Pantheon

The only reason I do not use this method is because the trigger will no longer be true after coming back from the WAIT… Yes, a TCP can force it to continue, but then the timer can never be cancelled or changed…


One other thing that neither of us has mentioned yet is adding some kind of check to make sure the door is closed before trying to lock the door…


#5

True that. I like yours better :slightly_smiling_face:


#6

Hi @WCmore! Thanks for your help with this! What is TCP?

I don’t have door open/close sensors yet. I’m still very new to Samsung SmartThings, Google Home, and WebCoRE. And I don’t have a crazy budget to buy all the things I want at once… a little at a time. Plus, the sensors and modules would probably just sit in their boxes while I learned how to do this one thing at a time! hahaha


#7

Hi @WCmore, what do you mean by hours at a time, because I set the door lock to lock after 15 seconds, wouldn’t that change the state of the door lock?

One of the issues I’m having is that the piston is still firing after the door is locked?
I chose this logic based on a recent thing I learned that we should make conditions focus on the property that’s the most safe. Not sure if I’m wording that right? Anyway, that’s why I chose the locked property instead of unlocked.

What’s the difference with this conditional statement from mine?

Why do you put a delay after locking the door?

I have another piston to lock all of my doors every night. Do I still need this part?

Thank you for sharing your tips and knowledge!


#8

TCP stands for Task Cancellation Policy


Conditions are (by nature) very vague… Line 18 is true for 11.5 hours each day, and line 21 can (techincally) be true for weeks at a time…


Anytime your lock changes to lock or unlock, this piston will run top to bottom, and execute any commands not blocked by conditions.


This is why I made the FIRST command a trigger based on the lock… and used the time as a condition in my earlier post.


Generally speaking, I use a precise trigger based event up top, and conditions below to direct the flow of commands.


Yours uses a WAIT, which can complicate the code, since the trigger will be false after the WAIT. My suggestion restarts the timer each time the door unlocks.


The delay is to give time for the door to lock, and report the status back to the hub. After that wait, it checks to see if the door actually DID lock before sending the SMS.


#9

@WCmore Thank you!


#10

I am a big fan of multiple pistons all locking a house (for safety/redundancy)
What I am extra cautious with are the UNlock commands…


Pro Tip:
If you go with extra pistons for lock commands, it is worth the extra effort to make sure that they don’t step on each others toes. It is better to “stagger” the triggers, so they don’t all happen at once.

Simple example:

Piston 1:
IF Door’s lock stays away from lock for 5 min, then do stuff

Piston 2:
IF Door’s lock stays away from lock for 10 min, then do other stuff

This gives another (backup) piston a chance to repair if the first (main) one fails for any reason… This also means if everything went as expected, the second piston would never execute.

I often make another piston like:

Piston 3:
Every day at 11PM, do more stuff

as a double safety net…

…but notice that none of them will ever fire at the same moment as the other…
IE: You don’t want multiple pistons firing when the door (un)locks…