Skip to content

Allow per-zone day configuration within sequences for independent watering intervals #230

Description

@Kurisutian

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions