Hallo ich habe ein Update gemacht und erhalte nun tausende von folgenden Fehlermeldungen:
2023.02.20 19:19:32 1: ERROR evaluating my $CN= $evalSpecials->{'%CN'};my $DEVICE= $evalSpecials->{'%DEVICE'};my $DEVICETYPE=\
$evalSpecials->{'%DEVICETYPE'};my $EVENT= $evalSpecials->{'%EVENT'};my $EVTPART0= $evalSpecials->{'%EVTPART0'};my $IGNORE=\
$evalSpecials->{'%IGNORE'};my $LASTTIMESTAMP= $evalSpecials->{'%LASTTIMESTAMP'};my $LASTVALUE= $evalSpecials->{'%LASTVALUE\
'};my $READING= $evalSpecials->{'%READING'};my $TIMESTAMP= $evalSpecials->{'%TIMESTAMP'};my $UNIT= $evalSpecials->{'%UNIT'}\
;my $VALUE= $evalSpecials->{'%VALUE'};{return undef; {
if (($READING eq "energy" && $VALUE > 10000)
{$IGNORE=1}
}}: syntax error at (eval 486563) line 3, near ")
{"
syntax error at (eval 486563) line 4, near "}}"
2023.02.20 19:19:32 1: ERROR evaluating my $CN= $evalSpecials->{'%CN'};my $DEVICE= $evalSpecials->{'%DEVICE'};my $DEVICETYPE=\
$evalSpecials->{'%DEVICETYPE'};my $EVENT= $evalSpecials->{'%EVENT'};my $EVTPART0= $evalSpecials->{'%EVTPART0'};my $IGNORE=\
$evalSpecials->{'%IGNORE'};my $LASTTIMESTAMP= $evalSpecials->{'%LASTTIMESTAMP'};my $LASTVALUE= $evalSpecials->{'%LASTVALUE\
'};my $READING= $evalSpecials->{'%READING'};my $TIMESTAMP= $evalSpecials->{'%TIMESTAMP'};my $UNIT= $evalSpecials->{'%UNIT'}\
;my $VALUE= $evalSpecials->{'%VALUE'};{return undef; {
if (($READING eq "energy" && $VALUE > 10000)
{$IGNORE=1}
}}: syntax error at (eval 486564) line 3, near ")
{"
syntax error at (eval 486564) line 4, near "}}"
Kann mir jemand helfen
Danke
Vermutlich hast Du eine Ausschlußklausel eingebaut, die das Loggen eines zu hohen Wertes an einem Energiemessgerät verhindern soll. In dieser Funktion ist ein Syntaxfehler.
Mit dem durchgeführten Update dürfte das eher wenig zu tun haben.
Stimme betateilchen zu .... und
ich glaube in deinem DbLog Attribut valueFn (oder DbLogValueFn) ist eine öffnende Klammer zuviel wenn ich mich nicht täusche:
if (($READING eq "energy" && $VALUE > 10000)
....
Hi,
ich habe anscheinend den fehlerhaften Eintrag nach Update gefunden.
Er lautet:
attr DBLogging valueFn {\
if (($READING eq "energy" && $VALUE > 10000) \
{$IGNORE=1}\
}
Ich weiss beim besten Willen nicht was diese Anweisung macht. Gibt es das IGNORE nicht mehr?
Komischerweise hat es wohl nach dem Update das DBLogging an den Anfang meiner fhem.cfg verschoben.
Ist das so gewollt oder was ist hier die Ursache.
#######################################################################
########################## DB LOGGING #########################
#######################################################################
define DBLogging DbLog /opt/fhem/contrib/dblog/db.conf .*:.*
attr DBLogging DbLogExclude .*
attr DBLogging DbLogSelectionMode Include
attr DBLogging DbLogType Current/History
attr DBLogging alias Database-Log
attr DBLogging asyncMode 1
attr DBLogging cacheLimit 100
attr DBLogging group Grp-Logging
attr DBLogging icon system_backup
attr DBLogging room 9.7_Logging
attr DBLogging syncInterval 15
attr DBLogging valueFn {\
if (($READING eq "energy" && $VALUE > 10000) \
{$IGNORE=1}\
}
Danke für Eure Antworten,
es trifft genau das was ich wohl implementiert hatte. und eine Klammer fehlt auch.
Weiss auch nicht wie diese weggekommen ist.
Gruss Andreas
Zitat
Komischerweise hat es wohl nach dem Update das DBLogging an den Anfang meiner fhem.cfg verschoben.
Ist das so gewollt oder was ist hier die Ursache.
Ja das ist so gewollt. Hat etwas mit der Architektur von DbLog seit der Version 5.X.X zu tun.
Zitat von: Hackstall am 20 Februar 2023, 19:53:37
und eine Klammer fehlt auch.
Da hat keine Klammer gefehlt, sondern es war eine zuviel.
Hat Heiko ja oben schon beschrieben.