this is a common one i see in posted examples, so thought a short note on it might be useful.
pistons execution almost always starts at the top and stops at the bottom, unless there is an exit statement somewhere in the piston that gets executed conditionally or unconditionally.
there is one exception to this, that is a timer statement. when executing a timer, the piston execution starts with the every and stops at the end every.
as an example if this is the piston:
if contact changes to open send notification end if every day at 11pm while contact is open send notification wait 2 mins end while end every if contact changes to closed play chime end if
when the piston is triggered by a contact open or close trigger event, the piston will be executed from top to bottom but SKIP the every block. the only time the every block will be executed is when the time condition in the every block becomes true. at that time, ONLY the every block will be executed and NOT the rest of the piston.
so, if you are using an empty every block, expecting the whole piston will be executed - please dont.
other questions on this? please ask away on this thread.