Hallo,
ich habe mit mit DOIF eine Überwachung gebaut, wenn diese 1 Woche lang wahr ist das ich eine Meldung auf dem Handy bekomme. Das Funktioniert auch grundsätzlich aber nur solange wie FHEM nicht neugestartet wird. Gibt es eine Möglichkeit, dass der wait_timer auch nach dem Neustart erhalten bleibt und nicht neugestartet wird?
[code]define di_Legionellen_Warnung DOIF ([MQTT2_ebusd_ctlv2:HwcStorageTemp_tempv_value] >= 65)\
(set gotify_FHEM msg Legionellentemperatur wurde erreicht)\
DOELSE\
(set gotify_Klingel msg Legionellentemperatur wurde seit einer Woche nicht erreicht!)
attr di_Legionellen_Warnung do always
attr di_Legionellen_Warnung room Energie->Heizung
attr di_Legionellen_Warnung wait 0:604800
# DEF ([MQTT2_ebusd_ctlv2:HwcStorageTemp_tempv_value] >= 65)
#(set gotify_FHEM msg Legionellentemperatur wurde erreicht)
#DOELSE
#(set gotify_Klingel msg Legionellentemperatur wurde seit einer Woche nicht erreicht!)
# FUUID 654aa34a-f33f-b647-0b6c-41d04616b881bfb3
# MODEL FHEM
# NAME di_Legionellen_Warnung
# NOTIFYDEV global,MQTT2_ebusd_ctlv2
# NR 252
# NTFY_ORDER 50-di_Legionellen_Warnung
# STATE initialized
# TYPE DOIF
# VERSION 27740 2023-07-10 09:31:11
# eventCount 1
# READINGS:
# 2023-11-11 20:59:38 Device MQTT2_ebusd_ctlv2
# 2023-11-07 22:04:06 cmd 0
# 2023-11-11 20:59:38 e_MQTT2_ebusd_ctlv2_HwcStorageTemp_tempv_value 15.5
# 2023-11-07 22:04:06 mode enabled
# 2023-11-07 22:04:06 state initialized
# 2023-11-10 15:28:19 wait_timer 17.11.2023 15:28:19 cmd_2 MQTT2_ebusd_ctlv2
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# MQTT2_ebusd_ctlv2:
# 0:
# HwcStorageTemp_tempv_value ^MQTT2_ebusd_ctlv2$:^HwcStorageTemp_tempv_value:
# attr:
# wait:
# 0:
# 0
# 1:
# 604800
# waitdel:
# condition:
# 0 ::ReadingValDoIf($hash,'MQTT2_ebusd_ctlv2','HwcStorageTemp_tempv_value') >= 65
# do:
# 0:
# 0 set gotify_FHEM msg Legionellentemperatur wurde erreicht
# 1:
# 0 set gotify_Klingel msg Legionellentemperatur wurde seit einer Woche nicht erreicht!
# helper:
# NOTIFYDEV global,MQTT2_ebusd_ctlv2
# event HwcStorageTemp_tempv_value: 15.5
# globalinit 1
# last_timer 0
# sleepdevice MQTT2_ebusd_ctlv2
# sleepsubtimer 0
# sleeptimer 1
# timerdev MQTT2_ebusd_ctlv2
# timerevent HwcStorageTemp_tempv_value: 15.5
# triggerDev MQTT2_ebusd_ctlv2
# timerevents:
# HwcStorageTemp_tempv_value: 15.5
# timereventsState:
# HwcStorageTemp_tempv_value: 15.5
# triggerEvents:
# HwcStorageTemp_tempv_value: 15.5
# triggerEventsState:
# HwcStorageTemp_tempv_value: 15.5
# internals:
# perlblock:
# readings:
# all MQTT2_ebusd_ctlv2:HwcStorageTemp_tempv_value
# trigger:
# uiState:
# uiTable:
#
setstate di_Legionellen_Warnung initialized
setstate di_Legionellen_Warnung 2023-11-11 20:59:38 Device MQTT2_ebusd_ctlv2
setstate di_Legionellen_Warnung 2023-11-07 22:04:06 cmd 0
setstate di_Legionellen_Warnung 2023-11-11 20:59:38 e_MQTT2_ebusd_ctlv2_HwcStorageTemp_tempv_value 15.5
setstate di_Legionellen_Warnung 2023-11-07 22:04:06 mode enabled
setstate di_Legionellen_Warnung 2023-11-07 22:04:06 state initialized
setstate di_Legionellen_Warnung 2023-11-10 15:28:19 wait_timer 17.11.2023 15:28:19 cmd_2 MQTT2_ebusd_ctlv2
[/code]
Alle Timer müssen beim Neustart neu gesetzt werden, insb. verlieren Waittimer ihre Gültigkeit. Ich würde längere Wartezeiten (mehr als paar Stunden) über eine Abfrage des Zeitstempels ([...:sec]) mit einer täglichen Abfrage realisieren.
Danke für den Tipp. ([...:sec]) kannte ich noch gar nicht.
Ich setzte jetzt im DOIF ein Reading und prüfe täglich die Zeit des Readings. Das sieht gut aus ;D