DOIF als Warnung bei zu hoher Temperatur

Begonnen von gestein, 06 April 2022, 19:17:22

Vorheriges Thema - Nächstes Thema

gestein

Hallo,

ich nutze meine JeeLink Temperatur-Sensoren um meine Kühlschränke und Tiefkühler zu überwachen.
Wenn es zu warm wird, bekomme ich eine Meldung per Telegramm.
Das funktioniert mittlerweile auch ganz gut.
defmod di_Bad.Tiefkuehler DOIF ([Bad.Tiefkuehler:temperature:d] > [dyParameter:Bad.Tiefkuehler_limit:d]) (msg 'Der Tiefkühler im Bad ist zu warm ([Bad.Tiefkuehler:temperature]° statt [dyParameter:Bad.Tiefkuehler_limit]°)! Ist die Tür eventuell offen?')\
DOELSE\
(msg 'Zieltemperatur im Tiefkühler im Bad ([Bad.Tiefkuehler:temperature]°) wieder erreicht')
attr di_Bad.Tiefkuehler repeatcmd {min(ReadingsNum("dyParameter","Dauer_Meldung_Kuehlschraenke",300)*ReadingsNum("$SELF","cmd_count",1),5400)}
attr di_Bad.Tiefkuehler repeatsame 400:1
attr di_Bad.Tiefkuehler room Z_System->LaCrosse


Allerdings habe ich ein Problem mit den Temperatursensoren beim Erreichen der Zieltemperatur.
Anscheinend springen die Messwerte immer wieder hin und her.
Besonders lästig ist das, wenn der Zielwert knapp erreicht wurde.
Da löst das DOIF dann natürlich immer wieder aus, weil ja der Zielwert erreicht ist und dann wieder nicht, dann wieder schon....

Wie kann ich Den Temperatursensor quasi "entprellen"?

Danke im Voraus
lg, Gerhard

Damian

Zitat von: gestein am 06 April 2022, 19:17:22
Hallo,

ich nutze meine JeeLink Temperatur-Sensoren um meine Kühlschränke und Tiefkühler zu überwachen.
Wenn es zu warm wird, bekomme ich eine Meldung per Telegramm.
Das funktioniert mittlerweile auch ganz gut.
defmod di_Bad.Tiefkuehler DOIF ([Bad.Tiefkuehler:temperature:d] > [dyParameter:Bad.Tiefkuehler_limit:d]) (msg 'Der Tiefkühler im Bad ist zu warm ([Bad.Tiefkuehler:temperature]° statt [dyParameter:Bad.Tiefkuehler_limit]°)! Ist die Tür eventuell offen?')\
DOELSE\
(msg 'Zieltemperatur im Tiefkühler im Bad ([Bad.Tiefkuehler:temperature]°) wieder erreicht')
attr di_Bad.Tiefkuehler repeatcmd {min(ReadingsNum("dyParameter","Dauer_Meldung_Kuehlschraenke",300)*ReadingsNum("$SELF","cmd_count",1),5400)}
attr di_Bad.Tiefkuehler repeatsame 400:1
attr di_Bad.Tiefkuehler room Z_System->LaCrosse


Allerdings habe ich ein Problem mit den Temperatursensoren beim Erreichen der Zieltemperatur.
Anscheinend springen die Messwerte immer wieder hin und her.
Besonders lästig ist das, wenn der Zielwert knapp erreicht wurde.
Da löst das DOIF dann natürlich immer wieder aus, weil ja der Zielwert erreicht ist und dann wieder nicht, dann wieder schon....

Wie kann ich Den Temperatursensor quasi "entprellen"?

Danke im Voraus
lg, Gerhard

Ich würde den Median nehmen : https://fhem.de/commandref_DE.html#DOIF_Reading_Funktionen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

det.

Ich habe das seit langem erfolgreich anders gelöst: es gibt eine Telegramm Meldung wenn die höchst zulässige Temperatur überschritten ist. Danach einen Test, ob die darauf folgende Temperaturmessung einen niedrigeren Wert ergibt - wenn ja, funktioniert der Gefrierschrank - wenn nicht gibt es einen neue Meldung - dann ist der Stecker draußen oder Gerät defekt und es wird so lange weitergewarnt bis das Problem beseitigt ist. Durch eine ausreichend lange Zeit zwischen 2 Messungen (3 min) kommt es zu keinem Fehlalarm
LG
det.

Per

Statt DOELSE würde ich DOELSEIF und eine entsprechende Hysterese nutzen.