Device Hash ohne TYPE Eintrag

Begonnen von zap, 16 November 2016, 16:46:34

Vorheriges Thema - Nächstes Thema

zap

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 ..."
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

rudolfkoenig

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.


viegener

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?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

rudolfkoenig

Viel besser als selbst abzufangen waere es den Fall mir oder den betroffenen Modulautor (am besten reproduzierbar) zu melden, damit die Ursache gefixt wird.

viegener

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  ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

zap

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.
2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)