Smart Irrigation - save water by precisely watering your lawn/garden

Hi all

I already it’s this. But I don’t have any knowledge to configure to controle the sprinklers, does anyone can help?

Of course will be a pay job

Regards

to be honest, it really depends. You can either buy something that allows you to turn on the sprinklers or build it for example with a couple of relays and an ESP.

@jeroenterheerdt how to handle situations when i run irrigation manually ? For example i need to fertilize lawn but i have to turn it on for 10min, how i can add this to the smart irrigation ? I mean i can somehow calculate how much water i’ve delivered to the lawn.

Hi

I came from zwave - home center 2 I just expose the devices to HA, I only need something quite automated to open and close the sprinklers.

Can somebody explain, how the drainage rate works? Default was 50.8, but even after a lot of rain, the bucket was 0, where i've expected a positive value.
After I looked into the problem, there were advises to decrese the value or set it to 0.

Hi everyone, I'd like to get your thoughts on an idea.

I've read in the wiki and in various threads that soil moisture sensors aren't effective for calculating Evapotranspiration (ET). However, my gardener has always advised me to check the soil moisture at the end of the day to determine if the watering was sufficient.

With this in mind, I was wondering if it would be a good idea to create an automation that checks the soil moisture via a sensor (e.g., 30 minutes before sunset) and dynamically adjusts the irrigation multiplier. It could add or subtract a value of 0.2 depending on whether the moisture falls within certain predefined ranges (obviously excluding rainy days).

Do you think this approach makes sense? Has anyone implemented something similar? Thanks!

Just installed this on my Home Assistant. Wondering how do I account for the lawn starting off dry?

I got to this by way of soil sensors in an attempt to figure out some dry looking patches of lawn despite sprinklers running for 35 minutes 3 days per week.

I understand soil sensors have limitations but I have gotten consistent reading in the front and back lawn of 24% in several locations.

Followed the wiki and have input all values

Hi, I've got 2 zones on the same sensor group (same outdoor conditions but different sprinklers flow). Zones are calculated by automations. First zone normally calculated, bucket gets negative and time is as expected. But the second zone not, bucket gets slightly positive and time is 0. Where is the problem?

Update 2026-06: I have transferred ownership of Smart Irrigation to altmenorg on github. He will take it forward. nothing should change for existing users, but there will be new and exciting releases! Thanks all for your help and excitement for Smart Irrigation. I will be cheering it on from the sidelines.

thanks for all your time and effort spent on Smart irrigation!

Not yet completely working, but wonderful work!
My biggest question is what to set as drainage rate for flower or windox boxes?

I’ve been using HA for 6 years but am a first time user of irrigation control.
Can someone help me understand how this works in Smart Irrigation?

  • :link: Irrigation Unlimited integration — bidirectional integration with the Irrigation Unlimited component.

Thanks for making this integration!

I do have a question. Here: How it works | Smart Irrigation it is mentioned to start irrigation when bucket < -25mm. Does this number depend on the max bucket size? Because if the capacity (max bucket size) is for instance 12mm for sandy soil, irrigating 25mm doesn’t make sense, as everything more than 12mm would just go to deep percolation and is lost. So would it make sense to only irrigate at most the amount of water that equals the max bucket size?

Thank you a lot for this integration!
I’m using it since few days and it works great but I have a doubt.
I calculate Smart Irrigation at 23:00 and irrigate at sunrise, which seems to be the intended workflow. However, what is the recommended approach if significant rainfall occurs between 23:00 and sunrise? Since the bucket has already been calculated, that rainfall won’t be reflected until the next calculation. How do other users handle this scenario? Do you rely on an additional rainfall check before irrigation, or is there a recommended way to trigger a recalculation?

Hi all,

I installed the addon and set it up.
The irrigation works fine with my automation - only the reset of the buckets don’t work.
The value is still the same.
What is my fault?

alias: 'Bewässerung: Dynamisch Parallel (Rasen & beet)'
description: >-
  Startet Rasen (SONOFF Literzähler) und Beet (Regentonnenpumpe) zeitgleich und
  steuert sie unabhängig.
triggers:
  - event_type: smart_irrigation_start_irrigation_all_zones
    trigger: event
conditions: []
actions:
  - parallel:
      - alias: Rasen bewässern
        choose:
          - conditions:
              - condition: numeric_state
                entity_id: sensor.smart_irrigation_rasen
                above: 0
            sequence:
              - target:
                  entity_id: input_number.rasen_wasser_start
                data:
                  value: >-
                    {{ states('sensor.bewaesserung_real_time_irrigation_volume')
                    | float(0) }}
                action: input_number.set_value
              - target:
                  entity_id: switch.bewaesserung
                action: switch.turn_on
                data: {}
              - wait_for_trigger:
                  - value_template: >-
                      {% set start = states('input_number.rasen_wasser_start') |
                      float(0) %} {% set aktuell =
                      states('sensor.bewaesserung_real_time_irrigation_volume')
                      | float(0) %} {% set dauer_sekunden =
                      states('sensor.smart_irrigation_rasen') | float(0) %} {%
                      set l_pro_sekunde = 6 / 60.0 %} {# <-- 6 L/min an Ihren
                      Durchfluss anpassen #} {% set ziel_liter = dauer_sekunden
                      * l_pro_sekunde %} {{ (aktuell - start) >= ziel_liter }}
                    trigger: template
                timeout: '00:45:00'
              - target:
                  entity_id: switch.bewaesserung
                action: switch.turn_off
                data: {}
              - action: smart_irrigation.reset_bucket
                target:
                  entity_id: sensor.smart_irrigation_rasen_bucket
                data: {}
      - alias: Beet bewässern
        choose:
          - conditions:
              - condition: numeric_state
                entity_id: sensor.smart_irrigation_beet
                above: 0
            sequence:
              - action: switch.turn_off
                metadata: {}
                target:
                  entity_id: switch.aussenbereich_wifi_timing_bewasserungspumpe_autorun
                data: {}
              - alias: Bewässerungsdauer in Pumpe setzen
                action: number.set_value
                metadata: {}
                target:
                  entity_id: number.aussenbereich_wifi_timing_bewasserungspumpe_duration
                data:
                  value: >-
                    {{ [states('sensor.smart_irrigation_beet') | int(0), 20] |
                    max }}
              - target:
                  entity_id: switch.aussenbereich_wifi_timing_bewasserungspumpe_schalter
                action: switch.turn_on
                data: {}
              - data: {}
                action: smart_irrigation.reset_bucket
                target:
                  entity_id: sensor.smart_irrigation_beet_bucket

Solved it myself

There is an option to automatically skip an irrigation when rain is forecasted in the coming days. That could help a bit. A real solution could be of course to trigger recalculation just before start of irrigation. But that has to be a feature request then I guess. You can make one here: Issues · altmenorg/HAsmartirrigation.

Would you mind to share your findings?

Hi all, altmenorg here. I took over Smart Irrigation from @jeroenterheerdt in June.

First things first. Thank you Jeroen. You built something genuinely unusual: the only irrigation integration for Home Assistant that does the actual science instead of multiplying a timer by a guess, and you kept it going for years. I hope I do it justice.

Second, sorry for the silence on this thread. I have been working through the GitHub tracker and completely missed that people were asking things here. That is on me, and I will be watching it from now on.

Now the questions, oldest first.

Hohenloherin, on drainage rate for flower boxes and window planters. Drainage only ever applies when the bucket is above zero, meaning the soil is already at field capacity, so it never affects when a zone starts watering. For a planter the setting that actually matters is Maximum bucket, which caps how much water the pot holds above field capacity before the rest runs out of the bottom. The default of 24 mm is a garden soil figure and it is far too generous for a container. Bring it down to a few mm and leave the drainage rate at its default, since containers do drain fast.

dbrunt, on Irrigation Unlimited. The idea is that Smart Irrigation works out how long to water, and Irrigation Unlimited runs the schedule and the hardware. Two automations connect them: on our start event, call IU’s adjust_time with our calculated duration, and on IU’s finish event, reset our bucket so the water balance knows the zone was watered.

I owe you a warning, though. I went through the shipped blueprints today and four of the eight were broken, including both Irrigation Unlimited ones. They passed a variable to states() in quotes, so the condition never matched and the duration was never sent. If you tried this and it appeared to do nothing at all, that was why, not you. Fixed along with the others in the next release.

Megalos, on whether the -25 mm figure depends on the maximum bucket size. It does not, and your instinct that something is off there is right. The 25 mm is an example rather than a recommendation, and Maximum bucket is a different quantity entirely: it caps the surplus above field capacity, on the other side of zero from the deficit, so it never changes when irrigation starts. I have corrected the documentation, which called it “the soil’s water holding capacity”, and it is not that.

What you are reaching for is the management allowed depletion, a fraction of the water your soil actually holds for the plant. Take the soil’s available water capacity times the root depth, then about half of it. As a rough guide that capacity runs 60 to 90 mm per metre in sand, 130 to 170 in loam, 150 to 200 in clay. A lawn on loam at 20 cm of rooting lands near 15 mm, and your shallow sandy case would indeed be lower, exactly as you suspected. Putting 25 mm into it would run straight past the roots.

v2026.9.0 added a per zone Irrigation threshold for precisely this. Below it a zone waters nothing, and once the deficit reaches it the run covers the whole deficit at once, which is the deep and infrequent pattern you want.

rikkardopp, on rain falling between the 23:00 calculation and irrigating at sunrise. This is fixed and you do not need an extra automation for it. Since v2026.8.2 and v2026.8.3 the run is shortened by whatever rain fell since the calculation. The bucket itself is deliberately left alone, because it is a running balance and the next calculation adds that same rain, so crediting it here as well would count it twice.

Thanks to everyone still posting here, and to Megalos in particular, whose reports have driven most of this year’s corrections to the water balance.

Hi :waving_hand: @altmenorg and all:
I have a few questions about how the scheduling works:

  1. I would like to water around sunset, so I set a fixed time. However, the time doesn’t seem to be saved and always goes back to 06:00. Is this expected?
  2. Am I correct that the calculation time should be close to the actual watering time? For example, if I want to water at 19:00, would it make sense to run the calculation at around 18:55 so it uses the weather data collected during the day?
  3. I noticed that the weather data is pruned at 23:59. Does this cause any issue if the calculation is done at 18:55 (missing data points from yesterday between 18:55 and 23:59)? Or does the calculation itself clear the data after using it? Is the calculation resource demanding hence only run once per day?
  4. The documentation mentions these events:
    smart_irrigation_irrigation_started
    smart_irrigation_irrigation_finished
    But I also see smart_irrigation_start_irrigation_all_zones being used in the examples. What’s the difference between these events, and which one should normally be used to trigger my watering automation?
  5. For direct valve control, what happens if opening the valve fails because of a temporary connection problem? I can see that it checks whether the valve actually opened and reports a problem if it didn’t, but does it retry the operation?
  6. In modules PyETO configuration what does forecast days do? Does the calculation take the future forecast as part of the calculation and if so how does affect the watering schedule?
  7. What is drainage rate? Is it a measurement how much water the soil can hold? I live in an area with clay mostly, water penetration is slow and most water run away but once it get down to the soil it holds for longer time. What value is recommended for such?

Sorry for bringing so many question, appreciate your help!