I think I understand you better now. You want an alternative way to push the button, without actually pushing the button…
Why not try some variation of this:
IF Keypad 1's button gets pushed
OR
Momentary Button gets pushed (your new virtual device)
Then
IF {buttonPressed} is false
Then
Blah blah blah
Else
Blah blah blah
END IF
END IF
I went with a “Momentary Button” instead of the usual “Simulated Switch” because it is most similar to a Keypads button. (always off, except for a split second when pushed) Since you are using it as a toggle instead of a switch, this logic makes sense to me.
All that being said, the path I usually choose for bathroom lights is something like this:
(done in your other piston)
IF motion changes to active
Then turn on lights
END IF
IF motion stays inactive for {integer} minutes
Then turn off lights
END IF
With this method, I can use a button (real or virtual) to change the variable, thereby changing the timeout on the lights. To me, this is more efficient than pausing and resuming a piston to “bypass” your coding.