AboutBlogContact

Irrigation

The irrigation system allows you to automate garden watering using boneIO relay outputs as zone valves and an optional master valve (pump). Each irrigation controller manages multiple zones with individual durations, scheduling, and advanced pump/valve timing.

Irrigation controllers are automatically discovered by Home Assistant via MQTT autodiscovery — each controller appears as a device with switch, number, and button entities.

Web Application Configuration

Recommended configuration method.

Adding an Irrigation Controller

OptionDescription
NameDisplay name in Home Assistant.
IDUnique controller identifier. Auto-generated from name.
Area/RoomArea assignment for HA device grouping.
Master ValveOutput ID of the pump/master valve. Turned on before any zone.

Zones

Each zone controls a single relay output (valve). A controller requires at least one zone.

OptionDescription
NameZone display name.
Valve OutputOutput ID of the valve relay. Only valve-type outputs are selectable.
Run DurationHow long to run this zone per cycle. Example: 5min, 300s.
Run EveryMinimum interval between runs. Example: 1d, 2d.
EnabledWhether this zone participates in automatic cycles.

Schedules

Optional time-based triggers for the controller. Each schedule entry starts a full cycle at the specified time on the specified days.

OptionDescription
TimeStart time in HH:MM format. Example: 06:00.
DaysActive days: daily, weekdays, weekend, or individual day (monsun).

Advanced Pump/Valve Timing

Fine-grained control over the sequence of pump and valve switching. These settings prevent water hammer, pressure drops, and ensure proper pump operation.

OptionDescription
Valve Open DelayDelay between closing one valve and opening the next.
Valve OverlapTime that current and next valve run simultaneously.
Turn off pump during valve delaySwitch pump off while waiting between valve transitions.
Pump Start (pump delay)Valve opens first, pump activates after this delay.
Pump Start (valve delay)Pump starts first, valve opens after this delay.
Pump Stop (pump delay)Valve closes first, pump deactivates after this delay.
Pump Stop (valve delay)Pump deactivates first, valve closes after this delay.

Valve open delay and valve overlap are mutually exclusive. Pump start delay pairs and pump stop delay pairs are also mutually exclusive.

Runtime Settings

The following settings are controlled at runtime from the Irrigation panel in the web application (not from the YAML configuration form). They can also be changed via MQTT or the Home Assistant UI:

SettingDescription
MultiplierDuration multiplier applied to all zone run times. 1.0 = 100%.
RepeatNumber of times to repeat the full cycle. 0 = run once.
Auto-advanceAutomatically move to the next zone after the current one finishes.
ReverseRun zones in reverse order.
StandbyWhen enabled, the controller will not start any zones.
Skip Next RunSkip the next scheduled cycle (one-time).

Home Assistant Integration

Each irrigation controller creates one HA device with the following entities:

Entity TypeEntityDescription
switchMain switchStart/stop full cycle
switchAuto AdvanceToggle auto-advance between zones
switchReverseToggle reverse zone order
switchStandbyToggle standby mode
switchSkip Next RunSkip the next scheduled run
numberMultiplierDuration multiplier (0.1–5.0)
numberRepeatCycle repeat count (0–10)
buttonNext ValveSkip to the next zone
buttonPausePause the running cycle
buttonResumeResume a paused cycle

Per-zone entities:

Entity TypeEntityDescription
switchZone switchStart/stop individual zone
switchZone EnabledEnable/disable zone in cycles
numberZone DurationZone run duration in seconds

Per-schedule entities:

Entity TypeEntityDescription
switchSchedule SkipSkip this specific schedule entry

YAML Configuration Examples

Basic irrigation with two zones
irrigation:
  - id: garden
    name: Garden Irrigation
    master_valve: OUT_06
    zones:
      - id: lawn
        name: Lawn
        valve_id: OUT_01
        run_duration: 10min
      - id: flower_bed
        name: Flower Bed
        valve_id: OUT_02
        run_duration: 5min
    schedule:
      - time: "06:00"
        days: daily
Advanced configuration with pump timing
irrigation:
  - id: garden_pro
    name: Garden Pro
    master_valve: OUT_06
    valve_open_delay: 3s
    pump_start_valve_delay: 2s
    pump_stop_pump_delay: 5s
    zones:
      - id: lawn_front
        name: Front Lawn
        valve_id: OUT_01
        run_duration: 15min
        run_every: 2d
      - id: lawn_back
        name: Back Lawn
        valve_id: OUT_02
        run_duration: 10min
      - id: drip
        name: Drip Irrigation
        valve_id: OUT_03
        run_duration: 30min
        run_every: 3d
    schedule:
      - time: "05:30"
        days: weekdays
      - time: "06:00"
        days: weekend
    area: garden

Configuration Variables

  • id (Optional, string) — Unique irrigation controller identifier. Auto-generated from name if not provided.
  • name (Optional, string) — Display name in Home Assistant. Uses ID if not set.
  • master_valve (Optional, string) — Output ID of the master valve (pump). Turned on before any zone opens, off after all zones finish.
  • valve_open_delay (Optional, timeperiod) — Delay between one valve closing and the next opening. Mutually exclusive with valve_overlap. Example: 3s.
  • valve_overlap (Optional, timeperiod) — Time that current and next valve run simultaneously. Mutually exclusive with valve_open_delay. Example: 2s.
  • pump_switch_off_during_valve_open_delay (Optional, boolean, default: false) — Turn off pump during valve_open_delay interval.
  • pump_start_pump_delay (Optional, timeperiod) — Valve opens first, pump activates after this delay. Mutually exclusive with pump_start_valve_delay.
  • pump_start_valve_delay (Optional, timeperiod) — Pump starts first, valve opens after this delay. Mutually exclusive with pump_start_pump_delay.
  • pump_stop_pump_delay (Optional, timeperiod) — Valve closes first, pump deactivates after this delay. Mutually exclusive with pump_stop_valve_delay.
  • pump_stop_valve_delay (Optional, timeperiod) — Pump deactivates first, valve closes after this delay. Mutually exclusive with pump_stop_pump_delay.
  • multiplier (Optional, float, default: 1.0) — Initial duration multiplier. Runtime-adjustable via HA/MQTT.
  • repeat (Optional, integer, default: 0) — Initial cycle repeat count. Runtime-adjustable via HA/MQTT.
  • auto_advance (Optional, boolean, default: true) — Automatically advance to the next zone. Runtime-adjustable.
  • reverse (Optional, boolean, default: false) — Run zones in reverse order. Runtime-adjustable.
  • standby (Optional, boolean, default: false) — Prevent any zones from starting. Runtime-adjustable.
  • schedule (Optional, list) — Scheduled start times for this controller.
    • time (Required, string) — Start time in HH:MM format.
    • days (Optional, string, allowed: ['daily', 'weekdays', 'weekend', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], default: daily) — Days when this schedule is active.
  • zones (Required, list) — Irrigation zones. At least one zone is required.
    • id (Optional, string) — Zone identifier. Auto-generated from name.
    • name (Optional, string) — Zone display name.
    • valve_id (Required, string) — Output ID of the valve relay.
    • run_duration (Required, timeperiod) — How long to run this zone. Example: 5min, 300s.
    • enabled (Optional, boolean, default: true) — Whether this zone is active.
    • run_every (Optional, timeperiod, default: 1d) — Minimum interval between runs. Example: 1d, 2d.
  • area (Optional, string) — Area ID reference for HA device grouping.