Habe mir ein DOIF gebastelt, das auf den ReadingsWatcher zugreift,
Das DOIF soll mit fhem neu starten, wenn beim ReadingsWatcher das reading timeoutDevs ne "none" ist. Da ich auch Readings überwache, auf die das nicht zutrifft, habe ich diese ausgenommen.
Doch das DOIF will auch fhem neustarten, wenn das Reading timeoutDevs none ist.
Was habe ich falsch gemacht?
aktuell habe ich das DOIF deaktiviert.
Internals:
CFGFN
DEF ([Readings_Ueberwachung:timeoutDevs] ne "none" and [Readings_Ueberwachung:timeoutDevs] ne "Pooltemperatur_Temperatur" or
[Readings_Ueberwachung:timeoutDevs] ne "Wasserstand_Zisterne_Analog")
(setreading Readings_Ueberwachung timeouts 0) (sthutdown restart)
FUUID 68bb1805-f33f-3e5d-e95d-870e877bef5137ec
MODEL FHEM
NAME d_restartTimeOut
NOTIFYDEV global,Readings_Ueberwachung
NR 688
NTFY_ORDER 50-d_restartTimeOut
STATE disabled
TYPE DOIF
VERSION 29460 2024-12-29 20:25:48
eventCount 6
Helper:
DBLOG:
cmd:
DBLogging:
TIME 1757091845.12258
VALUE 0
mode:
DBLogging:
TIME 1757091845.12258
VALUE enabled
state:
DBLogging:
TIME 1757091845.12258
VALUE initialized
READINGS:
2025-09-05 19:08:20 Device Readings_Ueberwachung
2025-09-05 19:08:25 cmd 1.1
2025-09-05 19:08:25 cmd_event Readings_Ueberwachung
2025-09-05 19:08:25 cmd_nr 1
2025-09-05 19:08:25 cmd_seqnr 1
2025-09-05 19:08:20 e_Readings_Ueberwachung_timeoutDevs none
2025-09-05 19:11:26 last_cmd cmd_1_1
2025-09-05 19:11:26 mode disabled
2025-09-05 19:11:26 state disabled
2025-09-05 19:08:25 wait_timer 05.09.2025 19:18:25 cmd_1_2 Readings_Ueberwachung
Regex:
accu:
bar:
barAvg:
collect:
cond:
Readings_Ueberwachung:
0:
timeoutDevs ^Readings_Ueberwachung$:^timeoutDevs:
attr:
cmdState:
wait:
0:
5
600
waitdel:
condition:
0 ::ReadingValDoIf($hash,'Readings_Ueberwachung','timeoutDevs') ne "none" and ::ReadingValDoIf($hash,'Readings_Ueberwachung','timeoutDevs') ne "Pooltemperatur_Temperatur" or ::ReadingValDoIf($hash,'Readings_Ueberwachung','timeoutDevs') ne "Wasserstand_Zisterne_Analog"
do:
0:
0 setreading Readings_Ueberwachung timeouts 0
1 sthutdown restart
1:
helper:
NOTIFYDEV global,Readings_Ueberwachung
event AMIS_Lesekopf_1.8.0: ok,AMIS_Lesekopf_2.8.0: ok,Pooltemperatur_Temperatur: ok,Wasserstand_Zisterne_Analog: ok,netatmo_Aussenstation_temp_trend: ok,netatmo_Innenstation_temp_trend: ok,readings: 6,devices: 5,alive: 5,dead: 0,skipped: 0,timeouts: 0,ok,timeoutDevs: none,deadDevs: none,skippedDevs: none
globalinit 1
last_timer 0
sleepdevice Readings_Ueberwachung
sleepsubtimer 1
sleeptimer 0
timerdev Readings_Ueberwachung
timerevent AMIS_Lesekopf_1.8.0: ok,AMIS_Lesekopf_2.8.0: ok,Pooltemperatur_Temperatur: ok,Wasserstand_Zisterne_Analog: ok,netatmo_Aussenstation_temp_trend: ok,netatmo_Innenstation_temp_trend: ok,readings: 6,devices: 5,alive: 5,dead: 0,skipped: 0,timeouts: 0,ok,timeoutDevs: none,deadDevs: none,skippedDevs: none
triggerDev Readings_Ueberwachung
DOIF_eventa:
cmd_nr: 1
cmd_seqnr: 1
cmd_event: Readings_Ueberwachung
cmd_1_1
DOIF_eventas:
cmd_nr: 1
cmd_seqnr: 1
cmd_event: Readings_Ueberwachung
state: cmd_1_1
timerevents:
AMIS_Lesekopf_1.8.0: ok
AMIS_Lesekopf_2.8.0: ok
Pooltemperatur_Temperatur: ok
Wasserstand_Zisterne_Analog: ok
netatmo_Aussenstation_temp_trend: ok
netatmo_Innenstation_temp_trend: ok
readings: 6
devices: 5
alive: 5
dead: 0
skipped: 0
timeouts: 0
ok
timeoutDevs: none
deadDevs: none
skippedDevs: none
timereventsState:
AMIS_Lesekopf_1.8.0: ok
AMIS_Lesekopf_2.8.0: ok
Pooltemperatur_Temperatur: ok
Wasserstand_Zisterne_Analog: ok
netatmo_Aussenstation_temp_trend: ok
netatmo_Innenstation_temp_trend: ok
readings: 6
devices: 5
alive: 5
dead: 0
skipped: 0
timeouts: 0
state: ok
timeoutDevs: none
deadDevs: none
skippedDevs: none
triggerEvents:
AMIS_Lesekopf_1.8.0: ok
AMIS_Lesekopf_2.8.0: ok
Pooltemperatur_Temperatur: ok
Wasserstand_Zisterne_Analog: ok
netatmo_Aussenstation_temp_trend: ok
netatmo_Innenstation_temp_trend: ok
readings: 6
devices: 5
alive: 5
dead: 0
skipped: 0
timeouts: 0
ok
timeoutDevs: none
deadDevs: none
skippedDevs: none
triggerEventsState:
AMIS_Lesekopf_1.8.0: ok
AMIS_Lesekopf_2.8.0: ok
Pooltemperatur_Temperatur: ok
Wasserstand_Zisterne_Analog: ok
netatmo_Aussenstation_temp_trend: ok
netatmo_Innenstation_temp_trend: ok
readings: 6
devices: 5
alive: 5
dead: 0
skipped: 0
timeouts: 0
state: ok
timeoutDevs: none
deadDevs: none
skippedDevs: none
internals:
readings:
all Readings_Ueberwachung:timeoutDevs
trigger:
uiState:
uiTable:
Attributes:
DbLogExclude .*
group Readingswatcher
icon audio_shuffle
room System
wait 5, 600
Zitat von: maci am 05 September 2025, 19:18:25([Readings_Ueberwachung:timeoutDevs] ne "none" and [Readings_Ueberwachung:timeoutDevs] ne "Pooltemperatur_Temperatur" or
[Readings_Ueberwachung:timeoutDevs] ne "Wasserstand_Zisterne_Analog")
Ich vermute, dass es daran liegt, dass du beim letzten statt "and" ein "or" stehen hast. Dadurch wird [Readings_Ueberwachung:timeoutDevs] ne "Wasserstand_Zisterne_Analog" wahr, wenn das Reading unter anderem auf none steht.
Vermutlich hast Du ein Problem mit den Prioritäten der logischen Vergleiche und musst vielleicht noch eine Klammer setzen, um den logischen Vergleich so zu formulieren, wie Du ihn Dir vorstellst.
Zwischen logischen "und" und logischem "oder" gibt es Rangfolgen, ähnlich wie "punkt vor strich" beim Rechnen.
Steht da eigentlich tatsächlich
(sthutdown restart)
oder ist das die von Dir erwähnte "Deaktivierung"?
Danke für die Hilfe, das war es.
Habe die beiden Bedingungen mit und in Klammer gesetzt, dann passt es.
Das beim shutdown restart war ein Schreibfehler, ebenfalls ausgebessert