No description
Find a file
belerovon b64fd411aa 4.1
2026-08-02 18:41:01 +02:00
blueprints/automation/kleckerbox 4.1 2026-08-02 18:41:01 +02:00
.gitignore Cleanup 2026-07-12 20:54:21 +02:00
README.md 4.1 2026-08-02 18:41:01 +02:00

🌿 Smarte Gartenbewässerung — Home Assistant Blueprint

Automatisierungs-Blueprint für eine mehrstufige Gartenbewässerung mit 6 Zonen, Bodenfeuchte-Steuerung, Wettervorhersage, Hardware-Failsafes und Not-Aus.

Aktuelle Version: V4.1 · Home Assistant 2024.4+


Inhalt


Features

🗺️ 6 Zonen, unabhängig konfigurierbar

Rasen · Hochbeet · Gemüse · Sträucher · Vorgarten · Kräuter — jede als auf-/zuklappbare Section:

  • Aktiv-Toggle — Zone deaktivieren ohne die Konfiguration zu verlieren
  • Ventile & Schalter gemischtvalve.* per open_valve/close_valve, switch.* per turn_on/turn_off (automatischer Domain-Split)
  • Eigener Bodenfeuchte-Sensor + eigene Schwelle (%)
  • Dauer (0 = automatisch) und Max. Dauer im Automatikmodus
  • Wasserquelle Leitungswasser / Regenwasser mit ↳ 🪣 Füllstand-Sensor, Mindestfüllstand, Pumpe und Pumpen-Vorlaufzeit
  • Ventil-Timer — Hardware-Failsafe, siehe unten
  • Wasserverbrauch (L/min) für den Bericht

💧 Bodenfeuchte-Logik

Schwelle pro Zone (Default 30 %) — zugleich Start-Kriterium und Zielwert zum Abschalten im Automatikmodus.

Situation Verhalten
Feuchte ≥ Schwelle beim Start Zone übersprungen — auch bei manueller Dauer
Dauer > 0 Feste Laufzeit
Dauer = 0 + Sensor Bewässern bis Schwelle erreicht, max. „Max. Dauer"
Dauer = 0 ohne Sensor Fallback 10 min
Sensor unavailable/unknown Fallback 10 min + ⚠️ Warnmeldung

🌤️ Wetterprüfung (UND-Logik)

Abbruch  ⟺  Niederschlag ≥ mm-Schwelle  UND  Wahrscheinlichkeit ≥ %-Schwelle
  • Daily-Forecast über N+1 Tage — der heutige Rest-Tag wird immer mitgeprüft, da dessen Restmenge abends nahe 0 liegt
  • %-Schwelle 0 = deaktiviert (nur mm zählt)
  • Fehlt precipitation_probability, wird 100 % angenommen — die mm-Prüfung bleibt so wirksam
  • OpenWeatherMap liefert beide Werte (empfohlen); Met.no liefert im daily-Forecast keine Wahrscheinlichkeit
  • Retry bei API-Fehlern über konfigurierbares Zeitbudget; danach wahlweise ohne Wetterprüfung fortsetzen (Default) oder Tag überspringen

🌡️ Temperatur-Schutz

Min/Max gegen die aktuelle Temperatur. Quelle: Temperatur-Sensor, sonst Fallback auf state_attr(wetter_entity, 'temperature') — ein eigener Sensor ist also optional.

🌧️ Regen-Sensoren

Regenmenge-Sensor (historisch, z. B. Tagesregen der Wetterstation) mit Schwelle sowie optionaler Live-Regensensor (Binärsensor).

🕐 Flexible Startzeit

Feste Zeit · Nachts (02:00) · Sonnenauf-/-untergang mit Offset (HH:MM, negativ = früher). Trigger-IDs + Condition sorgen dafür, dass nur die gewählte Option auslöst. Manueller Start über den „Ausführen"-Button funktioniert immer.

🔁 Robustheit gegen Geräte- und Cloud-Fehler

Cloud-gebundene Ventile (Tuya u. ä.) werfen sporadisch Fehler wie network error (-9999999). Das Blueprint fängt das ab:

  • continue_on_error auf allen Geräte-Aufrufen — ein Fehler bricht die Automation nicht mehr ab
  • Retry für Ventile, Timer und Pumpen; wiederholt wird nur für Entities, die noch nicht den Zielzustand melden
  • Pause zwischen Befehlen (Default 1 s) gegen Rate-Limits
  • Timer-Clamping — Werte werden auf min/max der Number-Entity begrenzt

Ventil-Verifikation

Prüft nach konfigurierbarer Wartezeit (Default 15 s), ob Ventile wirklich open melden. Bei Abweichung ⚠️ Push-Warnung; die Bewässerung läuft weiter (falsch-negative Zustandsmeldungen sind bei Funk-Geräten möglich).

🛡️ Ventil-Timer als Hardware-Failsafe

Unterstützt das Ventil einen eigenen Zeitschalter (z. B. number.rf_wasseruhr_bewasserungsdauer_1), wird dieser vor jedem Öffnen auf geplante Dauer + 60 s gesetzt. Das Ventil schließt dann selbst, falls HA ausfällt oder der Schließbefehl verloren geht.

⚠️ Liegt das Maximum der Number-Entity unter dem berechneten Wert, greift das Clamping — die Hardware schließt dann vor dem Blueprint. Zonen-Dauer entsprechend unter das Hardware-Maximum setzen.

🛑 Not-Aus

mode: restart bricht einen laufenden Durchlauf sofort ab, schließt alle Ventile, schaltet Schalter-Zonen und Pumpen aus und meldet, was aktiv war. Auslöser: input_button oder input_boolean.


Installation

  1. Datei kopieren nach:
    config/blueprints/automation/kleckerbox/Gartenbewässerung.yaml
    
  2. Entwicklerwerkzeuge → YAML → Automatisierungen neu laden
  3. Einstellungen → Automatisierungen & Szenen → Automatisierung erstellen → Blueprint → „Smarte Gartenbewässerung V4.1"

Update einer bestehenden Automation

Nach dem Ersetzen der Datei: Automationen neu laden, dann die Automation öffnen und erneut speichern — erst dabei kompiliert HA neue Trigger und Inputs. Neue Felder müssen einmalig gesetzt werden.

Verwaiste Einträge aus älteren Versionen können in der YAML-Ansicht der Automation gelöscht werden, z. B. bodenfeuchte_schwelle (jetzt pro Zone), max_bewaesserungsdauer (jetzt pro Zone).

Not-Aus einrichten

  1. Einstellungen → Geräte & Dienste → Helfer → Taster anlegen (z. B. input_button.bewaesserung_stop)
  2. In der Automation: ⚙️ Allgemein → „Not-Aus aktivieren" an, Taster als Auslöser wählen, speichern
  3. Dashboard-Button:
    type: button
    name: Bewässerung STOP
    icon: mdi:water-off
    tap_action:
      action: call-service
      service: input_button.press
      target:
        entity_id: input_button.bewaesserung_stop
    

Einstellungs-Referenz

Pro Zone

Feld Default Bedeutung
Zone aktiviert? an Deaktivierte Zonen werden komplett übersprungen
Zonen-Entities Ventile und/oder Schalter (gemischt erlaubt)
Dauer 0 Minuten; 0 = Automatikmodus
Max. Dauer im Automatikmodus 30 Obergrenze wenn Dauer = 0
Bodenfeuchte-Sensor Optional
↳ Bodenfeuchte-Schwelle 30 % Start-Kriterium und Abschalt-Ziel
Ventil-Timer Number-Entity(s) für Hardware-Failsafe
🚰 Wasserquelle Leitungswasser Leitungswasser / Regenwasser
🪣 Füllstand-Sensor Nur bei Regenwasser ausgewertet
🪣 Mindestfüllstand 100 Darunter wird die Zone übersprungen
🪣 Pumpe Auch bei Leitungswasser nutzbar (Druckerhöhung)
🪣 Pumpenverzögerung 5 s Vorlauf bevor die Ventile öffnen
Wasserverbrauch 0 L/min für den Bericht

Global

Sektion Feld Default
💧 Bodenfeuchte Bodenfeuchte verwenden? aus
🌡️ Temperatur Sensor · aktiv · Min · Max · aus · 5 °C · 38 °C
🌤️ Wetter Entity · aktiv · Zeitraum · mm · % · aus · 1 Tag · 5 mm · 0 %
🌤️ Wetter Retry-Dauer · Intervall · Fehlerverhalten 10 min · 60 s · fortsetzen
🌧️ Regen Regenmenge-Sensor · Schwelle · Live-Sensor · 10 mm ·
🕐 Startzeit Option · Feste Zeit · Offset feste_zeit · 06:00 · 00:00
⚙️ Allgemein Parallelbewässerung an
⚙️ Allgemein Wasserverbrauch-Bericht aus
⚙️ Allgemein Benachrichtigungs-Gerät / -Label
⚙️ Allgemein Pause zwischen Geräte-Befehlen 1 s
⚙️ Allgemein Wiederholversuche · Wartezeit 3 · 10 s
⚙️ Allgemein Ventil-Verifikation 15 s
⚙️ Allgemein Not-Aus aktivieren · Auslöser aus ·

Ablauf eines Durchlaufs

Trigger (Zeit / Sonne / manuell / Not-Aus)
  │
  ├─ Not-Aus?  ──► alles schließen, melden, Ende
  │
  ├─ Wettervorhersage (mit Retry)     ──► Abbruch bei mm UND %
  ├─ Regenmenge gemessen              ──► Abbruch bei ≥ Schwelle
  ├─ Live-Regensensor                 ──► Abbruch wenn aktiv
  ├─ Temperatur                       ──► Abbruch außerhalb Min/Max
  │
  ├─ Dauer je Zone berechnen (aktiv? Füllstand? Feuchte? Dauer?)
  ├─ Alle Zonen übersprungen?         ──► Meldung, Ende
  ├─ Tote Sensoren?                   ──► ⚠️ Warnung, weiter
  │
  ├─ PARALLEL: Timer setzen → Pumpen an → alle Zonen an →
  │            Verifikation → Minuten-Schleife (Zonen einzeln aus) →
  │            Sicherheits-Aus → Pumpen aus
  │
  └─ SEQUENZIELL: je Zone: Timer → Pumpe → an → Verifikation →
                  wait_template/Delay → aus → Pumpe aus (falls
                  keine spätere Zone sie braucht)
  │
  └─ Bericht (opt-in)

Benachrichtigungen

Ziele: Gerät (Device-Picker, mobile_app) und/oder Label (alle Geräte mit diesem Label), dedupliziert, Fallback notify.notify.

Typ Anlass
Abbruch Regen vorhergesagt · Regenmenge gemessen · Live-Regen · Temperatur außerhalb · alle Zonen übersprungen
⚠️ Warnung Bodenfeuchte-Sensor nicht verfügbar · Ventil meldet nicht open · Vorhersage nicht abrufbar
🛑 Not-Aus Bestätigung mit Liste der gestoppten Geräte
Bericht Nach dem Lauf (opt-in): Zonen, Laufzeiten, Verbrauch getrennt nach Leitungs-/Regenwasser

Nicht gemeldet werden: einzelne Schaltvorgänge und der Start eines Laufs.

Label-Auflösung prüfen

{% set ns = namespace(s=[]) %}
{% for d in label_devices('dein_label') %}
  {% set ns.s = ns.s + ['notify.mobile_app_' ~ device_attr(d, 'name') | slugify] %}
{% endfor %}
Geräte: {{ label_devices('dein_label') | length }}
Services: {{ ns.s }}

label_devices() erwartet die Label-ID (Slug), nicht den Anzeigenamen. Das Label sollte nur Companion-App-Geräte enthalten.


Troubleshooting

„Es wird nicht bewässert, obwohl es trocken ist"

Trace öffnen (Automation → ⋮ → Traces) und den stop-Grund lesen. Häufig:

  • Feuchte ≥ Zonenschwelle — gilt seit V2.6 auch bei manueller Dauer
  • Zone nicht aktiv oder ohne zugewiesene Entities
  • Temperatur-Min zu hoch — 15 °C blockiert kühle Sommernächte; für reinen Frostschutz reichen 35 °C
  • Füllstand unter Mindestwert (nur bei Regenwasser)

Sensorwerte prüfen:

{% for s in ['sensor.beispiel_1', 'sensor.beispiel_2'] %}
{{ s }}: {{ states(s) }}
{% endfor %}

„Der Wetter-Zweig wird übersprungen (bypassed)"

Das ist korrekt, wenn keine der Schwellen erreicht ist — bei 0 mm Vorhersage soll bewässert werden. Vorhersagewerte einsehen:

action: weather.get_forecasts
target:
  entity_id: weather.openweathermap
data:
  type: daily

network error (-9999999) Remote api run unknown failed

Cloud-gebundene Ventil-Integration. Prüfreihenfolge:

  1. Einzelaufrufe testen — valve.open_valve, dann number.set_value mit dem tatsächlich berechneten Wert (Dauer × 60 + 60), nicht nur einem kleinen
  2. min/max der Number-Entity in Entwicklerwerkzeuge → Zustände prüfen
  3. Schlägt nur die Schnellfolge fehl → Pause auf 23 s erhöhen
  4. Vollständiges Log: Einstellungen → System → Protokolle → „Vollständiges Protokoll"

Funktionieren Einzelaufrufe und tritt der Fehler nur sporadisch auf, ist es ein transienter Cloud-Aussetzer — genau dafür sind Retry und continue_on_error gedacht. Dauerlösung wäre eine lokale Anbindung (LocalTuya, Zigbee2MQTT).

„Not-Aus-Button tut nichts"

In der YAML-Ansicht der Automation prüfen, ob beide Inputs gesetzt sind:

notaus_aktivieren: true
notaus_ausloeser:
  - input_button.bewaesserung_stop

Fehlen sie, wurde die Automation nach dem Blueprint-Update nicht neu gespeichert. Bei leerem Auslöser feuert der Trigger nie.

„Keine Benachrichtigungen"

  1. Service direkt testen:
    action: notify.mobile_app_dein_geraet
    data:
      message: Test
    
  2. Label-Auflösung prüfen (siehe oben)
  3. Prüfen, ob überhaupt ein Anlass bestand — bei problemlosem Lauf und deaktiviertem Bericht ist Stille das erwartete Verhalten

Bekannte Einschränkungen

  • Kein bedingtes Ausblenden von Feldern — das Blueprint-Schema unterstützt es nicht. Zusammengehörige Felder sind mit ↳ 🪣 gekennzeichnet.
  • Keine verschachtelten Sections — nur eine Ebene möglich.
  • Verbrauchsbericht rechnet bei Automatikzonen mit der Max-Dauer, nicht der tatsächlichen Laufzeit.
  • mode: restart — ein regulärer Trigger während eines laufenden Durchlaufs startet diesen neu (bei einer Startzeit pro Tag irrelevant).
  • Minuten-Granularität im Parallelmodus: Zonen werden auf Minutengrenzen abgeschaltet.

Jinja2- und HA-Fallstricke

Im Blueprint bewusst berücksichtigt:

Thema Umsetzung
list.append() blockiert die Sandbox namespace()-Pattern
sun-Trigger-Offset akzeptiert keine Templates fester HH:MM-String
float() wandelt unavailable still zu 0.0 explizite Zustandsprüfung vorher
valve kennt kein turn_on/turn_off open_valve/close_valve
Verschachtelte repeat überschreiben repeat.item vorher in Variablen sichern
Manueller Start hat kein trigger-Objekt trigger is not defined in der Condition

Changelog

Version Änderung
V4.1 Toggle "Ventil-Timer setzen?" — abschaltbar bei Integrationsfehlern
V4.0 Timer-Call entfällt wenn der Wert bereits ausreicht (weniger API-Last)
V3.9 Timer-Werte auf Entity-Bereich begrenzt; Pause zwischen Geräte-Befehlen
V3.8 Fix: Geräte-/Cloud-Fehler brechen die Automation nicht mehr ab; Retry für Ventile, Timer, Pumpen
V3.7 Retry bei Wetter-API-Fehlern (Dauer, Intervall, Fehlerverhalten konfigurierbar)
V3.6 Bodenfeuchte-Schwelle pro Zone statt global
V3.5 Hardware-Ventil-Timer pro Zone (Failsafe, Dauer + 60 s Puffer)
V3.4 Ventil-Verifikation nach Öffnen-Befehl mit ⚠️ Warnung
V3.3 Not-Aus integriert (mode: restart, Toggle + Auslöser in Allgemein)
V3.2 Pumpenfelder visuell zur Wasserquelle gruppiert
V3.1 Regenwasser-Felder visuell gruppiert (↳ 🪣)
V3.0 Max. Automatik-Dauer pro Zone statt global
V2.9 Schutz vor unavailable/unknown Sensoren + Warnmeldung
V2.8 Fix: valve-Domain korrekt per open_valve/close_valve — vorher öffneten Ventile nie
V2.7 Wetterprüfung als UND-Verknüpfung (mm UND %)
V2.6 Feuchte-Schwelle gilt immer; Automatik bewässert bis Schwelle
V2.5 Benachrichtigung zusätzlich per Label
V2.4 24-h-Fenster per Zeitstempel statt Eintragszahl
V2.3 Temperatur mit Wetter-Entity-Fallback
V2.2 Forecast-Fenster N+1; mm-Slider 030
V2.1 Benachrichtigungs-Gerät als Device-Picker
V2.0 Zone Kräuter
V1.9 Fix: manueller Start; leere Zonen; Pumpen-Schonung; Notify konfigurierbar
V1.8 Fix: namespace statt list.append() (Sandbox)
V1.7 Zone Vorgarten
V1.6 Aktiv-Toggle pro Zone
V1.5 Input-Selects entfernt (manueller Start über HA)
V1.4 Fix: Sun-Offset-Format; Trigger-IDs + Condition; Temperatur-Schutz
V1.3 Wettervorhersage; Wasserquelle & Pumpe pro Zone; Verbrauch je Quelle
V1.2 Sections (auf-/zuklappbar); Bodenfeuchte-Sensor pro Zone
V1.0 Ursprungsversion