Here are few examples on how to stage multiple units. A customer has four units on the same schedule, but didn't want them all to turn on at the same time. They wanted to stage them 10 minutes apart. Below are the options.
The first option executes every day at 6 am regardless of schedule. So its hardcoded to the specific time on schedTime. Would have to be changed if schedule is to be changed.
The second option executes only if schedule curVal is Occupied AND inRange is true, which would only execute based on the schedule days when set to Occupied. But still hardcoded to the schedTime var configured because if schedule is adjusted, the user would have to change the time in the program as well.
The third option executes based on schedules time and duration configured to delay the units. This makes it dynamic based on the schedule time and curVal. The schedule can be changed and it'll still work without remodifying program like the first two options.
Note: By default if not changed, schedules write at level 15. Programs write to level 14. If priority levels have changed, make sure that the program writes at higher priority than the schedule for this to work.