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.