What it is
The Rachio integration connects Home Assistant to supported Rachio irrigation equipment through the Rachio service. It exposes supported control switches and status inputs. Sprinkler controllers use incoming updates that require a reachable Home Assistant callback, while smart hose timers use polling. The controller and Home Assistant's extra automations remain separate parts of the system.
My Setup
Connecting Irrigation to the Rest of My Home Assistant Build
I use a Rachio Generation 3 irrigation controller and bring its controls and reported states into Home Assistant. Rachio remains the controller. Home Assistant adds coordination with relay outputs, water-system monitoring, notifications and scripts.
This is useful because the watering system involves more than a start button. My configuration connects a requested watering operation to other equipment and gives me context when the reported operation and equipment behavior do not agree.
A cloud-connected controller with Home Assistant coordination
My integration uses Rachio account credentials in the form of an API key and has a cloudhook configured for incoming updates. Commands and state reporting therefore involve Rachio's service. The controller being on my home network does not make this integration a direct local control connection.
Rachio controller ↔ Rachio cloud ↔ Home Assistant → coordinated equipment and notifications
The built-in integration exposes switches for supported controller functions and zones, alongside status inputs. My automations use those Rachio entities as both command targets and information sources. The controller's own scheduling and Home Assistant's additional scripts remain separate layers.
The official documentation distinguishes sprinkler-controller updates from smart hose timers, which use polling. My setup described here is the Generation 3 controller path. Features listed for a hose-timer calendar should not be assumed to be part of this installation.
The connections around my irrigation controller
Scroll the table horizontally to compare all four columns.
| Connection | Information | How I use it | Limit or dependency |
|---|---|---|---|
| Rachio integration | Controller and zone states, plus watering commands. | Bring irrigation into Home Assistant routines. | Rachio cloud access and the controller update path. |
| ZHA relay outputs | On/off outputs mirroring selected Rachio zones. | Drive the valves for zones with no valve on the controller. | The Home Assistant automation and Zigbee connection. |
| Pentek monitoring | Pressure, power, frequency and operating information. | Add equipment context to irrigation notifications. | A separate monitoring integration, not Rachio telemetry. |
| Templates and counters | Derived running state and conditional counts. | Summarize activity when configured conditions match. | A derived observation does not directly measure water volume. |
| Weather and scripts | Weather conditions and bounded watering requests. | Apply additional checks before a scripted run. | The script and its inputs must be available and current. |
Coordinating Rachio states with ZHA relay outputs
Some of my Rachio zones have no valve on the controller. Home Assistant watches those zone switches and mirrors them onto a Zigbee relay that drives the valves, so Rachio's schedules still apply to them. The relays appear as light entities, so the entity domain does not by itself tell me what equipment an output operates.
The automation includes a follow-up state check and notification path. That helps distinguish requesting an output change from observing the expected reported state afterward. It is still a software observation, not a measurement of the downstream valve, pump or water flow.
Reconciliation after startup and between changes
A separate routine checks the Rachio-to-relay relationship at Home Assistant startup and periodically. It compares known on/off states and requests the matching relay state. This gives the build a way to reconcile a mismatch beyond reacting only to the original zone transition.
Reconciliation depends on the states Home Assistant has received. It cannot independently establish what the controller is physically doing during a cloud interruption. A stale source state and an unavailable relay need different investigation, even if both appear as a missed output change.
A separate failsafe closes any relay channel left open too long. The mirror, reconciliation and failsafe all run in Home Assistant, so the controller's run limit does not reach those valves on its own.
The ZHA guide covers the relay side. Home Assistant joins the two integrations; there is no direct Rachio-to-Zigbee binding in this workflow.
Adding water-system context to irrigation activity
Commands and conditions
My configuration contains a script that requests a sequence of zones through Rachio's multi-zone scheduling action. A surrounding automation checks controller-related states and weather context before calling a script. Other routines can request watering to stop and issue notifications.
These are configured control paths, not a claim that every planned run completed. Rachio accepting a request, the integration receiving an update and the intended irrigation equipment operating are separate stages.
Independent pump information
My Pentek IntelliDrive integration contributes pressure, power and operating-state information to irrigation-related notifications. Another routine compares power-related observations during watering. This adds a second source of context when a zone reports active but the expected equipment behavior is unclear.
Those measurements come from the pump-monitoring integration. They are not values produced by Rachio. Calculations based on power are estimates with assumptions; I do not present them as readings from a dedicated flow meter or as verified water savings.
Derived running state
A template running indication also feeds a counter when irrigation and relay conditions match. It is useful as a summary of qualifying state transitions. It does not count gallons, prove delivery to a particular outlet or establish that every physical start was observed.
Separate the controller limit from the automation limit
The Home Assistant integration needs access to Rachio's cloud, and sprinkler-controller updates require a reachable callback path. A functioning local Zigbee network cannot compensate for missing Rachio state updates. Likewise, a healthy Rachio connection does not establish that the additional relay path is healthy.
The official setup guide recommends setting a maximum zone run duration for script-driven operation. A controller-enforced duration provides a boundary when a later script action does not run. For my relay-backed zones, that boundary reaches the valve only through the Home Assistant mirror.
API limits and delayed updates are reasons to avoid treating repeated command requests as a repair strategy. The useful first check is whether the request, state update or downstream action failed. My public examples omit watering schedules, zone names and equipment identifiers while retaining those architectural distinctions.
Follow the request through to the physical result
I start with the Rachio side: whether the controller reports the expected operation and whether Home Assistant received a corresponding update. If the two disagree, I check the cloud connection and callback path before changing the relay automation.
Next comes the automation trace and relay state. I check that the expected branch ran, that the target remained available, and that the reported state matched the request. The reconciliation routine is another source of evidence, not proof that every mismatch has been corrected.
Finally I compare the independent monitoring information with the equipment itself. A pressure or power notification provides context; confirming the physical outcome still requires an appropriate observation of the irrigation equipment. This keeps the guide clear about what software can report and what it cannot verify.
What it can do
Zone and schedule controls
Request supported watering operations through the integration's switches and actions.
Controller functions
Expose supported controls such as standby and rain delay alongside zone controls.
State-driven coordination
Use reported irrigation states in Home Assistant automations and notifications.
Equipment context
Combine Rachio state with separate sensors and integrations without attributing their measurements to Rachio.
Install and connect
Before you start
- Supported Rachio equipment associated with a Rachio account and its API key.
- Working access to the Rachio cloud service.
- For sprinkler-controller updates, a supported internet-reachable callback path such as Home Assistant Cloud.
Prepare the Rachio account
Complete controller setup in Rachio and obtain the API key from the account settings described in the official guide.
Add the integration
Open Settings > Devices & services > Add integration and select Rachio. Supply the API key through the configuration flow.
Verify state updates
Confirm the supported callback path is working for a sprinkler controller. Check reported state before attaching downstream automation.
Set operating limits
Review maximum zone run duration in the integration options before script-driven watering. Verify additional relays and monitoring as separate paths.
Limits and caveats
- The integration depends on Rachio's service. Local relay control does not remove that dependency.
- Delayed or missing state updates can affect automations that mirror controller state. A reported on state is not proof of delivered water.
- Controller run limits do not automatically govern separate equipment switched through Home Assistant.
- Hose-timer polling and calendar features should not be assumed to apply to the Generation 3 controller setup described here.
Sources and next steps
- Home Assistant Rachio documentationOfficial setup, callback requirements, controls and run-duration guidance.
- Rachio integration sourceThe built-in component and its supported actions.
- Home Assistant issuesSearch existing integration reports before filing a reproducible issue.
- My Pentek IntelliDrive integrationRead-only monitoring for Pentek IntelliDrive PID50 pump controllers over Modbus TCP, installable through HACS.