The first warm week of spring is when you find out whether your sprinklers answer to Home Assistant or to a server in another state. A cloud controller still waters on its own schedule when the internet drops. Rain skips, soil-moisture automations and dashboard buttons stop until the link comes back, though. So the best irrigation controller for Home Assistant is the one with a local path in, and only a few popular brands have one.
We sorted the picks by how each controller talks to Home Assistant. OpenSprinkler uses its local HTTP API, Rain Bird goes through the LNK2 module, and Rachio goes through its cloud. ESPHome relay builds use the native API, and a Zigbee valve covers the garden tap. The last section shows how weather-based watering works when Home Assistant does the maths instead of the vendor. We confirmed every integration’s IoT class, version and Amazon listing in November 2026 against the Home Assistant docs, GitHub releases and the makers’ pages.
Pick a sprinkler controller by its path in
Read the “Path into Home Assistant” column first. It decides what keeps working when the internet or the vendor’s servers do not. Local polling and local push both stay inside your network, while cloud push needs Home Assistant reachable from the internet. Prices are bands from the live listings, so check the current price before buying.
| Job | Controller | Path into Home Assistant | Zones | Price band |
|---|---|---|---|---|
| Local control, no account | OpenSprinkler | HACS integration, local polling | 8, up to 72 with expanders | $130 to $200 direct |
| You already own Rain Bird | Rain Bird LNK2 on an ESP-TM2 | Core rainbird, local polling | 4 to 12 on ESP-TM2 | about $100 module, about $135 controller |
| Best app and weather data | Rachio 3 | Core rachio, cloud push | 16 (also 8) | about $235 |
| DIY with ESPHome | Sonoff 4CH Pro R3 | ESPHome, local push | 4 relays | about $35 plus power supplies |
| Hose tap or garden bed | Sonoff Hydro ONE | Zigbee2MQTT, local | 1 tap | about $37 |
Choose where the schedule lives
Every controller here can run its own program, and that is worth keeping. If Home Assistant reboots during an update at 5 a.m., a controller with its own schedule still waters the lawn. One that only opens valves on command from Home Assistant does not. So the real question is which side owns the decision to water, because that changes how much each integration has to do.
We see three workable splits, and the controller you buy should fit the one you want:
- The controller owns the schedule and its own weather adjustment, and Home Assistant only watches, pauses and adds rain delays. OpenSprinkler and Rain Bird fit this well.
- Home Assistant owns the schedule through the Smart Irrigation integration, works out each zone’s run time from evapotranspiration, and opens the valves itself. ESPHome builds and the Zigbee valve suit this best because they have no useful brain of their own.
- The controller keeps a fallback program, and Home Assistant overrides it with skips and adjusted run times on most days. That’s the safest split, and it works with any local path.
The diagram shows the local paths next to the cloud lane. Everything inside the green box keeps talking to Home Assistant with the internet unplugged, and the dashed line from the vendor clouds is the one that goes quiet.

One myth to clear up before the picks: Rachio does not have a local mode. Its Home Assistant integration is listed as cloud push, and Rachio’s own integrations page names no HomeKit or Matter support. Rachio dropped its HomeKit work for the Rachio 3 in 2022. Some older units still show a HomeKit code on the sticker, but we wouldn’t build a watering schedule on a path the maker no longer supports.
Keep watering local with OpenSprinkler
OpenSprinkler is the pick if you want no account, no cloud and an open API on your own network. Schedules, programs and logs live on the controller itself, and the firmware is open source on GitHub.

The base unit drives 8 zones, each expander adds 16, and the ceiling is 72 zones with 40 programs. Weather adjustment is the one part that leans on the internet. Zimmerman, ETo and the automatic rain delay come from OpenSprinkler’s own weather service (no account needed), and the controller reuses the last good answer for up to 24 hours, then waters at 100%. Only the Manual and Monthly methods work fully offline. Apple WeatherKit is the default data source, with Open-Meteo, AccuWeather and Wunderground as alternatives. The newest model, v4.0 AC, moved to an ESP32-C6 and has shipped since late September 2026 on firmware 2.2.1(6). The v3.4 AC, v3.4 DC (USB-C powered) and 3.3 Latch models are still on sale.
There is no core integration, so Home Assistant reaches it through the community hass-opensprinkler integration from HACS (version 2.2.4 in November 2026). It polls the controller over local HTTP with the device password. That gets you switches that enable or disable each station and program, water-level and run-time sensors, and a calendar. Watering itself starts through actions that run a program or a station, set a rain delay or pause everything. The maintainer lists OS API 2.2.1(4) as the last tested build, and a new v4.0 ships on 2.2.1(6), two firmware releases later.
Best for: anyone who wants the controller and Home Assistant both local and both scriptable. Pass if your Wi-Fi is 5 GHz only and you won’t add the optional Ethernet module, since the controller’s Wi-Fi is 2.4 GHz. The Latch model has no pump start relay (only the AC model does), and the stock 500 mA transformer handles four valves open at once at most. It is sold direct for $130 to $200 depending on model. The 24 VAC adapter is optional and only offered for the US, Canada and Mexico.
Add the LNK2 to a Rain Bird controller you already own
If a Rain Bird ESP-TM2 or ESP-Me3 is already on the garage wall, the cheapest local upgrade is the LNK2 Wi-Fi module. It plugs into the controller’s accessory port, and Home Assistant’s core Rain Bird integration talks to it directly with local polling once a minute.

Rain Bird lists the LNK2 for the ESP-TM2, ESP-ME, ESP-ME3, ESP-2Wire, RZXe, LXME2 and ESP-LXIVM, and an ESP-Me has to be from November 2016 or later. The integration exposes a switch per zone and a rain-sensor binary sensor when one is wired. It also adds a button per program, a schedule calendar, a rain delay number and an action to run a zone for a set time. Watering adjustment stays on Rain Bird’s side, so the controller keeps its program and Home Assistant pauses or skips it.
Three details trip people up. Home Assistant wants the controller’s own password (4 to 8 characters, or the 6-digit PIN if you set it up with the Rain Bird 2.0 app), not the Rain Bird account login. The LNK2 answers one request at a time, so a command from Home Assistant can fail while someone has the Rain Bird app open. Controllers updated through the 2.x app serve the local API over HTTPS. Home Assistant 2026.3.1 and newer handle both, while older installs fail setup on those units.
Buy it if you own a Rain Bird already, or want a contractor-grade controller with a core integration. Think twice when both pieces would be new. The module (about $100) plus an 8-station ESP-TM2 (about $135 from a third-party seller on Amazon) costs more than OpenSprinkler and still needs the Rain Bird app for setup. The ESP-TM2 “WiFi Ready” listing does not include the module, so check the live price on the LNK2 separately. We could not confirm that the newer ARC6 and ARC8, which have Wi-Fi built in, work with the integration, so they’re not here.
Use Rachio 3 for the app, and accept the cloud
Rachio 3 has the most polished app and weather intelligence of the group, and the trade is that every Home Assistant command and update goes through Rachio’s servers. It’s still a fine pick when someone else in the house will run the sprinklers from the app and Home Assistant is a second screen.
The core Rachio integration logs in with an API key from the Rachio app. It creates zone, schedule, standby and rain delay switches, with actions to start, pause, resume and stop watering. Updates arrive by webhook, so the docs require Home Assistant to be reachable from the internet through Home Assistant Cloud or your own remote access. The API also caps you at 1,700 calls a day. Without remote access, the switches still send commands but stop reflecting what the controller is doing.
Who it suits: households that want the Rachio app’s weather skips and are fine with a cloud dependency. Skip it if local control is the reason you run Home Assistant. The 16-zone Rachio 3 sells for about $235 from Amazon, so check the live price. The 8-zone listing showed a future availability date rather than stock when we checked, and Rachio sells the 8-zone direct for about $200.
Build an ESPHome controller on a Sonoff 4CH Pro R3
An ESPHome build is the cheapest fully local controller, and it fits the split where Home Assistant owns the schedule. ESPHome’s sprinkler component already handles the hard parts. It drives multiple valves and a pump or master valve with start and stop delays. It also has a run-time multiplier, auto-repeat, pause and resume, a queue, valve overlap and latching valve support.
The 4CH Pro R3 suits this because its four relays have dry contacts, isolated from the board’s own power. The 24 VAC valve circuit runs through the contacts while the board runs on its own supply. That means two supplies: the board can’t run on 24 VAC, so it takes mains or a DC adapter, and a separate irrigation transformer feeds the valves. Solenoid valves are coils, and builders who flash this board note that its documentation advises against inductive loads, so they add a snubber or flyback diode across each valve.
The board pairs an ESP8285 with an STM32 that handles the RF remote, and it has to be flashed over serial before ESPHome can take over. The published ESPHome configs we found were tested on the R2 revision. A Home Assistant forum thread from June 2026 still has R3 owners asking for a confirmed config, so treat the R3 as community-documented rather than plug and play. If that is too much uncertainty, look at Waveshare’s ESP32-S3-ETH-8DI-8RO. It has eight relays, Ethernet and an entry in the ESPHome devices database with a working config.
Made for people already running ESPHome nodes, such as the WLED and ESP32 controllers many Home Assistant setups start with. Leave it alone if you would rather not wire mains in an enclosure or flash firmware, because a mistake here floods a bed or trips a breaker. The Sonoff 4CH Pro R3 runs about $35, so check the live price. Then budget for the DC supply, the 24 VAC transformer and a weatherproof box.
Put a Zigbee valve on the garden tap
Not every yard has buried zones. For a hose bib feeding a drip line or a raised bed, a battery Zigbee valve on the tap gives Home Assistant a local valve with no wiring at all.
The Sonoff Hydro ONE (SWV-ZFU) is a Zigbee 3.0 valve with a brass inlet, a built-in flow meter, up to six onboard schedules and four AA batteries. Its Bluetooth proximity mode keeps basic control and settings available within range even if the gateway goes offline. Zigbee2MQTT supports it and exposes irrigation plans, rain delay and flow records. The flow data doubles as a leak check, since water moving while the valve should be shut is worth an alert. It’s the same idea behind the water leak sensors and auto shutoff valves we covered for indoor plumbing.
Good fit: renters, small gardens and anyone with a Zigbee coordinator already running. Not a fit on ZHA, since we could only confirm Zigbee2MQTT support. Confirm the listing is the US thread version, too, because the EU and US versions use different tap threads and sell at the same price. The Hydro ONE runs about $37, so check the live price.
Read the fine print on cloud-only controllers
Some of the best-selling controllers work with Home Assistant only through a vendor account, and that matters for a smart home that is meant to run locally:
- Hunter Hydrawise (Pro-HC, HPC, X2): the core Hydrawise integration is cloud polling and needs your account email, password and an API key. The hardware is solid, and the 12-zone Pro-HC runs about $305.
- Orbit B-hyve: there’s no core integration, only the unofficial bhyve-home-assistant integration from HACS, whose README makes no promise of continued compatibility. It goes through Orbit’s account.
- Eve Aqua: it speaks Thread and Apple Home, but Eve’s Home Assistant page doesn’t list it, so we couldn’t confirm a Matter path and left it out.
None of these is a bad controller, and a cloud one beats no automation at all. The cost is that every rain skip Home Assistant sends depends on two internet hops and a company keeping its API open, which is exactly the dependency the picks above avoid. We made the same call in our thermostats for Home Assistant comparison, where a cloud thermostat keeps heating the house but its automations go dark until the internet comes back.
Let Home Assistant water by the weather
Weather-based watering means the run time follows how much water the lawn actually lost, not a fixed 20 minutes every other day. OpenSprinkler and Rain Bird can adjust on their own. When Home Assistant should own that decision, the Smart Irrigation integration from HACS (v2026.10.10 in November 2026) does the calculation. The data moves through it in a fixed order:
- A weather source feeds temperature, humidity, wind and solar data every hour: Open-Meteo, OpenWeatherMap, Pirate Weather, or your own sensors.
- The integration computes evapotranspiration with FAO-56 Penman-Monteith and subtracts rainfall into a per-zone bucket.
- Each zone’s bucket deficit becomes a run time in seconds, based on the zone’s size and sprinkler output.
- An automation or one of its blueprints opens the valves for that long, and the bucket resets after watering.
The project ships blueprints for Rain Bird, Hydrawise, Rachio, OpenSprinkler and B-hyve, so the controller you pick doesn’t lock you out of it. Your own rain gauge makes the bucket far more accurate than a forecast for a city 20 km away, so a local outdoor weather station is the best upgrade once the controller is in. Run Home Assistant on hardware that won’t drop out at dawn, too. One of the mini PCs for Home Assistant is a better host for a watering brain than an SD card.
Check the integrations before the first spring run
This matrix is what each controller gives you in Home Assistant, so you can match it to the schedule split you picked earlier. Install the integration, then watch one full program in the logbook before you trust any automation that skips or shortens it.
| Controller | Integration and install | IoT class | Rain delay from HA | Weather adjust on device | Needs internet |
|---|---|---|---|---|---|
| OpenSprinkler | hass-opensprinkler, HACS | Local polling | Yes | Zimmerman, ETo (via weather service), monthly | Only for weather data |
| Rain Bird + LNK2 | rainbird, core | Local polling | Yes (number entity) | Rain Bird’s own | No, after setup |
| Rachio 3 | rachio, core | Cloud push | Yes (switch) | Rachio Weather Intelligence | Yes, plus remote access |
| ESPHome relay board | esphome, core | Local push | Through automations | None, HA decides | No |
| Sonoff Hydro ONE | Zigbee2MQTT | Local | Yes (exposed) | None locally (weather skip via eWeLink app) | No |
| Hunter Hydrawise | hydrawise, core | Cloud polling | Suspend action | Hydrawise’s own | Yes |
Our pick for most yards is OpenSprinkler with the controller owning a fallback program and Home Assistant adding skips, because it keeps watering through any outage on either side. If you’re already a Rain Bird house, the LNK2 gets you the same local link for about $100, and the ESPHome route is the one to take when you want Home Assistant to own every second of run time.


