Leider kann ich keine Geräte mehr anmelden, finde aber ein paar Fehler im Log.
Weiss jemand woran's liegt?
USB HMCFG, ansonsten funktioniert alles wie gehabt.
Wenn ich etwas tiefer einsteige, sieht es für mich so aus, als wäre $mh{devH}->{NAME} nicht definiert und ab da geht einiges schief.
Fehler bei Pairing (Aktuelle Version aus dem SVN):
2018.09.14 19:13:02 1: PERL WARNING: Use of uninitialized value $mh{"devN"} in regexp compilation at /opt/fhem/FHEM/10_CUL_HM.pm line 2976.
2018.09.14 19:13:02 1: stacktrace:
2018.09.14 19:13:02 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (2976)
2018.09.14 19:13:02 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 19:13:02 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 19:13:02 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 19:13:02 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 19:13:02 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.14 19:13:08 1: PERL WARNING: Use of uninitialized value $d in hash element at /opt/fhem/fhem.pl line 4363.
2018.09.14 19:13:08 1: stacktrace:
2018.09.14 19:13:08 1: main::__ANON__ called by /opt/fhem/fhem.pl (4363)
2018.09.14 19:13:08 1: main::AttrVal called by /opt/fhem/FHEM/10_CUL_HM.pm (1231)
2018.09.14 19:13:08 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 19:13:08 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 19:13:08 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 19:13:08 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 19:13:08 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.14 19:13:08 1: PERL WARNING: Use of uninitialized value $d in hash element at /opt/fhem/fhem.pl line 4363.
2018.09.14 19:13:08 1: stacktrace:
2018.09.14 19:13:08 1: main::__ANON__ called by /opt/fhem/fhem.pl (4363)
2018.09.14 19:13:08 1: main::AttrVal called by /opt/fhem/FHEM/10_CUL_HM.pm (1428)
2018.09.14 19:13:08 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 19:13:08 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 19:13:08 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 19:13:08 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 19:13:08 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.14 19:13:08 1: PERL WARNING: Use of uninitialized value $d in hash element at /opt/fhem/fhem.pl line 4363.
2018.09.14 19:13:08 1: stacktrace:
2018.09.14 19:13:08 1: main::__ANON__ called by /opt/fhem/fhem.pl (4363)
2018.09.14 19:13:08 1: main::AttrVal called by /opt/fhem/FHEM/10_CUL_HM.pm (1429)
2018.09.14 19:13:08 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 19:13:08 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 19:13:08 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 19:13:08 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 19:13:08 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.14 19:13:08 1: PERL WARNING: Use of uninitialized value $mh{"devN"} in regexp compilation at /opt/fhem/FHEM/10_CUL_HM.pm line 2976.
2018.09.14 19:13:08 1: stacktrace:
2018.09.14 19:13:08 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (2976)
2018.09.14 19:13:08 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 19:13:08 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 19:13:08 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 19:13:08 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 19:13:08 1: main::CallFn called by /opt/fhem/fhem.pl (726)
Zwischendurch habe ich in letzter Zeit auch mal das hier beobachtet (geänderte Zeilennummern!):
2018.09.14 18:30:29 1: PERL WARNING: Illegal hexadecimal digit 's' ignored at /opt/fhem/FHEM/10_CUL_HM.pm line 7888.
2018.09.14 18:30:29 1: stacktrace:
2018.09.14 18:30:29 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7888)
2018.09.14 18:30:29 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (8041)
2018.09.14 18:30:29 1: main::CUL_HM_updtRegDisp called by /opt/fhem/FHEM/10_CUL_HM.pm (3374)
2018.09.14 18:30:29 1: main::CUL_HM_parseCommon called by /opt/fhem/FHEM/10_CUL_HM.pm (1468)
2018.09.14 18:30:29 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 18:30:29 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 18:30:29 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 18:30:29 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 18:30:29 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.14 18:30:29 1: PERL WARNING: Illegal hexadecimal digit 's' ignored at /opt/fhem/FHEM/10_CUL_HM.pm line 7888.
2018.09.14 18:30:29 1: stacktrace:
2018.09.14 18:30:29 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7888)
2018.09.14 18:30:29 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (8041)
2018.09.14 18:30:29 1: main::CUL_HM_updtRegDisp called by /opt/fhem/FHEM/10_CUL_HM.pm (3374)
2018.09.14 18:30:29 1: main::CUL_HM_parseCommon called by /opt/fhem/FHEM/10_CUL_HM.pm (1468)
2018.09.14 18:30:29 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.14 18:30:29 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.14 18:30:29 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.14 18:30:29 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.14 18:30:29 1: main::CallFn called by /opt/fhem/fhem.pl (726)
20
Gruss, Markus
Lösung: Es lag an unabsichtlich deaktiviertem autocreate...
Dass dabei keine saubere Warnung im Log ausgegeben wird sondern dem User Perl Warnings um die Ohren fliegen, ist nicht gerade ideal.
Bitte entsprechende Checks einbauen.
Interessant ich habe heute auch ein Thermostat angelernt und erst autocreate vergessen. Aber ich habe nicht das Problem gehabt.
Grüße
Die entity wird beim anlernen immer angelegt. Unklar, warum es bei dir nicht funktioniert hat. Wer pairt will sowieso ein create, es ist also manuel aber implizit.
Den check kann ich dennoch einbauen. Das define selbst macht gelegentlich probleme weil es lange dauern kann. Dann ist die antwort von fhem zu langsam. Allerdings erwarte ich beim 2. Versuch dass die entity existiert und nun spätestens alles fliegt.
Beim lesen der registerfiles kommt ein s an nicht erwarteter Stelle vor. Hast du editiert? Ist fas file korrupt?
Ggf das file einmal posten
Leider immer noch Fehler im Log, scheinbar irgendwo hier:
return "invalid:no peer for this register" if(($reg->{p} eq "n" && hex($peerId) != 0)
||($reg->{p} eq "y" && hex($peerId) == 0));
2018.09.15 19:27:09 1: PERL WARNING: Illegal hexadecimal digit 's' ignored at /opt/fhem/FHEM/10_CUL_HM.pm line 7892.
2018.09.15 19:27:09 1: stacktrace:
2018.09.15 19:27:09 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7892)
2018.09.15 19:27:09 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (8045)
2018.09.15 19:27:09 1: main::CUL_HM_updtRegDisp called by /opt/fhem/FHEM/10_CUL_HM.pm (3378)
2018.09.15 19:27:09 1: main::CUL_HM_parseCommon called by /opt/fhem/FHEM/10_CUL_HM.pm (1472)
2018.09.15 19:27:09 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.15 19:27:09 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.15 19:27:09 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.15 19:27:09 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.15 19:27:09 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.15 19:27:09 1: PERL WARNING: Illegal hexadecimal digit 's' ignored at /opt/fhem/FHEM/10_CUL_HM.pm line 7892.
2018.09.15 19:27:09 1: stacktrace:
2018.09.15 19:27:09 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7892)
2018.09.15 19:27:09 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (8045)
2018.09.15 19:27:09 1: main::CUL_HM_updtRegDisp called by /opt/fhem/FHEM/10_CUL_HM.pm (3378)
2018.09.15 19:27:09 1: main::CUL_HM_parseCommon called by /opt/fhem/FHEM/10_CUL_HM.pm (1472)
2018.09.15 19:27:09 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.15 19:27:09 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.15 19:27:09 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.15 19:27:09 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.15 19:27:09 1: main::CallFn called by /opt/fhem/fhem.pl (726)
Ich frage mich, ob das mit folgenden Readings bei einem Bewegungsmelder etwas zu tun haben könnte:
D-serialNr Ä ∑
PairedTo invalid:no peer for this register
Das erste hast noch ein unlesbares Zeichen drin, reingeschrieben hab ich da keines von.
Welches File meinst du?
Hmm. Kann es das sein?
R-evtFltrPeriod 1 s
Ich hab einfach mal alle Readings meiner HM Geräte gelöscht, um die kaputten zu erwischen.
Jetzt sieht das Log so aus:
2018.09.15 22:41:30 1: PERL WARNING: Use of uninitialized value in string eq at /opt/fhem/FHEM/10_CUL_HM.pm line 7892.
2018.09.15 22:41:30 1: stacktrace:
2018.09.15 22:41:30 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7892)
2018.09.15 22:41:30 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (4660)
2018.09.15 22:41:30 1: main::CUL_HM_Set called by /opt/fhem/fhem.pl (3592)
2018.09.15 22:41:30 1: main::CallFn called by /opt/fhem/fhem.pl (1808)
2018.09.15 22:41:30 1: main::DoSet called by /opt/fhem/fhem.pl (1840)
2018.09.15 22:41:30 1: main::CommandSet called by /opt/fhem/fhem.pl (1214)
2018.09.15 22:41:30 1: main::AnalyzeCommand called by /opt/fhem/fhem.pl (1062)
2018.09.15 22:41:30 1: main::AnalyzeCommandChain called by /opt/fhem/FHEM/01_FHEMWEB.pm (2584)
2018.09.15 22:41:30 1: main::FW_fC called by /opt/fhem/FHEM/01_FHEMWEB.pm (904)
2018.09.15 22:41:30 1: main::FW_answerCall called by /opt/fhem/FHEM/01_FHEMWEB.pm (533)
2018.09.15 22:41:30 1: main::FW_Read called by /opt/fhem/fhem.pl (3597)
2018.09.15 22:41:30 1: main::CallFn called by /opt/fhem/fhem.pl (726)
20
Wieder an der gleichen Stelle:
return "invalid:no peer for this register" if(($reg->{p} eq "n" && hex($peerId) != 0)
||($reg->{p} eq "y" && hex($peerId) == 0));
Langsam frage ich mich, was genau an der Stelle ankommt...
D-serialNr kann's jetzt eigentlich nicht mehr sein.
2018.09.16 14:29:51 1: PERL WARNING: Illegal hexadecimal digit 'H' ignored at /opt/fhem/FHEM/10_CUL_HM.pm line 7892.
2018.09.16 14:29:51 1: stacktrace:
2018.09.16 14:29:51 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7892)
2018.09.16 14:29:51 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (8045)
2018.09.16 14:29:51 1: main::CUL_HM_updtRegDisp called by /opt/fhem/FHEM/10_CUL_HM.pm (3378)
2018.09.16 14:29:51 1: main::CUL_HM_parseCommon called by /opt/fhem/FHEM/10_CUL_HM.pm (1472)
2018.09.16 14:29:51 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.16 14:29:51 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.16 14:29:51 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.16 14:29:51 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.16 14:29:51 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2018.09.16 14:29:51 1: PERL WARNING: Illegal hexadecimal digit 'H' ignored at /opt/fhem/FHEM/10_CUL_HM.pm line 7892.
2018.09.16 14:29:51 1: stacktrace:
2018.09.16 14:29:51 1: main::__ANON__ called by /opt/fhem/FHEM/10_CUL_HM.pm (7892)
2018.09.16 14:29:51 1: main::CUL_HM_getRegFromStore called by /opt/fhem/FHEM/10_CUL_HM.pm (8045)
2018.09.16 14:29:51 1: main::CUL_HM_updtRegDisp called by /opt/fhem/FHEM/10_CUL_HM.pm (3378)
2018.09.16 14:29:51 1: main::CUL_HM_parseCommon called by /opt/fhem/FHEM/10_CUL_HM.pm (1472)
2018.09.16 14:29:51 1: main::CUL_HM_Parse called by /opt/fhem/fhem.pl (3793)
2018.09.16 14:29:51 1: main::Dispatch called by /opt/fhem/FHEM/00_HMLAN.pm (779)
2018.09.16 14:29:51 1: main::HMLAN_Parse called by /opt/fhem/FHEM/00_HMLAN.pm (604)
2018.09.16 14:29:51 1: main::HMLAN_Read called by /opt/fhem/fhem.pl (3597)
2018.09.16 14:29:51 1: main::CallFn called by /opt/fhem/fhem.pl (726)
2
CUL_HM_getRegFromStore($$$$@) {#read a register from backup data
Welche Backup Daten werden denn da gelesen und woher?
Ich hab mal extra Logging eingebaut.
Was da scheinbar ankommt sind Devicenamen aus peerList, z.B. HM_4E9B42_Btn_06
Zitat von: martinp876 am 15 September 2018, 20:34:14Beim lesen der registerfiles kommt ein s an nicht erwarteter Stelle vor. Hast du editiert? Ist fas file korrupt?
Ggf das file einmal posten
Wo finde ich denn diese Files?
Was an der Stelle z.B. ankommt und die Probleme verursacht habe ich eins weiter oben analysiert.
Sorry, die nächste 3 wochen bin ich nicht am gerät. Dann werde ich es korrigieren. Es sieht nach der 1 s aus.
Nun von remote: getregfromstore liest Register aus dem config file. Dort sind aber nur Register listen abgelegt. Die einzelnenregister werden daraus generiert. Ich vermute also dass dein reglist.cfg korrupt ist.das steht im fhem root Verzeichnis oder wo du es hingelegt hast. Siehe hminfo.
Automatisch sollten solche Einträge nicht generiert werden. Hast du editiert?
Kannst du ggf das ganze file posten?
Ich habe weder was bewusst angelegt noch editiert.
Ein HMinfo Device gibt es, aber ohne Config Hinweis.
Kann es die /fhem/regSave.cfg sein? Letztes Datum von 2017...
Wenn ich das File neu generiere, tauchen die Fehler trotzdem wieder auf.
Da scheint es irgendwo ein grundsätzliches Problem zu geben.
Hier mal ein Patch als Suchhilfe, mit dem ich zumindest keine Perl Fehler mehr habe:
Die drei Änderungen sind
1. Der Fehler der ohne aktives autocreate beim Pairing passiert ist
2. Die Antwort von CUL_HM_getRegFromStore ist ab und zu mal undefined
3. Als $peerId kommt hier wahlweise ein FHEM Devicename oder ein leerer String vorbei
Index: ./FHEM/10_CUL_HM.pm
===================================================================
--- ./FHEM/10_CUL_HM.pm (revision 17375)
+++ ./FHEM/10_CUL_HM.pm (working copy)
@@ -1199,6 +1199,10 @@
}
$mh{devN} = $mh{devH}->{NAME}; # source device name
+ if(!defined($mh{devN})){
+ Log3 $mh{dstN},2,"CUL_HM received unknown device - autocreate might be disabled";
+ return;
+ }
if (CUL_HM_getAttrInt($mh{devN},"ignore")){
$defs{$_}{".noDispatchVars"} = 1 foreach (grep !/^$mh{devN}$/,@entities);
return (CUL_HM_pushEvnts(),$mh{devN},@entities);
@@ -3364,7 +3368,7 @@
if ($data =~ m/00:00$/){ # this was the last message in the block
if($list eq "00"){
- push @evtEt,[$mhp->{devH},0,"PairedTo:".CUL_HM_getRegFromStore($mhp->{devN},"pairCentral",0,"")];
+ push @evtEt,[$mhp->{devH},0,"PairedTo:".CUL_HM_getRegFromStore($mhp->{devN},"pairCentral",0,"")] if(defined(CUL_HM_getRegFromStore($mhp->{devN},"pairCentral",0,"")));
}
CUL_HM_respPendRm($mhp->{devH});
delete $mhp->{cHash}{helper}{shadowReg}{$regLNp}; #rm shadow
@@ -7882,6 +7886,7 @@
if($addr<1 ||$addr>255);
}
+ return "invalid peer for this register" if ( $peerId !~ /^[0-9a-fA-Fx]+$/ );
return "invalid:no peer for this register" if(($reg->{p} eq "n" && hex($peerId) != 0)
||($reg->{p} eq "y" && hex($peerId) == 0));
my $dst = substr(CUL_HM_name2Id($name),0,6);