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
| Option | Description |
|---|---|
| Name | Display name in Home Assistant. |
| ID | Unique controller identifier. Auto-generated from name. |
| Area/Room | Area assignment for HA device grouping. |
| Master Valve | Output 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.
| Option | Description |
|---|---|
| Name | Zone display name. |
| Valve Output | Output ID of the valve relay. Only valve-type outputs are selectable. |
| Run Duration | How long to run this zone per cycle. Example: 5min, 300s. |
| Run Every | Minimum interval between runs. Example: 1d, 2d. |
| Enabled | Whether 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.
| Option | Description |
|---|---|
| Time | Start time in HH:MM format. Example: 06:00. |
| Days | Active days: daily, weekdays, weekend, or individual day (mon–sun). |
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.
| Option | Description |
|---|---|
| Valve Open Delay | Delay between closing one valve and opening the next. |
| Valve Overlap | Time that current and next valve run simultaneously. |
| Turn off pump during valve delay | Switch 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:
| Setting | Description |
|---|---|
| Multiplier | Duration multiplier applied to all zone run times. 1.0 = 100%. |
| Repeat | Number of times to repeat the full cycle. 0 = run once. |
| Auto-advance | Automatically move to the next zone after the current one finishes. |
| Reverse | Run zones in reverse order. |
| Standby | When enabled, the controller will not start any zones. |
| Skip Next Run | Skip the next scheduled cycle (one-time). |
Home Assistant Integration
Each irrigation controller creates one HA device with the following entities:
| Entity Type | Entity | Description |
|---|---|---|
switch | Main switch | Start/stop full cycle |
switch | Auto Advance | Toggle auto-advance between zones |
switch | Reverse | Toggle reverse zone order |
switch | Standby | Toggle standby mode |
switch | Skip Next Run | Skip the next scheduled run |
number | Multiplier | Duration multiplier (0.1–5.0) |
number | Repeat | Cycle repeat count (0–10) |
button | Next Valve | Skip to the next zone |
button | Pause | Pause the running cycle |
button | Resume | Resume a paused cycle |
Per-zone entities:
| Entity Type | Entity | Description |
|---|---|---|
switch | Zone switch | Start/stop individual zone |
switch | Zone Enabled | Enable/disable zone in cycles |
number | Zone Duration | Zone run duration in seconds |
Per-schedule entities:
| Entity Type | Entity | Description |
|---|---|---|
switch | Schedule Skip | Skip this specific schedule entry |
YAML Configuration Examples
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: dailyirrigation:
- 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: gardenConfiguration 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 duringvalve_open_delayinterval. - 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:MMformat. - days (Optional, string, allowed:
['daily', 'weekdays', 'weekend', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'], default:daily) — Days when this schedule is active.
- time (Required, string) — Start time in
- 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.