FHEM Forum

FHEM => Sonstiges => Thema gestartet von: kaihs am 27 Oktober 2015, 20:14:39

Titel: [patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: kaihs am 27 Oktober 2015, 20:14:39
Hallo,

das Modul 70_STV.pm funktionierte bei mir nicht mehr, weil die Ermittlung von IP und MAC-Adresse mittels Aufruf von ipconfig -a fehlschlug.
Ich denke mal die Ausgabe ist mittlerweile anders formatiert.

Da diese Technik eh ziemlich fehlerträchtig ist, habe ich das Modul auf die Verwendung der Module Net::Address::IP::Local und IO::Interface::Simple umgestellt.
Ich hoffe, dass es dadurch robuster wird. Bei mir mit Debian Jessie funktioniert es dann auf jeden Fall wieder.

Die beiden Module können mittels

sudo apt get install libnet-address-ip-local-perl libio-interface-perl

installiert werden.

Anbei ein Diff mit den Änderungen und das geänderte Modul.

Wäre schön, wenn das ins svn übernommen werden könnte.

Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Zwiebel am 14 November 2015, 10:33:41
Hallo kaihs,

danke für den Patch - hab es geändert und hoch geladen.
Etwas unschön das weiter Perl Module notwendig sind, aber wenn dadurch die Erkennung robuster wird soll es mir recht sein.

Viele Grüße
Zwiebel
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: vbs am 14 November 2015, 10:38:34
Sind die neuen Libs optional? Bzw. kann man das Modul noch benutzen, wenn man die Libs nicht hat?
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Zwiebel am 15 November 2015, 19:13:39
Hallo!

vbs hat recht! das STV Modul wird nicht geladen wenn man diese Module nicht hat!
Wie wollen wir weiter vorgehen? Bitte um Vorschläge.

viele Grüße
Zwiebel
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: P.A.Trick am 15 November 2015, 19:15:04
Einen Eintrag im Changelog und eine dicke Meldung im Logfile das die Module nachgeladen werden müssen!?
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: vbs am 15 November 2015, 19:30:17
Zitat von: kaihs am 27 Oktober 2015, 20:14:39
das Modul 70_STV.pm funktionierte bei mir nicht mehr, weil die Ermittlung von IP und MAC-Adresse mittels Aufruf von ipconfig -a fehlschlug.
Nur mal für mich zum Verständnis:
Ich hab mich gerade gefragt, wozu das Modul die MAC überhaupt benötigt. Kann mir das jemand sagen? Ich habe gerade kurz ins Modul geschaut und spontan keine Stelle gefunden, an der die MAC benutzt wird.
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Zwiebel am 15 November 2015, 22:36:29
...aber $mymac wird verwendet...
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Ralli am 16 November 2015, 06:14:48
Hallo,

danke für den Patch !

... und die konstruktive Kritik, dass solche das kritischen Änderungen auf jeden Fall mit entsprechendem Hinweis in dem Changelog und somit im Udate-Log auftauchen müssen!
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Zwiebel am 16 November 2015, 08:23:23
ich hab versucht das Problem abzufangen....aber das funktioniert leider so nicht. Es wird die Log Meldung immer ausgeführt ob das System die Module hat oder nicht.

Ab Zeile 210
....
"SUB_TITLE SVIDEO1 SVIDEO2 SVIDEO3 TOOLS TOPMENU TTX_MIX TTX_SUBFACE TURBO TV TV_MODE UP VCHIP VCR_MODE ".
"VOLDOWN VOLUP WHEEL_LEFT WHEEL_RIGHT W_LINK YELLOW ZOOM1 ZOOM2 ZOOM_IN ZOOM_MOVE ZOOM_OUT connect";

    if(!eval("use Net::Address::IP::Local;use libio-interface-perl;1")){
        Log3 undef, 3, "[STV] Please install needet Modules with \"sudo apt get install libnet-address-ip-local-perl libio-interface-perl\" ";
        $hash->{STATE} = 'Failed';
        return undef;
    }
.....


kann mir da jemand helfen?

Gruß
Zwiebel
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: vbs am 16 November 2015, 17:33:11
Danke für den Tip! MAC ist dann also wirklich wichtig, da sie ja auch für die Nachrichten benötigt wird...

So wie ich das verstehe, funkioniert dein Code nicht, weil du "use" benutzt, welches zur Compile-Zeit ausgewertet wird. Hab ich von hier:
http://stackoverflow.com/questions/251694/how-can-i-check-if-i-have-a-perl-module-before-using-it

Probier mal mit require:

my $rc = eval
{
  require Term::ReadKey;
  Term::ReadKey->import();
  1;
};

if($rc)
{
  # Term::ReadKey loaded and imported successfully
  ...
}


Übrigens ist die Meldung, das Problem mit apt zu beheben sehr plattformspezifisch. Gibt auch viele Linux-Distros, die kein apt haben (mein TinyCore zB auch nicht). Windows natürlich auch nicht.
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: vbs am 16 November 2015, 18:06:48
Was wäre denn wenn man übergangsweise beide Varianten anbieten würde? Entweder durch automatische Erkennung, ob denn das Modul installiert ist, oder der User kann es per Attribut aktivieren "useImprovedMacDetection" o.ä.
In beiden Varianten könnte man im Fall der alten ifconfig-Methode eine Meldung ausgeben ala "You are using a deprecated MAC detection mechanism using ifconfig. Please install Perl moduls x and y".
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Zwiebel am 18 November 2015, 17:02:25
Hallo vbs,

hab deinen Vorschlag mit dem automatischen Erkennen eingebaut. Ich würde die neue Version dann hochladen. (Anhang)
OK ?

Viele Grüße
Zwiebel
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: justme1968 am 18 November 2015, 18:18:46
prüfen ob ein perl modul da ist geht recht einfach z.b. so:

- pro perl modus eine fhem modul globale variable auf 1 initialisieren
- diese in der initialize routine des fhem moduls per eval und fehler prüfung auf 0 setzen wenn das perl modul nicht geladen werden kann
- im DefFn ein internal setzen das dem anwender die erkennung zeigt
- passende meldungen und fallbacks im code durch auswertung der variable wann immer nötig

my $has_ip_local = 1;

sub
xyz_Initialize($) {
  eval "use Net::Address::IP::Local";
  $has_ip_local = 0 if($@);
  ...
}

sub
xyz_Define($$){
  ...
  $hash->{HAS_Net_Address_IP_Local} =  $has_ip_local;
  ...
}
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Zwiebel am 19 November 2015, 09:55:11
hab das Modul hoch geladen...
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: grobby am 19 November 2015, 16:39:51
Die beiden Module können mittels
sudo apt get install libnet-address-ip-local-perl libio-interface-perl

installiert werden.


Gut gesagt, wie macht man das wenn Fhem auf einer Fritz 7390 mit Freetz läuft?

okay hab die 70_STV.pm mit der Autoerkennung rübergeschoben und nun klappts erstmal wieder.
aber zu meiner Frage kann ruhig geantwortet werden.
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Stephan1965 am 16 Dezember 2016, 21:40:55
Hallo,
ist zwar schon etwas älterer thread, aber seit heute nach dem Update tritt der Fehler bei mir auf.
Ich habe dann mit
sudo apt get install libnet-address-ip-local-perl libio-interface-perl

die fehlenden Perl-Bibliotheken auf dem RPI nachgeladen. Nach dem Neustart bekomme ich dann aber immer noch die Meldung:
ZitatMessages collected while initializing FHEM: configfile: Cannot load module STV

Da mein Fernseher auch in FHEM nicht mehr da ist, habe ich versucht, ihn neu zu definieren:
define WoZiTV STV 192.168.1.8 55000
Aber da bekomme ich nur die Fehlermeldung:
ZitatCannot load module STV

Kann jemand helfen?

Viele Grüße

Stephan
Titel: Antw:[patch] 70_STV.pm, Ermittlung von IP und MAC Adresse
Beitrag von: Stephan1965 am 16 Dezember 2016, 21:46:54
Sorry,
habe jetzt erst gesehen, dass schon zwei threads existieren:
https://forum.fhem.de/index.php/topic,62615.0.html (https://forum.fhem.de/index.php/topic,62615.0.html)

https://forum.fhem.de/index.php/topic,62639.0.html (https://forum.fhem.de/index.php/topic,62639.0.html)

Dann besser dort weiter...

Viele Grüße

Stephan