Hallo,
ich bekomme im Log diese Warnmeldung:
2014.12.04 17:10:30.732 1: PERL WARNING: substr outside of string at fhem.pl line 630.
In Line 630 steht bei mir in der fhem.pl
$hash->{$wbName} = substr($wb, $ret);
Was ist der Fehler?
Danke
Hallo,
mal so ein paar Tipps:
Meist sind es ja die eigenen Daten, die nicht stimmen und zu Warnungen in anderen Modulen führen.
1. Schau erst einmal, welche subroutine da in der fhem.pl aufgerufen wird.
2. Da werden ja Parameter an die Subroutine übergeben.
Man könnte diese ja mal ausgeben und schauen, bei welchem Objekt Deines fhem-Baums die Warnung auftritt.
Wenn $hash der Zeiger auf das Objekt ist, dann enthält $hash->{NAME} den Namen des Objektes.
Und so kann man sich durchhangeln und herausfinden, was an seinen Daten wohl falsch sein könnte.
So allgemein, wie Du die Frage da oben gestellt hast, kann die keiner beantworeten, da müsste er schon Hellseher sein.
Gruß
Elektrolurch
Zitat von: Elektrolurch am 04 Dezember 2014, 18:36:30
Hallo,
mal so ein paar Tipps:
Meist sind es ja die eigenen Daten, die nicht stimmen und zu Warnungen in anderen Modulen führen.
1. Schau erst einmal, welche subroutine da in der fhem.pl aufgerufen wird.
2. Da werden ja Parameter an die Subroutine übergeben.
Man könnte diese ja mal ausgeben und schauen, bei welchem Objekt Deines fhem-Baums die Warnung auftritt.
Wenn $hash der Zeiger auf das Objekt ist, dann enthält $hash->{NAME} den Namen des Objektes.
Und so kann man sich durchhangeln und herausfinden, was an seinen Daten wohl falsch sein könnte.
So allgemein, wie Du die Frage da oben gestellt hast, kann die keiner beantworeten, da müsste er schon Hellseher sein.
Gruß
Elektrolurch
Hallo Elektrolurch,
das will ich gerne tun, ich hoffe ich hab dich richtig verstanden, die letzte deklarierte sub vor line 630 ist diese:
################################################
# Main Loop
sub MAIN {MAIN:}; #Dummy
Und zu 2. wie müsste ich da genau vorgehen?
Auch keine einfache Geschichte.
Bitte vor der Zeile 630 folgende Zeile einfuegen:
Log(1, "WB PROBLEM: $ret,".length($wb)) if(length($wb) < $ret);
und falls sie aufgerufen wird, bitte hier melden.
Hab deine Zeile eingefügt, und wede gucken was passiert.
Danke
Hab den Fehler heute wieder:
2014.12.10 20:15:03.888 1: PERL WARNING: substr outside of string at fhem.pl line 630.
@Rudi, hatte deine Zeile eingefügt, ist aber wohl die Tage mit einem Update überschrieben worden.
Hab sie jetzt nochmal eingefügt
Hallo,
hab auch hier jetzt Fehler, nach dem ich eben ein update und anschließenden shutdown restart durchgeführt habe
2015.01.01 12:28:41.071 3: main::FW_Read called by fhem.pl (2947)
2015.01.01 12:28:41.072 3: main::CallFn called by fhem.pl (606)
Edit
Noch eine Meldung
2015.01.01 19:07:11.160 1: PERL WARNING: substr outside of string at fhem.pl line 642.
2015.01.01 19:07:11.161 3: stacktrace:
2015.01.01 19:07:11.161 3: main::__ANON__ called by fhem.pl (642)
Edit2
Noch eine Meldung:
2015.01.02 19:43:26.821 1: PERL WARNING: substr outside of string at fhem.pl line 642.
2015.01.02 19:43:26.821 3: stacktrace:
2015.01.02 19:43:26.822 3: main::__ANON__ called by fhem.pl (642)
2015.01.02 19:45:03.367 1: PERL WARNING: substr outside of string at fhem.pl line 642.
2015.01.02 19:45:03.367 3: stacktrace:
2015.01.02 19:45:03.368 3: main::__ANON__ called by fhem.pl (642)
Hi,
hab einen neuen fhem.pl Fehler, wenn ich über mein Boost Button meine HM-CC-RT-DN in den Boost Modus versetze
015.03.12 18:46:10.997 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 927.
2015.03.12 18:46:35.613 1: PERL WARNING: Useless use of reference constructor in void context at (eval 34973) line 1.
2015.03.12 18:46:35.613 3: eval: { \ fhem ("set Heizung_Tuer_ClimRT_tr,HeizungFenster_Clima controlMode boost") ; \ fhem ("define BoostOff at +00:00:10 set Heizung_Tuer_BOOST off")}
2015.03.12 18:46:35.662 3: CUL_HM set Heizung_Tuer_ClimRT_tr controlMode boost
2015.03.12 18:46:35.698 3: CUL_HM set HeizungFenster_Clima controlMode boost
2015.03.12 18:46:35.755 3: BoostModeOn_for10sec return value: SCALAR(0x2c4bcf0)
Der Boost Button siet so aus:
Internals:
NAME Heizung_Tuer_BOOST
NR 66
STATE off
TYPE dummy
Readings:
2015-03-12 18:46:45 state off
Attributes:
devStateIcon off:BoostOff:on on:BoostOn:off
fp_Heizung 328,976,0,,
fp_Wohnzimmer 583,261,0,
group Heizung
room Wohnzimmer,Favourites
webCmd on
wodurch das notify
Internals:
DEF Heizung_Tuer_BOOST:on { \fhem ("set Heizung_Tuer_ClimRT_tr,HeizungFenster_Clima controlMode boost") ; \ fhem ("define BoostOff at +00:00:10 set Heizung_Tuer_BOOST off")}
NAME BoostModeOn_for10sec
NOTIFYDEV Heizung_Tuer_BOOST
NR 67
NTFY_ORDER 50-BoostModeOn_for10sec
REGEXP Heizung_Tuer_BOOST:on
STATE active
TYPE notify
Readings:
2015-03-12 21:18:05 state active
Attributes:
aufgerufen wird,
Die Ursache der Meldung sind die ueberfluessigen \.
\fhem bedeutet: "gib mir die Adresse der Funktion fhem".
In diesem Zusammenhang ist das nach Ansicht des Perl Interpreters sinnlos, und ich kann das nachvollziehen.
Weiterhin ist Perl mAn hier ueberfluessig:
define BoostModeOn_for10sec notify Heizung_Tuer_BOOST:on set Heizung_Tuer_ClimRT_tr,HeizungFenster_Clima controlMode boost;; sleep 10;; set Heizung_Tuer_BOOST off
Hallo,
bekomme dann diese Log Meldung:
Zitat2015.03.13 19:57:10.780 3: BoostModeOn_for10sec return value: controlMode requires parameter: [auto|manual|boost|day|night]
controlMode requires parameter: [auto|manual|boost|day|night]
Dann wird der boost Parameter nicht richtig erkannt
sieht mir nach einem Fehler in der devspec Auswertung aus, die dazu führt, dass nicht alle übergebenen Parameter weitergegeben werden...
Zitat von: betateilchen am 13 März 2015, 20:06:02
sieht mir nach einem Fehler in der devspec Auswertung aus, die dazu führt, dass nicht alle übergebenen Parameter weitergegeben werden...
Das bedeutet? :-)
Hab aber jetzt mal wie Rudi meine die
Zitat\
entfernt, und dann kommt im Log keine Warnung mehr, sondern nur noch
2015.03.13 20:06:27.663 3: CUL_HM set Heizung_Tuer_ClimRT_tr controlMode boost
2015.03.13 20:06:27.700 3: CUL_HM set HeizungFenster_Clima controlMode boost
Wobei ich die Meldung bei verbose 3 im Log auch nicht ganz verstehen kann!?
das ist einfach die Bestätigung, dass die Befehle ausgeführt wurden - was verstehst Du daran nicht?
Ok, war falsch war der Meinung bei verbose 3 würden nur die Fehler Protokolliert, aber werden ja auch die Events Protokolliert, sorry
Hi,
hab seit heute plötzlich diese Meldungen im Log, kann die aber noch nicht wirklich zuordnen
2015.03.27 14:11:19.184 2: Can't find string terminator '"' anywhere before EOF at (eval 23596) line 1.
2015.03.27 14:11:19.188 2: Can't find string terminator '"' anywhere before EOF at (eval 23597) line 1.
2015.03.27 14:11:19.191 2: Can't find string terminator '"' anywhere before EOF at (eval 23598) line 1.
2015.03.27 14:11:19.191 2: Can't find string terminator '"' anywhere before EOF at (eval 23599) line 1.
2015.03.27 16:40:31.598 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 928.
Letztes Update von fhem hab ich gestern durchgeführt
Wo die ersten 4 Meldungen herkommen, kann ich nicht sagen, evtl. hilft hier ein "attr global verbose 5", um sie zu lokalisieren.
Die Warnung aus der Zeile 928 besagt, dass irgendein Modul ein fhem-Befehl ohne Inhalt (== undefined) ausfuehren wollte. Vermutlich braucht man auch hier "verbose 5", um weitere Details nennen zu koennen.
Oder attr global stacktrace 1
Hab jetzt mal mit verbose 5 geloggt, dann bekomme ich diese Meldung:
2015.03.28 17:22:10.362 5: ENIGMA2 VU_Ultimo: called function ENIGMA2_Set()
2015.03.28 17:22:10.378 5: ENIGMA2 Uno_Schlafzimmer: called function ENIGMA2_Set()
2015.03.28 17:22:10.387 5: ENIGMA2 Uno_Kellerbar: called function ENIGMA2_Set()
2015.03.28 17:22:10.409 4: HTTP FHEMWEB:192.168.188.73:51606 GET /fhem/floorplan/Gaeste_WC1
2015.03.28 17:22:10.411 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 928.
2015.03.28 17:22:10.412 5: Cmd: ><
2015.03.28 17:22:10.453 2: Can't find string terminator '"' anywhere before EOF at (eval 133) line 1.
2015.03.28 17:22:10.454 2: Can't find string terminator '"' anywhere before EOF at (eval 134) line 1.
2015.03.28 17:22:10.458 2: Can't find string terminator '"' anywhere before EOF at (eval 135) line 1.
2015.03.28 17:22:10.459 2: Can't find string terminator '"' anywhere before EOF at (eval 136) line 1.
2015.03.28 17:22:10.558 4: Ignoring unknown_2D5FAB
2015.03.28 17:22:10.574 4: 6658:FHEMWEB:192.168.188.73:51606: /fhem/floorplan/Gaeste_WC1 / RL:4763 / text/html; charset=UTF-8 / Content-Encoding: gzip
Wenn ich zusätzlich stacktrace aktiviere bekomme ich noch das:
2015.03.28 17:27:35.774 4: HTTP FHEMWEB:192.168.188.73:51726 GET /fhem/floorplan/Gaeste_WC1
2015.03.28 17:27:35.776 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 928.
2015.03.28 17:27:35.777 3: stacktrace:
2015.03.28 17:27:35.777 3: main::__ANON__ called by fhem.pl (928)
2015.03.28 17:27:35.777 3: main::AnalyzeCommand called by ./FHEM/95_FLOORPLAN.pm (345)
2015.03.28 17:27:35.778 3: main::FP_CGI called by ./FHEM/01_FHEMWEB.pm (649)
2015.03.28 17:27:35.778 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (424)
2015.03.28 17:27:35.778 3: main::FW_Read called by fhem.pl (2963)
2015.03.28 17:27:35.778 3: main::CallFn called by fhem.pl (607)
2015.03.28 17:27:35.779 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 928.
2015.03.28 17:27:35.779 3: stacktrace:
2015.03.28 17:27:35.779 3: main::__ANON__ called by fhem.pl (928)
2015.03.28 17:27:35.780 3: main::AnalyzeCommand called by ./FHEM/95_FLOORPLAN.pm (345)
2015.03.28 17:27:35.780 3: main::FP_CGI called by ./FHEM/01_FHEMWEB.pm (649)
2015.03.28 17:27:35.780 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (424)
2015.03.28 17:27:35.781 3: main::FW_Read called by fhem.pl (2963)
2015.03.28 17:27:35.781 3: main::CallFn called by fhem.pl (607)
2015.03.28 17:27:35.781 5: Cmd: ><
2015.03.28 17:27:35.817 2: Can't find string terminator '"' anywhere before EOF at (eval 140) line 1.
2015.03.28 17:27:35.818 2: Can't find string terminator '"' anywhere before EOF at (eval 141) line 1.
2015.03.28 17:27:35.821 2: Can't find string terminator '"' anywhere before EOF at (eval 142) line 1.
2015.03.28 17:27:35.821 2: Can't find string terminator '"' anywhere before EOF at (eval 143) line 1.
2015.03.28 17:27:35.898 4: Ignoring unknown_2D5FAB
2015.03.28 17:27:35.914 4: 7544:FHEMWEB:192.168.188.73:51726: /fhem/floorplan/Gaeste_WC1 / RL:4762 / text/html; charset=UTF-8 / Content-Encoding: gzip
Ich vermute ein FLOORPLAN Issue: FP_digestCGI() liefert "undef" zurueck. Das koennte der Fall sein, wenn irgendwelche Parameter cmd oder cmd.XXX heissen, und kein Argument haben. Mehr Details wuerden wir sehen, wenn du in 01_FHEMWEB $FW_formmethod temporaer von "post" auf "get" umstellst.
Sieht nach einem Fehler im Umfeld floorplan GästeWC aus
Zitat von: rudolfkoenig am 28 März 2015, 20:35:00
Ich vermute ein FLOORPLAN Issue: FP_digestCGI() liefert "undef" zurueck. Das koennte der Fall sein, wenn irgendwelche Parameter cmd oder cmd.XXX heissen, und kein Argument haben. Mehr Details wuerden wir sehen, wenn du in 01_FHEMWEB $FW_formmethod temporaer von "post" auf "get" umstellst.
Hab mal auf "get" umgestellt, Ausgabe ist dann
2015.03.29 11:18:48.565 4: HTTP FHEMWEB:192.168.188.73:49498 GET /fhem/floorplan/Gaeste_WC1
2015.03.29 11:18:48.568 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 928.
2015.03.29 11:18:48.569 3: stacktrace:
2015.03.29 11:18:48.569 3: main::__ANON__ called by fhem.pl (928)
2015.03.29 11:18:48.570 3: main::AnalyzeCommand called by ./FHEM/95_FLOORPLAN.pm (345)
2015.03.29 11:18:48.570 3: main::FP_CGI called by ./FHEM/01_FHEMWEB.pm (649)
2015.03.29 11:18:48.571 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (424)
2015.03.29 11:18:48.571 3: main::FW_Read called by fhem.pl (2963)
2015.03.29 11:18:48.572 3: main::CallFn called by fhem.pl (607)
2015.03.29 11:18:48.572 1: PERL WARNING: Use of uninitialized value $cmd in substitution (s///) at fhem.pl line 928.
2015.03.29 11:18:48.573 3: stacktrace:
2015.03.29 11:18:48.573 3: main::__ANON__ called by fhem.pl (928)
2015.03.29 11:18:48.574 3: main::AnalyzeCommand called by ./FHEM/95_FLOORPLAN.pm (345)
2015.03.29 11:18:48.574 3: main::FP_CGI called by ./FHEM/01_FHEMWEB.pm (649)
2015.03.29 11:18:48.575 3: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (424)
2015.03.29 11:18:48.575 3: main::FW_Read called by fhem.pl (2963)
2015.03.29 11:18:48.576 3: main::CallFn called by fhem.pl (607)
2015.03.29 11:18:48.576 5: Cmd: ><
2015.03.29 11:18:48.618 2: Can't find string terminator '"' anywhere before EOF at (eval 15597) line 1.
2015.03.29 11:18:48.619 2: Can't find string terminator '"' anywhere before EOF at (eval 15598) line 1.
2015.03.29 11:18:48.621 2: Can't find string terminator '"' anywhere before EOF at (eval 15599) line 1.
2015.03.29 11:18:48.622 2: Can't find string terminator '"' anywhere before EOF at (eval 15600) line 1.
2015.03.29 11:18:48.714 4: Ignoring unknown_2D5FAB
2015.03.29 11:18:48.727 4: 7544:FHEMWEB:192.168.188.73:49498: /fhem/floorplan/Gaeste_WC1 / RL:4761 / text/html; charset=UTF-8 / Content-Encoding: gzip
Ist die gleiche Ausgabe wie oben oder?
Ich habe jetzt auch mal ein FLOORPLAN aufgerufen, das Problem kommt bei mir auch, und hat mit
my $commands = FP_digestCgi($htmlpart[1]) if $htmlpart[1]; # analyze URL-commands
my $FP_ret = AnalyzeCommand(undef, $commands,
AttrVal($FW_wname,"allowedCommands",undef)) ; # Execute commands
zu tun: falls $htmlpart[1] nicht definiert ist, ist $commands auch nicht definiert, AnalyzeCommand wird aber aufgerufen.
Ich habe die Warnung in fhem.pl vermieden, allerdings sollte mAn die Ursache in FLOORPLAN behoben werden.
Hallo Rudi, danke für die Hilfe.
Ich habs mal an den FP MT geschickt
Hi,
hab seit gestern einen neue Warnung zur fhem.pl im Log
2015.08.04 00:00:35.203 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:00:35.246 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:00:46.592 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:00:56.710 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:01:49.607 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:02:07.382 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:02:07.430 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:02:52.613 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:02:59.878 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:03:10.477 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:03:39.556 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:03:39.599 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:03:55.627 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:04:58.632 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
2015.08.04 00:05:06.036 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4319.
In der fhem.pl steht in Zeile 4319
Zitat$h->{DBH}->{InactiveDestroy} = 1 if($h->{TYPE} eq 'DbLog');
Die fhem.pl hat die Version
# $Id: fhem.pl 9002 2015-07-29 05:46:10Z rudolfkoenig $
Danke
Zitat:
2015.08.04 00:05:06.036 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line
Hat die Anzahl gleichlautender Meldungen im Log eine Bewandtnis?
Nur um darzulegen das es davon hunderte im Log gibt.
Ich muss mich durch die wild hinein kopierten Log-Auszüge leider per Screenreader durchquälen. Ich würde es daher begrüßen, wenn in den Posts hier nicht einfach hunderte von Zeilen lofile-Auszüge hineinkopiert würden, die keinerlei relevante Informationen enthalten.
Stattdessen könnte man ja auch schreiben:
Die folgende logzeile steht bei mir 100 x Mal....
Viel hilft nicht immer viel...
Das Einstellen der Posts dauert um so länger, je mehr Text drin ist.
Danke fürs Verständnis.
Elektrolurch
Mit der aktuellen fhem.pl kommt die gleiche Warnung nur dann oefters, wenn man "global stacktrace" gesetzt hat.
Und scheinbar wurde in diesem Fall auch noch "global verbose" auf kleiner 3 gestellt, da man sonst den stacktrace sehen wuerde. Das ist zwar alles kein Fehler oder Problem, ich finde es aber merkwuerdig.
Zum Problem: es tritt auf, wenn eine FHEM Definition kein TYPE hat. Welcher das ist, kriegt man z.Bsp. mit
{ join(",", grep { !$defs{$_}{TYPE} } keys %defs) }
raus, das Problem wurde aber hier schon oefter behandelt, es ist entweder ein Modulfehler (unwahrscheinlich), oder ein Benutzerfehler, wenn man auf %defs im eigenen sub/notify zugreift.
Hi,
also ich denke das ich den fehler durch ein "falsches" Löschen des Alarmanlagen moduls ausgelöst habe,
allerdings hab ich
attr global stacktrace 0
und attr global verbose 3
Von daher hätte die Warnung ja nicht öfters kommen dürfen oder!?
Aber seis drum, werde zukünft die Meldung nur einmal Posten, und dazu schreiben das sie häufiger auftriit
Hi,
hab heute morgen plötzlich diese Warnung im Log
2015.08.19 06:59:10.169 1: PERL WARNING: Use of uninitialized value $dev in hash element at fhem.pl line 3379.
Hab fhem gestern aktualisiert
Da wird ReplaceEventMap ohne device aufgerufen.
Liegt nicht an dieser Funktion selbst, diese Zeilen sind seit Jahren unveraendert.
Ich kann das bei mir auch nicht ohne weiteres reproduzieren.
Hallo,
ok, dann werde ich mal versuchen nachzuvollziehen wieso das bei mir plötzlich auftritt.
Danke für den Hinweis
Hi,
find meinen Fehler nicht....
Hab mal stacktrace aktiviert, dann bekomme ich im Log diese Meldung:
2015.08.19 20:46:08.679 1: PERL WARNING: Use of uninitialized value $dev in hash element at fhem.pl line 3379.
2015.08.19 20:46:08.679 3: stacktrace:
2015.08.19 20:46:08.680 3: main::__ANON__ called by fhem.pl (3379)
2015.08.19 20:46:08.680 3: main::ReplaceEventMap called by fhem.pl (3723)
2015.08.19 20:46:08.680 3: main::evalStateFormat called by fhem.pl (3798)
2015.08.19 20:46:08.681 3: main::readingsEndUpdate called by ./FHEM/10_CUL_HM.pm (7534)
2015.08.19 20:46:08.681 3: main::CUL_HM_UpdtReadBulk called by ./FHEM/10_CUL_HM.pm (3266)
2015.08.19 20:46:08.681 3: main::CUL_HM_pushEvnts called by ./FHEM/10_CUL_HM.pm (1308)
2015.08.19 20:46:08.682 3: main::CUL_HM_Parse called by fhem.pl (3184)
2015.08.19 20:46:08.682 3: main::Dispatch called by ./FHEM/00_HMLAN.pm (737)
2015.08.19 20:46:08.682 3: main::HMLAN_Parse called by ./FHEM/00_HMLAN.pm (561)
2015.08.19 20:46:08.682 3: main::HMLAN_Read called by fhem.pl (3046)
2015.08.19 20:46:08.683 3: main::CallFn called by fhem.pl (649)
fhem.pl ist nicht aktuell (sieht man aus der gemeldeten Zeilennumer).
Es handelt sich wohl um ein HomeMatic Geraet. Entweder wird in einem der userReading-Funktionen das CUL_HM Geraet geloescht, oder das HomeMatic Modul generiert Readings/Events fuer ein undefiniertes Geraet. Evtl. hilft "attr global verbose 5" um ein bisschen mehr Info zu sammeln, muss aber nicht sein.
Hi, ich hab im Log plötzlich mal wieder ein paar Warnungen:
2015.11.07 12:12:52.948 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4401.
2015.11.07 12:13:08.164 1: PERL WARNING: Use of uninitialized value in string eq at fhem.pl line 4401
2015.11.07 12:15:29.051 1: PERL WARNING: Use of uninitialized value in numeric comparison (<=>) at fhem.pl line 1250.
bei aktiviertem stacktrace kommt:
2015.11.07 12:19:04.641 3: main::FW_Read called by fhem.pl (3088)
2015.11.07 12:19:04.641 3: main::CallFn called by fhem.pl (652)
Das ist der uebliche Leier: irgendein Geraet ($defs{XX}) wurde ohne TYPE angelegt, vermutlich durch Benutzerfehler. Der fhem-log sollte mit "Error: XX has no TYPE" Meldungen voll sein, man kann das aber auch direkt rauskriegen mit
{ join(",", grep { !$defs{$_}{TYPE} } keys %defs) }
in der FHEM-Kommandozeile
Also
{ join(",", grep { !$defs{$_}{TYPE} } keys %defs) }
liefert keine Ausgabe, aber hast recht, ich hatte heute ein paar Log einträge in :
2015.11.07 12:10:17.701 1: Error: HM_237437 has no TYPE
dabei handelt es sich dann wohl hierrum:
Internals:
DEF 237437
HmLanAdapter_MSGCNT 94
HmLanAdapter_RAWMSG RE30012C3,0001,09A1FD32,FF,FFAE,098002237437000041010100005B
HmLanAdapter_RSSI -82
HmLanAdapter_TIME 2015-11-07 18:30:44
IODev HmLanAdapter
LASTInputDev HmLanAdapter
MSGCNT 94
NAME Funkschalter_Keller_Licht
NR 294
STATE off
TYPE CUL_HM
lastMsg No:09 - t:02 s:237437 d:000041 010100005B
protCmdDel 21
protLastRcv 2015-11-07 18:30:44
protResnd 44 last_at:2015-11-07 18:13:15
protResndFail 14 last_at:2015-11-07 18:11:23
protSnd 108 last_at:2015-11-07 18:30:43
protState CMDs_done
rssi_HmLanAdapter lst:-91 max:-82 avg:-90.88 min:-98 cnt:45
rssi_at_HmLanAdapter lst:-82 cnt:94 avg:-85.73 max:-80 min:-94
CHANGETIME:
Helper:
Dblog:
Devicemsg:
Mydblog:
TIME 1446917444.14714
VALUE off (to vccu)
Level:
Mydblog:
TIME 1446917444.14714
VALUE 0
Levelmissed:
Mydblog:
TIME 1446916396.89391
VALUE desired:0
Pct:
Mydblog:
TIME 1446917444.14714
VALUE 0
Poweron:
Mydblog:
TIME 1446917328.74705
VALUE 2015-11-07 18:28:48
State:
Mydblog:
TIME 1446917444.14714
VALUE off
Timedon:
Mydblog:
TIME 1446917444.14714
VALUE off
Readings:
2015-11-07 18:30:44 CommandAccepted yes
2015-11-07 11:16:01 D-firmware 1.12
2015-11-07 11:16:01 D-serialNr KEQ0631830
2015-11-07 18:28:50 PairedTo 0x000041
2015-11-07 11:16:05 R-pairCentral 0x000041
2015-11-07 11:16:06 R-sign off
2015-11-07 18:28:50 RegL_00: 02:01 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:41 00:00
2015-11-07 18:28:50 RegL_01: 08:00 00:00
2015-11-07 18:30:44 deviceMsg off (to vccu)
2015-11-07 18:30:44 level 0
2015-11-07 18:13:16 levelMissed desired:0
2015-11-07 18:30:44 pct 0
2015-11-07 18:28:48 powerOn 2015-11-07 18:28:48
2015-11-07 18:30:44 recentStateType ack
2015-11-07 18:30:44 state off
2015-11-07 18:30:44 timedOn off
Helper:
HM_CMDNR 9
PONtest 0
cSnd 110000412374370201C80000,110000412374370201000000
dlvlCmd ++A0110000412374370201000000
mId 0004
peerIDsRaw ,00000000
rxType 1
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +237437,00,00,00
nextSend 1446917444.21546
rxt 0
vccu vccu
p:
237437
00
00
00
prefIO:
HmLanAdapter
Mrssi:
mNo 09
Io:
HmLanAdapter -80
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
prs 1
Rssi:
Hmlanadapter:
avg -90.8888888888889
cnt 45
lst -91
max -82
min -98
At_hmlanadapter:
avg -85.7340425531915
cnt 94
lst -82
max -80
min -94
Shadowreg:
Attributes:
IODev HmLanAdapter
IOgrp vccu:HmLanAdapter
autoReadReg 4_reqStatus
expert 2_full
firmware 1.12
model HM-LC-SW1-FM
peerIDs 00000000,
room Kellerflur
serialNr KEQ0631830
subType switch
webCmd statusRequest:toggle:on:off
Den HM-LC-SW1-FM hab ich über ein set HmLanAdapter hmPairSerial KEQ0631830
angelernt
Dann frag mal Martin, ob das Geraet sein TYPE ausleihen kann. Waer mir aber neu.
Wenn du den Raetsel aufloesen kannst, dann bitte berichten.
Gab es derartige Probleme nicht in der Vergangenheit immer mal wieder, wenn HomeMatic-Geräte zu schnell nach dem Anlegen umbenannt wurden (siehe auch hier (http://forum.fhem.de/index.php/topic,43428))?
@Tommy82: hast Du den HM-LC-SW1-FM direkt oder kurz nach dem hmPairSerial umbenannt?
Peter
Hallo Peter,
kurz danach, würde sagen so ca. 10-15 Min danach
@Rudi werd das mal in HM Posten, mal sehn was Martin meint
Hi,
Martin hat da was gefixt, dadurch sollte das nicht mehr vorkommen
http://forum.fhem.de/index.php/topic,43428.0.html
Hi,
hab heute noch mal eine Warnung zu fhem.pl im Log:
016.12.04 21:25:57.099 1: PERL WARNING: substr outside of string at fhem.pl line 717.
2016.12.04 21:25:57.100 1: stacktrace:
2016.12.04 21:25:57.100 1: main::__ANON__ called by fhem.pl (717)
@Tommy82: hat mit den anderen Meldungen nichts zu tun. syswrite(FD, $wb) liefert ein nicht null/undef Wert zurueck, was auch nicht der Laenge des Puffers entspricht, und substr trotzdem nicht gefaellt. Laut Doku liefert syswrite keine negativen Werte zurueck, ich weiss also nicht, wann das vorkommen kann. Da es Performance-kritisch ist, bitte zunaechst selbst testen mit Folgendem, vor substr/Zeile 717 eingefuegt:
Log 1, "ERROR: $ret out of bounds / ".length($wb)" if($ret < 0 || $ret >= length($wb));
Hi,
717 hab ich jetzt so abgeändert:
$hash->{$wbName} = Log 1, "ERROR: $ret out of bounds / ".length($wb)" if($ret < 0 || $ret >= length($wb)); substr($wb, $ret);
mal gucken was passiert.
Allerdings hatte ich vor der änderung noch neue Meldungen im Log:
2016.12.06 06:34:58.876 1: PERL WARNING: Use of uninitialized value $v in sprintf at fhem.pl line 2152.
2016.12.06 06:34:58.877 1: stacktrace:
2016.12.06 06:34:58.877 1: main::__ANON__ called by fhem.pl (2152)
2016.12.06 06:34:58.878 1: main::PrintHash called by fhem.pl (2147)
2016.12.06 06:34:58.878 1: main::PrintHash called by fhem.pl (2147)
2016.12.06 06:34:58.878 1: main::PrintHash called by fhem.pl (2256)
2016.12.06 06:34:58.879 1: main::CommandList called by fhem.pl (1085)
2016.12.06 06:34:58.879 1: main::AnalyzeCommand called by fhem.pl (955)
2016.12.06 06:34:58.879 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2274)
2016.12.06 06:34:58.880 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (765)
2016.12.06 06:34:58.880 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (456)
2016.12.06 06:34:58.880 1: main::FW_Read called by fhem.pl (3264)
2016.12.06 06:34:58.881 1: main::CallFn called by fhem.pl (672)
Da hat irgendein Modulautor undef in einem der Arrays geschrieben.
list gibt ab sofort undef an der Stelle raus. Wenn Du das siehst, bitte Modulautor benachrichtigen.
Hi,
hab dann heute nochmal Meldungen im LOG
2016.12.26 19:06:07.775 1: PERL WARNING: substr outside of string at fhem.pl line 717.
2016.12.26 19:06:07.776 1: stacktrace:
2016.12.26 19:06:07.777 1: main::__ANON__ called by fhem.pl (717)
2016.12.26 19:06:11.195 0: Übergebener channel: Pro7
2016.12.26 19:06:11.196 0: channel ohne _time: Pro7
2016.12.26 19:06:11.196 0: lcchannel: pro7
2016.12.26 19:06:11.197 0: channel aus channellist: ProSieben_HD
2016.12.26 19:06:11.200 3: ENIGMA2 set VU_Ultimo channel ProSieben_HD
2016.12.26 19:06:13.155 1: PERL WARNING: substr outside of string at fhem.pl line 717.
2016.12.26 19:06:13.156 1: stacktrace:
2016.12.26 19:06:13.156 1: main::__ANON__ called by fhem.pl (717)
Da Fernsehe Programme angezeigt werden kann es eigentlich nur mit dem Enigma Modul oder mit dem readingsGroup zusammenhängen welche mir mir das aktuelle TV Programm darstellt welches über HTTPMOD geholt wird
Hi,
hab heute morgen dann nochmal eine Meldung:
2017.01.05 05:51:30.007 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.05 05:51:30.007 1: stacktrace:
2017.01.05 05:51:30.008 1: main::__ANON__ called by fhem.pl (718)
2017.01.05 05:57:29.674 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.05 05:57:29.675 1: stacktrace:
2017.01.05 05:57:29.675 1: main::__ANON__ called by fhem.pl (718)
2017.01.05 06:03:29.836 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.05 06:03:29.837 1: stacktrace:
2017.01.05 06:03:29.837 1: main::__ANON__ called by fhem.pl (718)
Kannst du bitte in Zeile 719 Folgendes einbauen:
Log 1,"STRANGE: $ret vs. ".length($wb) if($ret>=length($wb) || $ret<0);
Hab es eingefügt, sieht dann so aus:
else {
$hash->{$wbName} = substr($wb, $ret);
Log 1,"STRANGE: $ret vs. ".length($wb) if($ret>=length($wb) || $ret<0); }
}/code]
Mal sehen was passiert
Heute habe ich dann nochmal eine Meldung:
2017.01.15 16:42:30.997 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 16:42:30.997 1: stacktrace:
2017.01.15 16:42:30.998 1: main::__ANON__ called by fhem.pl (718)
2017.01.15 16:44:02.767 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 16:44:02.770 1: stacktrace:
2017.01.15 16:44:02.771 1: main::__ANON__ called by fhem.pl (718)
Zweimal } kommt mir komisch vor. Und instinktiv wuerde ich die Pruefung vor der Zeile 719 / substr() einbauen, obwohl ich das nicht begruenden kann. Jedenfalls scheint die Meldung nicht zu kommen, oder du hast es vergessen sie uns mitzuteilen. Und vom stacktrace werde ich nicht wirklich schlau.
Ich hab plötzlich noch mehr Meldungen, es scheint als ob es mit alexa-fhem zusammen hängen würde, da ich da im Moment bei bin, Dummys anzulegen um über das enigma2 Modul Sender umzuschalten
017.01.15 20:12:27.960 1: main::__ANON__ called by fhem.pl (718)
2017.01.15 20:12:49.167 3: ENIGMA2 set VU_Ultimo channel RTL
2017.01.15 20:13:02.768 3: ENIGMA2 set VU_Ultimo channel ProSieben_HD
2017.01.15 20:13:04.654 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 20:13:04.654 1: stacktrace:
2017.01.15 20:13:04.655 1: main::__ANON__ called by fhem.pl (718)
2017.01.15 20:13:04.659 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 20:13:04.659 1: stacktrace:
2017.01.15 20:13:04.660 1: main::__ANON__ called by fhem.pl (718)
2017.01.15 20:13:52.371 3: ENIGMA2 set VU_Ultimo channel RTL
2017.01.15 20:13:54.141 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 20:13:54.142 1: stacktrace:
2017.01.15 20:13:54.142 1: main::__ANON__ called by fhem.pl (718)
2017.01.15 20:13:54.148 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 20:13:54.148 1: stacktrace:
2017.01.15 20:13:54.149 1: main::__ANON__ called by fhem.pl (718)
2017.01.15 20:14:14.418 3: ENIGMA2 set VU_Ultimo channel ProSieben_HD
Oder ist das ein Zufall das sie VU_Ultimo dazwischen auftauchen
Die Zeile 717 sieht jetzt so aus:
else { Log 1,"STRANGE: $ret vs. ".length($wb) if($ret>=length($wb) || $ret<0);
$hash->{$wbName} = substr($wb, $ret);
}
Nach einem Neustart hab ich dann diese Meldung:
2017.01.15 21:02:55.333 1: STRANGE: 9418 vs. 9414
2017.01.15 21:02:55.334 1: PERL WARNING: substr outside of string at fhem.pl line 718.
2017.01.15 21:02:55.335 1: stacktrace:
2017.01.15 21:02:55.335 1: main::__ANON__ called by fhem.pl (718)
Zitat2017.01.15 21:02:55.333 1: STRANGE: 9418 vs. 9414
Das bedeutet, dass syswrite mehr geschrieben hat, als bei der Pruefung danach im Puffer drin war.
Wie das bei einem Single-Threaded Anwendung passieren kann, ist mir ein Raetsel.
Ich habe die Abfrage trotzdem angepasst, die Warnung sollte nicht wieder kommen.
Hallo,
seit dem gestriegen Update habe ich heute Morgen plötzlich diese Meldungen im Log
2019.03.04 05:50:07.422 1: PERL WARNING: Use of uninitialized value $val in substitution (s///) at fhem.pl line 1641.
2019.03.04 05:50:07.422 1: stacktrace:
2019.03.04 05:50:07.423 1: main::__ANON__ called by fhem.pl (1641)
2019.03.04 05:50:07.423 1: main::GetDefAndAttr called by fhem.pl (1725)
2019.03.04 05:50:07.423 1: main::CommandSave called by fhem.pl (1233)
2019.03.04 05:50:07.424 1: main::AnalyzeCommand called by fhem.pl (1079)
2019.03.04 05:50:07.424 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2666)
2019.03.04 05:50:07.424 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (896)
2019.03.04 05:50:07.425 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (567)
2019.03.04 05:50:07.425 1: main::FW_Read called by fhem.pl (3693)
2019.03.04 05:50:07.425 1: main::CallFn called by fhem.pl (742)
2019.03.04 05:50:07.426 1: PERL WARNING: Use of uninitialized value $val in substitution (s///) at fhem.pl line 1642.
2019.03.04 05:50:07.426 1: stacktrace:
2019.03.04 05:50:07.426 1: main::__ANON__ called by fhem.pl (1642)
2019.03.04 05:50:07.427 1: main::GetDefAndAttr called by fhem.pl (1725)
2019.03.04 05:50:07.427 1: main::CommandSave called by fhem.pl (1233)
2019.03.04 05:50:07.427 1: main::AnalyzeCommand called by fhem.pl (1079)
2019.03.04 05:50:07.427 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2666)
2019.03.04 05:50:07.428 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (896)
2019.03.04 05:50:07.428 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (567)
2019.03.04 05:50:07.428 1: main::FW_Read called by fhem.pl (3693)
2019.03.04 05:50:07.429 1: main::CallFn called by fhem.pl (742)
2019.03.04 05:50:07.429 1: PERL WARNING: Use of uninitialized value $val in concatenation (.) or string at fhem.pl line 1643.
2019.03.04 05:50:07.429 1: stacktrace:
2019.03.04 05:50:07.429 1: main::__ANON__ called by fhem.pl (1643)
2019.03.04 05:50:07.430 1: main::GetDefAndAttr called by fhem.pl (1725)
2019.03.04 05:50:07.430 1: main::CommandSave called by fhem.pl (1233)
2019.03.04 05:50:07.430 1: main::AnalyzeCommand called by fhem.pl (1079)
2019.03.04 05:50:07.431 1: main::AnalyzeCommandChain called by ./FHEM/01_FHEMWEB.pm (2666)
2019.03.04 05:50:07.431 1: main::FW_fC called by ./FHEM/01_FHEMWEB.pm (896)
2019.03.04 05:50:07.431 1: main::FW_answerCall called by ./FHEM/01_FHEMWEB.pm (567)
2019.03.04 05:50:07.432 1: main::FW_Read called by fhem.pl (3693)
2019.03.04 05:50:07.432 1: main::CallFn called by fhem.pl (742)
Mach nochmal ein Update. Das Problem gab es am Wochenende bei vielen Anwendern, die Homematic im Einsatz haben.
Nun kommt es darauf an, wann Du gestern das Update gemacht hast. Auf jeden Fall sollten die Meldungen mit aktuellen Versionen heute nicht mehr auftreten.