That semaphore is going to be the death of me, LOL
The good news is, you did NOT get the unwanted SMS message!!
(Personally, I never worry about the semaphore unless I have errors)
Here is the latest analysis of your most recent log:
59.670 sec = Screen Acceleration is Active
59.798 sec = Requesting a wake up in 1.5 secs
61.315 sec = Set variable ScreenActive = 1
60.904 sec = Screen contact opened
69.886 sec = Screen contact opened semaphore complete
69.923 sec = Set variable ScreenOpen = 1
72.683 sec = Screen Acceleration is Inactive
The screen opened within the 1500ms time range (barely), but the semaphore forced a delay that we do not want. Also, for some reason, the door never registered as close, so the variables did not reset for the next test.
76.639 sec = Screen Acceleration is Active
76.739 sec = Requesting a wake up in 1.5 secs
78.253 sec = Set variable ScreenActive = 1
76.764 sec = Screen contact closed
86.949 sec = Screen contact closed semaphore complete
86.949 sec = Screen contact closed variables did NOT reset
89.749 sec = Screen Acceleration is Inactive
92.023 sec = Screen Acceleration is Active
92.132 sec = Requesting a wake up in 1.5 secs
93.649 sec = Set variable ScreenActive = 1
I am not sure if this is a second test, or just part two of the same test…
(Maybe you just held the screen open for 17 seconds, and then let it close.)
Also, I went back thru the last two days of your logs, and not once did I find where the Screen door closing reset your variables.
Condition group #70 evaluated false (state did not change)
This will affect any future tests.
Sooo, long story short, I loaded your latest piston, and made a few tiny adjustments to it:
- Contact sensors are now looking for IS open or close
- Forced subscription to those two cases and never cancel
- I moved the Async to the WITH statement, instead of the IF
I hope this will do what you need. If not, I may have to break up your piston into two pistons to get around the semaphore issue.
One small request I have though. For future testing, can you make sure that the variables are both at 0 (or blank) prior to running the test. (If a previous test failed, the numbers may start off wrong, and that would affect the current test) You do not have to do this on a brand new piston because no numbers have been set yet. Only on subsequent testing until we are sure the door closing did a successful reset of both variables to 0.
Thanks