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 supportswitch.* 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?