Thanks for the advice. I have split the device update IF statements into 2 pistons ( lights and fans are together as for now I only have 1 fan, and doors is the second one). I noticed another issue which I have resolved. If the If is set to switch is on, then it never empties the global variable. I have it setup now with an IF that checks for a switch change, then if it is on it saves it into a local, and sets it to a global. I also pulled out the part about the notify when in vacation and added it to this as well under the switch changes trigger. Then it looks to see if vacation mode is active and lets me know.
It does seem to be a lot more reliable so far, though we shall see what happens.
Thanks again for the advice, as a first time poster it has been helpful!