Gardena 6-Way Mechanical Irrigation Controller

:seedling: Gardena 6-Way Mechanical Irrigation Controller

Open your Home Assistant instance and show the blueprint import dialog.

Smart irrigation blueprint for the Gardena 6-way mechanical water distributor –
the valve that advances to the next zone by pressure release (water off → water on).


:droplet: What it does

This blueprint controls all 6 zones sequentially through a single smart valve/switch.
For each zone it decides based on sensor data whether to water at full duration,
use an extended duration on hot days, or just send a short sync pulse to advance
the mechanical distributor.


:sparkles: Features

Feature Description
:thermometer: Soil moisture monitoring Per-zone – only waters when the soil is actually dry
:cloud_with_rain: Rain history check Skips watering if it rained enough in the last 24h
:sun_behind_cloud: Weather forecast check Skips watering if significant rain is predicted
:fire: Temperature-aware watering Automatically uses longer watering duration on hot days
:house: Weather dependency toggle Per zone – disable weather checks for covered/indoor zones
:gear: Zone enable/disable Deactivated zones are skipped entirely (must match physical device)
:counterclockwise_arrows_button: Automatic sync pulses Zones that don't need watering still advance the distributor
:wrench: Configurable timing Adjust sync pulse duration and pressure release pause
:shield: Sensor offline resilience Offline sensors don't block watering – weather data decides
:shield: Weather service resilience If forecast is unavailable, safe defaults are used

:magnifying_glass_tilted_left: How it works

Trigger: Once daily at configured time
│
├─ Fetch weather forecast (with error handling)
├─ Extract rain forecast + temperature
├─ Determine: warm day? (temp ≥ threshold)
│
├─ Loop: Zone 1 → 2 → 3 → 4 → 5 → 6
│  │
│  ├─ Zone disabled? → skip (no action, no delay)
│  │
│  └─ Zone enabled?
│     ├─ Sensor online?  → read moisture → dry = moisture < limit
│     ├─ Sensor offline? → dry = true (assume dry, let weather decide)
│     ├─ No sensor?      → dry = true (assume dry, let weather decide)
│     │
│     ├─ w_dep off? → w_ok = true (rain doesn't matter)
│     └─ w_dep on?  → w_ok = rain history < threshold AND forecast < threshold
│     │
│     ├─ dry AND w_ok + normal day → valve ON → 5 min  → valve OFF
│     ├─ dry AND w_ok + warm day   → valve ON → 10 min → valve OFF
│     └─ otherwise                 → valve ON → 40 sec → valve OFF (sync)
│     │
│     └─ Wait 80 sec (pressure release)
│
└─ Done

Community-Post: Deutsch

:seedling: Gardena 6-Wege Mechanische Bewässerungssteuerung

Smarter Bewässerungs-Blueprint für den mechanischen Gardena 6-Wege-Wasserverteiler –
das Ventil, das durch Druckabbau (Wasser aus → Wasser an) zur nächsten Zone weiterspringt.


:droplet: Was der Blueprint macht

Steuert alle 6 Zonen sequentiell über ein einzelnes smartes Ventil/Schalter.
Pro Zone wird anhand von Sensordaten entschieden, ob mit voller Dauer bewässert,
an heißen Tagen länger gegossen oder nur ein kurzer Synchronisations-Impuls
zum Weiterschalten des Verteilers gesendet wird.


:sparkles: Funktionen

Funktion Beschreibung
:thermometer: Bodenfeuchte-Überwachung Pro Zone – gießt nur, wenn der Boden tatsächlich trocken ist
:cloud_with_rain: Regen-Historie Überspringt Bewässerung bei ausreichend Niederschlag (letzte 24h)
:sun_behind_cloud: Wettervorhersage Überspringt Bewässerung bei angekündigtem Regen
:fire: Temperaturabhängige Gießdauer An warmen Tagen automatisch längere Bewässerung
:house: Wetter-Abhängigkeit pro Zone Abschaltbar für überdachte Bereiche ohne Regen
:gear: Zonen einzeln schaltbar Inaktive Zonen werden übersprungen (muss am Gerät übereinstimmen)
:counterclockwise_arrows_button: Automatische Sync-Impulse Zonen ohne Bewässerungsbedarf schalten den Verteiler trotzdem weiter
:wrench: Konfigurierbares Timing Kurz-Impuls und Druckabbau-Pause individuell anpassbar
:shield: Sensor-Ausfallsicherheit Offline-Sensoren blockieren nicht – Wetterdaten entscheiden
:shield: Wetter-Ausfallsicherheit Bei fehlender Vorhersage wird mit sicheren Standardwerten gearbeitet

:magnifying_glass_tilted_left: So funktioniert es

Trigger: Einmal täglich zur eingestellten Zeit
│
├─ Wettervorhersage abrufen (mit Fehlerbehandlung)
├─ Regenprognose + Temperatur extrahieren
├─ Warmer Tag? (Temperatur ≥ Schwelle)
│
├─ Schleife: Zone 1 → 2 → 3 → 4 → 5 → 6
│  │
│  ├─ Zone inaktiv? → überspringen (keine Aktion, keine Pause)
│  │
│  └─ Zone aktiv?
│     ├─ Sensor online?  → Feuchte lesen → trocken = Feuchte < Limit
│     ├─ Sensor offline? → trocken = ja (Wetter entscheidet)
│     ├─ Kein Sensor?    → trocken = ja (Wetter entscheidet)
│     │
│     ├─ Wetter-Prüfung aus? → w_ok = ja (Regen egal)
│     └─ Wetter-Prüfung an?  → w_ok = Regen < Schwelle UND Prognose < Schwelle
│     │
│     ├─ trocken UND w_ok + normaler Tag → Ventil AN → 5 Min  → Ventil AUS
│     ├─ trocken UND w_ok + warmer Tag   → Ventil AN → 10 Min → Ventil AUS
│     └─ sonst                           → Ventil AN → 40 Sek → Ventil AUS
│     │
│     └─ 80 Sek warten (Druckabbau)
│
└─ Ende
3 Likes

Good work, thank you, I've been looking for something like this. What's still missing is a setting to start the automation more often throughout the day.

1 Like

:clipboard: Changelog – Gardena 6-Way Irrigation Controller

Version 2.0 (2025-05)

:new_button: New Features

  • :repeat_button: Multiple Runs Per Day
    Up to 3 configurable start times per day. Perfect for hot summer days
    when morning-only watering isn't enough. 2nd and 3rd runs are optional
    and disabled by default.

  • :fire: Temperature-Aware Watering
    Two watering durations per zone: normal day and warm day. The blueprint
    automatically selects the longer duration when the forecasted high
    temperature exceeds a configurable threshold (default: 28°C).

  • :next_track_button: Smart Skip (Pre-Check)
    Before starting the zone loop, the automation checks if ANY zone
    actually needs water. If none do, the entire cycle is skipped instantly –
    no unnecessary sync pulses, no valve wear, no wasted time.

  • :wrench: Configurable Mechanical Timing
    Sync pulse duration (default: 40s) and pressure release pause (default: 80s)
    are now configurable inputs. Allows users to optimize timing for their
    specific water pressure and pipe setup.

:shield: Reliability Improvements

  • Weather Service Resilience
    If the weather forecast service is unavailable (e.g. no internet),
    the automation continues with safe defaults: no rain assumed (0 mm),
    normal temperature assumed (20°C). Uses continue_on_error: true to
    prevent the entire automation from failing.

  • Sensor Offline Handling
    If a soil moisture sensor goes offline (unavailable/unknown), the zone
    is treated as "dry" and the remaining factors (rain history, weather
    forecast, weather dependency) decide whether to water. Previously this
    could block watering entirely.

  • Rain History Pre-Calculation
    Rain history sensor is now read once before the loop instead of
    per-zone, reducing unnecessary sensor queries.

:counterclockwise_arrows_button: Technical Updates

  • Modern Forecast API
    Replaced deprecated state_attr(weather_entity, 'forecast') with
    the current weather.get_forecasts service and response_variable.
    Required since Home Assistant 2024.3+.

  • Updated Service Syntax
    Changed service: to action: throughout, matching current
    Home Assistant YAML conventions.

  • Trigger Variables Block
    Added trigger_variables section required for conditional trigger
    enabled fields (used by optional 2nd/3rd runs).

:memo: Configuration Changes

Parameter v1.0 v2.0
Start times 1 fixed Up to 3 (2nd/3rd optional)
Watering duration 1 per zone 2 per zone (normal + warm)
Temperature threshold – New (default: 28°C)
Sync pulse duration Fixed 40s Configurable (default: 40s)
Pressure release pause Fixed 80s Configurable (default: 80s)
Weather fallback Automation would fail Safe defaults + continue
Sensor offline Could block watering Treated as dry
Smart skip – New pre-check

:warning: Migration Notes

  • No breaking changes – v1.0 configurations continue to work
  • New inputs use




1 Like

Thanks for the feedback! :raising_hands:

Great timing – I just released v2.0 which includes exactly this feature!

You can now configure up to 3 start times per day – perfect for hot summer days when a single morning run isn't enough. The 2nd and 3rd runs are optional and disabled by default, so existing setups aren't affected.

Other new features in v2.0:

  • :fire: Temperature-aware watering – two durations per zone (normal + warm day), automatically selected based on forecasted temperature
  • :next_track_button: Smart skip – if no zone needs water, the entire cycle is skipped instantly (no unnecessary sync pulses)
  • :wrench: Configurable mechanical timing – sync pulse and pressure release pause are now adjustable
  • :shield: Improved resilience – safe fallbacks when weather service or sensors are offline

No breaking changes – just update the blueprint and the new options will appear in your configuration.

Let me know if you have any questions! :blush:

1 Like

Thanks! I tried something similar a few days ago, yours looks way better.

I have one problem: I cannot find my Gardena water control valve because it is not saved as a "switch". What can I do?

Thank you in advance!

:counterclockwise_arrows_button: Update v2.1 – Valve Entity Support

Based on community feedback, the blueprint now supports both switch and valve entities for the main irrigation control.

What changed

  • The entity selector now accepts switch.* and valve.* entities
  • All service calls changed from switch.turn_on/off to homeassistant.turn_on/off
  • This automatically calls the correct service depending on your entity type

Why this matters

Some integrations (e.g. Gardena Smart System) expose the water control as a valve.* entity instead of a switch.*. Previously, these couldn't be selected in the blueprint configuration.

How homeassistant.turn_on/off works

Entity Type Service Called Automatically
switch.my_valve switch.turn_on / switch.turn_off
valve.gardena_water valve.open_valve / valve.close_valve

No configuration needed – it just works! :sparkles:

Migration

  • No breaking changes – existing switch.* configurations continue to work
  • If you have a valve.* entity: Simply re-open your automation config and select your valve entity from the dropdown

:clipboard: Full Changelog

v2.1 (2025-05)

  • :new_button: Valve entity support – switch.* and valve.* entities now both supported
  • :wrench: Uses homeassistant.turn_on/off for domain-independent control

v2.0 (2025-05)

  • :new_button: Multiple runs per day – up to 3 configurable start times
  • :new_button: Temperature-aware watering – automatic longer duration on warm days
  • :new_button: Smart skip – no cycling if no zone needs water
  • :new_button: Configurable timing – adjust sync pulse and pressure release
  • :shield: Weather resilience – safe fallbacks when forecast is unavailable
  • :shield: Sensor resilience – offline sensors don't block watering

v1.0

  • Initial release

Open your Home Assistant instance and show the blueprint import dialog.

@tuehna Great news – I just pushed v2.1 which adds native support for valve.* entities! :tada:

What to do:

  1. Re-import the blueprint (or reload blueprints under Developer Tools → YAML)
  2. Open your automation configuration
  3. You should now see your Gardena valve entity in the dropdown

The blueprint now uses homeassistant.turn_on/off which automatically detects whether your entity is a switch or valve and calls the correct service.

No workarounds needed anymore – just select your valve and you're good to go! :+1:

Let me know if it works for you.

2 Likes

Unfortunately it did not work. I don't know why. I found this in the hacs documentation of the integration, see attachment, it says for example:

service: gardena_smart_system.valve_open data:

device_id: "your_valve_device_id"

duration: 1800

30 minutes

Maybe that's why it did not work?

Thanks for sharing the documentation – that explains the issue! :+1:

The Gardena Smart System HACS integration uses custom services (gardena_smart_system.valve_open/close) with a device_id parameter instead of standard Home Assistant switch/valve entities. That's why the blueprint's homeassistant.turn_on/off doesn't work – these custom services aren't recognized as standard entities.

:white_check_mark: Solution: Create a Template Switch

You can create a wrapper switch that translates between standard HA services and the Gardena-specific ones. Add this to your configuration.yaml:

switch:
  - platform: template
    switches:
      gardena_irrigation_valve:
        friendly_name: "Gardena Irrigation Valve"
        icon_template: mdi:water
        turn_on:
          action: gardena_smart_system.valve_open
          data:
            device_id: "YOUR_DEVICE_ID_HERE"
            duration: 3600
        turn_off:
          action: gardena_smart_system.valve_close
          data:
            device_id: "YOUR_DEVICE_ID_HERE"

:magnifying_glass_tilted_left: How to find your Device ID

  1. Go to Settings → Devices & Services → Gardena Smart System
  2. Click on your valve device
  3. The URL will contain the device ID: ...devices/**abcdef1234567890**

Alternative method:

  1. Go to Developer Tools → Services
  2. Search for gardena_smart_system.valve_open
  3. Use the UI to select your device – it will show the device_id

:stopwatch: About the duration: 3600 parameter

Don’t worry – this is NOT the watering duration! It’s a safety timeout from the Gardena cloud side. Here’s how it works:

Blueprint: turn_on → Gardena opens valve (safety timer: 3600s)
  │
  ├─ Water flows for 5 minutes (controlled by blueprint)
  │
  └─ Blueprint: turn_off → Gardena closes valve
     └─ Safety timer becomes irrelevant (valve already closed)

The blueprint controls the actual watering duration per zone. The duration: 3600 (1 hour) is just a safety net – if Home Assistant crashes during watering, the Gardena cloud will automatically close the valve after 60 minutes instead of leaving it open forever.

Important: The duration value must be longer than your longest configured zone watering time. With the blueprint defaults (max 10 min warm day), 3600 is more than enough.

:test_tube: Test it step by step

Step 1 – Add the template switch:

  1. Add the YAML above to your configuration.yaml
  2. Replace YOUR_DEVICE_ID_HERE with your actual device ID (both places!)
  3. Restart Home Assistant

Step 2 – Verify the switch exists:

  1. Go to Developer Tools → States
  2. Search for switch.gardena_irrigation_valve
  3. It should show up with state off

Step 3 – Test manually:

  1. Go to Developer Tools → Services
  2. Call switch.turn_on with entity switch.gardena_irrigation_valve
  3. :white_check_mark: Verify: water flows
  4. Call switch.turn_off with entity switch.gardena_irrigation_valve
  5. :white_check_mark: Verify: water stops

Step 4 – Use in the blueprint:

  1. Open your blueprint automation configuration
  2. Select switch.gardena_irrigation_valve as the irrigation valve
  3. Done! :tada:

The blueprint handles everything else – zone timing, weather checks, sync pulses, etc.


Please give it a try and let me know if it works for you! :blush: If you run into any issues finding the device ID or setting up the template switch, just post here and I’ll help you through it.

1 Like

Hi,

It runs really nice. Only thing I face is that the weather forecast doesn't work for me. I have a "Buienradar" integration which provides the amount of rain predicted in the next 24 hours and would like to use that.
Now I have pointed it to a weather forecast thingy (Met.no), but I have no clue whether that one is accurate.

How can I integrate with Buienradar entity that I have running?

I think it works. I'd love to have a notification (especially for when being on vacay) that the plants were watered. Just because I am lazy and don't want to look into the history :wink: maybe having the possibility of getting a notification (push on mobile phone) could be nice.

Anyways thanks for your work!

1 Like

:counterclockwise_arrows_button: Update v2.2 – Push Notifications with Quiet Hours

Based on community feedback, the blueprint now includes optional push notifications with a detailed watering summary! Perfect for keeping an eye on your garden while on vacation. :beach_with_umbrella:


:new_button: What's new

  • :mobile_phone: Push Notifications – Get a detailed summary after each irrigation run
  • :mobile_phone: Multi-device support – Select multiple phones from a native dropdown (filtered to Companion App devices)
  • :one_o_clock: Notification time window – Configure quiet hours so you don't get woken up at 4:45 AM
  • :shield: Error resilient – A failed notification to one device doesn't block others (continue_on_error)

:one_o_clock: How the notification time window works

Irrigation finishes at...

  • 4:45 AM (before earliest: 7:00 AM) → Waits until 7:00 AM → then sends notification
  • 8:30 AM (within window: 7:00–22:00) → Sends notification immediately
  • 11:00 PM (after latest: 10:00 PM) → Notification skipped entirely

No more early morning disturbances – your sleep is safe! :sleeping_face:


:mobile_phone: Example notifications

When zones were watered:

:seedling: Irrigation Complete

4 zone(s) watered (40 min total)
:white_check_mark: Watered: Z1 (10min), Z2 (10min), Z4 (10min), Z6 (10min)
:next_track_button: Skipped: Z3, Z5
:thermometer: Warm day (31°C)
:cloud_with_rain: Rain 24h: 0mm | Forecast: 0mm

When no watering was needed:

:zzz: No Irrigation Needed

All zones skipped.
:cloud_with_rain: Rain 24h: 12mm | Forecast: 5mm
:thermometer: Temperature: 18°C


:gear: New configuration options

Setting Description Default
Enable Push Notification Turn notifications on/off Off
Notification Devices Select one or more phones (multi-select) –
Earliest Notification Time Don't send before this time 07:00
Latest Notification Time Don't send after this time 22:00

:rocket: How to set up

  1. Update the blueprint (re-import or reload under Developer Tools → YAML)
  2. Open your automation configuration
  3. Set "Enable Push Notification" to On
  4. Click "Notification Devices" – only devices with the Companion App will appear
  5. Set your preferred time window (defaults: 07:00–22:00)
  6. Save and done! :tada:

:warning: Troubleshooting

Issue Solution
No devices in dropdown Install the HA Companion App on your phone
Notification doesn't arrive Check Developer Tools → Services → search notify.mobile_app_
Delayed notification Expected! If irrigation ends before earliest time, it waits
Multiple runs per day Each run sends its own notification

:warning: Migration notes

  • No breaking changes – notifications are disabled by default
  • All existing irrigation logic is completely unchanged
  • Just update and enable if you want notifications

:clipboard: Full changelog

v2.2 (2025-05)

  • :new_button: Push notifications with detailed watering summary
  • :new_button: Multi-device support with native device picker
  • :new_button: Notification time window – configurable quiet hours
  • :bar_chart: Watering report: zones watered/skipped, total duration, weather data

v2.1 (2025-05)

  • :new_button: Valve entity support – switch.* and valve.* entities now both supported

v2.0 (2025-05)

  • :new_button: Multiple runs per day – up to 3 configurable start times
  • :new_button: Temperature-aware watering – automatic longer duration on warm days
  • :new_button: Smart skip – no cycling if no zone needs water
  • :new_button: Configurable timing – adjust sync pulse and pressure release
  • :shield: Weather resilience – safe fallbacks when forecast is unavailable
  • :shield: Sensor resilience – offline sensors don't block watering

v1.0

  • Initial release

:inbox_tray: Update now

Open your Home Assistant instance and show the blueprint import dialog.


As always – feedback, ideas, and bug reports are welcome! :speech_balloon:
If you find this blueprint useful, a :heart: would be much appreciated. :raising_hands:

:counterclockwise_arrows_button: Update v2.2.1 – Dedicated Rain Forecast Sensor Support

Based on community feedback from Buienradar users – you can now use a dedicated rain forecast sensor instead of relying on the weather entity for rain prediction! :cloud_with_rain:


:new_button: What's new

  • :cloud_with_rain: Optional Rain Forecast Sensor – Use any sensor that reports predicted rain in mm (e.g. Buienradar, Pirate Weather, or custom sensors)
  • :shuffle_tracks_button: Automatic fallback – If the sensor is not configured or offline, the weather forecast is used as before
  • :bar_chart: Rain source in notifications – The notification now shows where the rain data came from (sensor, forecast, or fallback)

:magnifying_glass_tilted_left: How it works

The blueprint checks for a rain forecast sensor first. If configured and online, its value is used. Otherwise it falls back to the weather forecast. If neither is available, 0mm is assumed (safe default = watering continues).

The weather entity is always still used for temperature (warm day detection). Only the rain prediction source changes when you configure the dedicated sensor.


:netherlands: Example: Buienradar setup

If you're using Buienradar, check Developer Tools → States and filter for buienradar. You'll likely find sensors like:

  • sensor.buienradar_rain_last_24h
  • sensor.buienradar_rain_next_24h
  • sensor.buienradar_precipitation_forecast

Recommended configuration:

Setting Value Purpose
Rain Sensor (Last 24h) sensor.buienradar_rain_last_24h Actual rain (past)
Rain Forecast Sensor sensor.buienradar_rain_next_24h Predicted rain (future)
Weather Entity weather.met_no_home Temperature only
Rain Threshold 5 mm Skip watering above this

This gives you:

  • :cloud_with_rain: Rain history → Buienradar (accurate for your region) :white_check_mark:
  • :cloud_with_rain: Rain prediction → Buienradar (accurate for your region) :white_check_mark:
  • :thermometer: Temperature → Met.no (warm day detection) :white_check_mark:

:gear: New configuration option

Setting Description Default
Rain Forecast Sensor Optional sensor for predicted rain in mm empty

When left empty, the blueprint works exactly as before – no changes needed for existing setups.


:mobile_phone: Updated notification example

The notification now shows the rain data source:

:seedling: Irrigation Complete

4 zone(s) watered (40 min total)
:white_check_mark: Watered: Z1 (10min), Z2 (10min), Z4 (10min), Z6 (10min)
:next_track_button: Skipped: Z3, Z5
:thermometer: Warm day (31°C)
:cloud_with_rain: Rain 24h: 0mm | Forecast: 0mm (sensor)


:warning: Migration notes

  • No breaking changes – the new sensor input is optional and empty by default
  • Existing configurations work without any modification
  • If you don't configure the rain forecast sensor, behavior is identical to v2.2

:clipboard: Full changelog

v2.2.1 (2025-05)

  • :new_button: Dedicated rain forecast sensor – optional sensor for predicted rain (e.g. Buienradar)
  • :shuffle_tracks_button: Automatic fallback to weather forecast if sensor is not configured or offline
  • :bar_chart: Notification now shows rain data source (sensor/forecast/fallback)

v2.2 (2025-05)

  • :new_button: Push notifications with detailed watering summary
  • :new_button: Multi-device support with native device picker
  • :new_button: Notification time window – configurable quiet hours

v2.1 (2025-05)

  • :new_button: Valve entity support – switch.* and valve.* entities

v2.0 (2025-05)

  • :new_button: Multiple runs per day – up to 3 configurable start times
  • :new_button: Temperature-aware watering – automatic longer duration on warm days
  • :new_button: Smart skip – no cycling if no zone needs water
  • :new_button: Configurable timing – adjust sync pulse and pressure release
  • :shield: Weather resilience – safe fallbacks when forecast is unavailable
  • :shield: Sensor resilience – offline sensors don't block watering

v1.0

  • Initial release

:inbox_tray: Update now

Open your Home Assistant instance and show the blueprint import dialog.


As always – feedback, ideas, and bug reports are welcome! :speech_balloon:
If you find this blueprint useful, a :heart: would be much appreciated. :raising_hands:

Hi! I am trying to use your blueprint with the latest Gardena HACS integration which exposes the water controls as a 'valve' entity which does not seems to support the homeassistant.turn_on and turn_off actions.

I changed it to valve specific actions to fix it: Gardena 6-Way Irrigation Controller Fork · GitHub

I also changed the rain_history_sensor to have a default value of an empty string to make it optional.

This looks perfect for me - one thing I’m struggling with is getting a rainfall in last 24h sensor into HA. my standard weather integration (met.no) doesn’t provide this - do you know of any in the UK which can give this?