Automatische Gartenbewässerung mit der ESP-Bewässerungssteuerung und Smart Irrigation

Guten Abend zusammen,

ich habe nach Simons Vorlage mir eine ESP Bewässerungssteuerung gebaut und ähmm programmiert?..


Die Smart Irrigation Integration ist soweit eigerichtet für 4 Zonen, zeigt aber dem Wetter geschuldet, denke ich, 0 als gerechnete Bewässerungsdauer.


Mit Hilfe von Simons AutomatisationCode (welche je nach Bedarf bewässert, sofern das Bucket den Schwellen Wert unterschreitet) und Vorlage aus der Doku zu Integration (in der Wiki sind Muster Codes hinterlegt) habe ich mir die Automatisierung gebastelt, die 1 Mal Pro Woche um 5:10 den Rasen bewässert. Die Beregnungsdauer für die Steuerung wird dem Wert des Sensors aus der Smart Irrigation gleichgesetzt. Die Automatisierung dient quasi als Schnittstelle zwischen der Bewässerungssteuerung und Smart Irrigation Wert.

Das Programm scheint zu laufen. Habe über die Entwickler-Tools den Smart Irrigation Sensor auf 200sek gestellt und die Automation ausgeführt. Das Relais hat geklickt und nach 200sek ausgegangen. (Der Hauptschalter der eigentlich von der Automatisierung eingeschaltet wird, blieb an, irgendwas soll ihn ja letztendlich auch ausschalten, weiss im Moment nicht was (eine Idee?)
Also hier ist der Original Code von Simon:

alias: Irrigation - Set Time & Run ESPHome
description: ""
trigger:
  - platform: time
    at: "23:10:00"
condition:
  - condition: or
    conditions:
      - condition: numeric_state
        entity_id: sensor.rasen_oben_daily_adjusted_run_time
        above: 60
        alias: " Rasen Daily Adjusted Run Time is above 60"
      - condition: numeric_state
        entity_id: sensor.himbeeren_daily_adjusted_run_time
        above: 60
        alias: " Himbeeren Daily Adjusted Run Time is above 60"
action:
  - service: number.set_value
    data:
      value: "{{states('sensor.rasen_oben_daily_adjusted_run_time')}}"
    target:
      entity_id: number.remotebewcmp_rasen_oben_laufzeit
  - service: number.set_value
    data:
      value: "{{states('sensor.himbeeren_daily_adjusted_run_time')}}"
    target:
      entity_id: number.remotebewcmp_himbeeren_laufzeit
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - service: homeassistant.turn_on
    data: {}
    target:
      entity_id: switch.remotebewcmp_garten_sprinkler
    enabled: true
mode: single

Und das ist meine Automation:

alias: 💧🕛Bewässerung Rasen
description: ""
triggers:
  - entity_id:
      - sensor.smart_irrigation_rasen
    attribute: bucket
    below: -25
    trigger: numeric_state
  - at: "05:10:00"
    trigger: time
conditions:
  - condition: or
    conditions:
      - condition: numeric_state
        entity_id: sensor.smart_irrigation_rasen
        below: "-25"
        attribute: bucket
      - condition: and
        conditions:
          - condition: numeric_state
            entity_id: sensor.smart_irrigation_rasen
            above: 60
          - condition: template
            value_template: "{{ now().isoweekday() == 1 }}"
actions:
  - data:
      value: "{{states('sensor.smart_irrigation_rasen')}}"
    target:
      entity_id: number.gartenbewaesserung_rasen_laufzeit
    action: number.set_value
  - data: {}
    target:
      entity_id: switch.gartenbewaesserung_garten_bewaesserung
    enabled: true
    action: homeassistant.turn_on
  - data: {}
    entity_id: sensor.smart_irrigation_rasen
    action: smart_irrigation.reset_bucket
mode: single

Wo ich jetzt etwas in der Klemme bin ist folgendes.

Die ESP Steuerung scheint die Zonen nacheiander abklappern (meine Vermutung) denn die Automation setzt nur den Hauptschalter ein, danach sollen die aktivierte Bewässerugskreise angehen für die bestimmte Zeit.
Bedeutet das dass ich für alle 4 Kreise eine Automation haben muss?

Und wenn ja:

Wie realisiere ich denn, dass der Rasen 1x pro Woche und Stauden 2x pro Woche beregnet werden?
Da hört leider meine Vorstellungskraft auf.

Hat jemand eine Idee oder sogar Lösung im Petto?

BTW. Ich habe in meiner Automation in der akribischen :slight_smile: Arbeit im Yaml-Code die Kommentare in #xxx# zugefügt, damit ich noch Morgen weiß, was ich gemacht habe. Irgendwie sind sie weg. Funktioniert das in der Configuration.yaml aber nicht in Automations Yaml?

Danke Euch

bin immer noch an Hilfestellung interessiert.

Mich interessieren grundsätzlich Eure Automationsansätze im Bezug auf die Bewässerung.
Mit der Nutzung vom ESP-Bewässerungskomuter und Smart Irrigation insbesondere.

Also, lautet die Aufgabestellung wie folgt:

Es muss:
-nur ein Mal wöchentlich und zwar wenn nach "open weather map " kein Regen am Tag der Prüfung erwartet wird bzw wenn es kein Niederschlag gibt

-nur wenn “sensor.smart_irrigation_rasen” Bucket <25 ist

-den Zahlenwert der Variablen “number.gartenbewaesserung_rasen_laufzeit” dem Wert der Bewässerungsdauer, errechnet durch die Intergration “Smart Irrigation”,‘sensor.smart_irrigation_rasen’ gleich setzten

-den Schalter “switch.gartenbewaesserung_rasen” einschaten

(Der Schalter geht dem ESP Code nach nach der eingestellten Dauer aus)

-abschliessend soll die Aktion “Smart Irrigation: Reset bucket” für die Entität “sensor.smart_irrigation_rasen”, in dem der Wert gleich null gesetzt wird, damit der Wasserbedarf ab der Bewässerung wieder von Null gezählt werden kann

Wenn jedoch am Tag der potenziellen Bewässerung geregnet hat oder die Bedingungen nicht erfüllt sind (Niderschlag z.B.), soll am nächsten Tag soll dann geguckt werden ob nun der Bucket-Wert -25 unterschreitet. Es soll also nicht öfter als nur 1 Mal die Woche beregnet werden, aber nicht zu festen Tagen, sondern min. 7 Tage nach der letzten Bewässerung.

Da ich, wie gesagt, alleine nicht durchkam, habe ich Geminy um Hilfe gebeten.
Folgendes ist dabei rausgekommen:

  1. Helfer anlegen für den Zeitstempel der letzten Bewässerung:


  2. Eigentliche Automation:

alias: 💧🕛Flexible Wöchentliche Rasenbewässerung
description: >-
  Prüft täglich um 05:15 Uhr, ob Bewässerung nötig und erlaubt ist (kein Regen,
  7-Tage-Sperre).
triggers:
  - at: "05:15:00" ## Zeit der Wasserbedarfsberechnung durch Smart Irrigation +15min
    trigger: time
conditions:
# 1. Bedingung: Mindestens 7 Tage seit der letzten Bewässerung (Helfer aus Punkt 1)
  - condition: template
    value_template: >
      {{ (now() - (states('input_datetime.letzte_rasenbewaesserung') |
      as_datetime | as_local)) > timedelta(days=7) }}
#2. Bedingung: Bucket <25
  - condition: numeric_state
    entity_id: sensor.smart_irrigation_rasen
    below: -25
# 3. Bedingung: Es regnet gerade NICHT 
# Hier wird geprüft, ob der aktuelle Zustand (state) des OpenWeatherMap-Sensors KEINEN #Regen meldet. im Idealfall die Werte der Vorhersage, nur diese werden scheinbar von Open #Weather Map nicht mehr geliefert
  - condition: not
    conditions:
      - condition: state
        entity_id: weather.openweathermap
        state: lightning-rainy
      - condition: state
        entity_id: weather.openweathermap
        state: lightning
      - condition: state
        entity_id: weather.openweathermap
        state: pouring
      - condition: state
        entity_id: weather.openweathermap
        state: snowy-rainy
actions:
# Stempel ins Logbuch (wurde von Geminy highly empfohlen., ob man es braucht?)
  - data:
      name: Rasenbewässerung
      message: Start der Bewässerungslogik. Alle Bedingungen erfüllt.
    action: logbook.log
# AKTION 1: Laufzeit festlegen
  - target:
      entity_id: number.gartenbewaesserung_rasen_laufzeit
    data:
      value: "{{ states('sensor.smart_irrigation_rasen') | float(0) | round(0) }}"
    action: number.set_value
# AKTION 2: Schalter einschalten (geht nach eingestellter Dauer automatisch aus)
  - target:
      entity_id: switch.gartenbewaesserung_rasen
    action: switch.turn_on
    data: {}
# AKTION 3: Zeitstempel der letzten Bewässerung aktualisieren (Start der 7-Tage-Sperre)
  - target:
      entity_id: input_datetime.letzte_rasenbewaesserung
    data:
      datetime: "{{ now().timestamp() | timestamp_local }}"
    action: input_datetime.set_datetime
# AKTION 4: Smart Irrigation Bucket resetten
  - data:
      entity_id: sensor.smart_irrigation_rasen
    action: smart_irrigation.reset_bucket
mode: single

Der Trockentest hat ergeben, dass beim Ausführen der Aktion das Relais der Rasenbewässerung angegangen ist und nach der über die Entwicklerwerkzeuge voreingestellten Laufzeit wieder ausging.

So. ich stelle nun den Code zur Debatte. Jegliche Kritik oder Vorschläge sind herzlich willkommen