[gelöst]DOIF-Fehler: condition c01: Argument "" isn't numeric in numeric gt (>)

Begonnen von Jogi, 16 November 2018, 17:52:33

Vorheriges Thema - Nächstes Thema

Jogi

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


kumue

hm, die verschiedenen Schreibweisen von Temperatur sind korrekt ? Die Readings heißen auch so wie zB Temperatur4 ?

Frank_Huber

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


rischbiter123

Moin,

kann es sein, dass hier
[Werkstatt_Juergen:Temperature] >40
das t klein geschrieben sein muss?

LG

Andreas
4*Raspi, Max Thermostate und Fensterkontakte, FB7590, Mysensors und NanoCUL, IT und Sonoff, zigbee2mqtt2

Jogi

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