FHEM > Perl für FHEM-User

PERL WARNING in ReadingsGroup durch valueFormat

(1/3) > >>

Bubbles71:
Hallo,

ich habe seit einigen Wochen einen Haufen an PERL WARNINGs in meinem log, finde aber einfach nicht den Ursprung. Die Warnings werden in ReadingsGroups angezeigt, die Werte von Tempertursensoren oder Thermostate anzeigen. (My Sensors, Zigbee, MAX).
Die PERL WARNINGS sind von der Art immer gleich und haben als Auslöser die Temperatur- oder Feuchtewerte. Die Einheiten ergänze ich aber nur im valueFormat.


--- Zitat ---2021.02.04 08:47:44 1: PERL WARNING: Argument "18.2M-BM-0C" isn't numeric in division (/) at (eval 1434854) line 1.
=> keine Ahnung woher M-BM-0C kommt. °C?

2021.02.04 08:47:44 1: PERL WARNING: Argument "47 %" isn't numeric in division (/) at (eval 1434857) line 1.

2021.02.04 08:48:13 1: PERL WARNING: Argument "55 %" isn't numeric in division (/) at (eval 1435008) line 1.

--- Ende Zitat ---

Hat jemand eine Idee, woher die Warnung kommt? Sie tut zwar nicht weh, müllt mir aber mein Log massiv zu.

Vielen Dank,

Roland


Anbei einmal ein Beispiel.

Device ist ein Sensor für Temperatur und Luftfeuchte mit dem Namen MYSENSOR_105.
Definition des Devices:

--- Code: ---defmod MYSENSOR_105 MYSENSORS_DEVICE 105
attr MYSENSOR_105 DbLogExclude .*
attr MYSENSOR_105 DbLogInclude temperature1,humidity2,pressure,voltage3
attr MYSENSOR_105 IODev MySensor_LAN_GW
attr MYSENSOR_105 alias Flur
attr MYSENSOR_105 mapReading_current3 3 current
attr MYSENSOR_105 mapReading_forecast 0 forecast
attr MYSENSOR_105 mapReading_humidity2 2 humidity
attr MYSENSOR_105 mapReading_id1 1 id
attr MYSENSOR_105 mapReading_impedance3 3 impedance
attr MYSENSOR_105 mapReading_pressure 0 pressure
attr MYSENSOR_105 mapReading_temperature1 1 temperature
attr MYSENSOR_105 mapReading_voltage3 3 voltage
attr MYSENSOR_105 mode node
attr MYSENSOR_105 room MySensors
attr MYSENSOR_105 stateFormat temperature1 °C | humidity2 % | pressure hPa | Bat: voltage3 mV

setstate MYSENSOR_105 18.2 °C | 43.4 % | 1012.14 hPa | Bat: 2870.00 mV
setstate MYSENSOR_105 2019-07-28 13:41:37 BL_VERSION 1.2
setstate MYSENSOR_105 2019-07-28 13:41:37 FW_BLOCKS 800
setstate MYSENSOR_105 2019-07-28 13:41:37 FW_CRC 33534
setstate MYSENSOR_105 2021-01-24 21:59:30 SKETCH_NAME BME280 Raumsensor OTA
setstate MYSENSOR_105 2021-01-24 21:59:30 SKETCH_VERSION 3
setstate MYSENSOR_105 2021-01-24 22:02:00 bat_wechsel 24-01-2021
setstate MYSENSOR_105 2021-02-04 17:19:48 humidity2 43.4
setstate MYSENSOR_105 2021-01-24 21:57:07 parentId 0
setstate MYSENSOR_105 2021-02-04 17:14:34 pressure 1012.14
setstate MYSENSOR_105 2021-01-24 21:59:30 state received presentation
setstate MYSENSOR_105 2021-02-04 17:19:48 temperature1 18.2
setstate MYSENSOR_105 2021-02-04 16:58:53 voltage3 2870.00
--- Ende Code ---

Auszug aus dem log (Verbose 5 und Stacktrace 1):

--- Zitat ---2021.02.04 08:47:44 5: Starting notify loop for MYSENSOR_105, 1 event(s), first is temperature1: 18.2
2021.02.04 08:47:44 4: DbLog DBLogging -> ################################################################
2021.02.04 08:47:44 4: DbLog DBLogging -> ###              start of new Logcycle                       ###
2021.02.04 08:47:44 4: DbLog DBLogging -> ################################################################
2021.02.04 08:47:44 4: DbLog DBLogging -> number of events received: 1 for device: MYSENSOR_105
2021.02.04 08:47:44 4: DbLog DBLogging -> check Device: MYSENSOR_105 , Event: temperature1: 18.2
2021.02.04 08:47:44 5: DbLog DBLogging -> parsed Event: MYSENSOR_105 , Event: temperature1: 18.2
2021.02.04 08:47:44 5: DbLog DBLogging -> DbLogExclude of "MYSENSOR_105": .*
2021.02.04 08:47:44 5: DbLog DBLogging -> DbLogInclude of "MYSENSOR_105": temperature1,humidity2,pressure,voltage3
2021.02.04 08:47:44 4: DbLog DBLogging -> added event - Timestamp: 2021-02-04 08:47:44, Device: MYSENSOR_105, Type: MYSENSORS_DEVICE, Event: temperature1: 18.2, Reading: temperature1, Value: 18.2, Unit: °C
2021.02.04 08:47:44 4: DbLog DBLogging -> ################################################################
2021.02.04 08:47:44 4: DbLog DBLogging -> ###         New database processing cycle - synchronous      ###
2021.02.04 08:47:44 4: DbLog DBLogging -> ################################################################
2021.02.04 08:47:44 4: DbLog DBLogging -> DbLogType is: Current/History
2021.02.04 08:47:44 4: DbLog DBLogging -> AutoCommit mode: ON, Transaction mode: ON
2021.02.04 08:47:44 4: DbLog DBLogging -> Insert mode: Array
2021.02.04 08:47:44 4: DbLog DBLogging -> Primary Key used in history: none
2021.02.04 08:47:44 4: DbLog DBLogging -> Primary Key used in current: none
2021.02.04 08:47:44 4: DbLog DBLogging -> processing event Timestamp: 2021-02-04 08:47:44, Device: MYSENSOR_105, Type: MYSENSORS_DEVICE, Event: temperature1: 18.2, Reading: temperature1, Value: 18.2, Unit: °C
2021.02.04 08:47:44 4: DbLog DBLogging -> 1 of 1 events inserted into table history
2021.02.04 08:47:44 4: DbLog DBLogging -> insert table history committed by autocommit
2021.02.04 08:47:44 4: DbLog DBLogging -> 1 of 1 events updated in table current
2021.02.04 08:47:44 4: DbLog DBLogging -> insert / update table current committed by autocommit
2021.02.04 08:47:44 1: PERL WARNING: Argument "18.2M-BM-0C" isn't numeric in division (/) at (eval 1434854) line 1.
2021.02.04 08:47:44 1: stacktrace:
2021.02.04 08:47:44 1:     main::__ANON__                      called by (eval 1434854) (1)
2021.02.04 08:47:44 1:     (eval)                              called by ./FHEM/33_readingsGroup.pm (291)
2021.02.04 08:47:44 1:     main::lookup                        called by ./FHEM/33_readingsGroup.pm (1464)
2021.02.04 08:47:44 1:     main::readingsGroup_Notify          called by fhem.pl (3818)
2021.02.04 08:47:44 1:     main::CallFn                        called by fhem.pl (3735)
2021.02.04 08:47:44 1:     main::DoTrigger                     called by fhem.pl (4820)
2021.02.04 08:47:44 1:     main::readingsEndUpdate             called by ./FHEM/10_MYSENSORS_DEVICE.pm (866)
2021.02.04 08:47:44 1:     MYSENSORS::DEVICE::onSetMessage     called by ./FHEM/00_MYSENSORS.pm (651)
2021.02.04 08:47:44 1:     MYSENSORS::onSetMsg                 called by ./FHEM/00_MYSENSORS.pm (614)
2021.02.04 08:47:44 1:     MYSENSORS::Read                     called by fhem.pl (3818)
2021.02.04 08:47:44 1:     main::CallFn                        called by fhem.pl (759)
2021.02.04 08:47:44 5: Starting notify loop for Heizung_OG_3, 1 event(s), first is MYSENSOR_105.temperature1: <html><div style="font-size:28px;color:rgb(144,176,214);margin-top:5px;">18.2°C</div></html>
2021.02.04 08:47:44 4: DbLog DBLogging -> ################################################################
2021.02.04 08:47:44 4: DbLog DBLogging -> ###              start of new Logcycle                       ###
2021.02.04 08:47:44 4: DbLog DBLogging -> ################################################################
2021.02.04 08:47:44 4: DbLog DBLogging -> number of events received: 1 for device: Heizung_OG_3
2021.02.04 08:47:44 4: DbLog DBLogging -> check Device: Heizung_OG_3 , Event: MYSENSOR_105.temperature1: <html><div style="font-size:28px;color:rgb(144,176,214);margin-top:5px;">18.2°C</div></html>
2021.02.04 08:47:44 5: DbLog DBLogging -> parsed Event: Heizung_OG_3 , Event: MYSENSOR_105.temperature1: <html><div style="font-size:28px;color:rgb(144,176,214);margin-top:5px;">18.2°C</div></html>
2021.02.04 08:47:44 5: DbLog DBLogging -> DbLogExclude of "Heizung_OG_3": .*
2021.02.04 08:47:44 5: End notify loop for Heizung_OG_3
2021.02.04 08:47:44 5: Cmd: >setreading debug float 18.2<
2021.02.04 08:47:44 5: Starting notify loop for debug, 1 event(s), first is float: 18.2
--- Ende Zitat ---

Definition der ReadingsGroup:

--- Code: ---defmod Heizung_OG_3 readingsGroup Thermostat_OG_SZ_Zig:<Schlafzimmer>,temperature@Xiaomi_T_SZ,humidity@Xiaomi_H_SZ,heatsetpoint,valve,batteryPercent\
Thermostat_OG_KZ_Zig:<Kinderzimmer>,temperature@Xiaomi_T_1,humidity@Xiaomi_H_1,heatsetpoint,valve,batteryPercent\
MAX_OG_Kueche:<Küche>,temperature@Xiaomi_T_Kueche_OG,humidity@Xiaomi_H_Kueche_OG,desiredTemperature,valveposition,battery\
MAX_OG_Bad:<Bad>,temperature@Xiaomi_T_Bad,humidity@Xiaomi_H_Bad,desiredTemperature,valveposition,battery\
MAX_OG_Esszimmer:<Esszimmer>,temperature@Xiaomi_T_Esszimmer,humidity@Xiaomi_H_Esszimmer,desiredTemperature,valveposition,battery\
MAX_OG_Flur:<Flur>,temperature1@MYSENSOR_105,humidity2@MYSENSOR_105,desiredTemperature,valveposition,battery\

attr Heizung_OG_3 DbLogExclude .*
attr Heizung_OG_3 alias HEIZUNG OBERGESCHOSS
attr Heizung_OG_3 alwaysTrigger 1
attr Heizung_OG_3 commands { desiredTemperature => "desiredTemperature:slider,15,1,26",\
  heatsetpoint => "heatsetpoint:slider,15,1,26"}
attr Heizung_OG_3 fp_fp_Heizung 148,165,0,Heizung_OG_3,
attr Heizung_OG_3 fp_fp_Obergeschoss 148,140,0,Heizung_OG_3
attr Heizung_OG_3 fp_testfp 191,967,0,Heizung_OG_2,
attr Heizung_OG_3 group 0-Heizungswerte
attr Heizung_OG_3 nonames 1
attr Heizung_OG_3 room Floorplan->OG
attr Heizung_OG_3 valueFormat { valveposition => '%.0f %' , valve => '%.0f %' ,temperature => '%.1f°C', temperature1 => '%.1f°C', humidity => '%.0f %' ,humidity2 => '%.0f %' }
attr Heizung_OG_3 valueIcon {'battery.ok' => 'battery_100' , 'battery.low' => 'bat_25' ,\
'batteryPercent' => 'battery_'.sprintf("%.0f",($VALUE)/10).'0'}
attr Heizung_OG_3 valueStyle { if($READING eq "temperature" && $VALUE gt "25") { 'style="font-size:28px;;color:rgb(140,67,137);;margin-top:5px;;"' }\
elsif($READING eq "temperature" && $VALUE lt "16") { 'style="font-size:28px;;color:rgb(64,102,178);;margin-top:5px;;"' }\
elsif($READING eq "temperature" && $VALUE ge "16" && $VALUE le "25") { 'style="font-size:28px;;color:rgb(144,176,214);;margin-top:0px;;"' }\
\
elsif($READING eq "temperature1" && $VALUE gt "25") { 'style="font-size:28px;;color:rgb(140,67,137);;margin-top:5px;;"' }\
elsif($READING eq "temperature1" && $VALUE lt "16") { 'style="font-size:28px;;color:rgb(64,102,178);;margin-top:5px;;"' }\
elsif($READING eq "temperature1" && $VALUE ge "16" && $VALUE le "25") { 'style="font-size:28px;;color:rgb(144,176,214);;margin-top:5px;;"' }\
\
elsif ($READING eq "valveposition") { 'style="font-size:22px;;color:rgb(144,176,214);;margin-top:5px;;"' }\
elsif ($READING eq "valve") { 'style="font-size:22px;;color:rgb(144,176,214);;margin-top:5px;;"' }\
\
elsif ($READING eq "humidity")  { 'style="font-size:20px;;color:rgb(144,176,214);;margin-top:5px;;"' }\
elsif ($READING eq "humidity2") { 'style="font-size:20px;;color:rgb(144,176,214);;margin-top:5px;;"' }\
}
attr Heizung_OG_3 verbose 5
--- Ende Code ---

Bubbles71:
Ich konnte den Fehler inzwischen weiter eingrenzen... Klarer wird es aber nicht.

Die Fehlermeldung wird durch das valueFormat ausgelöst.

--- Code: ---{ valveposition => "%.0f %%" , valve => "%.0f %%" ,temperature => "%.1f &deg;C", temperature1 => "%.1f &deg;C", humidity => "%.0f %%" ,humidity2 => "%.0f %%" }
--- Ende Code ---


--- Zitat ---2021.02.12 17:50:46 1: PERL WARNING: Argument "19.1 °C" isn't numeric in division (/) at (eval 4918373) line 1.
2021.02.12 17:50:46 1: PERL WARNING: Argument "25 %" isn't numeric in division (/) at (eval 4918375) line 1.
2021.02.12 17:50:46 1: PERL WARNING: Argument "8 %" isn't numeric in division (/) at (eval 4918379) line 1.
--- Ende Zitat ---

Lösche ich die Definition aus der RG, bleibt der Fehler aus.
Dabei ist es unerheblich, ob ich ' oder " benutze, %% oder % oder &deg;C oder °C.
Sobald das valueFormat gesetzt ist, kommt die Perl Warnung zurück. Und zwar für jede Instanz der gleichen ReadingsGroup. Die RG für Heizung habe ich in der normalen Fhem Web Darstellung und auf zwei Floorplanseiten.
Dadurch erscheinen auch die Perl Warnungen drei mal. Um sicher zu gehen, dass es kein Problem mit Floorplan ist, habe ich die RG aus dem Floorplan gelöscht. Fehler bleibt... dann eben nur einmal.

Das valueFormat habe ich nach der Wiki Anleitung angelegt.

Kann jemand die Perl Warnung erklären?

Vielen Dank,

Roland

Bubbles71:
Hallo,

ich habe das obige Thema mal in dieses Thema verschoben. Vielleicht kann mir hier jemand mit den PERL WARNINGs helfen.
Durch die Warnungen habe ich jeden Monat ein Log von mehreren MB.

Vielen Dank,

Roland

frank:
die meldungen

--- Zitat ---isn't numeric in division (/)
--- Ende Zitat ---
kann nicht durch attr valueFormat kommen, da du dort keine division hast.

aber zb gibt es eine divisio in attr valueIcon für batteryPercent.

Bubbles71:
Hallo Frank,

danke, das erklärt eine der Fehlerquellen. Bei Daten wie Temperatur oder Luftfeuchte rechne ich aber nicht in den Definitionen.

Sobald ich das valueFormat lösche, entfallen die Fehlermeldungen.

Wie geht FHEM eigentlich mit valueFormat um? Bisher ging ich davon aus, dass lediglich die Ausgabe angepasst wird, also z.B. ein % Zeichen angehängt wird. Die eigentliche Variable bleibt aber unverändert.
Oder greift das ValueFormat auch, wenn ich z.B. in der 99myUtil per ReadingsVal oder ReadingsNum Werte übernehme?

LG,

Roland

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln