So the good news is, waits do indeed now work correctly. But something still isn't right with the execution. Tried this simple piston (turn light on, wait 4 sec, turn light off):
+1ms | ╔Received event [Deck Light].switch = off with a delay of 94ms |
---|---|
+221ms | ║RunTime Analysis CS > 161ms > PS > 15ms > PE > 45ms > CE |
+269ms | ║Runtime (36586 bytes) successfully initialized in 15ms (v0.3.000.20180224) (268ms) |
+270ms | ║╔Execution stage started |
+553ms | ║║Comparison (enum) off changes_to (string) off = true (1ms) |
+554ms | ║║Cancelling condition #2's schedules... |
+555ms | ║║Condition #2 evaluated true (277ms) |
+555ms | ║║Cancelling condition #1's schedules... |
+556ms | ║║Condition group #1 evaluated true (state changed) (279ms) |
+557ms | ║║Cancelling statement #3's schedules... |
+569ms | ║║Executed physical command [Kitchen Sink Light].on() (8ms) |
+570ms | ║║Executed [Kitchen Sink Light].on (9ms) |
+575ms | ║║Executed virtual command [Kitchen Sink Light].wait (0ms) |
+575ms | ║║Waiting for 4000ms |
+4581ms | ║║Skipped execution of physical command [Kitchen Sink Light].off([]) because it would make no change to the device. (1ms) |
+4582ms | ║║Executed [Kitchen Sink Light].off (3ms) |
+4585ms | ║╚Execution stage complete. (4314ms) |
+4591ms | ╚Event processed successfully (4590ms) |
As I recall CoRE had an option to turn off command optimization but I can't seem to find a setting to do that in WebCoRE.