Automatisation löst manchmal falsch aus

Hallo,
ich habe ein kleines Problem mit der Automatisierung.

Ich überwache einen Tasmota-Stecker an dem ein Kühlschrank angeschlossen ist.
Wenn dieser den Zustand ändert (ON/OFF/disconnected) möchte ich eine Info via Whatsapp bekommen.
Soweit klappt auch alles.
Auch lege ich ein zweites Signal drauf (via Ping).

Allerdings kommt es manchmal zu Fehlalarmen. Scheinbar wenn das NW überlastet o.Ä. - bin mir aber nicht sicher wodurch dies ausgelöst wird und ist auch immer nur wenige Sekunden anstehend.

Mein Ansatz war:
1)Die Dauer in der Automatisation für die Entity von 0 min auf 1 min zu erhöhen. Ich dachte das löst dann nur aus, wenn der Zustand mehr als 1min bestehen bleibt?
Scheinbar ist dem nicht so, sondern wird die Automatisation erst nach 1min gestartet … auch wenn ich den Sensor wieder zurücksetze (hab es mit einem manuellen Schalter am Dashboard probiert).
2) habe eine Bedingung hinzugefügt, da passiert aber gar nix.

{% set TS_now = now() %} 
{% set TS_offset = 30 %}  
{% set TS_sensor = states.input_boolean.testschalter.last_changed.astimezone() %}
{{ TS_now > states.input_boolean.testschalter.last_changed.astimezone() +  timedelta(seconds=30)  }}

Jetzt stehe ich etwas an, hat jemand einen Rat was ich falsch mache, oder ob man die False Alarme anders abfangen kann?
(Also z.B. Alarm nur wenn der Zustand Off länger als 30sec ansteht)
Gibt es dazu irgendwo ein Beispiel?

Danke

Nachtrag:
Sicherheitshalber der ganze Code, die Abfrage (Auslöser) sind der Zustand des Schalters (Änderung) sowie die Erreichbarkeit via Ping (falls z.B. Netzausfall des Gerätes vorliegt).

Ein Schalter am Dashboard simuliert zusätzlich den Ping …
Wenn ich nun aber diesen Umschalte, und innerhalb von 5sec ein zweites Mal betätige, kommt der Alarm trotzdem aufs Handy…

alias: _TEST
description: ""
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.ping_switch32_221
    to: null
    from: null
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: state
    entity_id:
      - switch.switch_32_tas_221
    from: null
    to: null
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: null
    to: null
    for:
      hours: 0
      minutes: 0
      seconds: 10
conditions: []
actions:
  - action: notify.mobile_app_rha_iphone11
    metadata: {}
    data:
      message: |-
        {% set SW_Ping = states('binary_sensor.ping_switch32_221') %}
        {% set SW_Binary = states('switch.switch_32_tas_221') %}    

        {% if SW_Ping == 'on'   %}
          {% if SW_Binary == 'on'    %}
              {% set msg = ' -Connected /ON-'%}      
            {% else %}
              {% set msg = ' -Connected /OFF-'%}       
          {% endif %}         

        {% else %}
          {% if SW_Binary == 'on'    %}
              {% set msg = ' -DisConnected /ON-'%}      
            {% else %}
              {% set msg = ' -DisConnected /OFF-'%}       
          {% endif %}
        {% endif %}

        State:{{ msg }} _Test
      title: 🤷‍♂️ Switch 32 -State changed
  - action: notify.whatsapp_robert1
    metadata: {}
    data:
      message: |-
        {% set SW_Ping = states('binary_sensor.ping_switch32_221') %}
        {% set SW_Binary = states('switch.switch_32_tas_221') %}    

        {% if SW_Ping == 'on'   %}
          {% if SW_Binary == 'on'    %}
              {% set msg = ' -Connected /ON-'%}      
            {% else %}
              {% set msg = ' -Connected /OFF-'%}       
          {% endif %}         

        {% else %}
          {% if SW_Binary == 'on'    %}
              {% set msg = ' -DisConnected /ON-'%}      
            {% else %}
              {% set msg = ' -DisConnected /OFF-'%}       
          {% endif %}
        {% endif %}

        State:{{ msg }}
      title: 🤷‍♂️ Switch 32 -State changed
mode: single

Versuche male diesen Templatetrigger anstelle Deines obigen

  - trigger: template
    value_template: >
      {% set TS_now_sec = now().timestamp() %}
      {% set TS_offset_sec = 30 %}
      {% set TS_sensor_sec =
      states.input_boolean.testschalter.last_changed.timestamp()
      %}
      {{ TS_now_sec > TS_sensor_sec + TS_offset_sec }}

Zeitberechnungen können tricky sein und immer wenn es geht, breche ich auf Sekunden herunter und vergleiche.

Danke Bacardi,
aber ich denke das ist es nicht oder ich hab dich falsch verstanden.
Dann löst er 2x aus … (obgleich mit der 10s Verzögerung).
Im Moment lege ich nur einen Schalter am Dashboard um, damit es einfacher ist …
Oder habe ich dich falsch verstanden?
Thx

HELP_Alarm_Kühlschrank ausgeschaltet ausgelöst durch Automation _Bacardi_V1 ausgelöst durch Uhrzeit change or manual update via template
18:03:10 - Vor 2 Minuten
HELP_Alarm_Kühlschrank eingeschaltet ausgelöst durch Automation _Bacardi_V1 ausgelöst durch Uhrzeit change or manual update via template
18:03:00 - Vor 2 Minuten
_Bacardi_V1 ausgelöst durch Uhrzeit change or manual update via template
18:03:00 - Vor 2 Minuten - Traces
alias: _Bacardi_V1
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: null
    to: null
  - trigger: template
    value_template: |2-
            {% set TS_now_sec = now().timestamp() %}
            {% set TS_offset_sec = 30 %}
            {% set TS_sensor_sec = states.input_boolean.testschalter.last_changed.timestamp()  %}
            {{ TS_now_sec > TS_sensor_sec + TS_offset_sec }}
conditions: []
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id:
        - input_boolean.help_alarm_kuhlschrank
    enabled: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
    enabled: true
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id:
        - input_boolean.help_alarm_kuhlschrank
    enabled: true
mode: single

Vielleicht ich Dich :slight_smile:

Mein obiger Template Trigger als alleiniger Trigger macht folgendes:
30 Sekunden nachdem der Schalter geklickt wurde, lege los …

Zusammen mit dem Schalter als Trigger löst es 2x aus. Ggf. hast Du das 2. Mal nicht mitbekommen weil der Modus Single ist. Im Logfile müßte etwas mit “Already running stehen”.

Sry,
ich bin mir nicht sicher ob wir uns verstehen :frowning:

Mein Dashboard:

Was ich simulieren will:

  • Wenn sich der Zustand beim Testschalter (1) ändert soll sich der Helpswitch (2) ändern.
  • aber nur, wenn sich der Zustand von Testschalter (1) nicht zurück ändert innerhalb einer gewissen Zeit. (So versuche ich kurze Netzausfälle zu simulieren).
  • Aber wenn ich 2x innerhalb von 5s schalte, startet trotzdem die Automatisation und ich bekomme eine Nachricht (bzw. wird die Automatisation abgearbeitet), obwohl eh schon wieder alles OK ist.
  • Ich will aber an der Stelle, dass die Automatisation gar nicht erst startet, sondern nur wenn der Zustand länger als eine gewisse Zeit ist (z. B. 30s)

Mein Code jetzt:

alias: _Bacardi_V1
description: ""
triggers:
  - trigger: template
    value_template: |2-
            {% set TS_now_sec = now().timestamp() %}
            {% set TS_offset_sec = 15 %}
            {% set TS_sensor_sec = states.input_boolean.testschalter.last_changed.timestamp()  %}
            {{ TS_now_sec > TS_sensor_sec + TS_offset_sec }}
conditions: []
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id:
        - input_boolean.help_alarm_kuhlschrank
    enabled: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
    enabled: true
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id:
        - input_boolean.help_alarm_kuhlschrank
    enabled: true
mode: single

das mit den logs hab ich nicht so ganz behirnt - sehe mir das noch an.
vorläufig nur der screen shot

Ich schau mir das jetzt nochmal an. Ich hätte nicht in der Mittagspause antworten sollen und schon gar nichtr bei soviel Text :slight_smile: Melde mich gleich

Danke, kein Stress.
Mittagspause jetzt? :slight_smile:

Herzlichen dank jedenfalls für deine bemühungen (auch wegen der letzten posts …)

Nein, mit Mittag meinte ich heute Mittag auf die Schnelle. Ich hätte gar nicht antworten sollen und am Abend lieber richtig lesen. Sry für die Verwirrung.

So, ich traue mich noch einmal…
Ich habe alles vorher Gesagte ausgeblendet und mich auf diese Anforderung fokussiert und eine entsprechende Automatisation aufgesetzt.

Die folgende Automatisation tut folgendes

  • wenn Schalter für 30 s AUSgeschaltet ist, dann schalte auch den Helfer AUS
  • wenn Schalter für 30 s ANgeschaltet ist, dann schalte auch den Helfer AN
  • Die 30 s bewirken, daß Du den Schalter so oft klicken kannst wie Du testen möchtest, es zählt der letzte Zustand + 30 s

Das war es dann auch schon. Ein Templatecode ist nicht nötig.

Zusammenfassung
alias: 1_forum_test_ping
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: "on"
    to: "off"
    id: HilfschalterWirdAusgeschaltet
    for:
      hours: 0
      minutes: 0
      seconds: 30
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: "off"
    to: "on"
    id: HilfschalterWirdAngeschaltet
    for:
      hours: 0
      minutes: 0
      seconds: 30
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - HilfschalterWirdAusgeschaltet
        sequence:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.help_alarm_kuhlschrank
      - conditions:
          - condition: trigger
            id:
              - HilfschalterWirdAngeschaltet
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.help_alarm_kuhlschrank
mode: single

In

Ganz oben läst Du bei allen Trigger Stati Wechseln auslösen. Bleib lieber spezifisch von An → Aus etc. und fange im Action Teil diese Fälle sauber ab. So werden auch gleich die unbeliebten invaliden Stati None, Unavailable, Unknown umgangen. Auch beim Ping bleib konkret: Verbunden → Getrennt etc.

Ich bin gespannt. Und noch mal Entschuldigung für mein flüchtiges Lesen.

1 „Gefällt mir“

Hi,
kein Problem. Ich bin relativ neu mit HA und kann mich auch nicht so exact ausdrücken …

jedenfalls scheint der Code zu Klappen - Danke.
Ich verstehe zwar noch immer nicht was an meinen Überlegungen falsch war, denke ich muss mir das in einer ruhigen Minute mal ansehen…

Nun werde ich noch einen 2ten Trigger auf den Hilfsschalter legen (den PING, falls der Schalter nicht erreichbar ist und ich somit den Zustand des Schalters nicht kenne).
Sobald der Hilfsschalter dann auslöst jage ich eine Meldung ans Telefon.

So der Plan - wird etwas dauern bis ich das dann getestet habe.

Jedenfalls nochmals Herzlich Danke

Ich war zu voreilig …

Wenn ich den Schalter 2x innerhalb von 5s betätige wird 1 Meldung gesandt (hab mein Handy mit eingepflegt). Das will ich aber nicht …

Wir brauchen , denke ich, event. eine zusätzliche Option in der abgefragt wird, ob der Zustand sich geändert hat im Vergleich zu vorher (vor erstem auslösen).

Aber ich denke dann würde mein erstes Beispiel u.U. auch funktioneren?

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

Das würde mich wundern bei obiger Automatisation. Bitte kopiere den kompletten neuen Code.

Gerne:

alias: _Bacardi_V2
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: "on"
    to: "off"
    id: HilfschalterWirdAusgeschaltet
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: "off"
    to: "on"
    id: HilfschalterWirdAngeschaltet
    for:
      hours: 0
      minutes: 0
      seconds: 10
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - HilfschalterWirdAusgeschaltet
        sequence:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.help_alarm_kuhlschrank
          - action: notify.mobile_app_rha_iphone11
            metadata: {}
            data:
              message: KS-aus
      - conditions:
          - condition: trigger
            id:
              - HilfschalterWirdAngeschaltet
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.help_alarm_kuhlschrank
          - action: notify.mobile_app_rha_iphone11
            metadata: {}
            data:
              message: KS-ein
mode: single

Ich bleibe bei meinem früheren Statement zu dem Code: Nur der letzte 10 s andauernde Zustand löst die Automatisation aus.
10 s = Aus → HilfschalterWirdAusgeschaltet
10 s = AN → HilfschalterWirdAngeschaltet
Alles < 10 führt nicht zum Auslösen.
Aber, wenn < 10 Sek des ersten Schaltvorganges neu geschaltet wird, dann zählen die 10 Sek des zweiten Schaltvorganges und da beide Stati auslösen gibt es immer eine Meldung aber nur über den letzten Schaltvorgang.

Lange Rede kurzer Sinn, Lösung ist einfach.
Weitere Bedingungen bei den Optionen, wie Du auch schon gesagt hast

alias: _Bacardi_V3
description: ""
triggers:
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: "on"
    to: "off"
    id: HilfschalterWirdAusgeschaltet
    for:
      hours: 0
      minutes: 0
      seconds: 10
  - trigger: state
    entity_id:
      - input_boolean.testschalter
    from: "off"
    to: "on"
    id: HilfschalterWirdAngeschaltet
    for:
      hours: 0
      minutes: 0
      seconds: 10
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - HilfschalterWirdAusgeschaltet
          - condition: state
            entity_id: input_boolean.help_alarm_kuhlschrank
            state: "on"
        sequence:
          - action: input_boolean.turn_off
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.help_alarm_kuhlschrank
          - action: notify.mobile_app_rha_iphone11
            metadata: {}
            data:
              message: KS-aus
      - conditions:
          - condition: trigger
            id:
              - HilfschalterWirdAngeschaltet
          - condition: state
            entity_id: input_boolean.help_alarm_kuhlschrank
            state: "off"
        sequence:
          - action: input_boolean.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: input_boolean.help_alarm_kuhlschrank
          - action: notify.mobile_app_rha_iphone11
            metadata: {}
            data:
              message: KS-ein
mode: single

Jetzt ist alles perfekt.
Herzlichen Dank nochmals