DOIF erzeugt Fehler im Log... PERL WARNING: Argument "" (ERLEDIGT)

Begonnen von misux, 10 November 2020, 10:32:21

Vorheriges Thema - Nächstes Thema

misux

Hi

Und wieder habe ich es mal wieder geschafft... Bekomme ein Fehlereintrag im Log bei meinem DIOF:


Zitat2020.11.10 10:24:20.825 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 5270451) line 1.
2020.11.10 10:24:20.826 3: eval: DOIFEchoInputTerrasse: warning in condition c01

Was mache ich denn schon wieder falsch...?

Vielen Dank für eure Hilfe!

HIer das DOIF:
Internals:
   DEF        (([Haus] eq "present" and [08:00-20:00] and [DOIFTempDurchschnitt:state:d] > 15.0) or ([TerrassenTuer1] eq "open" and [DOIFTempDurchschnitt:state:d] > 15.0))
(set EchoInputTerrasse on)
DOELSEIF
([Haus] eq "absent" and [Markise] eq "0")
(set EchoInputTerrasse off)
DOELSEIF
([?Haus] eq "present" and [20:00-08:00] and [TerrassenTuer1] eq "closed" and [?Markise] eq "0")
(set EchoInputTerrasse off)
   DOIFDEV    ^global$|^Haus$|^TerrassenTuer1$|^DOIFTempDurchschnitt$|^Markise$
   FUUID      5d5fdf8a-f33f-84b4-7e96-81508a68680e16d8
   MODEL      FHEM
   NAME       DOIFEchoInputTerrasse
   NR         190
   NTFY_ORDER 50-DOIFEchoInputTerrasse
   STATE      initialized
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2020-11-10 10:24:16   cmd             0
     2020-11-10 10:24:16   mode            enabled
     2020-11-10 10:24:16   state           initialized
     2020-11-10 10:24:16   timer_01_c01    11.11.2020 08:00:00
     2020-11-10 10:24:16   timer_02_c01    10.11.2020 20:00:00
     2020-11-10 10:24:16   timer_03_c03    10.11.2020 20:00:00
     2020-11-10 10:24:16   timer_04_c03    11.11.2020 08:00:00
   Regex:
     accu:
     cond:
       DOIFTempDurchschnitt:
         0:
           state      ^DOIFTempDurchschnitt$:^state:
       Haus:
         0:
           &STATE     ^Haus$
         1:
           &STATE     ^Haus$
       Markise:
         1:
           &STATE     ^Markise$
       TerrassenTuer1:
         0:
           &STATE     ^TerrassenTuer1$
         2:
           &STATE     ^TerrassenTuer1$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::InternalDoIf($hash,'Haus','STATE') eq "present" and ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'DOIFTempDurchschnitt','state','','d') > 15.0) or (::InternalDoIf($hash,'TerrassenTuer1','STATE') eq "open" and ::ReadingValDoIf($hash,'DOIFTempDurchschnitt','state','','d') > 15.0)
     1          ::InternalDoIf($hash,'Haus','STATE') eq "absent" and ::InternalDoIf($hash,'Markise','STATE') eq "0"
     2          ::InternalDoIf($hash,'Haus','STATE') eq "present" and ::DOIF_time($hash,2,3,$wday,$hms) and ::InternalDoIf($hash,'TerrassenTuer1','STATE') eq "closed" and ::InternalDoIf($hash,'Markise','STATE') eq "0"
   days:
   do:
     0:
       0          set EchoInputTerrasse on
     1:
       0          set EchoInputTerrasse off
     2:
       0          set EchoInputTerrasse off
     3:
   helper:
     DEVFILTER  ^global$|^Haus$|^TerrassenTuer1$|^DOIFTempDurchschnitt$|^Markise$
     NOTIFYDEV  global|Haus|TerrassenTuer1|DOIFTempDurchschnitt|Markise
     globalinit 1
     last_timer 4
     sleeptimer -1
     triggerDev
   internals:
     all         Haus:STATE TerrassenTuer1:STATE Markise:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   localtime:
     0          1605078000
     1          1605034800
     2          1605034800
     3          1605078000
   readings:
     all         DOIFTempDurchschnitt:state
   realtime:
     0          08:00:00
     1          20:00:00
     2          20:00:00
     3          08:00:00
   time:
     0          08:00:00
     1          20:00:00
     2          20:00:00
     3          08:00:00
   timeCond:
     0          0
     1          0
     2          2
     3          2
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     2           2  3
   triggertime:
     1605034800:
       localtime  1605034800
       hash:
     1605078000:
       localtime  1605078000
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       DOIF


Die Temperatur soll er sich von diesem DOIF ziehen:
Internals:
   DEF        ##
   FUUID      5dbc7bc3-f33f-84b4-0d60-d122a76b25983825
   MODEL      FHEM
   NAME       DOIFTempDurschnitt
   NOTIFYDEV  TempAussenCarport,global,TempAussenEingang
   NR         212
   NTFY_ORDER 50-DOIFTempDurschnitt
   STATE      5.7
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2019-11-01 19:38:59   cmd             0
     2019-11-01 19:38:59   mode            enabled
     2020-11-10 10:28:14   state           5.7
   Regex:
     STATE:
       TempAussenCarport:
         STATE:
           temperature ^TempAussenCarport$:^temperature:
       TempAussenEingang:
         STATE:
           temperature ^TempAussenEingang$:^temperature:
     accu:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$|^TempAussenCarport$|^TempAussenEingang$
     NOTIFYDEV  global|TempAussenCarport|TempAussenEingang
     event      temperature: 6,T: 6 H: 87
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev TempAussenEingang
     DOIF_eventa:
       5.7
     DOIF_eventas:
       state: 5.7
     triggerEvents:
       temperature: 6
       T: 6 H: 87
     triggerEventsState:
       temperature: 6
       state: T: 6 H: 87
   perlblock:
   uiState:
   uiTable:
Attributes:
   event-min-interval 300
   room       DOIF,Wetter
   state      {([TempAussenCarport:temperature]+[TempAussenEingang:temperature])/2}



Damian

Zitat von: misux am 10 November 2020, 10:32:21
Hi

Und wieder habe ich es mal wieder geschafft... Bekomme ein Fehlereintrag im Log bei meinem DIOF:


Was mache ich denn schon wieder falsch...?

Vielen Dank für eure Hilfe!

HIer das DOIF:
Internals:
   DEF        (([Haus] eq "present" and [08:00-20:00] and [DOIFTempDurchschnitt:state:d] > 15.0) or ([TerrassenTuer1] eq "open" and [DOIFTempDurchschnitt:state:d] > 15.0))
(set EchoInputTerrasse on)
DOELSEIF
([Haus] eq "absent" and [Markise] eq "0")
(set EchoInputTerrasse off)
DOELSEIF
([?Haus] eq "present" and [20:00-08:00] and [TerrassenTuer1] eq "closed" and [?Markise] eq "0")
(set EchoInputTerrasse off)
   DOIFDEV    ^global$|^Haus$|^TerrassenTuer1$|^DOIFTempDurchschnitt$|^Markise$
   FUUID      5d5fdf8a-f33f-84b4-7e96-81508a68680e16d8
   MODEL      FHEM
   NAME       DOIFEchoInputTerrasse
   NR         190
   NTFY_ORDER 50-DOIFEchoInputTerrasse
   STATE      initialized
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2020-11-10 10:24:16   cmd             0
     2020-11-10 10:24:16   mode            enabled
     2020-11-10 10:24:16   state           initialized
     2020-11-10 10:24:16   timer_01_c01    11.11.2020 08:00:00
     2020-11-10 10:24:16   timer_02_c01    10.11.2020 20:00:00
     2020-11-10 10:24:16   timer_03_c03    10.11.2020 20:00:00
     2020-11-10 10:24:16   timer_04_c03    11.11.2020 08:00:00
   Regex:
     accu:
     cond:
       DOIFTempDurchschnitt:
         0:
           state      ^DOIFTempDurchschnitt$:^state:
       Haus:
         0:
           &STATE     ^Haus$
         1:
           &STATE     ^Haus$
       Markise:
         1:
           &STATE     ^Markise$
       TerrassenTuer1:
         0:
           &STATE     ^TerrassenTuer1$
         2:
           &STATE     ^TerrassenTuer1$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          (::InternalDoIf($hash,'Haus','STATE') eq "present" and ::DOIF_time($hash,0,1,$wday,$hms) and ::ReadingValDoIf($hash,'DOIFTempDurchschnitt','state','','d') > 15.0) or (::InternalDoIf($hash,'TerrassenTuer1','STATE') eq "open" and ::ReadingValDoIf($hash,'DOIFTempDurchschnitt','state','','d') > 15.0)
     1          ::InternalDoIf($hash,'Haus','STATE') eq "absent" and ::InternalDoIf($hash,'Markise','STATE') eq "0"
     2          ::InternalDoIf($hash,'Haus','STATE') eq "present" and ::DOIF_time($hash,2,3,$wday,$hms) and ::InternalDoIf($hash,'TerrassenTuer1','STATE') eq "closed" and ::InternalDoIf($hash,'Markise','STATE') eq "0"
   days:
   do:
     0:
       0          set EchoInputTerrasse on
     1:
       0          set EchoInputTerrasse off
     2:
       0          set EchoInputTerrasse off
     3:
   helper:
     DEVFILTER  ^global$|^Haus$|^TerrassenTuer1$|^DOIFTempDurchschnitt$|^Markise$
     NOTIFYDEV  global|Haus|TerrassenTuer1|DOIFTempDurchschnitt|Markise
     globalinit 1
     last_timer 4
     sleeptimer -1
     triggerDev
   internals:
     all         Haus:STATE TerrassenTuer1:STATE Markise:STATE
   interval:
     0          -1
     1          0
     2          -1
     3          2
   intervalfunc:
   localtime:
     0          1605078000
     1          1605034800
     2          1605034800
     3          1605078000
   readings:
     all         DOIFTempDurchschnitt:state
   realtime:
     0          08:00:00
     1          20:00:00
     2          20:00:00
     3          08:00:00
   time:
     0          08:00:00
     1          20:00:00
     2          20:00:00
     3          08:00:00
   timeCond:
     0          0
     1          0
     2          2
     3          2
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1
     2           2  3
   triggertime:
     1605034800:
       localtime  1605034800
       hash:
     1605078000:
       localtime  1605078000
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       DOIF


Die Temperatur soll er sich von diesem DOIF ziehen:
Internals:
   DEF        ##
   FUUID      5dbc7bc3-f33f-84b4-0d60-d122a76b25983825
   MODEL      FHEM
   NAME       DOIFTempDurschnitt
   NOTIFYDEV  TempAussenCarport,global,TempAussenEingang
   NR         212
   NTFY_ORDER 50-DOIFTempDurschnitt
   STATE      5.7
   TYPE       DOIF
   VERSION    22398 2020-07-14 09:32:05
   READINGS:
     2019-11-01 19:38:59   cmd             0
     2019-11-01 19:38:59   mode            enabled
     2020-11-10 10:28:14   state           5.7
   Regex:
     STATE:
       TempAussenCarport:
         STATE:
           temperature ^TempAussenCarport$:^temperature:
       TempAussenEingang:
         STATE:
           temperature ^TempAussenEingang$:^temperature:
     accu:
   condition:
   do:
     0:
   helper:
     DEVFILTER  ^global$|^TempAussenCarport$|^TempAussenEingang$
     NOTIFYDEV  global|TempAussenCarport|TempAussenEingang
     event      temperature: 6,T: 6 H: 87
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev TempAussenEingang
     DOIF_eventa:
       5.7
     DOIF_eventas:
       state: 5.7
     triggerEvents:
       temperature: 6
       T: 6 H: 87
     triggerEventsState:
       temperature: 6
       state: T: 6 H: 87
   perlblock:
   uiState:
   uiTable:
Attributes:
   event-min-interval 300
   room       DOIF,Wetter
   state      {([TempAussenCarport:temperature]+[TempAussenEingang:temperature])/2}


Offenbar war DOIFTempDurchschnitt:state zu diesem Zeitpunkt noch nicht belegt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

Hmm... Das macht er aber auch immer wenn ich "Set  DOIFEchoInputTerrasse checkall" in diesem DOIF durchführe... und der DOIFTempDurchschnitt:state ist jedenfalls da... :-\

Damian

Zitat von: misux am 10 November 2020, 11:12:00
Hmm... Das macht er aber auch immer wenn ich "Set  DOIFEchoInputTerrasse checkall" in diesem DOIF durchführe... und der DOIFTempDurchschnitt:state ist jedenfalls da... :-\

Da schau dir genau den Namen deines Devices an ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux