Reference¶
All services are visible under Developer Tools → Actions with full selectors.
Services¶
| Service | Purpose |
|---|---|
schedule_wizard.run_valve |
Open an entity for duration_minutes. Auto-closes when done. |
schedule_wizard.stop_valve |
Close an entity now and cancel its timer. |
schedule_wizard.add_valve |
Register or update a zone (entity id, label, default duration; optional soak and moisture fields). |
schedule_wizard.remove_valve |
Unregister a zone and delete its schedules. |
schedule_wizard.add_schedule |
Add a recurring schedule: time (or time_mode sunrise / sunset with sun_offset_minutes), days or every_n_days (2 to 30) with optional start_date, a duration, a zone or a cycle, optional conditions. Returns the new id. |
schedule_wizard.update_schedule |
Patch a schedule by id. |
schedule_wizard.remove_schedule |
Delete a schedule by id. |
schedule_wizard.add_cycle |
Create a cycle: an ordered list of {entity_id, duration_minutes} steps. |
schedule_wizard.update_cycle |
Patch a cycle. |
schedule_wizard.remove_cycle |
Delete a cycle and the schedules that point to it. |
schedule_wizard.run_cycle |
Start a cycle now; zones run one after another. |
schedule_wizard.stop_cycle |
Cancel a running cycle. |
schedule_wizard.pause_cycle |
Pause a cycle: the current zone closes and the rest wait. |
schedule_wizard.resume_cycle |
Resume a paused cycle. |
schedule_wizard.set_rain_delay |
Skip scheduled and calendar runs for N hours; all zones, or the entity_id list. |
schedule_wizard.clear_rain_delay |
Clear the global delay, or only the delay of the entity_id list. |
schedule_wizard.stop_all |
Stop every zone, soak sequence and cycle, then close the master valve. |
schedule_wizard.skip_next |
Skip the next run of a schedule (schedule_id, optional date). |
schedule_wizard.skip_day |
Skip every run on a date (default: the rest of today). |
schedule_wizard.unskip |
Undo a skip (schedule_id, date). |
schedule_wizard.run_schedule |
Start a schedule's zone or plan now and drop today's scheduled run of it. |
schedule_wizard.set_override |
Change one run on a date (up to 31 days ahead): a new same-day time and/or percent (25 to 300). |
schedule_wizard.clear_override |
Undo the change of one run (schedule_id, date). |
schedule_wizard.set_boost |
Water percent (-50, -30, -20, 10, 20, 30 or 50) more or less on every scheduled run for days (1 to 14). |
schedule_wizard.clear_boost |
End the boost. |
schedule_wizard.apply_tip |
Do what a weather tip suggests (tip_id, for example rain:2026-10-10). |
schedule_wizard.dismiss_tip |
Hide one weather tip. |
schedule_wizard.mute_tip |
Stop (or with muted: false resume) tips of a kind: rain, heat or frost. |
schedule_wizard.list_config |
Return zones, schedules, cycles, active runs and recent history as a response. |
Limits: names and labels up to 80 characters; at most 200 zones, 200 watering times and 200 plans. Only switch, valve, cover, input_boolean and light entities are accepted.
Examples¶
Run a zone from a script:
service: schedule_wizard.run_valve
data:
entity_id: switch.front_lawn_valve
duration_minutes: 15
Add a zone and a schedule:
- service: schedule_wizard.add_valve
data:
entity_id: switch.front_lawn_valve
label: Front lawn
default_duration_minutes: 12
- service: schedule_wizard.add_schedule
data:
valve_entity_id: switch.front_lawn_valve
time: "06:30"
duration_minutes: 12
days: [mon, wed, fri]
Water every other day, starting on a given date:
- service: schedule_wizard.add_schedule
data:
valve_entity_id: switch.front_lawn_valve
time: "06:00"
duration_minutes: 10
every_n_days: 2
start_date: "2026-10-05"
Capture the new schedule id with a response variable:
- service: schedule_wizard.add_schedule
data:
valve_entity_id: switch.front_lawn_valve
time: "19:00"
duration_minutes: 8
days: [tue, thu]
response_variable: created
- service: system_log.write
data:
message: "New schedule id: {{ created.schedule.id }}"
Entities¶
Every zone and every plan gets its own device. They appear, rename and disappear as you edit zones and plans.
| Entity | What it does |
|---|---|
switch.<zone>_watering |
On while the zone waters. On = water for its default minutes, off = stop. |
sensor.<zone>_time_left |
Minutes left (0 when idle). |
sensor.<zone>_water_used |
Litres used (total increasing). |
switch.<plan>_enabled |
Plan on/off. Off = its schedules do not run. |
button.<plan>_run_now |
Start the plan now. |
binary_sensor.schedule_wizard_watering |
On while anything waters. |
switch.schedule_wizard_rain_delay |
On while the rain delay is active. On = pause for 24 h. |
calendar.schedule_wizard_watering_schedule |
Upcoming runs, shown in the Home Assistant calendar. |
sensor.schedule_wizard_active_runs |
Count of running zones; attribute runs lists them. |
sensor.schedule_wizard_next_schedule |
Label of the next scheduled run; attributes include valve_entity_id, cycle_id, schedule_id, duration_min, fires_in_minutes. |
sensor.schedule_wizard_water_used |
Total litres. |
Installs from before v0.8.0 may keep the older ids sensor.active_runs and sensor.next_schedule.
Events¶
The integration fires these events on the Home Assistant event bus. The source field tells how a run started (schedule, calendar, manual, service, webhook, cycle:<id>).
| Event | When |
|---|---|
schedule_wizard_valve_started |
A zone opens. |
schedule_wizard_valve_ended |
A zone closes (status: completed or cancelled). |
schedule_wizard_cycle_started |
A cycle begins. |
schedule_wizard_cycle_ended |
A cycle finishes or is cancelled. |
schedule_wizard_rain_skipped |
A run was skipped because of rain. |
schedule_wizard_moisture_skipped |
A run was skipped because the soil is wet. |
schedule_wizard_condition_skipped |
A schedule's conditions were not met. |
schedule_wizard_seasonal_skipped |
A run was skipped: temperature adjustment 0 %. |
schedule_wizard_valve_soaking |
A cycle-and-soak run paused between chunks. |
schedule_wizard_leak_detected |
Flow alert (kind: leak or high_flow). |
schedule_wizard_low_flow |
A zone got much less water than usual. |
schedule_wizard_valve_failed_to_open |
Fail-to-open check triggered. |
schedule_wizard_rain_delay_set |
Rain delay set or cleared. |
schedule_wizard_cycle_skipped_overlap |
A scheduled cycle was skipped while another ran. |
Example automations¶
alias: "Irrigation: log cycle completion"
trigger:
- platform: event
event_type: schedule_wizard_cycle_ended
action:
- service: system_log.write
data:
message: >
Cycle {{ trigger.event.data.name }} ended with status
{{ trigger.event.data.status }} (source: {{ trigger.event.data.source }})
alias: "Alert on cancelled valve"
trigger:
- platform: event
event_type: schedule_wizard_valve_ended
event_data:
status: cancelled
action:
- service: notify.mobile_app_my_phone
data:
title: "Irrigation"
message: "{{ trigger.event.data.label }} was cancelled mid-run"
Options¶
| Key | Default | Description |
|---|---|---|
calendar_entity |
none | Calendar entity to poll. |
calendar_lookahead_min |
10 | Minutes ahead to scan for matching events. |
poll_interval |
60 | Calendar poll interval in seconds (10 to 3600). |
calendar_keyword |
none | Only events whose title starts with this word water. Up to 40 characters. |
max_external_minutes |
120 | Longest run a calendar event or webhook call may start (1 to 1440). |
default_duration |
10 | Default run length when a zone has none. |
rain_entity |
none | Weather, sensor or binary_sensor for rain. |
rain_skip_states |
rainy,pouring,snowy,lightning-rainy |
Skip when the state matches any of these. |
rain_attribute |
none | Attribute to read instead of the state. |
rain_threshold |
none | Numeric threshold. Skip when at or above it. Blank or 0 is off. |
flow_entity |
none | Flow sensor for leak detection. |
flow_leak_threshold |
0 | Leak alert when flow is above this with nothing watering. 0 is off. |
flow_max_running |
0 | High-flow alert above this while watering. 0 is off. |
flow_delay_sec |
60 | The condition must last this long before alerting. |
flow_stop_all |
false | On an alert, stop all watering and close the master valve. |
Languages¶
The panel and card follow your Home Assistant profile language: English, Deutsch, עברית, Español, Français, Italiano, Nederlands, Português, Русский, Українська, Polski, العربية, 简体中文, Svenska, Dansk, Norsk bokmål and Suomi. Hebrew and Arabic switch the whole panel and card to right-to-left. Other languages fall back to English. English, German and Hebrew are reviewed; the others are machine translations, so corrections are welcome.