FHEM Forum

FHEM => Sonstiges => Thema gestartet von: franky08 am 19 Juli 2016, 10:39:17

Titel: [gelöst] "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 19 Juli 2016, 10:39:17
Seit einiger Zeit erhalte ich diese Meldung im Log:
fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.

Hatte zum aufspüren mal über 4 Stunden stacktrace auf enable und verbose auf 5 gesetzt aber in diesem Zeitraum ist die Meldung scheinbar nicht aufgetreten da die Logdatei auf 200 MB angewachsen ist habe ich verbose wieder auf 3 gesetzt.
Kann ich das sonst noch irgendwie eingrenzen oder ist die Meldung bekannt. Dachte erst das es ebenfalls mit dem Precence Modul zusammenhängt, dieses wurde aber schon gestern oder vorgestern gefixt.

VG
Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: rudolfkoenig am 19 Juli 2016, 14:32:19
Da ruft wer InternalVal() auf, und hat vergessen neben Device-Namen den Namen des gesuchten Eintrags (2. Parameter) anzugeben.
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 19 Juli 2016, 15:26:35
Danke Rudi. Hab ich eine Möglichkeit das Modul ausfindig zu machen? Wie schon geschrieben hat mich stactrace da nicht weiter gebracht.

VG
Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: rudolfkoenig am 19 Juli 2016, 15:44:23
Muesste eins der folgenden sein:
Zitat00_HMLAN.pm
00_HMUARTLGW.pm
02_RSS.pm
10_CUL_HM.pm
21_SONOSPLAYER.pm
36_JeeLink.pm
51_Netzer.pm
51_RPI_GPIO.pm
53_GHoma.pm
55_InfoPanel.pm
70_BRAVIA.pm
95_FLOORPLAN.pm
98_HMinfo.pm
98_HTTPMOD.pm
98_MaxScanner.pm
98_SVG.pm
98_rssFeed.pm
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 19 Juli 2016, 16:01:28
Ich denke dann kommt nur 10_CUL_HM.pm in Frage, Martin hatte da eine neue Version eingecheckt und vor dem update des Kandidaten trat die Meldung nicht auf. Werde das heute Abend mal prüfen.

Edit: HMinfo wurde nicht geändert, nur 10_CUL_HM.pm und HMConfig

VG
Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 19 Juli 2016, 21:00:11
Hallo Rudi, habe es jetzt einmal mit älteren Versionen von 98_SVG.pm, 10_CUL_HM.pm, 98_HMinfo.pm, 95_FLOORPLAN.pm und 00_HMLAN.pm durchgespielt. Die anderen von dir genannten Module nutze ich nicht (außer HTTPMOD.pm, da war aber die letzte Änderung schon am 2016-06-19). Leider taucht die Meldung immer noch auf.

VG
Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 20 Juli 2016, 17:26:15
Leider habe ich bis jetzt nicht herausfinden können woher die Meldung nun kommt. Auffällig ist das sich die Meldung im Log zyklisch wiederholt:

[Wed Jul 20 15:11:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.
[Wed Jul 20 15:41:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.
[Wed Jul 20 16:11:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.
[Wed Jul 20 16:41:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.
[Wed Jul 20 17:11:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.


alle 30 min wiederholt sich der Eintrag

VG
Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: dev0 am 20 Juli 2016, 17:49:27
Dann aktiviere doch stacktrace wieder für 30mins.
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 20 Juli 2016, 18:16:24
Das Problem ist das stacktrace da nichts bringt:
[Wed Jul 20 18:11:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.
2016.07.20 18:11:38 5: HMLAN_Send:  HMLAN4 I:K
2016.07.20 18:11:38 5: HMLAN/RAW: /E3490B1,0000,1EB7EA92,FF,FFC0,4EA6413490B1123ABC014600
E123ABC,0000,1EB7EB0C,FF,FFC1,4E8002123ABC3490B100

2016.07.20 18:11:38 5: HMLAN_Parse: HMLAN2 R:E3490B1   stat:0000 t:1EB7EA92 d:FF r:FFC0     m:4E A641 3490B1 123ABC 014600
2016.07.20 18:11:38 5: HMLAN2 dispatch A0C4EA6413490B1123ABC014600::-64:HMLAN2
2016.07.20 18:11:38 5: HMLAN_Parse: HMLAN2 R:E123ABC   stat:0000 t:1EB7EB0C d:FF r:FFC1     m:4E 8002 123ABC 3490B1 00
2016.07.20 18:11:38 5: HMLAN2 dispatch A0A4E8002123ABC3490B100::-63:HMLAN2
2016.07.20 18:11:38 5: HMLAN/RAW: /E3490B1,0000,0E9193FD,FF,FFC0,4EA6413490B1123ABC014600
E123ABC,0000,0E919477,FF,FFC6,4E8002123ABC3490B100
HHM-LAN-IF,03C5,LEQ0640798,2CD8D1,123ABC,0E9194FC,0006,01


Hier: 18:11:38 2016 die Meldung im Log aber nichts von stacktrace
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: dev0 am 20 Juli 2016, 18:24:43
Ist denn direkt vor/nach der Meldung, mit verbose 5, immer das gleiche Modul beteiligt? Ich würde noch msec fürs log einschalten.
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 20 Juli 2016, 18:47:25
Jetzt komme ich der Sache näher  ;)
Immer vor der Meldung taucht im Log folgendes auf:

2016.07.20 18:41:36.073 5: ABFALL_Notify(myAbfall)
[Wed Jul 20 18:41:38 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3733.



Das wiederholt sich, scheint also das ABFALL Modul zu sein?

Edit 2: Das Abfall Modul hängt ja am Calendar Modul, vlt. sollte ich da mal weiter suchen

VG
Frank

P.S. spiele jetzt mal eine ältere Modul Version ein, das kann es aber nicht sein, da das Modul seit Februar nicht geändert wurde
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 21 Juli 2016, 17:14:19
Hat vlt. noch jemand einen Tipp wie ich dem Verursacher auf die Spur kommen kann? Leider weiß ich nicht wo ich noch suchen soll, habe nun schon ältere Module getestet, devices auf disable gesetzt welche zyklisch alle 30min abgefragt werden usw.
Da kein anderer User, im Forum, etwas in der Richtung meldet, könnte es vlt. auch eine andere Ursache als ein Modul haben? In meinen 99_myUtils Codes kann ich leider auch nichts finden.

Bin für jeden weiterführenden Rat dankbar.

VG
Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: dev0 am 21 Juli 2016, 17:50:55
Ob disable=1 wirklich bei allen Modulen so wirkt, wie du es erwartest?
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: frank am 21 Juli 2016, 17:56:56
Zitat von: rudolfkoenig am 19 Juli 2016, 14:32:19
Da ruft wer InternalVal() auf, und hat vergessen neben Device-Namen den Namen des gesuchten Eintrags (2. Parameter) anzugeben.

das ist diese sub in fhem.pl

sub
InternalVal($$$)
{
  my ($d,$n,$default) = @_;
  if(defined($defs{$d}) &&
     defined($defs{$d}{$n})) {
     return $defs{$d}{$n};
  }
  return $default;
}


$d müsste dann das device sein. ich würde über die if-zeile mal zb folgende zeile einbauen:

Log (1, "----- test ----- device: ".$d) if(!defined($n));
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 21 Juli 2016, 18:57:55
Nach einem erneuten shutdown restart ist mir eben aufgefallen das sämtliche setList Attribute aus meinem fhem verschwunden sind, hat zwar mit dem Thema nichts zu tun, ist aber ärgerlich  ;)

P.S. die Attribute sind noch da aber das Dropdown Menü zur Auswahl wird nicht mehr angezeigt

Edit2: Merke! editiere nicht die fhem.pl, dass kann seltsame Effekte haben! Nachdem ich die Log Anweisung wieder rausgenommen habe, funktionieren die setList Dropdown´s auch wieder ???

Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: frank am 21 Juli 2016, 22:09:41
ZitatP.S. die Attribute sind noch da aber das Dropdown Menü zur Auswahl wird nicht mehr angezeigt
was hast du getan?  :)

ich habe es gerade probiert und die codezeile aus dem thread eingebaut. alle attribute sind da und selektierbar.
ich kann nur den fehler nicht provozieren, damit die logausgabe anspringt.

wenn ich sowas in der art die cmdzeile eingebe
{InternalVal("IT_Lampe_SZ",,"hallo")}
gibt es natürlich gleich schon gemeckere und es wird nicht ausgeführt.

gruss frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 21 Juli 2016, 22:18:36
Hab es gerade mal umgebaut, d.h. die Bedingung vorangestellt :
if(!defined($n)) {
Log (1, "----- test1 ----- device: ".$d);
}


warte jetzt auf die erste Meldung, dauert immer 30 min Hatte vorhin
Log (1, "----- test ----- device: ".$d) if(!defined($n));

vor dem if... in der fhem.pl und damit waren seltsamerweise keine DropDown's mehr auswählbar.

Habe es auch mal in ReadingsVal reingenommen, mir scheint es ehr, dass die Meldung daher kommt:
sub
InternalVal($$$)
{
  my ($d,$n,$default) = @_;
if(!defined($n)) {
Log (1, "----- test1 ----- device: ".$d);
}
  if(defined($defs{$d}) &&
     defined($defs{$d}{$n})) {
     return $defs{$d}{$n};
  }
  return $default;
}

sub
ReadingsVal($$$)
{
  my ($d,$n,$default) = @_;
  if(!defined($n)) {
Log (1, "----- test2 ----- device: ".$d);
}
  if(defined($defs{$d}) &&
     defined($defs{$d}{READINGS}) &&
     defined($defs{$d}{READINGS}{$n}) &&
     defined($defs{$d}{READINGS}{$n}{VAL})) {
     return $defs{$d}{READINGS}{$n}{VAL};
  }
  return $default;
}

sub
ReadingsNum($$$)
{
  my ($d,$n,$default) = @_;
  my $val = ReadingsVal($d,$n,$default);
  $val =~ s/[^-\.\d]//g;
  return $val;
}
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: frank am 21 Juli 2016, 22:32:12
ich habe den fehler jetzt simulieren können und meine logzeile, wie oben beschrieben, hat ausgelöst.  :)

2016.07.21 22:19:07.659 1 : ----- test ----- device: IT_Lampe_SZ
2016.07.21 22:19:07.662 1 : PERL WARNING: Use of uninitialized value $n in hash element at fhem.pl line 3694.


allerdings ist das natürlich nicht das device, welches die funktion aufruft, sondern leider nur das device, welches in der funktion InternalVal angegeben ist. vielleicht hilft das ja trotzdem bei der "findung".
aber sicherlich gibt es auch noch informativere "einbauten".

ausgelöst habe ich es mit einem notify und dann auf save config geklickt:
global:SAVE {
my $a1 = InternalVal("IT_Lampe_SZ",undef,"hallo");
Log(1, "das ist ein test");
}


Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 21 Juli 2016, 22:34:43
Hab ich auch gerade gesehen (die 30 min sind um  :)  )
2016.07.21 22:28:31 1: ----- test2 ----- device: UV_Lampe
[Thu Jul 21 22:28:31 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3739.


Da hier aber test2 steht, kommt aus aus ReadingsVal

Nu fragt sich der User wo bei einem Schaltaktor ReadingsVal herkommen soll
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: frank am 21 Juli 2016, 22:40:33
in deinem ersten post war es aber die zeile 3733.

du scheinst jetzt ja aber mehr eingebaut zu haben.  :)
ZitatEdit2: Merke! editiere nicht die fhem.pl,
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 21 Juli 2016, 22:49:56
Durch die Log Zeilen hat sich das verschoben.
Das device ist ein HM Aktor an dem eine UV Lampe (Mückenkiller) hängt. Gestartet wird das Ganze über die Außentemperatur ( da kommt wahrscheinlich das ReadingsVal her, da ich damit den Temperatursensor im Garten abfrage). Ich werde morgen den Code mal umbauen ( ist unnötig dämlich gemacht und ginge über ein at mit Bedingung der Temperatur einfacher), jetzt frage ich ab einer bestimmten Außentemperatur (vorher gibt es keine Mücken) alle 30 min ab ob die Temperatur noch im Schaltbereich liegt und dann über disable 1 oder 0 wird der Schaltaktor ein oder ausgeschaltet.

+*00:10:00 {if(ReadingsVal("Temperatur_Garten","temperature",99)>25) {fhem ("set UV_Lampe on")}else {fhem ("attr UV_Lampe_on disable 1")}}

Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 22 Juli 2016, 09:12:16
Sooo, jetzt habe ich die Steuerung der UV Lampe in eine sub ausgelagert, getriggert wird über notify auf den Außentemperatursensor:
define UV_Lampe_nty notify Temperatur_Garten:temperature.* {UV_Licht}

die sub:
sub UV_Licht()
        {
    my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;

my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);

my $zeit_1 = sprintf("Es ist %02d:%02d Uhr",
   $Stunden,
   $Minuten,
);
my $hour = $Stunden;

my $tempuv = ReadingsVal("Temperatur_Garten","temperature",0);
if ($tempuv > 25 && ($hour >= 14 && $hour < 20)) {
fhem "set UV_Lampe on"
} else {
if (Value("UV_Lampe") eq "on") {
fhem "set UV_Lampe off"
}
    }
        }


Die Time Geschichte am Anfang der sub ist drin weil ich auf die Schnelle an $hour kommen wollte und ich aus einer anderen sub den Code schnell mal reinkopiert habe.

Auch mit dem ausgelagerten Code bekomme ich im Log:
2016.07.22 08:58:31 1: ----- test2 ----- device: UV_Lampe
[Fri Jul 22 08:58:31 2016] fhem.pl: Use of uninitialized value $n in hash element at fhem.pl line 3739.


Nun bin ich mit meinem Latein am Ende, "test2" sagt das die Meldung aus ReadingsVal kommt aber was stimmt da nicht an

my $blabla = ReadingsVal("Temperatur_Garten","temperature",0);

da kann man ja nun nichts falsch machen ????

P.S. selbst wenn ich das notify disable taucht die Meldung im Log auf

?????

VG
der ratlose Frank
Titel: Antw:Neu im Log: "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: franky08 am 22 Juli 2016, 11:34:36
So, jetzt hab ich's  ;D

Die Meldung kommt aus dem device "UV_Lampe", soviel war ja nun schon bekannt. Im device war irgendwie das Attribut "peerIDs 00000000" verschwunden! Ein erneutes drüber pairen hat das Attribut erneut gesetzt und die Meldung taucht seit einer Stunde nicht mehr auf.

VG
Frank
Titel: Antw:[gelöst] "fhem.pl: Use of uninitialized value $n in hash element at fhem.pl"
Beitrag von: frank am 22 Juli 2016, 11:59:06
ZitatEin erneutes drüber pairen hat das Attribut erneut gesetzt und die Meldung taucht seit einer Stunde nicht mehr auf.
schon ein seltsamer zusammenhang.
hoffentlich bleibt es so!  8)