Hallo ich habe einen Fehler in einem DOIF und stelle mich bei der Fehlersuche doof an.
So sieht das DOIF aus:
Internals:
DEF (([Raumtemperatur:Temperatur4] >40) or
([Gartenhaus:temperature] >40) or
([Schlafzimmer:temperature] >40) or
([Alina:temperature] >40) or
([Benjamin:temperature] >40) or
([Werkstatt_Claudia:temperature] >40) or
([Keller:temperature] >40) or
([Waschkueche:temperature] >40) or
([Temperatur_FritzBox:Temperatur] >45) or
([Temp.Wohnzimmer:temperature] >40) or
([Werkstatt_Juergen:Temperature] >40))
(set Temperaturwarnung on) DOELSE
(set Temperaturwarnung off)
MODEL FHEM
NAME TempWarnn1
NR 177
NTFY_ORDER 50-TempWarnn1
STATE cmd_2
TYPE DOIF
READINGS:
2018-11-16 17:48:38 Device Keller
2018-11-16 17:44:27 cmd 2
2018-11-16 17:44:27 cmd_event Schlafzimmer
2018-11-16 17:44:27 cmd_nr 2
2018-11-16 17:48:38 e_Keller_temperature 17.9
2018-11-16 17:48:26 e_Schlafzimmer_temperature 20.5
2018-11-16 17:47:34 e_Temp.Wohnzimmer_temperature 22.3
2018-11-16 17:47:01 e_Temperatur_FritzBox_Temperatur 35.25
2018-11-16 17:48:38 e_Werkstatt_Juergen_Temperature 19.87
2018-11-16 17:44:23 mode enabled
2018-11-16 17:44:27 state cmd_2
2018-11-16 17:48:38 warning condition c01: Argument "" isn't numeric in numeric gt (>)
Regex:
attr:
cmdState:
wait:
waitdel:
condition:
0 (::ReadingValDoIf($hash,'Raumtemperatur','Temperatur4') >40) or (::ReadingValDoIf($hash,'Gartenhaus','temperature') >40) or (::ReadingValDoIf($hash,'Schlafzimmer','temperature') >40) or (::ReadingValDoIf($hash,'Alina','temperature') >40) or (::ReadingValDoIf($hash,'Benjamin','temperature') >40) or (::ReadingValDoIf($hash,'Werkstatt_Claudia','temperature') >40) or (::ReadingValDoIf($hash,'Keller','temperature') >40) or (::ReadingValDoIf($hash,'Waschkueche','temperature') >40) or (::ReadingValDoIf($hash,'Temperatur_FritzBox','Temperatur') >45) or (::ReadingValDoIf($hash,'Temp.Wohnzimmer','temperature') >40) or (::ReadingValDoIf($hash,'Werkstatt_Juergen','Temperature') >40)
devices:
0 Raumtemperatur Gartenhaus Schlafzimmer Alina Benjamin Werkstatt_Claudia Keller Waschkueche Temperatur_FritzBox Temp.Wohnzimmer Werkstatt_Juergen
all Raumtemperatur Gartenhaus Schlafzimmer Alina Benjamin Werkstatt_Claudia Keller Waschkueche Temperatur_FritzBox Temp.Wohnzimmer Werkstatt_Juergen
do:
0:
0 set Temperaturwarnung on
1:
0 set Temperaturwarnung off
helper:
event temperature: 17.9,T: 17.9 H: 64
globalinit 1
last_timer 0
sleeptimer -1
timerdev Keller
timerevent temperature: 17.9,T: 17.9 H: 64
triggerDev Keller
DOIF_eventas:
cmd_nr: 2
cmd: 2
cmd_event: Schlafzimmer
state: cmd_2
timerevents:
temperature: 17.9
T: 17.9 H: 64
timereventsState:
temperature: 17.9
state: T: 17.9 H: 64
triggerEvents:
temperature: 17.9
T: 17.9 H: 64
triggerEventsState:
temperature: 17.9
state: T: 17.9 H: 64
internals:
itimer:
readings:
0 Raumtemperatur:Temperatur4 Gartenhaus:temperature Schlafzimmer:temperature Alina:temperature Benjamin:temperature Werkstatt_Claudia:temperature Keller:temperature Waschkueche:temperature Temperatur_FritzBox:Temperatur Temp.Wohnzimmer:temperature Werkstatt_Juergen:Temperature
all Raumtemperatur:Temperatur4 Gartenhaus:temperature Schlafzimmer:temperature Alina:temperature Benjamin:temperature Werkstatt_Claudia:temperature Keller:temperature Waschkueche:temperature Temperatur_FritzBox:Temperatur Temp.Wohnzimmer:temperature Werkstatt_Juergen:Temperature
trigger:
uiState:
uiTable:
Attributes:
Was ich verstehe ist, dass in irgendeinem der Devices kein numerischer Wert abgefragt wird. Aber in welchem?
Gibt es eine einfache Möglichkeit, herauszubekommen, welches/welche der Devices die Fehlermeldung auslöst?
Oder steht das irgendwo in dem List und ich sehe es einfach nicht.
Alle diese Devices zeigen Temperaturwerte an, aber nirgendwo stimmt ja etwas nicht.
Ein kleiner Stubs würde mir helfen.
Vielen Dank,
Jogi
hm, die verschiedenen Schreibweisen von Temperatur sind korrekt ? Die Readings heißen auch so wie zB Temperatur4 ?
Einfach mal mit einer Temperatur anfangen und immer um eins erweitern.
Bei der Erweiterung wo der Fehler kommt ist das Problem.
Gesendet von meinem Doogee S60 mit Tapatalk
Moin,
kann es sein, dass hier
[Werkstatt_Juergen:Temperature] >40
das t klein geschrieben sein muss?
LG
Andreas
Vielen Dank für Eure Tipps. Habe ich gerade umgesetzt und den Fehler gefunden.
Es war tatsächlich ein falsche "t" und zwar das bei
[Gartenhaus:temperature]
korrekt muss es so sein:
[Gartenhaus:Temperature]
Jetzt funktioniert alles ohne Fehlermeldung.
Ich dachte nur, es gäbe einen einfacheren Weg, als jedes Device zu löschen und zu sehen was passiert.
Mich verwirren immer die Fehlermeldungen
PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 3084535) line 1.
Ich denke dann, wenn es eine Zahl gibt, z.B. (eval 3084535) dann muss das doch irgendwie direkt zu lokalisieren sein.
Aber gut, ich hätte ja auch aufpassen können, was ich eintippe.
Euch ein schönes Wochenende,
Jogi