The only way you could do this is if your switch reports to SmartThings if it’s turned “on” when it’s already on.
To do this, your piston needs to be subscribed to the switch you want to use (basically means the piston monitors the switch for changes and the piston executes whenever the switch reports a change).
First, you’ll need to fix line 57 in your snapshot above. You don’t want to monitor Switch 8 $status, you want to monitor the switch parameter and use the default on or off options (not capitalized, that won’t evaluate correctly).
Next, to make the piston subscribe, to that switch, click on the statement you just edited for switch 8 and in the upper right corner of your screen you’ll see Subscription Method - change that to Always.
If you’ve got it right so far, after you save your piston and look at it in the viewer (not the edit screen) the line for Switch 8’s switch will have an orange lightning bolt next to it. That means your piston is subscribed.
Now for the test…
Enable full logging (at the bottom of the piston viewer screen). Simply turn your light from off to on. You should see an entry in your logs starting with [HubName].switch. That means your switch reported its change and your piston saw it.
Now, with the light already on, go ‘turn the light on’ again. Check your logs to see if a 2nd [HubName].switch event is processed. My suspicion is it won’t show a 2nd time.
If it does, we can edit your piston to cancel the timer by pushing the switch “on” for the lights that are about to be turned off.
If it doesn’t we can still accomplish your goal but only by turning the lights off, and then back on.
Let me know if any of this is unclear, and post back with your results!