Last summer I swapped the mechanical Gardena timers on the garden taps for Sonoff Zigbee valves, and should have done it years earlier. A wind-up timer does one thing: you turn the dial and it shuts the tap when it runs down. Watering the garden meant walking from tap to tap, winding each one, waiting for it to finish and moving on to the next, always in daylight when watering makes the least sense, and skipped altogether when I couldn’t be bothered or we were away. A year later the whole garden is one Home Assistant automation with a handful of sensors around it.
The water path starts with a Sonoff SWV master valve with a built-in flow meter on the supply line. It is there because of leaks: a pipe fitting downstream has let go on several occasions, and one valve that can cut the whole garden is cheaper than another flood. After it comes the Gardena booster pump, which starts on its own when the pressure drops – it only has an IKEA INSPELNING plug so I can see its power draw – and then six more SWV valves, one per zone: metal shack, BBQ zone, tool shack, south side, front yard, near the sunroom. Two Third Reality soil probes sit in the backyard and in the sunroom bamboo pots. I built my own soil moisture sensors back in 2012, but these are capacitive, run on a single AA and show up in Zigbee2MQTT, so I bought two and moved on.






The probes needed one fix. Out of the box the firmware reports every 10 seconds whenever a value jitters, and a probe with a flaky reading chewed through its battery and flooded the Zigbee network with about 28 000 messages before I noticed. Throttling the reporting in Zigbee2MQTT to once every 10 to 30 minutes per cluster cut the traffic about 60 times.
Every night at 03:00 the automation walks a list of conditions and skips cleanly if any fails: outside temperature above 10 °C, humidity below 85 %, less than 2.5 mm of rain in the next 12 hours of the Pirate Weather forecast, and the backyard probe below 25 % moisture. The probe reading only counts if it was reported within the last hour, otherwise the automation waters anyway. A dead sensor should never quietly turn the garden off. Last summer I also had HA’s AI Tasks look at the lawn cameras before a run and skip when something was left on the grass – it caught a beanbag once.


If everything passes, the six zones run one at a time, never together: the pump can hold pressure for one zone, and the sprinklers only reach their spread when they get all of it. 22 minutes each plus a per-zone offset, about three hours in total. The part I like is that HA doesn’t hold the valve open. It publishes one MQTT command – cyclic timed irrigation, one cycle, N seconds – and the timer runs on the valve itself. If Home Assistant reboots mid-cycle the zone still closes on time. Getting that one command right took longer than the rest of the automation, so the script and a two-zone sample are in a gist.
A lawn in a Sofia summer is not a small amount of water, and that is behind most of the gating: the run happens at 03:00 when nothing evaporates, the probes and the forecast skip it whenever the ground doesn’t need it, every zone is timed rather than left running, and the flow meter shows every litre so a leak can’t hide in the bill.
The master valve also does leak duty. Flow for 40 minutes straight while all six zone valves are closed gets me a push notification with a “Close master valve” button. Notify-only on purpose, the hose trips it too. The storm script from last month kills a running cycle when a hail cell is inbound and doesn’t resume it, a lost cycle is harmless.

The bamboos are a separate circuit: pots in the sunroom, watered by a Gardena AquaBloom from two 10.5 L buckets. Its solar charging wasn’t reliable, so the three AA cells are now a 4.5 V USB battery eliminator, switched by an IKEA TRETAKT plug. The AquaBloom dial sits on its 30 minute program, so it pumps from the moment it gets power and HA decides when and for how long – 28 minutes, unless the sunroom probe reads above 45 %.
There are far more capable irrigation systems on the market than this one. Mine grew one cheap Zigbee valve at a time, on top of the pump and hoses that were already in the garden, and at no point did I have to justify a big purchase. None of these parts were made for each other – Sonoff valves, a Gardena pump and a Gardena AquaBloom, IKEA plugs, Third Reality probes, a weather API and a couple of cameras – and the only thing they share is Zigbee2MQTT and a Home Assistant automation that treats them as one system. A year in, the lawn looks better than it ever did on the mechanical timers, because it gets watered evenly and only when the ground needs it. I haven’t touched a valve since spring, and the summer water bill is lower than in the timer years, most of that from the nights the probes and the forecast said no.
