FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: h002 am 18 November 2019, 19:11:36

Titel: Ursache für PERL-Warnung: PERL WARNING: Argument ".*" isn't numeric in numeric
Beitrag von: h002 am 18 November 2019, 19:11:36
Ich bekomme neuerdings immer folgende Warnung und damit damit nichts anfangen.


<div class='fhemlog'>2019.11.18 19:06:29 1 : PERL WARNING: Argument ".*" isn't numeric in numeric lt (<) at fhem.pl line 4816, <GEN13497> line 39904.</div>2019-11-18 19:06:29 RPI_GPIO GPIO3 Counter: 66665
2019.11.18 19:06:29 1 : PERL WARNING: Argument ".*" isn't numeric in numeric lt (<) at fhem.pl line 4816, <GEN13497> line 39905.


Hier ist die Definition von GPIO3


Internals:
   CHANGED   
   DEF        3
   EXCEPT_FD  13
   FUUID      5dcc19bf-f33f-8b20-6459-05622a4fb601fda2
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    3
   NAME       GPIO3
   NR         242
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/bin/gpio
   lasttrg    1574100450.7373
   Helper:
     DBLOG:
       actualEnergyUnitValue:
         dbLog:
           TIME       1574099899.03499
           VALUE      5094.667
       actualFullThermicEnergy:
         dbLog:
           TIME       1574100076.8709
           VALUE      20260
   OLDREADINGS:
   READINGS:
     2019-11-18 19:07:30   Counter         66696
     2019-11-18 19:07:24   Dblclick        on
     2019-11-18 19:07:30   Pinlevel        low
     2019-11-18 19:07:30   actualEnergyUnitValue 5094.934
     2019-11-18 19:07:30   actualFullThermicEnergy 20260
     2019-11-17 19:52:16   initialEnergyUnitValue 5028.238
     2019-11-16 21:51:39   lastDiffMonthElectricEnergy -
     2019-11-16 21:51:39   lastDiffMonthThermicEnergy -
     2019-11-18 19:07:30   state           off
   fhem:
     interfaces switch
Attributes:
   active_low no
   alias      DimplexEnergyCalculator
   direction  input
   event-on-change-reading Counter:.*,Dblclick:.*,Pinlevel:.*,actualEnergyUnitValue:0.5,actualFullThermicEnergy:.*,state:.*,lastDiffDayElectricEnergy:.*,lastDiffDayThermicEnergy:.*,lastDayJAZ:.*
   interrupt  falling
   room       Dimplex
   userReadings actualEnergyUnitValue { ReadingsVal("GPIO3","initialEnergyUnitValue","")  + (ReadingsVal("GPIO3","Counter","")/1000) },
actualFullThermicEnergy {(ReadingsVal("dim_WaermemengeHeizen01", "state",0) + (ReadingsVal("dim_WaermemengeHeizen02", "state",0) * 10000) + (ReadingsVal("dim_WaermemengeHeizen03", "state",0) * 100000)) + (ReadingsVal("dim_WaermemengeWarmwasser01", "state",0) + (ReadingsVal("dim_WaermemengeWarmwasser02", "state",0) * 10000) + (ReadingsVal("dim_WaermemengeWarmwasser03", "state",0) * 100000))},
lastDiffDayElectricEnergy{DbReadingsVal("dbRepDimplex","GPIO3:diff_day_actualFullElectricEnergy",FmtDateTime(time),"") },
lastDiffDayThermicEnergy{DbReadingsVal("dbRepDimplex","GPIO3:diff_day_actualFullThermicEnergy",FmtDateTime(time),"") },
lastDayJAZ{(DbReadingsVal("dbRepDimplex","GPIO3:diff_day_actualFullThermicEnergy",FmtDateTime(time),"")) / (DbReadingsVal("dbRepDimplex","GPIO3:diff_day_actualFullElectricEnergy",FmtDateTime(time),""))}


Und hier die Ausgabe vom Stacktrace der PERL-Warnung


2019.11.18 18:58:48 5: GPIO3, in fileaccess: edge
2019.11.18 18:58:48 5: Toggle war nicht def
2019.11.18 18:58:48 5: Toggle ist jetzt on
2019.11.18 18:58:48 5: Zaehler ist jetzt 66443
2019.11.18 18:58:48 1: PERL WARNING: Argument ".*" isn't numeric in numeric lt (<) at fhem.pl line 4816, <GEN13497> line 39522.
2019.11.18 18:58:48 5: Starting notify loop for GPIO3, 1 event(s), first is Counter: 66443
2019.11.18 18:58:48 4: DbLog dbLog -> ################################################################
2019.11.18 18:58:48 4: DbLog dbLog -> ###              start of new Logcycle                       ###
2019.11.18 18:58:48 4: DbLog dbLog -> ################################################################
2019.11.18 18:58:48 4: DbLog dbLog -> number of events received: 1 for device: GPIO3
2019.11.18 18:58:48 4: DbLog dbLog -> check Device: GPIO3 , Event: Counter: 66443
2019.11.18 18:58:48 5: End notify loop for GPIO3
2019.11.18 18:58:49 5: GPIO3, in fileaccess: edge
2019.11.18 18:58:49 1: PERL WARNING: Argument ".*" isn't numeric in numeric lt (<) at fhem.pl line 4816, <GEN13497> line 39523.


Die Meldung kommt immer dann, wenn sich das Reading "Counter" ändert. Kann mir hier jemand bitte einen Tipp geben? Danke :-)
Titel: Antw:Ursache für PERL-Warnung: PERL WARNING: Argument ".*" isn't numeric in numeric
Beitrag von: Shadow3561 am 18 November 2019, 19:50:30
Versuche mal bei deinen userReadings ReadingsNum statt ReadingVal
Titel: Antw:Ursache für PERL-Warnung: PERL WARNING: Argument ".*" isn't numeric in numeric
Beitrag von: amenomade am 18 November 2019, 21:23:07
event-on-change-reading ist auch falsch

Zitat von: CommandRefevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings". Wenn gesetzt, erzeugen nur Veränderungen der gelisteten "readings" ein Ereignis. Wenn die aktualiserten Werte der gelisteten "readings" identisch sind, wird kein Ereignis generiert.
Wenn hinter dem Namen eines "readings" eine :Schwelle angegeben ist, wird das Event nur getriggert wenn die Änderung grösser als diese Schwelle ist.

Also wenn keine Schwelle von numerischen Readings, einfach nur den Readingsname benutzen, ohne :.*
actualEnergyUnitValue:0.5 könnte gehen
state:.* bestimmt nicht

Vorschlag:
Counter,Dblclick,Pinlevel,actualEnergyUnitValue:0.5,actualFullThermicEnergy,state,lastDiffDayElectricEnergy,lastDiffDayThermicEnergy,lastDayJAZ
Titel: Antw:Ursache für PERL-Warnung: PERL WARNING: Argument ".*" isn't numeric in numeric
Beitrag von: h002 am 18 November 2019, 22:25:58
@amenomade
Das war das Problem. Was für ein peinlicher Fehler. Danke. :-)

@Shadow3561
Auch dir vielen Dank für deinen Hinweis.