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.
