FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: zap am 16 November 2016, 16:46:34

Titel: Device Hash ohne TYPE Eintrag
Beitrag von: zap am 16 November 2016, 16:46:34
Frage: Gibt es Fälle, in denen ein Device Hash keinen Eintrag TYPE enthält? In einem Modul verwende ich eine Schleife über alle Devices:


foreach my $d (keys %defs) {
   my $ch = $defs{$d};
   my $cn = $ch->{NAME};
   my $ct = $ch->{TYPE};
   if ($ct ne 'xyz') {


Bei einigen Nutzern führt die letzte Zeile (bzw. der folgende Zugriff auf $ct) zu einer Perl Fehlermeldung im FHEM Log. Die Einträge TYPE und NAME werden doch von FHEM in jedem Fall (define) gesetzt, oder?

Die Meldung lautet "PERL WARNING: Use of uninitialized value $ct in string ne at ..."
Titel: Antw:Device Hash ohne TYPE Eintrag
Beitrag von: rudolfkoenig am 16 November 2016, 17:09:34
ZitatGibt es Fälle, in denen ein Device Hash keinen Eintrag TYPE enthält?
Normalerweise nicht. Sowas kann aber z.Bsp. mit Folgendem entstehen:
my $x;
$defs{$x}{myValue}=1;

Damit man den Uebeltaeter findet, generiert fhem.pl eine Meldung:
ZitatError: >< has no TYPE, but following keys: >myValue<
Das Auffinden ist trotzdem nicht trivial.

Titel: Antw:Device Hash ohne TYPE Eintrag
Beitrag von: viegener am 16 November 2016, 23:29:25
Zitat von: zap am 16 November 2016, 16:46:34
Frage: Gibt es Fälle, in denen ein Device Hash keinen Eintrag TYPE enthält? In einem Modul verwende ich eine Schleife über alle Devices:


MIr ist ein Fall bekannt, der auch bei mir gelegentlich auftritt im Zusammenhang mit rename von devices (bei mir im Rahmen von Homematic). Ich habe das seit einiger Zeit auf meiner Liste, und wollte das mal genauer nachstellen um die Ursache zu finden. Also kann ich bestätigen, dass das auftritt und Du solltest wohl in Deiner Schleife den Fall abfangen. Vielleicht hilft das weiter?
Titel: Antw:Device Hash ohne TYPE Eintrag
Beitrag von: rudolfkoenig am 17 November 2016, 07:20:56
Viel besser als selbst abzufangen waere es den Fall mir oder den betroffenen Modulautor (am besten reproduzierbar) zu melden, damit die Ursache gefixt wird.
Titel: Antw:Device Hash ohne TYPE Eintrag
Beitrag von: viegener am 17 November 2016, 13:37:15
Zitat von: rudolfkoenig am 17 November 2016, 07:20:56
Viel besser als selbst abzufangen waere es den Fall mir oder den betroffenen Modulautor (am besten reproduzierbar) zu melden, damit die Ursache gefixt wird.

Genau der reproduzierbare Fall fehlt mir noch, denn ijm Testsystem konnte ich das bisher nicht nachstellen, es könnte also auch an meinem System liegen ...

Trotzdem halte ich es für richtig mit solchen Fälle zu rechnen, aber das ist eine akademische Diskussion zur Stabilität von Software  ;)
Titel: Antw:Device Hash ohne TYPE Eintrag
Beitrag von: zap am 18 November 2016, 07:57:21
Es tritt nur bei einigen Usern meines Moduls HMCCU auf. Ich nehme an, die nutzen noch ein anderes Modul, das den Fehler im Hash verursacht.
Ich baue mal ein Log Statement ein, das den Namen des Devices ausgibt. Dann kann ich einen der Betroffenen bitten mir den Namen des zugehörigen Moduls zu nennen. Denn der Eintrag {NAME} scheint zu existieren.