Bewässerung schaltet manchmal nicht ab

Hallo Zusammen, ich habe eine Automation die täglich meine Beetbewässerung startet. Mittels Regler im Lovelave lege ich die Dauer fest und habe einen Schalter ob die Bewässerung Automatik aktiviert ist oder nicht.

Aktuell startet die Bewässerung meist zur gewünschten Uhrzeit, ich habe jedoch das Problem meine Automation nicht immer abschaltet und das ist schlecht. Ich habe hierzu eine Failsafe Automation die um 2 uhrzeiten (feste Uhrzeiten) prüft ob das Relais noch an ist und ausschaltet. Leider kommt es häufiger vor, dass diese Automation greift. Lieber wäre es mir jedoch, wenn meine eigentliche Automation klappen würde. Ich glaube der Fehler liegt darin, dass die Restzeit nicht abläuft.
Hierfür habe ich eine Input Number: restzeit_beet_auto
Ich kann es leider aber nicht prüfen ob es daran liegt, weil meine Failsafe Auto diese Input Number wieder auf 0min resettet.

Kann mal ein Experte ein Auge darauf werfen, was hier falsch läuft?

  - alias: Bew_Beetbewässerung täglich (dynamische Startzeit)
    trigger:
      - platform: time
        at: input_datetime.beetzone_start

    condition:
      - condition: state
        entity_id: input_boolean.beet_auto_on
        state: "on"
      - condition: state
        entity_id: input_boolean.skip_next_run
        state: "off"
      - condition: state
        entity_id: switch.relay_no_6_n_a
        state: "off"
      - condition: state
        entity_id: switch.relay_no_7_n_a
        state: "off"

    action:
      # --- Laufzeit festlegen ---
      - variables:
          dauer: "{{ states('input_number.beetzone_auto_dauer') | int }}"

      # --- Restzeitzähler setzen & Relais einschalten ---
      - service: input_number.set_value
        target:
          entity_id: input_number.restzeit_beet_auto
        data:
          value: "{{ dauer }}"
      - service: switch.turn_on
        target:
          entity_id: switch.relay_no_8_n_a

      # --- Warten, bis HA den ON-State wirklich sieht ---
      - wait_template: "{{ is_state('switch.relay_no_8_n_a', 'on') }}"
        timeout: "00:00:05"
        continue_on_timeout: false

      # --- Push "läuft" ---
      - service: notify.mobile_app_steve_iphone
        data:
          message: "Beetbewässerung läuft ({{ dauer }} Minuten)"

      # --- Restzeit-Countdown ---
      - repeat:
          count: "{{ dauer }}"
          sequence:
            - delay: "00:01:00"
            - service: input_number.decrement
              target:
                entity_id: input_number.restzeit_beet_auto

      # --- Abschalten & Push "beendet" ---
      - service: switch.turn_off
        target:
          entity_id: switch.relay_no_8_n_a
      - service: notify.mobile_app_steve_iphone
        data:
          message: "Beetbewässerung beendet"

      # --- Aufräumen ---
      - delay: 1
      - service: input_number.set_value
        target:
          entity_id: input_number.restzeit_beet_auto
        data:
          value: 0
      - service: input_boolean.turn_off
        target:
          entity_id: input_boolean.skip_next_run

    mode: single

Vielen Dank im voraus und VG Steve

Den genauen Fehlfunktionsgrund könnte ich nur rausfinden, wenn ich den Code bei mir laufen lassen würde. Mir erscheint der Code etwas zu kompliziert.

Grundsätzlich würde ich für eine Bewässerung immer eine Hardware wählen, die von selbst nach einer Maximalzeit abschaltet (und wahrscheinlich noch zusätzlich eine unabhängige Durchflussüberwachung einbauen mit Abschaltventil über die HA den Wasseranschluss abdreht, wenn zu unerlaubten Zeiten ein Duchfluss registriert wird). Wenn das Abschalten über Homeasistant läuft, dann kann eine kurze Verbindungsstörung oder ein Neustart von Homassistant dazu führen, das nie abgeschaltet wird.

Ich bin mir auch nicht sicher, wie gut einfache Controller/Raspi’s/ESPHome und Homeassistant mit Multi-Threading, Parallelverarbeitung usw. zurechtkommen. Wird korrekt auf eine Variablenänderung von außen reagiert, während ich mich in einer Warteschleife innerhalb einer Automation befinde? Wieviele Zweige können parallel bearbeitet werden und wann kommt es zu ernsthaften Verzögerungen/Blockierungen/Abstürzen?

Grundsätzlich würde ich

  • Keine Schleifen über längere Zeiträume in eine Automation einbauen. Besser über einen Timer-Helfer einen Timer starten und bei Ablauf/Abbruch oder Homeassistant-Neustart die Bewässerung abschalten.
  • So schnell wie möglich eine Automation durchlaufen und wieder in die HA-Idle-Schleife zurückkehren. Weitere Aktionen durch erneutes Triggern auslösen. Dann hat Homeassistant die Resourcen für andere Aufgaben frei und hängt nicht mit einem Teil der Resourcen wartend in einer Schleife fest.

Du kannst bei Bewässerungsstart einen Time-Helfer starten und einen „Timer.finished“-Event Trigger zum Abschalten verwenden (siehe Timer - Home Assistant).

Bei Homeassistant Neustart

trigger:
  - platform: homeassistant 
    event: start

würde ich das Bewässern sicherheitshalber stoppen (sonst wird es wieder kompliziert). Mit der Restore-Option werden Timer nach einem Naustart korrekt wiederhergestellt (zwischenzeitlich abgelaufene Zeit wird berücksichtigt) aber verpasste Finished-Event werden leider nicht nachgeholt (laut Copilot, habe ich selber noch nie ausprobiert, schalte bei Neustart zur Sicherheit ab).

Ohne eine Hardware, die nach einer Maximalzeit von selber abschaltet, wirst du wohl nicht um einen Failsafe-Mechanismus herum kommen, der den Abschaltbefehl in kurzen Intervallen wiederholt, wenn zu unerlaubten Zeiten Bewässert wird, da es ja immer vorkommen kann, das ein Abschaltbefehl über WLAN nicht am Ziel ankommt obwohl die Automation korrekt gearbeitet hat

Hi, ich weis gleich geht das Geschrei wieder los, warum nicht mit denAutomationen von HA. Ich verwende für meine Steuerung einfach node-red und hab das ganze nach einer Anleitung von Tristan gemacht, das funktioniert schon sehr lange ohne Probleme. Die Bewässerung wird vor Sonnenaufgang eingeschaltet und läuft über 30Minuten und abends nochmal für 30Minuten. Bei dem ganzen wird auch berücksichtigt ob genug Feuchtigkeit im Boden ist und wie hoch die Temperatur ist. Ausserdem wird nochmal abgefragt über DWD ob es regnen soll oder nicht, damit nicht unnötig Wasser vergeudet wird.

So ca. 8 Jahre hat lang meine Passagenschaltung über WLAN gut funktioniert (kann mich an keine Fehlfunktion erinnern). Nun bekomme ich immer wieder die Meldung “Passage konnte nicht geöffnet/geschlossen werden”. Liegt vielleicht an der neuen Fritzbox, dass sie diese Ecke des Gartens nicht so erreicht, wie die alte aber ich möchte dieses Problem nicht mit dem Abschaltbefehl für die Gartenbewässerung haben. Mein Gartenwasseranschluss hängt am öffentlichen Netz, das könnte teuer werden…
Ich mag daher eher Lösungen wie der ESP von Simon, der nach einer Maximalzeit auch ohne Netzwerk abschaltet und bei Stromausfall von selber schließt…

Hallo Zusammen,

ich habe wohl das Problem gefunden. Meine Integration kommuniziert wohl zu selten mit meinen Relais. Ich möchte auch ungern diesen Wert noch weiter reduzieren um den Traffic nicht unnötig zu erhöhen, sodass ich wohl die zeitliche Steuerung am Gerät selbst belasse. Durch HA Automationen hätte ich halt tolle Möglichkeiten gehabt einfach die nächste Bewässerungsdauer einzustellen, aber auch so Dinge wie nächste Bewässerung überspringen. Das bekomme ich aber auch mit einem anderen Ansatz besser gelöst.

Vielen Dank an die Antworten.

Ich verwende kein Ventil was mit 240V läuft sondern das hier:


Das läuft mit Batterie und schon seit 2 Jahren ohne Probleme, da muss ich mir keine Gedanken machen das das nicht schliesst.

Schaltet das automatisch nach einer (wie auch immer) übergebenen Zeit ab oder wartet das auf einen Abschaltbefehl per Zigbee?

Es ist eine Verzögerungsschleife in node-red die das abschaltet. Ob der Befehl erst von node-red kommt oder wo der herkommt kann ich gar nicht mit Sicherheit sagen. Bis jetzt hat es damit noch keine Probleme gegeben.