Hallo zusmmen,
Seit dem letzten update was ich durchgeführt habe, sind im Log jede Menge Fehlermeldungen die mir leider nicht viel sagen.
Use of uninitialized value $value in concatenation (.) or string at FHEM/Unit.pm line 4394.
Dasa ganze log ist voll davon und zwischen drinn kommt ein paar mal folgfemder Eintrag
^* matches null string many times in regex; marked by <-- HERE in m/^* <-- HERE .$/ at ./FHEM/93_DbLog.pm line 1058
Hoffe irgendeiner hat eine Idee wie ich das behiben bekomme....
Gruß
Markus
Du scheinst eine kaputte/unsinnige regexp zu verwenden, die mit * beginnt.
Okay, aber das hatte ich vor dem Update nicht....
Wurde da irgendwas geändert in den Modulen Unit oder DBlog?
Und wie kann ich rausfinden welche das/ wo ist?
Kann es eventuell and den DBLogExclude Attributen liegen? Da hab ich irgen´dwie durcheinander in ein paar devices.
Manchmal habe ich DbLogExclude .* und dann habe ich drei devices gefunden die haben DbLogExclude *.
Gruß
Markus
Zitat von: Markus. am 04 April 2017, 07:44:18
Wurde da irgendwas geändert in den Modulen Unit oder DBlog?
Schau selbst nach: https://forum.fhem.de/index.php/board,57.0.html
Zitat
Und wie kann ich rausfinden welche das/ wo ist?
zB. mit grep nach "*" in Deiner .cfg suchen und ggf. noch weiter filtern...
Zitat
DbLogExclude *.
Kaputt/unsinnnig
Bei mir wird seit dem Update am 04.03. das Log immer mit der gleichen Zeile vollgemüllt:
Use of uninitialized value $value in concatenation (.) or string at FHEM/Unit.pm line 4394.
Weiter nichts. Leider finde ich bis her auch keinen Ansatz den Fehler einzugrenzen.
Die letzte Änderung in Unit.pm war im Januar. Daran liegt es vermutlich eher nicht.
https://forum.fhem.de/index.php/topic,66009.msg572643.html#msg572643
Kann mir einer der Profis noch einen Tip geben wo ich suchen muss?
Gruss
Enno
Zitat von: enno am 04 April 2017, 09:02:52
Kann mir einer der Profis noch einen Tip geben wo ich suchen muss?
Ja, in FHEM/Unit.pm Zeile 4394...
Im Ernst: Kannst Du mal diese Zeile und 20 Zeilen vorher und nachher hier reinstellen? Das würde es einfacher machen.
Gruß,
Thorsten
Zeile 4394 ist:
unless ( defined($value) && looks_like_number($value) ) {
und hier etwas mehr drum herum:
################################################################
# Generalized function for DbLog rtype support
sub Unit_DbLog_split($$) {
my ( $event, $name ) = @_;
my ( $reading, $value, $unit ) = "";
# exclude any multi-value events
if ( $event =~ /(.*: +.*: +.*)+/ ) {
Log3 $name, 5,
"Unit_DbLog_split $name: Ignoring multi-value event $event";
return undef;
}
# exclude sum/cum and avg events
elsif ( $event =~ /^.*(min|max|avg|sum|cum|avg\d+m|sum\d+m|cum\d+m): +.*/ )
{
Log3 $name, 5, "Unit_DbLog_split $name: Ignoring sum/avg event $event";
return undef;
}
# automatic text conversions through reading type
elsif ( $event =~ /^(.+): +(\S+) *(.*)/ ) {
$reading = $1;
my ( $txt, $txt_long, $val, $val_num, $symbol ) =
formatReading( $name, $reading, "" );
if ( defined($txt) && defined($reading) && defined($val) ) {
$txt =~ s/[\s\u202F\u00A0]*$val[\s\u202F\u00A0]*//;
$value = $val;
if ( !looks_like_number($val) && defined($val_num) ) {
if ( ref($val_num) eq "ARRAY" ) {
$value = $val_num->[1];
}
else {
$value = $val_num;
}
}
$unit = defined($symbol) ? $symbol : $txt;
}
}
# general event handling
if ( !defined($value)
&& $event =~
/^(.+): +[\D]*(\d+\.?\d*)[\s\u202F\u00A0]*[\[\{\(]?[\s\u202F\u00A0]*([\w\°\%\^\/\\]*).*/
&& defined($1)
&& defined($2) )
{
$reading = $1;
$value = ReadingsNum( $name, $1, $2 );
$unit = defined($3) ? $3 : "";
}
unless ( defined($value) && looks_like_number($value) ) {
Unit_Log3( $name, $reading, undef, 10,
"Unit_DbLog_split $name: Ignoring event $event: value $value does not look like a number"
);
return undef;
}
Unit_Log3( $name, $reading, undef, 9,
"Unit_DbLog_split $name: Splitting event $event > reading=$reading value=$value unit=$unit"
);
return ( $reading, $value, $unit );
}
Hi,
da sehen mir ein paar Sachen komisch aus... Schau mal in der MAINTAINER.txt nach, wo das Unterforum für Unit.pm ist und verschiebe dahin.
Gruß,
Thorsten
Die letzte Änderung war von Loredo. Da ich nicht verschieben kann, habe ich ihm mal eine Nachricht geschickt.
Gruss
Enno
Du scheinst Werte per DbLog loggen zu wollen, die keine Zahl sind (bzw. hast du solche Readings über DbLogInclude o.ä. mit reingenommen, z.B. weil du .* als Wert für das Attribut verwendest). Das ist aus Performance Gründen nicht unbedingt zu empfehlen und fällt nun zufälligerweise auf.
Ich habe einen Patch eingecheckt, der die Meldung zumindest unterdrückt.
Hallo Loredo,
ich habe folgendes reading bei einem device das mit DBlog geloggt wird
volt 24.7�C (Volt)
Für einen Plot werte ich es folgendermaßen aus
logdb:Temp_Aqua::::$val=~s/([\d.]*).*/$1/;
Kann es sein das die Meldung bei mir daher kommt?
Gruß
Markus
Hallo Loredo,
Das scheint es bei mir gewesen zu sein.
Ich habe einen Homematic Bewegungsmelder mit DbLogInclude auf ein nicht (mehr) definiertes Reading. Nachdem ich das gelöscht hatte war Ruhe.
Wieder etwas gelernt. Bedanke mich bei allen für die super schnelle Hilfe :)
Und wie bekomme ich jetzt heraus wo der Fehler liegt? Habe kein Reading gefunden welches geloggt werden soll und nicht mehr vorhanden ist. Und wie bekommt man denn den Patch? Über update ist noch nichts vorhanden.
Gruß
Markus
Updates ab 7:46
Gruß
Julian
Suupi geht wieder...
Aber wie bekomme ich den raus welches Reading da rum zickt??
Gruß
Markus
Wenn diese Funktion nicht vorhanden ist, wäre das ein Feature Request für das DbLog Modul.