Gelöst! Cannot load module BRAVIA

Begonnen von magicteddy, 24 Januar 2018, 12:34:03

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: Mave am 25 Januar 2018, 10:56:26
Also war mein Fehler, dass ich irgendwann mal auf "save config" geklickt habe?
Okay, habe ich verstanden und werde ich das nächste Mal nicht mehr machen.

Ein "save config" speichert immer die aktuell laufende Konfiguration.
Wenn beim Starten von FHEM ein device nicht angelegt werden kann, dann fehlt es in der laufenden Konfiguration.
Beim nächsten "save config" wird dann eine Konfiguration gespeichert, in der dieses device fehlt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

ZitatFHEM versucht, alle in der Konfiguration gefundenen Attribute des nicht vorhandenen devices zu setzen, was natürlich nicht funktioniert, wenn das device fehlt.
    In einem zweiten Schritt versucht FHEM, alle im stateFile gefundenen readings zu allen devices wieder herzustellen, was auch nicht funktioniert, wenn ein device fehlt.
    Für jedes erfolglose Setzen eines Attributes oder eines readings wird eine Fehlermeldung protokolliert, die am Ende des FHEM Starts im globalen Attribut "motd" stehen und am Frontend ausgegeben werden.

Udo, so ist es aber auch nicht. Die weiteren Fehlermeldungen (im ersten Post des Threads) sind ja keine Fehlermeldungen von FHEM wegen des fehlenden Devices. Sondern Meldungen des Perl-Syntaxcheckers, der bei jedem weiteren Versuch, ein Attribut zu setzen, erneut den Code des Moduls ausführen will.

LG

pah

betateilchen

Peter, Du irrst Dich. Die sechs Fehlermeldungen im ersten Post entstehen alle EINMALIG beim Laden des Moduls, das erkennt man daran, dass die Meldungen aus verschiedenen Zeilen stammen.


Global symbol "$macAddr" requires explicit package name (did you forget to declare "my $macAddr"?) at ./FHEM/70_BRAVIA.pm line 389.
Global symbol "$macAddr" requires explicit package name (did you forget to declare "my $macAddr"?) at ./FHEM/70_BRAVIA.pm line 390.
Global symbol "$macAddr" requires explicit package name (did you forget to declare "my $macAddr"?) at ./FHEM/70_BRAVIA.pm line 390.
Global symbol "$macAddr" requires explicit package name (did you forget to declare "my $macAddr"?) at ./FHEM/70_BRAVIA.pm line 391.
Global symbol "$macAddr" requires explicit package name (did you forget to declare "my $macAddr"?) at ./FHEM/70_BRAVIA.pm line 391.
Global symbol "$macAddr" requires explicit package name (did you forget to declare "my $macAddr"?) at ./FHEM/70_BRAVIA.pm line 391.


In den Zeilen 388-392 steht folgendes:


388            elsif ( $cmd eq "WOL" ) {
389              $macAddr = AttrVal( $name, "macaddr", "" );
390             $macAddr = ReadingsVal( $name, "macAddr", "") if ($macAddr eq "");
391             BRAVIA_wake( $name, $macAddr ) if ( $macAddr ne "" && $macAddr ne "-" );
392           }


dabei kommt $macAddr genau sechs mal in drei unterschiedlichen Zeilen vor.
Und genau so viele Fehlermeldungen findest Du im Eingangsbeitrag.
Mit genau drei unterschiedlichen Zeilenangaben

389 = $macAddr kommt einmal vor
390 = $macAddr kommt zweimal vor
391 = $macAddr kommt dreimal vor

Und diese Fehlermeldungen treten ein einziges Mal auf.

Zitat von: Prof. Dr. Peter Henning am 25 Januar 2018, 11:14:21
Sondern Meldungen des Perl-Syntaxcheckers, der bei jedem weiteren Versuch, ein Attribut zu setzen, erneut den Code des Moduls ausführen will.

Nochmal nein. Es gibt überhaupt keine Versuche, irgendeinen Code aus dem Modul auszuführen.
Da das Modul nicht geladen werden konnte, gibt es auch keine modulspezifische ATTR Funktion, die fhem.pl aufrufen könnte.

Und die Meldungen "Please define..." kommen alle aus fhem.pl (genauer: aus CommandAttr()), da beim Versuch, ein Attribut zu setzen, das angegebene Device nicht gefunden werden konnte, und das ist völlig modul- und TYPE-unabhängig.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Mave

Hier kann man wirklich was lernen......

betateilchen

Dafür ist ein Forum schließlich da :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning

#20
Ich sags ja nur ungerne, aber diesmal hast Du Recht. Hätte mal einen Blick in den Code werfen sollen :'(

LG

pah