Automation löst zu früh aus

Hallo zusammen,

ich habe mir hier eine kleine Automation gebastelt, die mir sagt, wann meine Waschmaschine fertig ist. Hat bis vor Wochen auch perfekt funktioniert, nun bekomme ich immer eine “Fertig” Meldung, obwohl die Maschine noch nicht mal gestartet ist:

alias: Waschmaschine Startbereitschaft
description: ""
triggers:
  - type: power
    device_id: 6d935cc9e659d6d51abd86001c2c4a01
    entity_id: 0e12a8a63982e5890e5a77df2d3c1334
    domain: sensor
    trigger: device
    above: 20
    for:
      hours: 0
      minutes: 30
      seconds: 0
conditions:
  - condition: device
    type: is_on
    device_id: 6d935cc9e659d6d51abd86001c2c4a01
    entity_id: 4cc3f2e11e8e0d2e94b051886603d1b0
    domain: switch
actions:
  - action: input_boolean.turn_on
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.waschmaschine
mode: single
alias: Waschmaschine läuft
description: ""
triggers:
  - type: power
    device_id: 6d935cc9e659d6d51abd86001c2c4a01
    entity_id: 0e12a8a63982e5890e5a77df2d3c1334
    domain: sensor
    trigger: device
    below: 5
    for:
      hours: 0
      minutes: 5
      seconds: 0
    enabled: true
conditions:
  - condition: device
    type: is_on
    device_id: 6d935cc9e659d6d51abd86001c2c4a01
    entity_id: 4cc3f2e11e8e0d2e94b051886603d1b0
    domain: switch
    enabled: false
  - condition: state
    entity_id: automation.waschmaschine
    state: "on"
    for:
      hours: 0
      minutes: 30
      seconds: 0
    enabled: true
actions:
  - action: notify.mobile_app_iphone
    metadata: {}
    data:
      message: Fertig :-)
      title: Waschmaschine
  - action: notify.mobile_app_iphone_von_raphael
    metadata: {}
    data:
      message: Fertig :-)
      title: Waschmaschine
  - action: input_boolean.turn_off
    metadata: {}
    data: {}
    target:
      entity_id: input_boolean.waschmaschine
  - type: turn_off
    device_id: 6d935cc9e659d6d51abd86001c2c4a01
    entity_id: 4cc3f2e11e8e0d2e94b051886603d1b0
    domain: switch
    enabled: false
mode: single

Hat sich irgendwas in HA geändert, was ich nicht mitbekommen habe?

Kurze Randbemerkung vorweg: Du solltest Auslöser, Bedingungen und/oder Aktionen mit Entitäten lösen, statt direkt mit den Devices, also nicht so …

… sonst kommt nämlich sowas bei heraus:

alias: Waschmaschine ist fertig
description: ""
triggers:
  - type: power
    device_id: 39c009795e646f479ceded0c223f6534
    entity_id: 29d469b6dbfac8bb72dc9b977296f8e1
    domain: sensor
    trigger: device
    below: 5
    for:
      hours: 0
      minutes: 5
      seconds: 0

Stattdessen nimmst Du eine passende Entität mit, in diesem Fall, einem numeric state

… weil das Ergebnis wesentlich leichter lesbar ist!

alias: Waschmaschine ist fertig
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.inspelning_wama_power
    for:
      hours: 0
      minutes: 5
      seconds: 0
    below: 5

Weiterer Pluspunkt ist, dass, wenn Du ein Device austauscht (z.B. wegen eines Defektes), dann gibst Du dem Neuen einfach den gleichen Namen und alles passt wieder. :wink:

Nachtrag:

Jetzt zum eigentlichen Problem

Ich hatte das gleiche Problem wie Du. Ich habe für zwei meiner Steckdosen sporadisch Meldungen aufs Handy bekommen, obwohl sie zum betreffenden Zeitpunkt gar nicht in Betrieb waren. Bei mir lag das daran, dass die Steckdosen ab und an auf den Zustand unavailiable bzw. unknown gewechselt haben und dann ein Wechsel auf below: 5 stattfand. Für die Automation ist das ok so. Wie der Wert vorher war, interessiert sie nicht! Er war vorher anders und ist dann auf below: 5 gewechselt. Geh mal zur Automation und füge folgendes hinzu

+Bedingung hinzufügen → ... Andere Bedingungen → {} Template

In dem Wert für das Template gibst Du folgendes ein:

{{trigger.from_state.state != 'unavailiable'}}

Dann fügst Du ein weiteres Template ein mit folgendem Wert:

{{trigger.from_state.state != 'unknown'}}

Im YAML sieht das dann so aus:

conditions:
  - condition: template
    value_template: "{{trigger.from_state.state != 'unavailiable'}}"
  - condition: template
    value_template: "{{trigger.from_state.state != 'unknown'}}"

Diese beiden Bedingungen fragen ab, ob der Wert nicht unavailiable und nicht unknown war. Wenn eines von beiden zutrifft, wird die Automation beendet. :wink:

Weitere Details findest Du dort:

3 „Gefällt mir“

Danke für deine Rückmeldung, habe die beiden Bedingungen hinzugefügt, jedoch das gleiche Problem.

Das mit den Entitäten behalte ich mal im Hinterkopf, das werde ich demnächst für alle Automationen umstellen, danke :slightly_smiling_face:

Hoppla! Das hat sich ein kleiner Schreibfehler eingeschlichen. Es muss unavailable heißen, nicht unavailiable! :grimacing:

conditions:
  - condition: template
    value_template: "{{trigger.from_state.state != 'unavailable'}}"
  - condition: template
    value_template: "{{trigger.from_state.state != 'unknown'}}"

Jetzt weiß ich auch, warum die immer noch manchmal „aus heiterem Himmel“ Automationen auslösen bei mir! Die werde ich wohl morgen nochmal alle kontrollieren müssen. :man_facepalming:

Schau mal in den Traces nach. Da solltest Du eigentlich sehen können, wo der Trigger herkommt. :wink:

Wenn der Zustand zuvor unavailiable bzw. unknown war und der neue 5 ist, kann weder der Auslöser unterschreitet 5 oder überschreitet 5 greifen.
Der letzte und der neue Wert müssen numerische Werte sein. Nur dann kann der Auslöser, Ein Wert steigt über oder sinkt unter, greifen.

Warum bei @Ralle313 die Fertig Meldung wiederholt versendet wird, liegt an der fehlenden Bedingung “input_boolean.waschmaschine ist eingeschaltet”

  - condition: state
    entity_id: input_boolean.waschmaschine
    state: "on"

Stattdessen hast Du diese Bedingung drin:

  - condition: state
    entity_id: automation.waschmaschine
    state: "on"
    for:
      hours: 0
      minutes: 30
      seconds: 0

Deren Zweck erschließt sich mir nicht.
Der Status einer automation besagt ja nur ob diese aktiviert (on) oder deaktiviert (off) ist.

Gruß Osorkon

Die Screenshots sagen aber was anderes. :man_shrugging:

@Oern Du hast Recht und ich bin einfach nur schockiert :open_mouth: Das ist definitiv ein BUG!
Konnte es erst gar nicht glauben, die Erkenntnis kamm dann nachdem ich das Szenario nachgestellt habe.

Eine Schwellenwert kann nur über oder unterschritten werden, wenn es 2 Werte gibt.
Was beim Wechsel von „unavailable” zu x definitiv nicht der Fall ist! So zumindest mein Verständnis und so steht es auch in der Dokumentation.

Muss allerdings zugeben, dass mir dieses Fehlverhalten über die ganzen Jahre nicht aufgefallen ist. Meine Geräte fallen einfach nicht aus. :grin:

Der Fehler gehört ausgemerzt oder zumindest die Dokumentation dementsprechend angepasst. Da fehlt doch so gut wie jeder User in diese Falle rein!

Gruß Osorkon

So hab ich das auch verstanden. Wie in dem Faden drüben schon geschrieben: einen nichtnumerischen Wert kennen ich als NaN (not a number) und weil es keine Zahl ist dürfte der Trigger da eigentlich nicht feuern. Nach meinem Verständnis sollte das Ergebnis dann undefined sein. Aber vielleicht verstehen wir da auch beide nur was falsch? :man_shrugging: