Binary Sensor (Gruppe) erst nach 5 Sekunden verzögert auswerten

Hallo zusammen,

ich habe schon alles mögliche probiert, was mir eingefallen ist, aber bisher noch keinen Erfolg gehabt. Auch die Suche im Internet hat leider noch keine funktionierende Lösung gebracht. Deshalb wende ich mich heute mal wieder hoffnungsvoll an euch mit der Bitte um einen Tipp oder Lösungshinweis. Es geht um folgendes:

Ausgangssituation:

Ich habe eine Gastherme, die über ein motorisch betriebenes Umschaltventil (Zonenventil) abwechselnd sowohl einen Heizungspuffer als auch einen Brauchwasserspeicher aufheizen kann. Ich möchte die Anzahl der Aufheizvorgänge und die Zeitdauer jeweils pro Tag ermitteln. Und zwar getrennt nach Heizung und Warmwasser.

Ich habe einen Binärsensor “Gruppe” erstellt, der die Zustände von zwei Schaltern (Relaiskontakte) überwacht. Der eine Schalter ist geschlossen, wenn der Brenner läuft, der andere Schalter ist geschlossen, wenn das Zonenventil mit Strom versorgt ist (Warmwasserseite). Dieser Gruppensensor (Warmwasser aufheizen) bekommt den Zustand “Ein” nur dann, wenn beide Schalter eingeschaltet sind. Das ist alles erledigt und funktioniert auch gut. Das Ergebnis dieses Gruppensensors werte ich dann mit zwei Helfern “Verlaufsstatistik” aus. Einmal die Anzahl der Einschaltvorgänge pro Tag und als zweites die gesamte Einschaltzeit pro Tag. Das funktioniert ebenfalls, allerdings kommt es immer mal wieder vor, dass mehr Einschaltvorgänge gezählt wurden, als es tatsächlich gab. Im Verlauf sieht man dann, dass es sich um einen Zeitraum von wenigen Sekunden handelte, in dem beide Schalter eingeschaltet waren, der sicher tatsächlich vorhanden war, der aber nicht ausgewertet werden sollte, weil er so kurz war.

Problemstellung:

Diese kurze Periode von ein bis zwei Sekunden, in der der Gruppensensor seinen Zustand ändert, sollte unterdrückt werden. Die in der Verlaufsstatistik aufaddierte Zeit pro Tag würde dabei keine Rolle spielen. Allerdings ergeben die aufaddierten Einschaltvorgänge ein falsches Bild, da sie manchmal nur ein oder zwei Sekunden gedauert haben, während die “echten” Einschaltvorgänge mindestens 15 Minuten dauern. Mein Wunsch wäre daher ein Helfer, der entsprechend des Zustands des binären Gruppensensors erst nach 5 Sekunden Verzögerung seinen eigenen Zustand ändert. Dadurch sollten jegliche kurzen Wechsel (egal ob nach “Ein” oder nach “Aus”) unterdrückt werden. Diesen Wert würde ich dann den Verlaufsstatistik-Helfern als Eingangssensor geben.

Ich habe mit dem GUI keinen passenden Helfer gefunden, der als Eingangssensor einen Binärsensor akzeptieren würde. Und eine funktionierende Lösung in yaml-Code als Templatesensor, die irgendeine Art delay oder “Entprellen” bietet, habe ich leider nicht gefunden. Es wäre ganz toll, wenn mir da jemand von euch auf die Sprünge helfen würde.

Vielen Dank schonmal im Voraus.

Dirk

Bei einem Binary Template Sensor wären das die Konfigurationsvariablen:

  • delay_off
  • delay_on

Siehe auch Dokumentation:

Gruß Osorkon

Vielen Dank für den superschnellen Tipp. Allerdings habe ich noch Probleme bei der Umsetzung. Bei dem Versuch, die Verzögerung vn 5 Sekunden in beide Richtungen zu realisieren, bekomme ich im File Editor eine Fehlermeldung “duplicated mapping key” für state

  - binary_sensor:
      - name: "Heizung aufheizen"
        unique_id: "Heizung aufheizen"
        delay_off:
          seconds: 5
        state: >
          {{ is_state("binary_sensor.heizungspuffer_aufheizen", "off") }}
        delay_on:
          seconds: 5
        state: >
          {{ is_state("binary_sensor.heizungspuffer_aufheizen", "on") }}
          

Wenn ich diesen Code im Template-Editor unter Entwicklertools eingebe, bekomme ich keine Fehlermeldung, sondern 1x den State True für off und 1x False für on

Was könnte ich da besser machen? Ich habe den binary_sensor unterhalb von template: angelegt, aber die Änderung noch nicht gespeichert.

Viele Grüße,

Dirk

Nur einmal state: aufführen!!
Du hast es doppelt drin.
Der Zustand des Template Sensors ist on, wenn das Template Ergebnis wahr ist. Sonst ist der Zustand off.

Gruß Osorkon

Nochmals danke für die schnelle Antwort. Jetzt habe ich es wie folgt geändert und bekomme im File Editor kene Fehlermeldung mehr. Im Template Editor gibt es nur noch das Ergebnis False (was ja auch stimmt, weil die Heizungspuffer gerade nicht aufgeheizt wird):

  - binary_sensor:
      - name: "Heizung aufheizen"
        unique_id: "Heizung aufheizen"
        delay_off:
          seconds: 5
        delay_on:
          seconds: 5
        state: >
          {{ is_state("binary_sensor.heizungspuffer_aufheizen", "on") }}
          

Ich frage mich nur, ob die Verzögerung von 5 Sekunden auch beim Wechsel des Zustands von On zu Off (also wirklich in beide Richtungen) wirkt. Kannst du das bestätigen?

Viele Grüße,

Dirk

Das Template macht bei mir keine Probleme.

template:
  - binary_sensor:
      - name: "Heizung aufheizen"
        unique_id: 70804887-c907-4f8e-b80c-2531511f2041
        delay_off:
          seconds: 5
        delay_on:
          seconds: 5
        state: "{{ is_state('binary_sensor.heizungspuffer_aufheizen', 'on') }}"

Und ja, die Verzögerung gilt sowohl für den on oder off Zustand.

Das Template geht in den Zustand on, erst wenn der binary_sensor.heizungspuffer_aufheizen 5s lang den Zustand on hat und umgekehrt.

Gruß Osorkon

Super, vielen Dank. Ich probier es damit jetzt mal aus und werde wieder berichten, was dabei rausgekommen ist. Vielen Dank für alles und einen schönen restlichen Sonntag.

Viele Grüe,

Dirk

Kannst du das nicht auch über eine simple automation machen?

Wenn Status der Gruppenentität länger als 5 Sekunden auf Ein ist dann aktualisiere den Zähler

Es gibt häufig mehr als einen Weg. Und je nach Anwendungsfall kann etwas anderes sinnvoller sein.

1 „Gefällt mir“

Vielen Dank an euch alle für eure Gedanken und Vorschläge. Und ganz besonders an Osorkon, weil sein Tipp und seine Hilfe die Lösung für mich gebracht hat. Die Verzögerung funktioniert jetzt tatsächlich in “beide Richtungen” und damit ist mein Problem nun gelöst.

Es ist absolut richtig, dass es oft mehrere Lösungswege gibt. Von daher waren die Anregungen, es über eine Automation zu lösen, auch gut. Ich habe allerdings viele Auswertungen von Einschalthäufigkeit und Laufzeiten in meinem Haus mit Verlaufsstatistik-Helfern gemacht und war deshalb auch in diesem Fall an diesem Weg festgefressen. Mit zwei zusätzlichen Template-Sensoren, die die nötigen Verzögerungen für die Heizungs- und Warmwasserseite bringen, bin ich nun absolut glücklich. Und hab wieder etwas für die Umsetzung von Lösungen in yaml-Code gelernt.

Vielen Dank nochmals an alle, die sich in diesem Forum um die Probleme anderer kümmern und solch hilfreiche Lösungsvorschläge anbieten.

Viele Grüße, Dirk

3 „Gefällt mir“