Home Assistant Sprinkler Automation: Rachio and Beyond

Build a controller-neutral Home Assistant sprinkler dashboard with native integration entities, trigger-derived zone history, Rachio controls, and reusable YAML.

Home Assistant sprinkler automation dashboard with Rachio controller

My Rachio controller decides when and how long to water each zone. Home Assistant gives the rest of the house one place to see the controller, review the last completed run, and stop watering when another automation has better context.

The finished setup combines native Rachio entities with a small derived layer. The dashboard shows controller status, the active zone, rain delay, standby mode, per-zone run history, and direct pause, resume, and stop controls.

Start with five controller capabilities

Controller brands expose different entity names and actions. I map each integration to five jobs before writing dashboard YAML:

  1. Identify each watering zone.
  2. Read the next schedule when the integration exposes it.
  3. Know when water is moving and which zone is active.
  4. Honor rain delay or standby state.
  5. Expose a deliberate stop action.

Rachio supplies those capabilities in my installation. Rain Bird, Hunter Hydrawise, OpenSprinkler, and other controllers can use the same dashboard structure after you map their entities and services.

Read native entities before creating helpers

The integration device page shows the available zone switches, rain delay, standby control, connectivity, and rain sensor. I read those states and attributes first. A helper should store information that Home Assistant would otherwise lose, rather than duplicate a value the integration already maintains.

This check kept the package small. Native switches drive the live watering state. Template sensors turn those facts into a controller summary and active-zone label that both dashboards and automations can reuse.

Capture run history when a zone turns off

My zone entities do not retain a useful last-run duration after they return to off. Trigger-based template sensors solve that gap without an input_datetime and input_number for every zone.

template:
  - trigger:
      - platform: state
        entity_id: switch.front_lawn
        from: "on"
        to: "off"
    sensor:
      - name: Front Lawn Last Run
        unit_of_measurement: min
        state_class: measurement
        state: >-
          {% set start = as_timestamp(trigger.from_state.last_changed) %}
          {% set stop = as_timestamp(trigger.to_state.last_changed) %}
          {{ ((stop - start) / 60) | round(1) }}

The production package also stores the zone name, start time, completion time, and source summary as attributes. Home Assistant Recorder can retain the numeric duration, and the dashboard can show a readable completion timestamp.

Use an overview tile and a detailed subview

The main Systems dashboard answers two quick questions: is the sprinkler controller ready, and what happened during the last run? Selecting the sprinkler tile opens a detailed subview with every zone, native controls, the last completed run, and a ninety-day duration chart.

I use the same overview-to-detail layout for water maintenance. The water softener salt automation keeps its summary on the main page and moves history into a focused view. Both designs keep the everyday dashboard scanable while preserving the detail needed for troubleshooting.

Let house context interrupt watering

Home Assistant becomes useful when sprinkler controls can participate in other automations. Rain data can delay a run. Yard work can pause watering for thirty minutes. A leak or safety event can stop the controller. Activity Feed entries record those actions in plain language so the reason remains visible later.

The controller still owns irrigation scheduling. Home Assistant adds household context and a shared control surface. You can see the Rachio controller and other hardware from this setup on my smart home gear page.

Implementation links

Watch the complete walkthrough

The video shows the integration device page, dashboard layers, trigger-based YAML, zone history, native controls, and the changes needed for another sprinkler brand.

TAGS