Is your feature request related to a problem? Please describe.
I'm always frustrated when I need zones within the same sequence to run on different intervals. I have two zones on a single water supply line — a lawn (every 3 days) and flower beds (every 2 days) — that must run sequentially because the water pressure is insufficient to operate both simultaneously. The natural solution is to place both zones inside one sequence (which guarantees sequential execution), while giving each zone its own every_n_days interval. However, defining a day key at the zone level within a sequence is currently not supported and throws:
extra keys not allowed @ data['irrigation_unlimited']['controllers'][0]['sequences'][0]['zones'][0]['day']
The only workarounds available — separate sequences with manually staggered before times — break entirely when zone durations are calculated dynamically at runtime (e.g. via the Smart Irrigation integration), since the required time offset is unknown ahead of time.
Describe the solution you'd like
Allow the day parameter to be optionally defined at the zone level within a sequence, overriding the sequence-level schedule interval for that specific zone. The sequence would be triggered at the most frequent zone interval. On each trigger, each zone independently checks whether it is due today based on its own day definition — zones not due are skipped with zero duration. Sequential execution is always preserved.
- name: "Garden (Summer)"
schedules:
- name: "Before Sunrise"
time:
sun: "sunrise"
before: "00:10"
anchor: finish
day:
every_n_days: 2 # Base interval (most frequent zone)
start_n_days: "2020-01-01"
from: 15 May
until: 30 Sep
zones:
- zone_id: 1 # Lawn — runs FIRST
duration: "00:25"
day:
every_n_days: 3 # Lawn: every 3 days
start_n_days: "2020-01-01"
- zone_id: 2 # Flower beds — runs AFTER
duration: "00:20"
day:
every_n_days: 2 # Beds: every 2 days
start_n_days: "2020-01-01"
Describe alternatives you've considered
-
Separate sequences with staggered before times: Each zone gets its own sequence with a manually calculated time offset to prevent overlap. This is fragile and breaks completely when durations are computed dynamically at runtime (e.g. Smart Irrigation), since the offset cannot be known in advance.
-
Automation-based adjust_time to skip zones: Using daily automations to set a zone's duration to 0 on days it should not run. This works but requires significant automation complexity as a workaround for what should be native YAML configuration.
Additional context
This use case is particularly relevant for users combining Irrigation Unlimited with the Smart Irrigation integration, which calculates the required watering duration dynamically each day based on evapotranspiration data. In that setup, fixed before offsets to stagger sequences are not viable, making per-zone day configuration the only clean solution. The feature would also benefit any user with a single-line water supply serving multiple zones with different optimal watering frequencies.
Is your feature request related to a problem? Please describe.
I'm always frustrated when I need zones within the same sequence to run on different intervals. I have two zones on a single water supply line — a lawn (every 3 days) and flower beds (every 2 days) — that must run sequentially because the water pressure is insufficient to operate both simultaneously. The natural solution is to place both zones inside one sequence (which guarantees sequential execution), while giving each zone its own
every_n_daysinterval. However, defining adaykey at the zone level within a sequence is currently not supported and throws:extra keys not allowed @ data['irrigation_unlimited']['controllers'][0]['sequences'][0]['zones'][0]['day']The only workarounds available — separate sequences with manually staggered before times — break entirely when zone durations are calculated dynamically at runtime (e.g. via the Smart Irrigation integration), since the required time offset is unknown ahead of time.
Describe the solution you'd like
Allow the
dayparameter to be optionally defined at the zone level within a sequence, overriding the sequence-level schedule interval for that specific zone. The sequence would be triggered at the most frequent zone interval. On each trigger, each zone independently checks whether it is due today based on its owndaydefinition — zones not due are skipped with zero duration. Sequential execution is always preserved.Describe alternatives you've considered
Separate sequences with staggered
beforetimes: Each zone gets its own sequence with a manually calculated time offset to prevent overlap. This is fragile and breaks completely when durations are computed dynamically at runtime (e.g. Smart Irrigation), since the offset cannot be known in advance.Automation-based
adjust_timeto skip zones: Using daily automations to set a zone's duration to0on days it should not run. This works but requires significant automation complexity as a workaround for what should be native YAML configuration.Additional context
This use case is particularly relevant for users combining Irrigation Unlimited with the Smart Irrigation integration, which calculates the required watering duration dynamically each day based on evapotranspiration data. In that setup, fixed
beforeoffsets to stagger sequences are not viable, making per-zonedayconfiguration the only clean solution. The feature would also benefit any user with a single-line water supply serving multiple zones with different optimal watering frequencies.