DIGITUS DA-70157 an Fritzbox

Begonnen von RoBra81, 28 März 2014, 13:30:17

Vorheriges Thema - Nächstes Thema

RoBra81

Hallo,

wie der Titel sagt, möchte ich meine Wired-Komponenten mit einem DIGITUS DA-70157 ins FHEM auf der Fritzbox heben. Leider scheitere ich bis jetzt an dem Vorhaben :-(
Ich habe das HM485d aus dem Github geladen, ins FHEM-Verzeichnis geschoben und entsprechend der Anleitung im fhemwiki eingebunden. Leider funktioniert es nicht und ich habe im Log folgende Meldungen:

2014.03.28 13:13:00 1: usb create starting
2014.03.28 13:13:01 3: Probing TCM310 device /dev/ttyUSB0
2014.03.28 13:13:01 3: Probing TCM120 device /dev/ttyUSB0
2014.03.28 13:13:02 3: Probing FHZ device /dev/ttyUSB0
2014.03.28 13:13:02 3: Probing TRX device /dev/ttyUSB0
2014.03.28 13:13:03 3: Probing ZWDongle device /dev/ttyUSB0
2014.03.28 13:13:03 3: Probing FRM device /dev/ttyUSB0
2014.03.28 13:13:09 1: usb create end
2014.03.28 13:13:09 0: Server started with 28 defined entities (version $Id: fhem.pl 5238 2014-03-16 16:23:31Z rudolfkoenig $, os linux, user root, pid 6335)
2014.03.28 13:13:09 3: HM485_LAN: Start HM485d with command line: ./FHEM/lib/HM485/HM485d/HM485d.pl --serialNumber SGW0123456 --device /dev/ttyUSB0 --verbose 5
2014.03.28 13:13:09 3: HM485_LAN: HM485d Could not start


Woran kann das liegen? Was kann ich noch tun?

Vielen Dank
Ronny

RoBra81

Hallo,

ich habe die Ursache gefunden und bin der Lösung auf der Spur - vielleicht liest aber auch jemand mit, der bessere Perl-Kenntnisse hat als ich (oder besser noch der Entwickler der HM485_LAN-Schnittstelle) und kann vielleicht auch helfen.
Das Problem ist, dass das HM485_LAN-Modul Funktionen verwendet, die auf der (Standard-)FritzBox nicht funktionieren/existieren:
1. Zum einen habe ich das Perl-Modul Pod::Usage aus der rausgeschmissen, da das auf der FritzBox nicht vorhanden ist. Da dieses aber (soweit ich das verstanden habe) nur für irgendwelche Nachrichten benutz wird, sehe ich dabei (im Moment) kein Problem.
2. Wir im HM485_LAN.pl geprüft, ob der HM485d erfolgreich gestartet wurde. Das verwendete "ps axo ..." funktioniert ebenfalls auf der FritzBox nicht (ps: invalid option...). Daher habe ich den Prozess HM485d händisch gestartet und im return der Funktion die PID fest eingetragen - das funktioniert jetzt und er findet endlich meine Wired-Module - bis zum nächsten Neustart.

Ich muss jetzt also versuchen, in der folgenden Funktion die PID aus dem ps OHNE axo-Optionen rauszusuchen...

sub HM485_LAN_HM485dGetPid($$) {
my ($hash, $HM485dCommandLine) = @_;
my $retVal = 0;

my $ps = 'ps | grep "' . $HM485dCommandLine . '" | grep -v grep';
my @result = `$ps`;
foreach my $psResult (@result) {
$psResult =~ s/[\n\r]//g;

if ($psResult) {
$psResult =~ /(^.*)\s.*perl.*/;
$retVal = $1;
last;
}
}

return $retVal;
}


soweit erstmal mein Fortschritt...

Ronny

UliM

Zitat von: RoBra81 am 30 März 2014, 11:15:52
(oder besser noch der Entwickler der HM485_LAN-Schnittstelle)
Soll ich den Fred nach Homematic verschieben - da dürften die Chancen auf ein Mitlesen des Autors besser stehen.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

RoBra81

Hallo,

ich denke, das wäre nicht schlecht. Mein aktueller Kenntnisstand ist, dass das '$ps' im Quellcode oben vermutlich gar nicht ausgeführt wird - ich habe versucht, das Ergebnis der Ausführung ins log zu schreiben, aber die Variable war immer leer. Ich habe es auch mal mit qx($ps) probiert - das selbe Ergebnis. Also habe ich ein kleines Perl-Programm geschrieben, mit genau diesen Zeilen, habe es direkt in der Kommandozeile ausgeführt und es wurde das korrekte Ergebnis ausgegeben. Also habe ich es für mich erstmal quick and dirty so gemacht, dass die obige Funktion immer 99999 als pid zurück gibt und somit die Verbindung mit dem manuell gestarteten HM485d aufgebaut wird...

Gruß
Ronny