Bei einer Automation soll eine Aktion ausgelöst werden, wenn die Spannung eines Regensensors einen Wert von 1500 mV unterschreitet. Die Aktion wird aber oft ausgelöst, auch wenn die Spannung längere Zeit den angegebenen Wert von 1500 mV nie überschritten hatte. Wie kann ich diese Fehlauslösung verhindern, sodass nur dann eine Aktion ausgelöst wird, wenn vorher ein höherer Wert vorgelegen hat?
Zeig am besten deine Automation im yaml Code.
eventuell so!?
wenn Spannung > 1520 mV:
armed = true
wenn Spannung < 1500 mV und armed == true:
Aktion auslösen
armed = false
sieht so aus:
alias: RainNotify
description: „“
triggers:
* trigger: numeric_state
entity_id:
* sensor.tz3210_tgvtvdoc_ts0207_spannung
above: 2000
id: nass
* trigger: numeric_state
entity_id:
* sensor.tz3210_tgvtvdoc_ts0207_spannung
below: 1500
id: trocken
conditions: [ ]
actions:
* choose:
* conditions:
* condition: trigger
id:
* nass
sequence:
* action: notify.mobile_app_sm_g781b
metadata: {}
data:
message: " {{ now().strftime(‚%H:%M‘) }} Spannung {{ states(‚sensor.tz3210_tgvtvdoc_ts0207_spannung‘) }} mV (nass)"
title: HA RainNotify
* conditions:
* condition: trigger
id:
* trocken
sequence:
* action: notify.mobile_app_sm_g781b
metadata: {}
data:
message: " {{ now().strftime(‚%H:%M‘) }} Spannung {{ states(‚sensor.tz3210_tgvtvdoc_ts0207_spannung‘) }} mV (trocken)"
title: HA RainNotify
mode: single
EDIT by Jay: Code bitte immer über die Codefunktion „</>“ im Editor einfügen.
ich würde es so machen
wir brauchen ein Helferlein:
input_boolean:
rain_wet_seen:
name: Rain Wet Seen
und dann das etwas aufgebohrte Script:
alias: RainNotify
description: ""
mode: single
triggers:
- trigger: numeric_state
entity_id: sensor.tz3210_tgvtvdoc_ts0207_spannung
above: 2000
for:
seconds: 30
id: nass
- trigger: numeric_state
entity_id: sensor.tz3210_tgvtvdoc_ts0207_spannung
below: 1500
for:
seconds: 30
id: trocken
actions:
- choose:
# NASS erkannt
- conditions:
- condition: trigger
id: nass
sequence:
- action: input_boolean.turn_on
target:
entity_id: input_boolean.rain_wet_seen
- action: notify.mobile_app_sm_g781b
data:
title: "HA RainNotify"
message: >
{{ now().strftime('%H:%M') }} Spannung
{{ states('sensor.tz3210_tgvtvdoc_ts0207_spannung') }} mV (nass)
# TROCKEN erkannt (nur wenn vorher nass)
- conditions:
- condition: trigger
id: trocken
- condition: state
entity_id: input_boolean.rain_wet_seen
state: "on"
sequence:
- action: notify.mobile_app_sm_g781b
data:
title: "HA RainNotify"
message: >
{{ now().strftime('%H:%M') }} Spannung
{{ states('sensor.tz3210_tgvtvdoc_ts0207_spannung') }} mV (trocken)
- action: input_boolean.turn_off
target:
entity_id: input_boolean.rain_wet_seen
das macht jetzt:
Kurz gesagt:
Du kombinierst damit drei Dinge, um Fehlauslösungen zu vermeiden:
1. Hysterese (2 Schwellwerte)
Statt einem Wert nutzt du zwei:
-
2000 mV = „nass erkannt“
-
<1500 mV = „trocken erkannt“
→ verhindert Hin- und Herspringen um einen Punkt
2. Zeitfilter (for)
Der Wert muss z. B. 30 (oder weniger) Sekunden stabil sein
→ filtert Messrauschen
3. Merker (input_boolean)
Speichert: „war vorher nass“
→ „trocken“ wird nur ausgelöst, wenn davor wirklich „nass“ war
Ergebnis:
Die Automation reagiert nur auf echte Zustandswechsel
(nass → trocken) und nicht auf zufällige oder dauerhafte niedrige Werte.
Probiers mal aus! ![]()
@maxe Kannst ja mal drüberschauen und entsprechend “ab/bewerten” ![]()
Wurde evtl. HA zwischendurch immer mal wieder neu gestartet?
Das könnte z.B. ein Grund dafür sein.
Ich würde solche Dinge dann vermutlich auch mit einem Helfer abfangen, wie @Dr.Big vorgeschlagen hat.
Reicht ja schon falls mal ein Wert nicht sauber kommt! Funk ist da ja immer seltsam! ![]()
Danke, das klingt nach einer guten Idee. Ich probiere es gleich aus.
Vermutlich springt der Sensor von unavailable auf >2000.
unavailable kann halt beim HA-Neustart auftauchen. oder beim Funkproblem. oder oder oder.
Da bietet sich, wie schon erwähnt (@Dr.Big @maxe) ein input_boolean Helfer an.
oder du verpackst die Hysterese in den Schwellwert-Helfer und lässt HA die Hauptarbeit machen ![]()