Modul 10_KOPP_FC.pm fehlerhaft - legt heutige Updates lahm!

Begonnen von betateilchen, 14 Januar 2016, 08:26:10

Vorheriges Thema - Nächstes Thema

RaspII

Danke (bzgl. einfach machen)  :)
Testen wollte ich via "Shutdown Restart", jetzt weiss ich auch warums nicht geklappt hat (ShutdownFn).
Ausserdem hätte ich gedacht, dass beim Speichern der fhem.cfg auch eine Art "rereadcfg" gemacht wird (passiert wohl nich).

Ich werde mich dann die nächsten Tage ans Testen machen, sollte mit Euren Tipps jetzt klappen.

RaspII

betateilchen

Zitat von: RaspII am 31 Januar 2016, 19:40:06
Ausserdem hätte ich gedacht, dass beim Speichern der fhem.cfg auch eine Art "rereadcfg" gemacht wird (passiert wohl nich).

Das würde doch keinen Sinn machen. Denn das, was beim Speichern in die fhem.cfg geschrieben wird, ist doch genau die aktuell laufende Konfiguration. Warum sollte man nach dem Speichern genau das neu lesen, was man ohnehin schon laufen hat?

Ein automatisches Neulesen nach dem Abspeichern gibt es aber durchaus an einigen Stellen in fhem, wo es auch Sinn macht. Beispiele:

  • 99_.* Dateien, die man mit dem internen Editor bearbeitet und abspeichert
  • Layouts von RSS und InfoPanel, wenn man die Layoutdateien im internen Editor bearbeitet und abspeichert
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RaspII

Das verstehe ich jetzt nicht.
Wenn ich die fhem.cfg manuell ändere kann ich doch durchaus Devices löschen und neue eingeben.
D.h. es steht eben nicht das selbe in der Datei wie vorher.
Hatte aber nicht erwähnt, dass ich die Datei manuell geändert habe, danach gespeichert.
RaspII

betateilchen

ja, Du hast recht. Hab ich vorhin verwexelt, weil ich gedanklich grade an einer anderen Baustelle war.

Aber wer hat auch heutzutage noch eine fhem.cfg ;)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

RaspII

Hallo Betateilchen,
ich habe es jetzt geschafft, dass die Undef Funktion durchlaufen wird.
Prinzipiell scheint es zu klappen, ich wunderte mich aber anfangs darüber, dass manche Devices (Hashes) mehrfach gelöscht werden.
Ich weisse jedem Device zwischen 2 und 4 Tastencodes zu.
Gelöscht wird ein Device so of wie ich Tastencodes zugeordnet hatte.

Da der delete Befehl Key+value löscht, sollte das passen.

Meine Logfileeinträge sehen wie folgt aus:
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: SenderNeuTaste2, Device: HASH(0x1bd87f0) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: SenderNeuTaste2, Device: HASH(0x1bd87f0) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: SenderNeuTaste1, Device: HASH(0x1bd82f8) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: SenderNeuTaste1, Device: HASH(0x1bd82f8) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Taste2Rad4, Device: HASH(0x1bd7c80) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Taste2Rad4, Device: HASH(0x1bd7c80) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Switch, Device: HASH(0x1bd5778) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Switch, Device: HASH(0x1bd5778) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: 2Switch, Device: HASH(0x1bd5370) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: 2Switch, Device: HASH(0x1bd5370) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: 2Switch, Device: HASH(0x1bd5370) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: TasteUp, Device: HASH(0x1bd48c0) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: TasteUp, Device: HASH(0x1bd48c0) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: TasteUp, Device: HASH(0x1bd48c0) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: DimmerDevice_OnOff, Device: HASH(0x1bd4000) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: DimmerDevice_OnOff, Device: HASH(0x1bd4000) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: DimmerDevice_OnOff, Device: HASH(0x1bd4000) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: DimmerDevice_OnOff, Device: HASH(0x1bd4000) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Dimmer, Device: HASH(0x1bd3a78) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Dimmer, Device: HASH(0x1bd3a78) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Taste1Rad5, Device: HASH(0x196a1c0) deleted
2016.02.01 20:37:45 3: KOPP_FC_Undef: Name: Taste1Rad5, Device: HASH(0x196a1c0) deleted



Die KOPP_FC_Undef sieht wie folgt aus:
sub KOPP_FC_Undef($$)
{
  my ($hash, $name) = @_;

  foreach my $c (keys %{ $hash->{CODE} } )
  {
    $c = $hash->{CODE}{$c};

    # As after a rename the $name my be different from the $defptr{$c}{$n}
    # we look for the hash.
    foreach my $dname (keys %{ $modules{KOPP_FC}{defptr}{$c} })
{

if($modules{KOPP_FC}{defptr}{$c}{$dname} == $hash)
     {
  my $m=$modules{KOPP_FC}{defptr}{$c}{$dname};
      Log3 $name, 3, "KOPP_FC_Undef: Name: $name, Device: $m deleted";
     }
      delete($modules{KOPP_FC}{defptr}{$c}{$dname}) if($modules{KOPP_FC}{defptr}{$c}{$dname} == $hash);

    }
  }
  return undef;
}


Nicht über die If Bedingung für den Logfile eintrag wundern, dieser soll final wieder entfernt werden.

Wenn aus Deiner Sicht nicht's dagegen spricht werde ich noch die Logfileeinträge entfernen und das Modul danach einstellen.


Gruß
RaspII

RaspII

betateilchen

ja, mach nur :)

Falls es beim Einchecken Probleme gibt, melde Dich einfach nochmal hier.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!