Follow Option 1 steps but when adding points, also add the schedule curVal. (this means you want to add a scheduleRef on the target equips this program is running on)
Logic Flow:
Set nowTime variable as now + time. This will get the current time.
IF schedTime + nowTime (using timeToTimeAdd block) are inRange of min=0 and max=10 AND scheduleCurVal is equal to Occupied, then set Unit 2 to UnOccupied else null. (The timeToTimeAdd block returns duration in minutes so we look if its within 10 mins. If its not, it writes null which means it lets the schedule control it again)
Next IF schedTime + nowTime (using timeToTimeAdd block) are inRange of min=0 and max=20 AND scheduleCurVal is equal to Occupied, then set Unit 2 to UnOccupied else null.
Next IF schedTime + nowTime (using timeToTimeAdd block) are inRange of min=0 and max=30 AND scheduleCurVal is equal to Occupied, then set Unit 2 to UnOccupied else null.