Automation wiederholen bei Anwesenheit

Hallo zusammen,
ich bin noch recht neu auf dem Gebiet des smarten Homes und betreibe seit wenigen Tagen Home Assistant mit einigen m. E. gut gelungenen Konfigurationen…
Nun komme ich aber nicht weiter und würde mich über Lösungsvorschläge freuen, denn ich versiche folgendes hinzubekommen:
Ich möchte meine Warmwasserzirkulation, welche an einen Shelly Plus hängt so zu programmieren (den Shelly), dass der Shelly bei Vorliegen einer Anwesenheit einer oder mehrerer Personen in einem Zeitfenster zwischen 05:30 Uhr bis 21:00 Uhr einschaltet und nach 5 Minuten wieder ausschaltet, dann 20 Minuten wartet und bei weiter vorliegender Anwesenheit einer oder mehrerer Personen die Automation wiederholt. Wenn alle Personen nicht anwesend sind, dann soll der Shelly nach Ablauf der fünf Minuten ausgeschaltet bleiben.
Ich bin noch am überlegen, ob der Shelly außerhalb dieser Zeit (also nachts) einmal die Stunde für 5 Minuten geschaltet wird. Evtl. kann diese Idee gleich von Anfang an in die Konfiguration eingebunden werden.

Leider haben mich die verschiedenen Beiträge in diesem Forum oder via google nicht wirklich weitergebracht.
Ich würde mich freuen, wenn mir dieses Vorhaben mit eurer Unterstützung gelingen könnte.

Hi,

die Zeiten könntest du mit einem Schedule-Helper realisieren, dort kannst du dann auch mit dem Zeiten herumspielen.
Dann erstellst du eine Automatisierung dann bei “Add Trigger” “Time and Location” → “Time Pattern” dann trägst du bei MInute “/25” ein. Das sorgt erstmal dafür dass deine Automatisierung alle 25 Minuten einmal anläuft.
Bei Bedingungen fragst du ab ob dein Zeitplan aktiv ist.
Danach wählst du ganz unten dass er die Entität deines Shellys einschaltet, 5min wartet und wieder ausschaltet.

Falls du es etwas genauer brauchst, melde dich einfach nochmal.

Auslöser:

  • Zeitraster alle 20 min

Bedingungen:

  • Zwischen 05:30 und 21:00 Uhr
  • zone.home > 0

Aktionen:

  • schalte Switch ein
  • Starte Timer xyz mit 5 min

Dann noch eine 2te Automatisierung

Auslöser:

  • Timer xyz ist abgelaufen

Aktion:

  • Switch ausschalten

Den Timer kannst Du Dir als Helfer anlegen.
Kannst auch beide Automatisierungen in eine packen und mit Trigger ID’s arbeiten und als Aktion Auswählen welcher Trigger welche Aktion auslöst.

Gruß
Osorkon

Das mit dem Timer ist eine gute Idee. Das werde ich auch mal bei Automationen testen, da der Timer auch einen (versehentlichen oder geplanten) Neustart/Ausfall übersteht.

Ich muss mir nur noch überlegen, wie ich es abfange, wenn der Timer endet, während HA, aus welchem Grund auch immer, nicht aktiv ist.

Timers will be restored to their correct state and time on Home Assistant startup and restarts when configured with the restore option.

However, automations using the timer.finished event will not trigger if the timer expires when Home Assistant is not running.

Im obigen Fall wäre das nicht so wichtig, da ja die Umwälzpumpe nur maximal bis zum Neustart von HA +20 Minuten laufen kann, da ja dann wieder ausgelöst wird.

Bei einer Automation, die nur seltener ausgelöst wird, wäre das schon ärgerlicher, wenn das Ausschalten “verpasst” würde.

Hallo,

zunächst vielen Dank für die Lösungsvorschläge. Ich habe das mal versucht via UI konfigurieren, was insoweit auch geklappt hat, allerdings musste ich heute Morgen feststellen, dass die Automation die ganze Nacht durchlief, also offensichtlich die Bedingung before und after ignoriert hat.
Was habe ich gemacht?
Konfiguriert habe ich Folgendes:
Auslöser:
Zeitraster → alle 20 Minuten
Bedingung:
Zwischen 05:30 Uhr und 22:00 Uhr und
person.xyz oder
person.abc ->zu Hause
Aktion:
Schalte Shelly → ein
Verzögerung → 5 Minuten
Schalte Shelly -< aus

Das mit der zweiten Aktion habe ich jetzt nicht ganz verstanden, denn wenn die Aktion ohnehin alle 20 Minuten auslöst, dann wäre die 2. Aktionskette doch nicht erforderlich, oder?
Was mir noch aufgefallen ist, ist, dass der Auslöser alle 20 Minuten in einer Stunde auslöst, aber nicht, wenn z. B. person.abc das Haus betriit. Meine Idee war, dass der Auslöser dann greift, wenn die Anwesenheit einer Person erkannt wird und sofort die Automation startet. So würde sie doch die Anwsenheit erkennen und dann warten, bis die 20. Minute erreicht ist. Vlt. stehe ich gerade auch nur auf dem Schlauch und blicke es noch nicht…

Da mehrere Personen die Automation auslösen können, wäre es sicherlich auch klug zu sagen, dass wenn bereits eine Person anwesend ist, die Automation nicht neu startet, wenn für eine zweite Person die Anwesenheit erkannt wird oder die Automation nicht endet, wenn eine Anwesenheit sich in Abwesenheit ändert.

Habt ihr irgendwelche Ideen?

Wie sieht dein Code denn bisher aus? Dann könnte man Fehler erkennen.

Deshalb der Timer. Ein Delay wird bei einem Neustart o.ä. abgebrochen.

Deshalb auch dieser Ansatz und nicht über jede einzelne Person.
Ich würde nur evtl. noch sagen, dass zone.home > 0 für z.B. 30 s, da bei mir manchmal (nachts) die Personen kurzzeitig nicht zu Hause sein, weil der Router das so meldet. Keine Ahnung, warum das so ist bei mir.

Wenn du dann zone.home > 0 auch noch zusätzlich als zweiten Auslöser definierst, sollt das zusätzlich zu den 20 Minuten genau dann einmal auslösen, wenn die erste Person deine Home-Zone betritt.

Zusätzlich zum Code, könntest du auch den Trace zeigen.

…den könnte ich erst heute Abend oder morgen im Laufe des Teages einstellen, bin dienstlich den ganzen Tag unterwegs und habe keinen Zugriff auf HA.

Okay, ich vermute irgendwas stimmt mit den Bedingungen nicht bei UND ODER.

Ich würde es wie @silberfuxx machen

Auslöser:
Zeitraster → alle 20 Minuten
oder
Zustand von zone.home > 0
Bedingung:
Zwischen 05:30 Uhr und 22:00 Uhr und
person.xyz oder
person.abc ->zu Hause
Aktion:
Schalte Shelly → ein
(Verzögerung → 5 Minuten)
(Schalte Shelly -< aus)

Ob du bei der Aktion mit delay arbeiten willst oder doch mit timer, ist dir überlassen. Für den Anfang reicht sicher ein delay. Später könntest du umstellen.

Bedingungen/Condition würde ich so verschachteln:

condition:
  - condition: and
    conditions:
      - condition: time
        after: "05:30:00"
        before: "22:00:00"
      - condition: or
        conditions:
          - condition: state
            entity_id: person.xyz
            state: home
          - condition: state
            entity_id: person.abc
            state: home

Hallo,

ich werde das mal probieren, wenn ich wieder zu Hause bin. Ich würde gleich mit Helfern (Timer) starten. Melde mich nachdem ich die Automation programmiert habe.

Nachtrag
Hallo,

wie ist das zu verstehen:

Letztendlich ist meine Idee die, dass die Automation durch die Veränderung eines Zustandes ausgelöst wird und sich dann alle 20 Minuten wiederholt, solange der Zustand unverändert bleibt. Den obigen Auslöser lese ich anders oder verstehe ihn noch nicht in Gänze…

:pencil2: by tarag: Beiträge zusammengeführt

Entweder wird die Automation alle 20 Minuten ausgelöst oder (zusätzlich) wenn jemand nach Hause kommt, aber vorher niemand da war (>0).

trigger:
  - platform: time_pattern
    minutes: /20
  - platform: numeric_state
    entity_id:
      - zone.home
    above: "0"

Dazu hast du dann die Bedingungen, die prüfen die Uhrzeit und ob jemand zu Hause ist.

condition:
  - condition: and
    conditions:
      - condition: time
        after: "05:30:00"
        before: "22:00:00"
      - condition: or
        conditions:
          - condition: state
            entity_id: person.xyz
            state: home
          - condition: state
            entity_id: person.abc
            state: home

Und erst wenn alles passt, laufen die Aktionen an.

Danke!
Wenn man es so liest, klingt es total logisch und einfach! Ich melde mich, wenn ich die Schritte entsprechend konfiguriert habe!

Nachtrag
Hallo,

ich habe heute Morgen mich mal an die Konfiguration gesetzt. Soweit scheinen die Auslöser nun das Richtige zu machen, lediglich mit dem Timer (den habe ich mir als Helfer erstellt), scheint es noch Probleme zu geben. Die Aktion wird ausgelöst, geht aber nach ca. fünf Sekunden wieder aus. Ich mal meinen Helfer gecheckt, dort sind fünf Minuten eingetragen, sodass ich diesen vorerst als Fehlerquelle ausschließen würde. Ich werde mich nun mal daran machen und eine Verzögerung anstelle des Timers einfügen, mal schauen…
Anbei noch meinen Code, vlt, entdeckt ihr den Fehler mit dem Timer:


Viele Grüße
Jan

:pencil2: by tarag: Beiträge zusammengeführt

Der Fehler ist, dass du zwar den Timer startest, aber das Ende nicht abwartest. Daher auch die ca. 5 Sekunden, die diese Aktion braucht.

Hallo,

nun scheint es zu klappen. Ich habe mir gleich einen Timer als Helfer eingerichtet und so, wie von dir @sirector vorgeschlagen noch eine zweite Automation erstellt. Läuft - bis jetzt - perfekt! Tausend Dank an alle, die Lösungsvorschläge gemacht haben.
Ich werde die kommen Tage mal beobachten und dann final mitteilen, ob die Lösung klappt!