HomeMatic USB Konfigurations-Adapter (HM-CFG-USB) in Fhem nutzen

Begonnen von mgernoth, 30 Mai 2013, 17:06:32

Vorheriges Thema - Nächstes Thema

der-Lolo

@Volschin - ok, dachte mir schon das es eine Möglichkeit gibt... Kannst du mich aber vielleicht noch ein bisschen mehr schubsen? Ich kann nichts finden - oder habe Tomaten auf den Augen.

betateilchen


udo@arm /opt/fhem_add/hmcfgusb $ ./hmland -h
Syntax: ./hmland options

Possible options:
-D debug mode
-d daemon mode
-h this help
-i interactive mode (connect HM-CFG-USB to terminal)
-l ip listen on given IP address only (for example 127.0.0.1)
-P create PID file /var/run/hmland.pid in daemon mode
-p n listen on port n (default: 1000)
-r n reboot HM-CFG-USB after n seconds (0: no reboot, default: 86400)
   hh:mm reboot HM-CFG-USB daily at hh:mm
-v verbose mode
-V show version (0.091-git)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!


marc2

Hallo Helge,

Du hast  zwei Möglichkeiten:


  • Cross Compiler Toolchain (analog dem was Freetz macht) für Deinen Synology erstellen
  • ipkg auf dem Synology installieren (http://www.synology-wiki.de/index.php/IPKG). Danach kannst Du Dir den C Compiler direkt auf dem NAS installieren

Danach kannst kannst Du Dir den hmland für das NAS bzw. direkt auf dem NAS übersetzen.

Ich denke Martin wird eines von beiden getan haben, um den CUL am Synology zum fliegen bekommen zu
haben. Vielleicht ist er ja so nett, und schiebt den hmland einmal durch den Compiler.

Gruß, Marc

marc2

#304
Moin noch einmal !

In Sachen Cross Compiling für Synology gibt es ein tolles Projekt: https://github.com/SynoCommunity/spksrc

Habe ich mir mal eben runtergeladen und den hmland für mein Synology 211+ übersetzt (ist die gleiche
Plattform wie ein 212j). Läuft bei mir tadellos  :)  Anbei die Binaries und die benötigte libusb-1. Die Datei
auf das NAS kopieren (im folgenden Fall nach /tmp) und die folgenden Schritte ausführen. Wenn man ipkg schon
drauf hat, braucht man sich um das /opt Verzeichnis nicht kümmern. Man kann das ganze natürlich auch
in ganz andere Ordner packen. Wichtig ist auf jeden Fall das Setzen des LD_LIBRARY_PATH, damit die
libusb gefunden wird !

mkdir -p /volume1/@optware/bin /volume1/@optware/lib
ln -s /volume1/@optware /opt
cd /
gzip -cd  /tmp/hmland-88f6281-0.094.tar.gz | tar xvf -
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/lib
nohup /opt/bin/hmland -l 127.0.0.1 -p 1000 -d -r 04:00


Die letzten beiden Schritte sollten in einem passen Startscript verewigt werden.

Gruß, Marc

-Helge-

Hallo Marc,

danke für die Files! Ich habe es heute abend zwar geschafft, ipkg und git zu installieren, die hmland-files auf tmp zu ziehen und gcc, make und libusb aus dem ipkg zu installieren. Aber das libusb scheint nicht das richtige zu sein, das Makefile hat sich ständig aufgehängt.
Ich habe dein File in /tmp kopiert und die Eingaben auszuführen versucht. Aber ich bekomme beim ln und beim tar ein permission denied, obwohl ich via SSH als admin eingeloggt bin. Hast du da noch einen Tipp für mich?

Schon mal vielen Dank für die Unterstützung!!

marc2

Hallo Helge !

ZitatAber das libusb scheint nicht das richtige zu sein, das Makefile hat sich ständig aufgehängt.

Da ich den hmland ja nun durch den Cross Compiler geschoben habe, brauchst keine Entwicklungsumgebung mehr.
Die Dateien in dem Archiv sind die fertigen Binaries für das NAS !

Admin Rechte reichen nicht, Du benötigst root Rechte ! Also einfach per SSH als root anmelden. Das root Kennwort
sollte dem des admin Accounts entsprechen.

Gruß, Marc


-Helge-

Hallo Marc,

danke für die Erklärungen - es scheint soweit geklappt zu haben. Leider komm ich das Wochenende nicht mehr dazu, es weiter auszuprobieren. Aber schon mal vielen Dank für die Hilfe!

Helge

axel.mohnen

Hallo,

ich habe eine Fritzbox 7390 (06.03 mit Labor Firmware) und HM-CFG-USB Stick.
Die Anleitung von Marc habe ich befolgt (nochmals vielen Dank für die Hilfe).

1. Binariers nach /var/media/ftp/fhem/bin kopiert (hmland-7390-0.091 - 6.00)
1. Die libusb-1.0.so.0.1.0 und der link zur libusb haben bereits in /var/media/ftp/fhem/lib existiert
2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/var/media/ftp/fhem/lib
3. chmod 755 hmland hmsniff
# ./hmland -l 127.0.0.1 -p 1234
./hmland: can't resolve symbol 'libusb_handle_events_timeout_completed' in lib './hmland'.

Den gleichen Fehler bekomme ich im Debug Mode

Im Daemon Mode wird erst eine PID vergeben aber bricht nach ca. 20 Sekunden mit dem gleichen Fehler ab.
# # ./hmland -l 127.0.0.1 -p 1234 -d
# Daemon with PID 2368 started!

FHEM Log:
127.0.0.1:1234 reappeared (HMLAN1)
HMLAN_Parse: HMLAN1 new condition init
127.0.0.1:1234 disconnected, waiting to reappear


Leider konnte ich nichts zu dem Fehler finden.


Vielen Dank im Voraus für eure Hilfe

Axel

marc2

Hallo Axel,

sieht für mich danach aus, dass Deine libusb nicht zum hmalnd passt. Nicht dass ich mit den 6.00
Binaries unter 6.03 Probleme gehabt hätte, aber ich habe noch einmal den hmland 0.094 frisch
für 6.03 gebaut. Diese Kombination läuft bei mir seit rund 10 Tagen.

Gruß, Marc


axel.mohnen

Hallo Marc,

super vielen Dank, es funzt!

ich habe den link "libusb-1.0.so.0.1" der bereits auf der Fritz Labor version drauf war gelöscht und neu angelegt mit (libusb-1.0.so.0.1.0).

Jetzt steht mein HMLAN1 im status "open".

Mein nächstes Problem ist jetzt das die Befehle nicht in der startfhem greifen.
Ein Log wird auch nicht geschrieben.
Mit welchem User wird die startfhem standardmässig auf der FB gestartet?
Kann das ein Berechtigungsproblem sein?

Viele Grüsse
Axel


Loctotex

Auf meiner 7360 mit 06.03 läuft die Lib von marc2 nicht. 

Habe meine Lib mal angehängt

Mit der Lib von marc2 bekomme ich mehrere Prozesse:
# ./hmland -d -p 1234 >>hmlandlog.txt
# ps | grep hmland
3071 root      1456 S    ./hmland -d -p 1234
3072 root      1456 S    ./hmland -d -p 1234
3073 root      1456 S    ./hmland -d -p 1234
3075 root      1228 S    grep hmland



Mit der meiner sieht das so aus:

# ./hmland -d -p 1234 >>hmlandlog.txt
# ps | grep hmland
3101 root      1404 S    ./hmland -d -p 1234
3103 root      1228 S    grep hmland

marc2

Hallo Axel,

Zitat von: axel.mohnen am 25 Februar 2014, 13:32:26
Mein nächstes Problem ist jetzt das die Befehle nicht in der startfhem greifen.
Ein Log wird auch nicht geschrieben.

startfhem wird von root gestartet. In selbigem Script starte ich den hmland bei mir wie folgt:

ps | grep hmland | grep -v -q grep ||
/var/media/ftp/bin/hmland -l 192.168.2.1 -p 1000 -d -r 04:00 > /var/media/ftp/fhem/log/hmland.log 2>&1


Die Pfade musst Du natürlich auf Deine Umgebung anpassen

Gruß, Marc

axel.mohnen

Hallo Marc,

so langsam gehen mir die Ideen aus  :(
Der hmland will einfach nicht mit startfhem laufen

Die startfhem liegt im gleichen Verzeichnis wie der hmland (/var/media/ftp/fhem/bin).
Die Rechte von hmland sind auf 777 gesetzt.
Interessant ist auch das kein Log geschieben wird!
Ich habe das Gefühl das ich die falsche startfhem bearbeite. Kann das sein?

#!/bin/sh
trap "" SIGHUP

if [ ! -c /dev/ttyACM0 ]; then
    rm -f /dev/ttyACM0
    mknod /dev/ttyACM0 c 166 0
fi
if [ ! -c /dev/ttyACM1 ]; then
    rm -f /dev/ttyACM1
    mknod /dev/ttyACM1 c 166 1
fi
if [ ! -c /dev/ttyUSB0 ]; then
    rm -f /dev/ttyUSB0
    mknod /dev/ttyUSB0 c 188 0
fi
if [ ! -c /dev/ttyUSB1 ]; then
    rm -f /dev/ttyUSB1
    mknod /dev/ttyUSB1 c 188 1
fi

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/var/media/ftp/fhem/lib
ps | grep hmland | grep -v -q grep || /var/media/ftp/fhem/bin/hmland -l 127.0.0.1 -p 1234 -d -r 04:00 > /var/media/ftp/fhem/log/hmland.log 2>&1
sleep 2

export PATH=$PATH:/opt/bin
mkdir -p /proc
mkdir -p /sys
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t usbfs usbfs /proc/bus/usb
cd /opt/fhem
/opt/bin/perl fhem.pl fhem.cfg


Viele Grüße
Axel

marc2

Hallo Axel !

Wenn Du in der richtigen startfhem bist, müsstest Du in der "/var/media/ftp/fhem/log/hmland.log"
Ausgaben bzw. Fehlermeldungen finden (vorausgesetzt das Verzeichnis "/var/media/ftp/fhem/log"
existiert auf Deiner FB). Was steht dort drin ?

Gruß, Marc