Wiederholungen - Aktion solange ausführen bis gewünschter Zustand erreicht ist

Bei kritischen Anwendungen oder einfach wenn man sicherstellen will, dass ein gewünschter Zustand erreicht wird, bietet sich eine wiederholte Aktion an.
Funksignale können mal verschluckt werden, sollte nicht passieren kann aber. Da kann es nicht schaden, wenn man sich wiederholt aber auch nur dann,
wenn der gewünschte Zustand nicht erreicht ist.

Hier mal ein Wasserventil, das sich nach 30 min ausschalten soll.

Die Aktionen switch.turn_off und eine Verzögerung von 10s, werden solange wiederholt bis der Zustand des Switches = off ist

alias: Wasser Garten abschalten - Auf Nummer Sicher gehen
description: ""
mode: single
triggers:
  - entity_id:
      - switch.wasser_garten
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 30
      seconds: 0
    trigger: state
conditions: []
actions:
  - repeat:
      while:
        - condition: state
          entity_id: switch.wasser_garten
          state: "on"
      sequence:
        - data: {}
          target:
            entity_id: switch.wasser_garten
          action: switch.turn_off
        - delay:
            hours: 0
            minutes: 0
            seconds: 10
            milliseconds: 0

Der Nachteil könnte sein, dass aus welchem Grund auch immer die Schleife endlos läuft. Weil der doofe Switch einfach nicht ausgehen will! :angry:

Mann kann die Anzahl der Wiederholungen auch begrenzen, z.b. auf 10

Dabei wird zuerst die Bedingung geprüft ob der Switch = on ist, wenn erfüllt wird der Switch ausgeschaltet und es folgt eine 10s Verzögerung.
Wird der Switch bereits beim ersten Versuch erfolgreich ausgeschaltet, ist ab der 2ten Wiederholung die Bedingungen nicht mehr erfüllt und die Folge Aktionen werden nicht mehr ausgeführt.
Die Schleife wird zwar immer noch 10 mal wiederholt, aber eben nur die Prüfung der Bedingung was nur ein paar ms erledigt ist.

alias: Wasser Garten abschalten - Auf Nummer Sicher gehen mit Bedacht
description: ""
mode: single
triggers:
  - entity_id:
      - switch.wasser_garten
    from: "off"
    to: "on"
    for:
      hours: 0
      minutes: 30
      seconds: 0
    trigger: state
conditions: []
actions:
  - repeat:
      count: "10"
      sequence:
        - condition: state
          entity_id: switch.wasser_garten
          state: "on"
        - data: {}
          target:
            entity_id: switch.wasser_garten
          action: switch.turn_off
        - delay:
            hours: 0
            minutes: 0
            seconds: 10
            milliseconds: 0

Gruß
Osorkon