Hallo zusammen,
um Plotabriss zu vermeiden, verwende ich die addlog() Funktion in der 99_myUtils.pm:
sub
addLog($$$)
{
my ($logdevice, $reading, $logreadingname) = @_; # device and reading to be used
my $logentry = ReadingsVal($logdevice,$reading,"addLog: invalid reading");
if ( $logreadingname eq "logrn" )
{fhem "trigger $logdevice $reading: $logentry << addLog";}
else {fhem "trigger $logdevice $logentry << addLog";}
}
Wenn ich aber nun das addLog für numerischen Werte verwende bekomme ich eine Perl Warnung:
2024.02.01 08:00:22 1: PERL WARNING: Argument " 12.31 << addlog" isn't numeric in numeric gt (>) at (eval 23108) line 8.
Diese Warnung kam von diesem Trigger:
trigger Gartenhaus Voltage: 12.31 << addLog
So wie es aussieht kann das addlog() nicht für numerische Werte verwendet werden, zumindest nicht ohne Warning.
Habe ich da was übersehen oder falsch gemacht ?
VG Klaus
EDIT:
Hier mal das Listing des betroffenen Gerätes:
Internals:
DEF Gartenhaus
FUUID 5c489c1c-f33f-b6d9-78c0-e824abfb90fb2370
IODev MQTT
NAME Gartenhaus
NOTIFYDEV Gartenhaus
NR 410
STATE <div style="text-align:left">Wind: 0 km/h</div>
<div style="text-align:left">Temp: 9.4 °C</div>
<div style="text-align:left">Luftdruck: 1027 mbar</div>
<div style="text-align:left">Luftdruck Tendenz 3h: +1 mbar</div>
<div style="text-align:left">Batterie: 12.35 V</div>
<div style="text-align:left">Regen heute: 2.1 l/qm</div>
<div style="text-align:left">Regen Monat: 2.1 l/qm</div>
<div style="text-align:left">Regen Jahr: 60.3 l/qm</div>
<div style="text-align:left">DC/AC Konverter: 0</div>
<div style="text-align:left">Infrarotlicht: 0</div>
<div style="text-align:left">Ventilator: 0</div>
TYPE MQTT_DEVICE
eventCount 1063
READINGS:
2023-11-03 19:38:32 Converter 0
2024-02-01 09:01:22 Count_Rain 0
2024-02-01 09:02:42 Count_Wind 0
2024-02-01 09:01:37 Humidity 52
2024-01-31 19:46:47 IODev MQTT
2024-02-01 06:54:41 IR 0
2023-10-15 17:08:03 Lueftung 0
2024-02-01 09:01:37 Pressure 1027
2024-02-01 07:01:22 Rainmonth 2.1
2024-01-31 23:59:58 Rainmonth_avg 58.2
2024-02-01 07:01:22 Raintoday 2.1
2024-02-01 07:01:22 Rainyear 60.3
2024-01-31 23:59:59 Rainyesterday 0.0
2024-02-01 09:01:37 Temperature 9.4
2024-02-01 08:57:22 Voltage 12.35
2024-02-01 09:01:33 Windspeed 0
2024-02-01 08:57:18 alive alive
2024-02-01 08:59:55 statPressureTendency 1h: +1 2h: +1 3h: +1 6h: +0
2024-02-01 08:59:55 statPressureTendency3h +1
2024-02-01 09:02:42 transmission-state incoming publish received
helper:
_98_statistics Statistics
message_ids:
sets:
subscribe:
/Gartenhaus/Converter
/Gartenhaus/Count_Rain
/Gartenhaus/Count_Wind
/Gartenhaus/Humidity
/Gartenhaus/IR
/Gartenhaus/Lueftung
/Gartenhaus/Pressure
/Gartenhaus/Temperature
/Gartenhaus/Voltage
subscribeExpr:
^\/Gartenhaus\/Converter$
^\/Gartenhaus\/Count_Rain$
^\/Gartenhaus\/Count_Wind$
^\/Gartenhaus\/Humidity$
^\/Gartenhaus\/IR$
^\/Gartenhaus\/Lueftung$
^\/Gartenhaus\/Pressure$
^\/Gartenhaus\/Temperature$
^\/Gartenhaus\/Voltage$
subscribeQos:
/Gartenhaus/Converter 0
/Gartenhaus/Count_Rain 0
/Gartenhaus/Count_Wind 0
/Gartenhaus/Humidity 0
/Gartenhaus/IR 0
/Gartenhaus/Lueftung 0
/Gartenhaus/Pressure 0
/Gartenhaus/Temperature 0
/Gartenhaus/Voltage 0
subscribeReadings:
/Gartenhaus/Converter:
cmd
name Converter
/Gartenhaus/Count_Rain:
cmd
name Count_Rain
/Gartenhaus/Count_Wind:
cmd
name Count_Wind
/Gartenhaus/Humidity:
cmd
name Humidity
/Gartenhaus/IR:
cmd
name IR
/Gartenhaus/Lueftung:
cmd
name Lueftung
/Gartenhaus/Pressure:
cmd
name Pressure
/Gartenhaus/Temperature:
cmd
name Temperature
/Gartenhaus/Voltage:
cmd
name Voltage
Attributes:
IODev MQTT
comment Solarladeregler:
Abschaltung: 10.8 V | Wiedereinschalten: 12.5 V | Boost: 14.3 V | Normalladen (Float): 13.7 V | Ausgleichsladen (EQU): 14.7 V
Default Float von 13.9 V auf 13.7 V geändert
Default Boost von 14.4 V auf 14.3 V geändert
Default Entladeschlußspannung von 11.1 V auf 10.8 V geändert
Default LI auf GEL geändert
Daten zur Ladeendspannung abhängig von eingestellter Batterieart:
Gel-Akku (GEL) Flüssiger Elektrolyt (Li)
Normalladen (float) 13,7 V 13,9 V
Boost-Laden (boost) für 2 h 14,3 V 14,4 V
Ausgleichsladen (equal) für 2 h --- 14,7 V
30 täg. Wartungsladen, 14,3 V 14,7 V
wenn kein Boost bzw Ausgleichsladen
aktiv war (für 2 h)
Aktivierungsschwellen der Ladearten:
SOC Steuerung Spannungssteuerung
Normalladen SOC ≥ 70 % ≥ 12,7 V
Boost-Laden SOC 40 % – 69 % 11,7 V – 12,7 V
Ausgleichsladen SOC < 40 % < 11,7 V (nicht bei GEL )
30-tägiges Wartungsladen, wenn innerhalb 30 Tagen kein Ausgleichs bzw. Boost-Laden aktiv war.
Lastabschaltung
SOC Steuerung Spannungssteuerung
Vorwarnung Lastabschaltung SOC < 40 % < 11,7 V / 23,4 V
Lastabschaltung SOC < 30 % < 11,1 V / 22,2 V
Wiedereinschalten der Last SOC > 50 % > 12,5 V / 25,0 V
Skalierung der Balkenanzeige:
(nur Betriebsart Spannungssteuerung mit Balkenanzeige)
> 13,0 V / 26,0 V 10 Balken
> 12,9 V / 25,8 V 9 Balken
> 12,8 V / 25,6 V 8 Balken
> 12,7 V / 25,4 V 7 Balken
> 12,5 V / 25,0 V 6 Balken
> 12,0 V / 24,0 V 5 Balken
> 11,7 V / 23,4 V 4 Balken
> 11,1 V / 22,2 V 3 Balken
> 11,0 V / 22,0 V 2 Balken
≤ 11,0 V / 22,0 V 1 Balken
Achtung Temperaturausgleich:
0,004 V/K pro Zelle (Referenz 25 Grad)
Macht bei -5 Grad 0,004 * 30 * 6 ==> + 0,72 V höhere Ladespannungen ==> 15,32 V !!! (14,6 + 0,72)
event-aggregator Count_Wind:130:none:max
event-min-interval Windspeed:900,Temperature:900
event-on-change-reading Converter,IR,Windspeed:2,statPressureTendency3h,Lueftung
event-on-update-reading Count_Wind,Voltage,Count_Rain,Rainyear,Raintoday,Rainmonth,Rainmonth_avg,Pressure,Humidity,Temperature
icon control_building_empty
readingsWatcher 900,,Count_Wind
room Garten
stateFormat <div style="text-align:left">Wind: Windspeed km/h</div>
<div style="text-align:left">Temp: Temperature °C</div>
<div style="text-align:left">Luftdruck: Pressure mbar</div>
<div style="text-align:left">Luftdruck Tendenz 3h: statPressureTendency3h mbar</div>
<div style="text-align:left">Batterie: Voltage V</div>
<div style="text-align:left">Regen heute: Raintoday l/qm</div>
<div style="text-align:left">Regen Monat: Rainmonth l/qm</div>
<div style="text-align:left">Regen Jahr: Rainyear l/qm</div>
<div style="text-align:left">DC/AC Konverter: Converter</div>
<div style="text-align:left">Infrarotlicht: IR</div>
<div style="text-align:left">Ventilator: Lueftung</div>
subscribeReading_Converter /Gartenhaus/Converter
subscribeReading_Count_Rain /Gartenhaus/Count_Rain
subscribeReading_Count_Wind /Gartenhaus/Count_Wind
subscribeReading_Humidity /Gartenhaus/Humidity
subscribeReading_IR /Gartenhaus/IR
subscribeReading_Lueftung /Gartenhaus/Lueftung
subscribeReading_Pressure /Gartenhaus/Pressure
subscribeReading_Temperature /Gartenhaus/Temperature
subscribeReading_Voltage /Gartenhaus/Voltage
userReadings Windspeed:Count_Wind.* {sprintf("%.0f",(((ReadingsVal("Gartenhaus","Count_Wind",0)+2)/3)*3.6)/10)} ,
Raintoday:Count_Rain:.[^0].* {sprintf("%.1f",(ReadingsVal("Gartenhaus","Raintoday",0)+ReadingsVal("Gartenhaus","Count_Rain",0)*0.3))} ,
Rainmonth:Count_Rain:.[^0].* {sprintf("%.1f",(ReadingsVal("Gartenhaus","Rainmonth",0)+ReadingsVal("Gartenhaus","Count_Rain",0)*0.3))} ,
Rainyear:Count_Rain:.[^0].* {sprintf("%.1f",(ReadingsVal("Gartenhaus","Rainyear",0)+ReadingsVal("Gartenhaus","Count_Rain",0)*0.3))}
verbose 0
Die Fehlermeldung kommt vermutlich gar nicht aus Deinem addLog(), sondern beispielsweise aus einem SVG plot, der versucht, den geloggten numerischen Wert inklusive dem Zusatz "<< addLog" auf einer numerischen Achse darzustellen.
Natürlich kann das Problem auch an jeder anderen Stelle, an der versucht wird, mit dem geloggten Wert zu rechnen, auftreten - in den meisten Fällen passiert es aber in einem plot.
Zur Verifizierung kannst Du mal stacktrace einschalten, dann siehst Du genau, wo die Warnung ausgelöst wird.
Ok mit stacktrace:
2024.02.01 09:53:48 3: eval: {addLog("Gartenhaus","Voltage","logrn")}
2024.02.01 09:53:48 1: stacktrace:
2024.02.01 09:53:48 1: main::__ANON__ called by (eval 28822) (2)
2024.02.01 09:53:48 1: (eval) called by ./FHEM/33_readingsGroup.pm (357)
2024.02.01 09:53:48 1: main::lookup2 called by ./FHEM/33_readingsGroup.pm (1441)
2024.02.01 09:53:48 1: main::readingsGroup_Notify called by fhem.pl (3985)
2024.02.01 09:53:48 1: main::CallFn called by fhem.pl (3897)
2024.02.01 09:53:48 1: main::DoTrigger called by fhem.pl (3344)
2024.02.01 09:53:48 1: main::CommandTrigger called by fhem.pl (1282)
2024.02.01 09:53:48 1: main::AnalyzeCommand called by fhem.pl (1133)
2024.02.01 09:53:48 1: main::AnalyzeCommandChain called by fhem.pl (4025)
2024.02.01 09:53:48 1: main::fhem called by ./FHEM/99_myUtils.pm (105)
2024.02.01 09:53:48 1: main::addLog called by (eval 28821) (1)
2024.02.01 09:53:48 1: (eval) called by fhem.pl (1177)
2024.02.01 09:53:48 1: main::AnalyzePerlCommand called by fhem.pl (1206)
2024.02.01 09:53:48 1: main::AnalyzeCommand called by fhem.pl (1133)
2024.02.01 09:53:48 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2863)
2024.02.01 09:53:48 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (1025)
2024.02.01 09:53:48 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (609)
2024.02.01 09:53:48 1: main::FW_Read called by fhem.pl (3985)
2024.02.01 09:53:48 1: main::CallFn called by fhem.pl (786)
2024.02.01 09:53:48 1: PERL WARNING: Argument "12.52 << addLog" isn't numeric in numeric gt (>) at (eval 28825) line 8.
2024.02.01 09:53:48 1: stacktrace:
2024.02.01 09:53:48 1: main::__ANON__ called by (eval 28825) (2)
2024.02.01 09:53:48 1: (eval) called by ./FHEM/33_readingsGroup.pm (357)
2024.02.01 09:53:48 1: main::lookup2 called by ./FHEM/33_readingsGroup.pm (1441)
2024.02.01 09:53:48 1: main::readingsGroup_Notify called by fhem.pl (3985)
2024.02.01 09:53:48 1: main::CallFn called by fhem.pl (3897)
2024.02.01 09:53:48 1: main::DoTrigger called by fhem.pl (3344)
2024.02.01 09:53:48 1: main::CommandTrigger called by fhem.pl (1282)
2024.02.01 09:53:48 1: main::AnalyzeCommand called by fhem.pl (1133)
2024.02.01 09:53:48 1: main::AnalyzeCommandChain called by fhem.pl (4025)
2024.02.01 09:53:48 1: main::fhem called by ./FHEM/99_myUtils.pm (105)
2024.02.01 09:53:48 1: main::addLog called by (eval 28821) (1)
2024.02.01 09:53:48 1: (eval) called by fhem.pl (1177)
2024.02.01 09:53:48 1: main::AnalyzePerlCommand called by fhem.pl (1206)
2024.02.01 09:53:48 1: main::AnalyzeCommand called by fhem.pl (1133)
2024.02.01 09:53:48 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2863)
2024.02.01 09:53:48 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (1025)
2024.02.01 09:53:48 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (609)
2024.02.01 09:53:48 1: main::FW_Read called by fhem.pl (3985)
2024.02.01 09:53:48 1: main::CallFn called by fhem.pl (786)
Heißt also eine readingsgroup verursacht das oder ?
Ich habe jetzt mal den valueStyle der readingsGroup geändert:
{
if($READING eq "VOC" && $VALUE > 200 && $VALUE < 400) {'style="color:orange"'}
elsif($READING eq "VOC" && $VALUE > 400) {'style="color:red"'}
elsif($READING eq "co2" && $VALUE > 1500 && $VALUE < 2000) {'style="color:orange"'}
elsif($READING eq "co2" && $VALUE > 2000) {'style="color:red"'}
#elsif($READING eq "Voltage" && $VALUE > 11.5 && $VALUE < 12) {'style="color:orange"'}
#elsif($READING eq "Voltage" && $VALUE < 11.5) {'style="color:red"'}
}
Die ausgesternten zwei Zeilen verursachen wohl das Problem.
Ist schon mal ein guter Hinweis.
Wie kann ich denn die Abfrage ändern, dass das << addLog nicht mehr stört ?
VG Klaus
@betateilchen
Danke für den Hinweis ..
Zitat von: Rampler am 01 Februar 2024, 10:53:38Wie kann ich denn die Abfrage ändern, dass das << addLog nicht mehr stört ?
Gegenfrage: Welchen praktischen Nutzen bringt Dir der Zusatz "<< addLog" im Logfile?
Das Problem in Deiner readingsgroup entsteht ja nicht beim Auslesen des Logfiles, sondern die readingsGroup wird durch Dein "trigger..." zur Aktualisierung angestoßen. Und da ist halt der alphanumerische Anteil beim Wert des readings mit dabei.
Wenn Du das wirklich so machen möchtest, könntest Du per regex den numerischen Teil extrahieren.
Die einfachste Lösung wäre, den sinnfreien Zusatz <<addLog einfach wegzulassen.
JA klar, warum denn eigentlich nicht.
==> Schon ist Ruhe