FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: kkp am 09 April 2022, 13:13:07

Titel: DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: kkp am 09 April 2022, 13:13:07
Hallo,

seit über zwölf Jahren arbeiten bei mir Raspberries mit FHEM als Heizungs- und Solarsteuerung, Beleuchtungssteuerung, Pumpensteuerung, Rollladensteuerung, Alarmanlage, Videoüberwachung usw, mittlerweile sechs Geräte im Netzwerk über MQTT.

Nach Test mehrerer Versionen verschiedenster Steuerungssoftware bin ich bei FHEM geblieben, da mich vor allem Handling, Zukunftsfähigkeit und Zuverlässigkeit überzeugt hatten und noch immer haben.

Jetzt melde ich mich zum ersten Mal in diesem Forum, da ich seit Tagen ein Problem habe, welches ich nicht gelöst bekomme.
Fast alle Steuerungsaufgaben werden über DOIFs ausgeführt, was bisher auch zuverlässig funktionierte.

Mein Problem ist, dass seit ein paar Tagen bei zwei DOIFs die Fehlermeldung: "condition c10: Argument "" isn't numeric in numeric lt (<)" oder ähnlich auftritt. Dadurch werden die Anweisungen nicht ausgeführt. Diese Fehlermeldung betrifft bei einem DOIF die Temperatur eines 1wire DS18B20 Sensors und bei einem anderen DOIF die Valveposition von MAX-Thermostaten.

Zum Fehler Temperatur des 1wire DS18B20 Sensors (Temp_Wohnzimmer_DS18B20):
Komischerweise wird die Temperatur des 1wire DS18B20 in anderen DOIFs verwendet, wo dieser Fehler bisher nicht
auftritt.

Eine Aufzeichnung des Events und des Wertes der Temperatur ergab keine Fehlerwerte.

09 Apr 2022 11:18:36  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.375'
09 Apr 2022 11:18:36  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.375'
09 Apr 2022 11:12:29  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 11:12:29  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:57:13  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:57:13  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:41:52  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:41:52  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:26:35  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:26:35  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'
09 Apr 2022 10:25:33  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.5'
09 Apr 2022 10:25:33  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.5'
09 Apr 2022 10:22:30  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: 22.4375'
09 Apr 2022 10:22:30  'INF-DOIF Anzeige_Wohnzimmertemp. Die Temp_Wohnzimmer_DS18B20 beträgt: temperature: 22.4375'

list di_Anzeige_Wohnzimmertemp (Erzeugung der obigen Meldungen)

Internals:
   DEF        {
if (["Temp_Wohnzimmer_DS18B20:temperature"])  ## 1
{
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $EVENT'")
}
my $WohnzTemp = ReadingsVal("Temp_Wohnzimmer_DS18B20","temperature","");;
if ($WohnzTemp > [Soll_Raumtemperatur_HK2_aktuell:d])
{
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $WohnzTemp'")
}
}
   FUUID      624f3aac-f33f-c6d3-17f2-ffe5b2623032c90e
   MODEL      Perl
   NAME       di_Anzeige_Wohnzimmertemp
   NOTIFYDEV  Soll_Raumtemperatur_HK2_aktuell,global,.*(Temp_Wohnzimmer_DS18B20).*
   NR         545
   NTFY_ORDER 50-di_Anzeige_Wohnzimmertemp
   STATE      initialized
   TYPE       DOIF
   VERSION    25819 2022-03-12 23:15:22
   READINGS:
     2022-04-09 11:18:36   Device          Temp_Wohnzimmer_DS18B20
     2022-04-09 11:18:36   block_01        executed
     2022-04-08 10:18:23   mode            enabled
     2022-04-08 10:18:23   state           initialized
     2022-04-09 11:18:36   warning         condition c01: Argument "" isn't numeric in numeric gt (>)

   Regex:
     accu:
     collect:
     cond:
       :
         0:
           "Temp_Wohnzimmer_DS18B20:temperature" Temp_Wohnzimmer_DS18B20:temperature
       Soll_Raumtemperatur_HK2_aktuell:
         0:
           d          ^Soll_Raumtemperatur_HK2_aktuell$:^d:
   condition:
     0         
if (::EventDoIf('Temp_Wohnzimmer_DS18B20',$hash,'temperature',0))   {
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $EVENT'")
}
my $WohnzTemp = ReadingsVal("Temp_Wohnzimmer_DS18B20","temperature","");;
if ($WohnzTemp > ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d'))
{
fhem_set("Statusmeldungen add 'INF-DOIF Anzeige_Wohnzimmertemp. Die $DEVICE beträgt: $WohnzTemp'")
}

   helper:
     NOTIFYDEV  Soll_Raumtemperatur_HK2_aktuell,global,.*(Temp_Wohnzimmer_DS18B20).*
     event      temperature: 22.375
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Temp_Wohnzimmer_DS18B20
     triggerEvents:
       temperature: 22.375
     triggerEventsState:
       temperature: 22.375
   internals:
   perlblock:
     0          block_01
   readings:
     all         Soll_Raumtemperatur_HK2_aktuell:d
   trigger:
   uiState:
   uiTable:
Attributes:


List des DOIFs welches eigentlich den Fehler meldet
list di_Heizkreis2_MANU_AUTO


Internals:
   DEF        ([Betriebsart_HK2] eq "Aus") ## 1 ##Betriebsart aus
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Aus gestellt. Schalte Heizkreis2 _Aus_.")
(set Betriebsmodus_HK2 Aus) ## -Betriebsmodus ausschalten
DOELSEIF([Betriebsart_HK2] ne "Aus" ## 2 ##Betriebsart nicht Aus
and [?Betriebsmodus_HK2] ne "Solar" ##Betriebsmodus nicht Solar
and [HK2vonSolar_einschalten] eq "on") ##Einschaltbefehl von Solarsteuerung
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solaranlage speist in HK2 ein. Aktiviere Heizkreis2 im Betriebsmodus Solar.")
(set Betriebsmodus_HK2 Solar) ## -Betriebsmodus Solar einschalten
DOELSEIF ([Betriebsart_HK2] ne "Aus" ## 3 ##Betriebsart nicht aus
and [?Betriebsmodus_HK2] eq "Solar" ##Betriebsmodus Solar
and [HK2vonSolar_einschalten] eq "off") ##kein Einschaltbefehl von Solarsteuerung
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Einspeisung Solaranlage in HK2 beendet. Schalte Heizkreis2 _Aus_.")
(set Betriebsmodus_HK2 Aus) ## -Betriebsmodus ausschalten
DOELSEIF ([Temp_Wohnzimmer_DS18B20:temperature] eq "")
(set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Temp_Wohnzimmer_DS18B20 liefert falschen Wert.")
DOELSEIF (
[Betriebsart_HK2] eq "Automatik" ## 4 ##Betriebsart Automatik
and [?Betriebsmodus_HK2] ne "WSP1" ##Betriebsmodus nicht WSP
and [HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [00:00-10:00] ##Zeit zwischen 00:00 und 10:00
and [Temp_Wohnzimmer_DS18B20:temperature:d1]
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 00:00-10:00. Aktiviere Heizkreis2 im Betriebsmodus WSP.",
set Betriebsmodus_HK2 WSP1
) ## -Einspeisung aus WSP1 einschalten
DOELSEIF (
[Temp_Wohnzimmer_DS18B20:temperature:d1] ## 5
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
and [Betriebsart_HK2] eq "Automatik" ##Betriebsart Automatik
and [?Betriebsmodus_HK2] ne "WSP1" ##Betriebsmodus nicht WSP
and [HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [10:01-20:00] ##Zeit zwischen 10:01 und 20:00
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 10:01-20:00 und die Sonne wird nichts liefern. Aktiviere Heizkreis2 im Betriebsmodus WSP.",
set Betriebsmodus_HK2 WSP1 ## -Einspeisung aus WSP1 einschalten
)
DOELSEIF (
[Temp_Wohnzimmer_DS18B20:temperature:d1] ## 6
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig
and [Betriebsart_HK2] eq "Automatik" ##Betriebsart Automatik
and [?Betriebsmodus_HK2] ne "WSP1" ##Betriebsmodus nicht WSP
and [HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [20:01-23:59] ##Zeit zwischen 20:01 und 23:59
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 20:01-23:59. Aktiviere Heizkreis2 im Betriebsmodus WSP.",
set Betriebsmodus_HK2 WSP1 ## -Einspeisung aus WSP1 einschalten
)
DOELSEIF (
[Betriebsart_HK2] eq "Automatik" ## 7 ##Betriebsart Automatik
and [?Betriebsmodus_HK2] eq "WSP1" ##Betriebsmodus WSP
and [?HK2vonSolar_einschalten] eq "off" ##kein Einschaltbefehl von Solarsteuerung
and [HK2_Kurzladung] eq "off"
and [Temp_Wohnzimmer_DS18B20:temperature:d1]
> [Soll_Raumtemperatur_HK2_aktuell:d] ##eingestellte Raumtemperatur Wz erreicht oder
)
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solltemperatur erreicht. Schalte Heizkreis2 _Aus_.",
set Betriebsmodus_HK2 Aus ## -Betriebsmodus ausschalten
)
DOELSEIF (
[Betriebsart_HK2] eq "Manuell") ## 8 ##Betriebsart Manuell
(
set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Manuell gestellt. Schalte Heizkreis2 _Aus_.",
set Betriebsmodus_HK2 Aus ## -Betriebsmodus ausschalten
)
   FUUID      6248705a-f33f-c6d3-7673-2e1f5e9e1676e044
   MODEL      FHEM
   NAME       di_Heizkreis2_MANU_AUTO
   NOTIFYDEV  Temp_Wohnzimmer_DS18B20,Soll_Raumtemperatur_HK2_aktuell,global,HK2vonSolar_einschalten,HK2_Kurzladung,Betriebsart_HK2
   NR         541
   NTFY_ORDER 50-di_Heizkreis2_MANU_AUTO
   STATE      cmd_3
   TYPE       DOIF
   VERSION    25819 2022-03-12 23:15:22
   READINGS:
     2022-04-07 20:57:47   Device          Betriebsart_HK2
     2022-04-07 19:44:08   cmd             3.2
     2022-04-07 19:44:08   cmd_event       HK2vonSolar_einschalten
     2022-04-07 19:44:08   cmd_nr          3
     2022-04-07 19:44:08   cmd_seqnr       2
     2022-04-07 20:57:47   e_Betriebsart_HK2_STATE Automatik
     2022-04-06 08:38:02   e_HK2_Kurzladung_STATE off
     2022-04-07 19:44:08   e_HK2vonSolar_einschalten_STATE off
     2022-04-07 20:56:36   e_Temp_Wohnzimmer_DS18B20_temperature 23.3125
     2022-04-05 21:14:27   mode            enabled
     2022-04-07 19:44:08   state           cmd_3
     2022-04-07 12:23:16   timer_01_c05    08.04.2022 00:00:00
     2022-04-07 12:23:16   timer_02_c05    08.04.2022 10:00:00
     2022-04-07 20:00:00   timer_03_c06    08.04.2022 10:01:00
     2022-04-07 20:00:00   timer_04_c06    08.04.2022 20:00:00
     2022-04-07 12:23:16   timer_05_c07    07.04.2022 20:01:00
     2022-04-07 12:23:16   timer_06_c07    07.04.2022 23:59:00
   Regex:
     accu:
     collect:
     cond:
       Betriebsart_HK2:
         0:
           &STATE     ^Betriebsart_HK2$
         1:
           &STATE     ^Betriebsart_HK2$
         2:
           &STATE     ^Betriebsart_HK2$
         3:
         4:
           &STATE     ^Betriebsart_HK2$
         5:
           &STATE     ^Betriebsart_HK2$
         6:
           &STATE     ^Betriebsart_HK2$
         7:
           &STATE     ^Betriebsart_HK2$
         8:
           &STATE     ^Betriebsart_HK2$
       HK2_Kurzladung:
         7:
           &STATE     ^HK2_Kurzladung$
       HK2vonSolar_einschalten:
         0:
         1:
           &STATE     ^HK2vonSolar_einschalten$
         2:
           &STATE     ^HK2vonSolar_einschalten$
         4:
           &STATE     ^HK2vonSolar_einschalten$
         5:
           &STATE     ^HK2vonSolar_einschalten$
         6:
           &STATE     ^HK2vonSolar_einschalten$
       Soll_Raumtemperatur_HK2_aktuell:
         4:
           d          ^Soll_Raumtemperatur_HK2_aktuell$:^d:
         5:
           d          ^Soll_Raumtemperatur_HK2_aktuell$:^d:
         6:
           d          ^Soll_Raumtemperatur_HK2_aktuell$:^d:
         7:
           d          ^Soll_Raumtemperatur_HK2_aktuell$:^d:
       Temp_Wohnzimmer_DS18B20:
         0:
         1:
         2:
         3:
           temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
         4:
           temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
         5:
           temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
         6:
           temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
         7:
           temperature ^Temp_Wohnzimmer_DS18B20$:^temperature:
         8:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Aus"
     1          ::InternalDoIf($hash,'Betriebsart_HK2','STATE') ne "Aus"  and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "Solar" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "on"
     2          ::InternalDoIf($hash,'Betriebsart_HK2','STATE') ne "Aus"  and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') eq "Solar" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off"
     3          ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature') eq ""
     4            ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik"  and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1') <= ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d')
     5            ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1')  <= ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d') and ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::DOIF_time($hash,2,3,$wday,$hms)
     6            ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1')  <= ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d') and ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik" and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') ne "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::DOIF_time($hash,4,5,$wday,$hms)
     7            ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Automatik"  and ::InternalDoIf($hash,'Betriebsmodus_HK2','STATE') eq "WSP1" and ::InternalDoIf($hash,'HK2vonSolar_einschalten','STATE') eq "off" and ::InternalDoIf($hash,'HK2_Kurzladung','STATE') eq "off" and ::ReadingValDoIf($hash,'Temp_Wohnzimmer_DS18B20','temperature','','d1') > ::ReadingValDoIf($hash,'Soll_Raumtemperatur_HK2_aktuell','d')
     8            ::InternalDoIf($hash,'Betriebsart_HK2','STATE') eq "Manuell"
   days:
   devices:
   do:
     0:
       0          set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Aus gestellt. Schalte Heizkreis2 _Aus_."
       1          set Betriebsmodus_HK2 Aus
     1:
       0          set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solaranlage speist in HK2 ein. Aktiviere Heizkreis2 im Betriebsmodus Solar."
       1          set Betriebsmodus_HK2 Solar
     2:
       0          set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Einspeisung Solaranlage in HK2 beendet. Schalte Heizkreis2 _Aus_."
       1          set Betriebsmodus_HK2 Aus
     3:
       0          set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Temp_Wohnzimmer_DS18B20 liefert falschen Wert."
     4:
       0            set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 00:00-10:00. Aktiviere Heizkreis2 im Betriebsmodus WSP.", set Betriebsmodus_HK2 WSP1
     5:
       0            set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 10:01-20:00 und die Sonne wird nichts liefern. Aktiviere Heizkreis2 im Betriebsmodus WSP.", set Betriebsmodus_HK2 WSP1
     6:
       0            set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Raumtemperatur zu niedrig im Zeitbereich 20:01-23:59. Aktiviere Heizkreis2 im Betriebsmodus WSP.", set Betriebsmodus_HK2 WSP1
     7:
       0            set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Solltemperatur erreicht. Schalte Heizkreis2 _Aus_.", set Betriebsmodus_HK2 Aus
     8:
       0            set Statusmeldungen add "INF-DOIF HK2_MANU_AUTO -> Betriebsart HK2 wurde auf Manuell gestellt. Schalte Heizkreis2 _Aus_.", set Betriebsmodus_HK2 Aus
     9:
   helper:
     NOTIFYDEV  Temp_Wohnzimmer_DS18B20,Soll_Raumtemperatur_HK2_aktuell,global,HK2vonSolar_einschalten,HK2_Kurzladung,Betriebsart_HK2
     event      Automatik
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   HK2vonSolar_einschalten
     timerevent off
     triggerDev Betriebsart_HK2
     timerevents:
       off
     timereventsState:
       state: off
     triggerEvents:
       Automatik
     triggerEventsState:
       state: Automatik
   internals:
     all         Betriebsart_HK2:STATE Betriebsmodus_HK2:STATE HK2vonSolar_einschalten:STATE HK2_Kurzladung:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
   intervalfunc:
   intervaltimer:
   localtime:
     0          1649368800
     1          1649404800
     2          1649404860
     3          1649440800
     4          1649354460
     5          1649368740
   perlblock:
   readings:
     all         Temp_Wohnzimmer_DS18B20:temperature Soll_Raumtemperatur_HK2_aktuell:d
   realtime:
     0          00:00:00
     1          10:00:00
     2          10:01:00
     3          20:00:00
     4          20:01:00
     5          23:59:00
   time:
     0          00:00:00
     1          10:00:00
     2          10:01:00
     3          20:00:00
     4          20:01:00
     5          23:59:00
   timeCond:
     0          4
     1          4
     2          5
     3          5
     4          6
     5          6
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     4           0  1
     5           2  3
     6           4  5
   trigger:
   triggertime:
     1649368740:
       localtime  1649368740
       hash:
     1649368800:
       localtime  1649368800
       hash:
     1649404800:
       localtime  1649404800
       hash:
     1649404860:
       localtime  1649404860
       hash:
     1649440800:
       localtime  1649440800
       hash:
   uiState:
   uiTable:
Attributes:
   alias      Heizkreis2 MANUELL AUTOMATIK
   comment    Mit diesem DOIF wird der Heizkreis2 Aus, Manuell oder in Automatik
geschaltet und gesteuert.
Steuert die Solaranlage den Heizkreis an, wird ausser in Stellung Aus
der Heizkreis auf Betriebsmodus Solar aktiviert.
Im Automatikbetrieb wird der Heizkreis sonst über die Soll-Raumtemperatur
ein- und über die Soll-Raumtemperatur oder Rücklauftemperatur ausgeschaltet.
Nach 10:00 Uhr muß zum Einschalten der Mittelwert der Solaranlage unter 50
liegen.
Im Manuellbetrieb wird der Heizkreis ausgeschaltet, da von Hand gesteuert
wird.
Die Rangfolge der drei Ansteuerarten ist folgende: Solar; Manuell; Automatik.
   group      Steuerung.HK2
   icon       helper_doif
   room       IT.Steuerung
   sortby     01


list Temp_Wohnzimmer_DS18B20


Internals:
   DEF        28.FF4A86921504 60
   FUUID      6249c183-f33f-c6d3-ef30-d56bdbcd033f8e58
   IODev      OWServerHS
   LAST_READ_FAILED 0
   NAME       Temp_Wohnzimmer_DS18B20
   NR         542
   STATE      23.3°C
   TYPE       OWDevice
   READINGS:
     2022-04-07 12:23:14   IODev           OWServerHS
     2022-04-07 20:42:17   alarm           1
     2022-04-07 20:42:17   state           temperature: 23.3125  alarm: 1
     2022-04-07 20:42:17   temperature     23.3125
   fhem:
     address    28.FF4A86921504
     alerting   1
     bus        bus.1
     interfaces temperature
     interval   60
     getters:
       address
       crc8
       family
       fasttemp
       id
       locator
       r_address
       r_id
       r_locator
       temperature
       temperature10
       temperature11
       temperature12
       temperature9
       temphigh
       templow
       type
     polls:
       temperature
     setters:
       temphigh
       templow
     state:
       temperature
Attributes:
   Einbauort  Schalterdose Eingang Wohnzimmer
   IODev      OWServerHS
   Verteiler  +KE=1W-V9
   alias      Temperatur Wohnzimmer
   comment    1Wire Baustein DS18B20 Temperatur Wohnzimmer
   event-min-interval temperature:900
   event-on-change-reading temperature
   group      03 Umweltdaten
   model      DS18B20
   mqttPublish temperature:topic={"$baseHost/$baseRoom/$device/state"}
   room       Allgemein,Heizkreis2,Input_Output->1Wire_System,Räume->EG.Wohnz.,Solarkreis1
   sortby     35
   stateFormat {sprintf("%.1f",ReadingsVal("Temp_Wohnzimmer_DS18B20","temperature",0))."°C"}
   verbose    5


Fehlerausgabe im Logfile mit "attr global stacktrace 1"


2022.04.07 20:36:10 5: OWServer child ID for reading '/28.FF4A86921504/temperature' is 19558
2022.04.07 20:36:10 5: OWServer child read /28.FF4A86921504/temperature: 23.25
2022.04.07 20:36:11 1: PERL WARNING: Argument "" isn't numeric in numeric le (<=) at (eval 55409) line 1.
2022.04.07 20:36:11 3: eval: di_Heizkreis2_MANU_AUTO: warning in condition c06
2022.04.07 20:36:11 1: stacktrace:
2022.04.07 20:36:11 1:     main::__ANON__                      called by (eval 55409) (1)
2022.04.07 20:36:11 1:     (eval)                              called by ./FHEM/98_DOIF.pm (2363)
2022.04.07 20:36:11 1:     main::DOIF_CheckCond                called by ./FHEM/98_DOIF.pm (2707)
2022.04.07 20:36:11 1:     main::DOIF_Trigger                  called by ./FHEM/98_DOIF.pm (2957)
2022.04.07 20:36:11 1:     main::DOIF_Notify                   called by fhem.pl (3934)
2022.04.07 20:36:11 1:     main::CallFn                        called by fhem.pl (3846)
2022.04.07 20:36:11 1:     main::DoTrigger                     called by fhem.pl (4949)
2022.04.07 20:36:11 1:     main::readingsEndUpdate             called by ./FHEM/11_OWDevice.pm (554)
2022.04.07 20:36:11 1:     main::OWDevice_UpdateValues         called by fhem.pl (3461)
2022.04.07 20:36:11 1:     main::HandleTimeout                 called by fhem.pl (703)
2022.04.07 20:36:11 1: PERL WARNING: Argument "" isn't numeric in numeric le (<=) at (eval 55410) line 1.
2022.04.07 20:36:11 3: eval: di_Heizkreis2_MANU_AUTO: warning in condition c07
2022.04.07 20:36:11 1: stacktrace:
2022.04.07 20:36:11 1:     main::__ANON__                      called by (eval 55410) (1)
2022.04.07 20:36:11 1:     (eval)                              called by ./FHEM/98_DOIF.pm (2363)
2022.04.07 20:36:11 1:     main::DOIF_CheckCond                called by ./FHEM/98_DOIF.pm (2707)
2022.04.07 20:36:11 1:     main::DOIF_Trigger                  called by ./FHEM/98_DOIF.pm (2957)
2022.04.07 20:36:11 1:     main::DOIF_Notify                   called by fhem.pl (3934)
2022.04.07 20:36:11 1:     main::CallFn                        called by fhem.pl (3846)
2022.04.07 20:36:11 1:     main::DoTrigger                     called by fhem.pl (4949)
2022.04.07 20:36:11 1:     main::readingsEndUpdate             called by ./FHEM/11_OWDevice.pm (554)
2022.04.07 20:36:11 1:     main::OWDevice_UpdateValues         called by fhem.pl (3461)
2022.04.07 20:36:11 1:     main::HandleTimeout                 called by fhem.pl (703)


Folgende Maßnahmen habe ich ausgeführt:
Erstellung einer neuen SD-Card mit Raspbian und FHEM
DS18B20 ausgetauscht
Update Betriebssystem
Update FHEM
DOIF Modul von 12/21 in FHEM kopiert

Resultat keine Änderung.

DOIF Modul wieder aktualisiert.

Ich hoffe es kann mir jemand einen Hinweis geben, wie ich den Fehler eingrenzen kann.
Mit freundlichem Gruß
Kurt
Titel: Antw:DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: Damian am 09 April 2022, 18:26:19
Die Warnung:

2022.04.07 20:36:11 1: PERL WARNING: Argument "" isn't numeric in numeric le (<=) at (eval 55409) line 1.
2022.04.07 20:36:11 3: eval: di_Heizkreis2_MANU_AUTO: warning in condition c06


ist eindeutig.

[Temp_Wohnzimmer_DS18B20:temperature:d1] ## 6
<= [Soll_Raumtemperatur_HK2_aktuell:d] ##Raumtemperatur Wz zu niedrig


In einem der beiden Readings steht nichts drin oder ist einfach nicht vorhanden.
Titel: Antw:DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: kkp am 09 April 2022, 20:19:11
Hallo Damian,
Danke für die schnelle Antwort, welche ich in anderen Beiträgen schon gelesen hatte. Daher habe ich am Anfang
meines ersten Beitrages eine Aufzeichnung der Events und der Werte des Temperatursensors mitgeschickt. Darin
sind zur Zeit der Fehlermeldung immer Werte zu sehen. Die Voreinstellung Soll_Raumtemperatur_HK2_aktuell ist auch mit einem Wert gefüllt.
Dies kann ich auch beim DOIF di_Heizkreis2_MANU_AUTO im Bereich Probably associated with sehen, da sind die Werte
Temp_Wohnzimmer_DS18B20 und Soll_Raumtemperatur_HK2_aktuell aktuell.
Im Reading e_Temp_Wohnzimmer_DS18B20_temperature des DOIFs ist die gleiche Zeit eingetragen wie bei der Fehlermeldung.
Bei dem im ersten Beitrag genannten zweiten DOIF ist das Verhalten gleich, nur dass es sich hier um mehrere Ventilpositionen geht.

Die Frage die sich mir stellt ist, wie kann ich feststellen was da wirklich kommt oder tritt der Fehler beim Vergleichen auf.
Titel: Antw:DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: Damian am 09 April 2022, 20:46:04
Du kannst die Fehlermeldung vermeiden, wenn du die Voreinstellung beim nicht vorhanden eines Readings statt auf "" auf Null stellst:

[Temp_Wohnzimmer_DS18B20:temperature:d1,0] ## 6
<= [Soll_Raumtemperatur_HK2_aktuell:d,0]


Dann sollte keine Warnung mehr kommen, in diesem Fall kannst du versuchen die Readings zu loggen.

Titel: Antw:DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: kkp am 09 April 2022, 21:45:42
Danke, werde ich testen.
Titel: Antw:DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: kkp am 11 April 2022, 19:06:52
Hallo Damian,
der Fehler ist behoben, dank Deines Hinweises mit der Voreinstellung kam die Fehlermeldung nicht mehr. Mittels wechselweisem Ersetzen der Werte im DOIF durch feste Werte konnte ich feststellen dass der Fehler vom Dummy Soll_Raumtemperatur_HK2_aktuell" kam. Das DOIF kann anscheinend den Dummy nicht auslesen wenn hinter dem Devicenamen  ein ":d" steht. Dieser Fehler war reproduzierbar.
Nach Entfernen aller ":d" bei der Einstellung "Soll_Raumtemperatur_HK2_aktuell" lief das DOIF wieder einwandfrei.
Bei dem Fehler des zweiten DOIF mit der valveposition habe ich übersehen, dass die Readings der Vergleichswerte nicht eingegeben waren. Dies habe ich bei der erwähnten Neuinstallation übersehen.
Für die prompte Unterstützung bedanke ich mich recht herzlich. Bei der Gelegenheit möchte ich auch ein Lob aussprechen für Deine hervorragende Arbeit am Modul DOIF und dessen ausführliche Dokumentation. Mittlerweile läuft bei mir alles über DOIF.

Mit freundlichem Gruß
Kurt
Titel: Antw:DOIF Wert wird als Fehler condition c10: Argument "" isn't numeric ausgewertet
Beitrag von: Damian am 11 April 2022, 19:30:22
Zitat von: kkp am 11 April 2022, 19:06:52
Hallo Damian,
der Fehler ist behoben, dank Deines Hinweises mit der Voreinstellung kam die Fehlermeldung nicht mehr. Mittels wechselweisem Ersetzen der Werte im DOIF durch feste Werte konnte ich feststellen dass der Fehler vom Dummy Soll_Raumtemperatur_HK2_aktuell" kam. Das DOIF kann anscheinend den Dummy nicht auslesen wenn hinter dem Devicenamen  ein ":d" steht. Dieser Fehler war reproduzierbar.
Nach Entfernen aller ":d" bei der Einstellung "Soll_Raumtemperatur_HK2_aktuell" lief das DOIF wieder einwandfrei.
Bei dem Fehler des zweiten DOIF mit der valveposition habe ich übersehen, dass die Readings der Vergleichswerte nicht eingegeben waren. Dies habe ich bei der erwähnten Neuinstallation übersehen.
Für die prompte Unterstützung bedanke ich mich recht herzlich. Bei der Gelegenheit möchte ich auch ein Lob aussprechen für Deine hervorragende Arbeit am Modul DOIF und dessen ausführliche Dokumentation. Mittlerweile läuft bei mir alles über DOIF.

Mit freundlichem Gruß
Kurt

Schön wenn alles läuft, wie es soll :)