Gelöst! Cannot load module BRAVIA

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

Vorheriges Thema - Nächstes Thema

magicteddy

Moin,

mit dem letzten update tauchte das o.g. Problem auf, ein reload meldet:
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.


Zitatdefine WZ.SonyTV BRAVIA 192.168.19.10 60

Ŵer hat einen Tipp?

Ich habe erstmal das Backup vom 21.1.18  eingespielt sonst gerät der Haussegen in Schieflage  :o

Internals:
   CHANGED   
   CHANNELCOUNT 50
   DEF        192.168.19.10 60
   INTERVAL   60
   NAME       WZ.SonyTV
   NR         178
   STATE      absent
   TYPE       BRAVIA
   generation
   model     
   name       
   Helper:
     DBLOG:
       channel:
         logdb:
           TIME       1516793911.41188
           VALUE      -
       channelId:
         logdb:
           TIME       1516793911.41188
           VALUE      -
       currentMedia:
         logdb:
           TIME       1516793911.41188
           VALUE      -
       currentTitle:
         logdb:
           TIME       1516793911.41188
           VALUE      -
       input:
         logdb:
           TIME       1516793911.41188
           VALUE      -
       power:
         logdb:
           TIME       1516793911.41627
           VALUE      off
       presence:
         logdb:
           TIME       1516793911.41527
           VALUE      absent
       state:
         logdb:
           TIME       1516793911.41627
           VALUE      absent
   READINGS:
     2018-01-24 12:38:31   channel         -
     2018-01-24 12:38:31   channelId       -
     2018-01-24 12:38:31   currentMedia    -
     2018-01-24 12:38:31   currentTitle    -
     2018-01-24 12:38:31   input           -
     2018-01-24 12:38:31   power           off
     2018-01-24 12:38:31   presence        absent
     2018-01-24 12:38:31   state           absent
   helper:
     ADDRESS    192.168.19.10
     AVAILABLE  0
     HEADER     X-CERS-DEVICE-ID: fhem_remote
     lastInput 
     PORT:
       IRCC       80
       SERVICE    80
       UPNP       52323
     device:
Attributes:
   devStateIcon on:rc_GREEN:off off:rc_YELLOW:on absent:rc_STOP:on
   icon       it_television
   room       1.1.Wohnzimmer
   verbose    0
   webCmd     volume:channelUp:channelDown


-teddy
FHEM auf Dell t20 mit Ubuntu 17.10, Homematic, MiiLight,  Max Fensterkontakte, Intertechno Steckdosen und FB. 433 Mhz  CUL V 1.26.02 a-culfw Build: 20, MapleCUN V 1.23.07 a-culfw sowie HMLAN D-firmware 0.964

MadMax-FHEM

Eventuell schon mal einen shutdown restart probiert?
(also statt "nur" reload des Moduls, wenn ich das richtig verstanden habe)

Vorher halt evtl. mal die fhem.cfg sichern...

Ansonsten ins entsprechende Unterforum (Multimedia) verschieben oder Maintainer anschreiben...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

magicteddy

#2
Moin,

nee, so einfach ist nicht, shutdown restart sind selbstverständlich  8)
Ich wollte erstmal abklopfen ob der Anfängerfehler vielleicht vorm PC sitzt.

-teddy

FHEM auf Dell t20 mit Ubuntu 17.10, Homematic, MiiLight,  Max Fensterkontakte, Intertechno Steckdosen und FB. 433 Mhz  CUL V 1.26.02 a-culfw Build: 20, MapleCUN V 1.23.07 a-culfw sowie HMLAN D-firmware 0.964

betateilchen

Ändere mal Zeile 389 in der aktuellen Modulversion von gestern von

              $macAddr = AttrVal( $name, "macaddr", "" );

in

              my $macAddr = AttrVal( $name, "macaddr", "" );

dann sollte sich das Modul laden lassen. Unabhängig von diesem Workaround sollte sich natürlich der Modulautor darum kümmern, den Fehler zu korrigieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

magicteddy

FHEM auf Dell t20 mit Ubuntu 17.10, Homematic, MiiLight,  Max Fensterkontakte, Intertechno Steckdosen und FB. 433 Mhz  CUL V 1.26.02 a-culfw Build: 20, MapleCUN V 1.23.07 a-culfw sowie HMLAN D-firmware 0.964

exbibe


Mave

Moin zusammen,

ich habe dasselbe Problem und würde anhand dieses Beispiels gerne verstehen, was passiert ist, wie FHEM darauf reagiert und wie man das Problem lösen kann.

Wenn ich das richtig interpretiere, hat der Modulautor das 'my' vor der Variablen vergessen und das Modul eingecheckt. Nach einem Update und Restart trifft FHEM auf diesen Fehler.
Jetzt meine Verständnisfrage: trifft FHEM bei der Abarbeitung der fhem.cfg beim define auf das Problem und lädt das Modul nicht?

Wie kommt es dann zu den vielen Meldungen "define blabla first" und warum stehen die in der fhem.cfg?

Wie ist dann die genaue Vorgehensweise zur Lösung des Problems?
Ich kann entweder das Modul selbst reparieren oder auf ein Update warten, richtig?

Lädt FHEM dann automatisch das neue Modul und entfernt die Meldungen aus der fhem.cfg oder muss ich noch etwas tun?

Vielen Dank für Eure Hilfe.

Grüße Mave

Prof. Dr. Peter Henning

ZitatJetzt meine Verständnisfrage:

Das ist aber mehr als eine ...

Zitat
trifft FHEM bei der Abarbeitung der fhem.cfg beim define auf das Problem und lädt das Modul nicht?

Nicht so ganz. Beim "define" wird das Modul geladen, erst dann trifft Perl (und nicht FHEM) auf den Syntaxfehler. Hierarchisch denken, wir sind hier eine Ebene tiefer ! Dieser Fehler wird dann nach oben auf die FHEM-Ebene zurückgereicht.

Zitat
Wie kommt es dann zu den vielen Meldungen "define blabla first" und warum stehen die in der fhem.cfg?

Weil Perl in dem Programm immer wieder auf die undefinierte Variable stößt und immer wieder dieselbe Meldung ausspuckt. Und die werdenalle nach oben durchgereicht - und dann als "Fehler während des Abarbeitens der fhem.cfg" notiert.

Zitat
Wie ist dann die genaue Vorgehensweise zur Lösung des Problems?
Ich kann entweder das Modul selbst reparieren oder auf ein Update warten, richtig?

Das ist immer so.

Zitat
Lädt FHEM dann automatisch das neue Modul und entfernt die Meldungen aus der fhem.cfg oder muss ich noch etwas tun?

Nix automatisch. FHEM neustarten nach dem entsprechenden Update.

LG

pah

Mave

Hey pah,

super, vielen Dank.  :D

Wenn das Update mit dem "reparierten" Modul durchgelaufen ist und FHEM neu gestartet wurde, dann läuft FHEM wieder automatisch wie gewohnt? Das meinte ich mit automatisch.  ;)

Grüße Mave

Mave

So, jetzt stehe ich genau vor dem Problem, dass das Modul upgedated wurde und nach einem Neustart mein Device "SonyTV" aber nicht wieder automatisch angelegt wurde.

Die Meldungen "Can't load module Bravia" und "Please define SonyTV first" stehen nachwievor in der fhem.cfg, werden aber nicht mehr ausgegeben.

Was muss ich tun, damit das Modul wieder korrekt geladen wird?

Vielen Dank.

Mave

Das steht in der fhem.cfg, wird aber in der Oberfläche von FHEM nicht angezeigt.

attr global motd Messages collected while initializing FHEM:
configfile: Cannot load module BRAVIA
./log/fhem.save: Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first
Please define SonyTV first

Autosave deactivated


Das Modul scheint jetzt in Ordnung zu sein, das Device "SonyTV" wird aber nicht mehr defined.


betateilchen

#11
als erstes solltest Du ein

attr global motd none

machen, dann das Sony TV neu anlegen und die Konfiguration abspeichern.

Und nächstes Mal, wenn Du eine Fehlermeldung beim Start von FHEM bekommst, solltest Du besser nicht auf "save" klicken, bevor Du den gefundenen und gemeldeten Fehler behoben hast.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Prof. Dr. Peter Henning am 25 Januar 2018, 08:05:45
Weil Perl in dem Programm immer wieder auf die undefinierte Variable stößt und immer wieder dieselbe Meldung ausspuckt. Und die werdenalle nach oben durchgereicht - und dann als "Fehler während des Abarbeitens der fhem.cfg" notiert.

Naja, ganz so einfach ist es nicht.

Die erste Meldung "Cannot load module" kommt vom Syntaxfehler, der beim erstmaligen Laden des Moduls festgestellt wird. Danach passiert mit dem Modul und dem Code erstmal gar nichts mehr, denn wenn ein Modul nicht geladen wurde, gibt es auch keinen Code, der ausgeführt werden könnte.

Die vielen Meldungen "Please define blabla first" kommen daher, dass das genannte Device nicht angelegt werden konnte, weil das Modul nicht geladen werden kann.
Diese Meldungen treten aber nicht nur während des Abarbeitens der fhem.cfg auf, sondern auch beim Abarbeiten des stateFile.


  • FHEM 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.

Und wenn Du mehrere devices gleichen Typs in Deiner Konfiguration hast, die alle nicht geladen werden können, weil das Modul einen Fehler hat, dann multipliziert sich das Ganze entsprechend.

Mit "attr global motd none" kann (und sollte) man diese gesammelten Fehlermeldungen vor dem nächsten FHEM Start löschen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Mave

Zitat von: betateilchen am 25 Januar 2018, 10:36:58
als erstes solltest Du ein

attr global motd none

machen, dann das Sony TV neu anlegen und die Konfiguration abspeichern.

Und nächstes Mal, wenn Du eine Fehlermeldung beim Start von FHEM bekommst, solltest Du besser nicht auf "save" klicken, bevor Du den gefundenen und gemeldeten Fehler behoben hast.


Moin beta,

vielen Dank für Deine Hilfe.

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.

Ist der ursprüngliche define Befehl durch das versehentlich Speichern aus der fhem.cfg herausgeflogen, sodaß ich das device jetzt nochmal neu definieren muss?

Das verstehe ich jetzt nicht wirklich.....


Mave

Zitat von: betateilchen am 25 Januar 2018, 10:36:58
als erstes solltest Du ein

attr global motd none

machen, dann das Sony TV neu anlegen und die Konfiguration abspeichern.

Und nächstes Mal, wenn Du eine Fehlermeldung beim Start von FHEM bekommst, solltest Du besser nicht auf "save" klicken, bevor Du den gefundenen und gemeldeten Fehler behoben hast.


Achja, und warum kommt diese Meldung aus der fhem.cfg nicht mehr beim Start von FHEM?
Habe ich die durch den Save in die fhem.cfg geschrieben und damit das ursprüngliche define gelöscht?

Muss ich beim Thema "autosave" noch etwas berücksichtigen bzw. zurückstellen?

Vielen Dank.