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

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

Vorheriges Thema - Nächstes Thema

X-Franzi

Viele verschiedene Problem...  ;)

Ich beziehe mich auf die Posts #565/566:
ZitatEvtl. Start-Reihenfolge... Hilft es, wenn Du nach dem Booten den Daemon per Hand startest?

@hexenmeister:
Startreihenfolge? Was genau meinst du und wie (wo) könnte ich das ändern? USB-Geräte habe ich sonst keine angeschlossen.

Ich habe versucht den Daemon nach dem Booten per Hand mit "./hmland -D -p 1234" zu starten:
Zitat~/hmcfgusb $ ./hmland -D -p 1234
Can't bind socket: Address already in use
Das sieht für mich so aus, als sei er bereits ordentlich gestartet. Wie könnte ich prüfen wer oder was diese Adresse benutzt? Also ob es tatsächlich der Daemon ist?

Gibt es sonst noch was zum Ausprobieren?

hexenmeister

Mit Startreihenfolge meine ich eben den Startpunkt des Scriptes. Es muss ja bereits davor einiges unbedingt laufen. Netzwerk zum Beispiel. Ich habe mein altes Post entsprechend ergänzt.

Füge am Anfang der Datei (/etc/init.d/hmland) folgendes ein:

# simple init for hmland
### BEGIN INIT INFO
# Provides:          hmland
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop::    $network $local_fs $remote_fs
# Should-Start:      $all
# Should-Stop:       $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start hmland daemon at boot time
# Description:       Provide Service to use HM-USB-CFG Adapter for FHEM.
### END INIT INFO


und dann auf der Console:
sudo update-rc.d hmland defaults
sudo service hmland start


Ich hoffe das hilft.

Die Fehlermeldung bekommst Du, weil hmland schon gestartet ist. Du musst ihn zunächst stoppen (sudo service hmland stop).

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

X-Franzi

Klingt logisch, allerdings hatte ich schon dein Script von Post #557 benutzt. Da ist dieser Bereich bereits implementiert.  :'( Funktioniert also auch nicht.

hexenmeister

Zitat von: X-Franzi am 24 November 2014, 16:51:13
Da ist dieser Bereich bereits implementiert.  :'( Funktioniert also auch nicht.

Das habe ich erst nachträglich geändert. Schau mal bitte in deinem /etc/init.d/hmland nach!

Hast Du schon ausprobiert, ob
sudo service hmland stop
sudo service hmland start

das Problem nach dem Reboot (einmalig) löst?

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

X-Franzi

Funktioniert auch nicht.

Hier der Inhalt der von mir verwendeten /etc/init.d/hmland:
Zitat# simple init for hmland
### BEGIN INIT INFO
# Provides:          hmland
# Required-Start:    $network $local_fs $remote_fs
# Required-Stop::    $network $local_fs $remote_fs
# Should-Start:      $all
# Should-Stop:       $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start hmland daemon at boot time
# Description:       Provide Service to user HM-USB-CFG Adapter for FHEM.
### END INIT INFO

pidfile=/var/run/hmland.pid
port=1234

case "$1" in
  start|"")
   chrt 50 /opt/hmcfgusb/hmland -r 0 -d -P -l 127.0.0.1 -p $port 2>&1 | perl -ne '$|=1; print localtime . ": [hmland] $_"' >> /var/log/hmland.log &
   ;;
  restart|reload|force-reload)
   echo "Error: argument '$1' not supported" >&2
   exit 3
   ;;
  stop)
   killall hmland
   ;;
  status)
   if [ ! -e $pidfile ]; then
      echo "No pid"
      exit 1
   fi
   pid=`cat $pidfile`
   if kill -0 $pid &>1 > /dev/null; then
      echo "Running"
      exit 0
   else
      rm $pidfile
      echo "Not running"
      exit 1
   fi

   ;;
  *)
   echo "Usage: hmland [start|stop|status]" >&2
   exit 3
   ;;
esac

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

X-Franzi

#576
Nach dem Booten steht in der  /var/log/hmland.log:
ZitatMon Nov 24 19:16:05 2014: [hmland] Daemon with PID 2195 started!
Mon Nov 24 19:16:05 2014: [hmland] Can't bind socket: Address already in use
in FHEM: HMUSB disconnected

anschließend nacheinander ausgeführt:
HMUSB raus und wieder rein erzeugt keine weiteren Einträge in der /var/log/hmland.log.
sudo hmland stop erzeugt auch nichts

sudo hmland start erzeugt:
Zitat[hmland] Already running with PID 2195 according to /var/run/hmland.pid!

sudo hmland status erzeugt in der /var/log/hmland.log nichts. Aber in der Konsole kommt:
ZitatRunning
~ $ /etc/init.d/hmland: 34: kill: No such process


Mir ist jetzt was aufgefallen:
Nach dem Booten steht ja HMUSB auf disconnected. Ziehe ich jetzt den HMUSB ab, steht er auf opened. So bleibt das auch, wenn ich ihn wieder anschließe. Auch wenn ich ihn nun wiederholt abziehe und anstecke. Er bleibt immer auf opened!
sudo hmland stop setzt ihn wieder auf disconnected. Start und stop bringen ab jetzt nichts mehr. Stop zeigt nun
Zitathmland: Kein Prozess gefunden
. Rein und raus ist nun auch ergebnislos.
Hilft das evtl. bei der Problemlösung weiter?

hexenmeister

Irgendwas blockiert scheinbar in deinem System den benötigten Port (1234). Du könntest einen anderen versuchen.

Was zeigt eingentlich folgendes:
sudo netstat -a -p -e| grep 1234
Mit etwas Glück sehen wir den Verursacher. Glaube aber nicht wirklich daran, sonst würde das nach Aus/Einstecken auch nicht funktionieren.

Mir gehen leider die Ideen aus, vlt. kann der Autor des Programm weiterhelfen?
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

X-Franzi

Zitatsudo netstat -a -p -e| grep 1234
tcp        0      0 *:1234                  *:*                     LISTEN      root       2694        1955/hmland
tcp        0      0 localhost:37375         localhost:1234          VERBUNDEN   fhem       2968        2099/perl
tcp        0      0 localhost:1234          localhost:37375         VERBUNDEN   root       2695        1955/hmland

???

hexenmeister

hmland hört auf Port 1234. Perl ist mit dem hmland verbunden (Port 37335).
Tja, das sieht richtig aus. Ich habe leider keine Idee, warum das nicht funktioniert. :(
Das muss etwas zwischen dem hmland und dem Betriebsystem sein.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

vbs

Könntet ihr mir bitte sagen, welche Latenz-Werte ihr habt, wenn hmland einen Befehl an den HMUSB sendet. Das kann man sehen, wenn man hmland mit "-D" startet und dann ein paar Befehle sendet.
Dankeschön!

hexenmeister

Minst Du diese Daten (Cubietruck, HMUSB hängt an einem Hub)?

Thu Nov 27 21:41:42 2014: [hmland] usb-transfer took 63ms!
...
Thu Nov 27 21:41:47 2014: [hmland] usb-transfer took 38ms!
...     
Thu Nov 27 21:41:49 2014: [hmland] usb-transfer took 49ms!


Was mit aufgefallen ist, mit der Debug-Option reagieren die Devices merklich langsamer. Ich habe zwei Rolladen gleichzeitig (über eine Struktur) gefahren. Ohne Debug ging das praktisch gleichzeitig, mit Debug reagierten die Schalter leicht versetzt.


Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

viper20333

#582
Ich hoffe ihr könnt mir helfen:
Mein USB Adapter ist an eine Fritz Box angeschlossen. Nach 2 Tagen fängt er auf einmal an zu blinken und es können keine Befehle mehr gesendet werden.

2014.11.28 21:22:54 3: CUL_HM set Wohnzimmer.Wandthermostat desired-temp 22.0
2014.11.28 21:56:06 1: HMLAN_Parse: hmusb new condition timeout
2014.11.28 21:56:06 1: 127.0.0.1:1234 disconnected, waiting to reappear (hmusb)
2014.11.28 21:56:06 1: HMLAN_Parse: hmusb new condition disconnected
2014.11.28 21:56:11 1: 127.0.0.1:1234 reappeared (hmusb)
2014.11.28 21:56:11 1: HMLAN_Parse: hmusb new condition init
2014.11.28 21:56:40 1: HMLAN_Parse: hmusb new condition timeout
2014.11.28 21:56:40 1: 127.0.0.1:1234 disconnected, waiting to reappear (hmusb)
2014.11.28 21:56:40 1: HMLAN_Parse: hmusb new condition disconnected
2014.11.28 21:56:45 1: 127.0.0.1:1234 reappeared (hmusb)

Anscheinend verliert er ständig die Verbindung zu dem USB-Konfigurations-Adapter. Ich habe auch schon ein Firmware Update gemacht. Leider hat dies auch keine Besserung gebracht. Auch nach Stoppen von Hmland blinkt der Stick weiter.

vbs

Danke hexenmeister! Diese Latenzen habe ich ungefähr auch... Ich wollte nicht recht einsehen, warum es 40 ms dauern soll, 64 Byte zu einem USB-Device zu übertragen, wenn ich ein 56 Byte ICMP-Ping-Paket in 15 ms um die halbe Welt und zurück übertragen kann... :/

In die Latzen geht scheinbar noch ein Null-Frame ein, das nach jedem Befehl geschickt wird. Ich weiß nicht, ob das nötig ist. Wenn man das weglässt, dann hat man Latenzen um 10 ms herum und es funktioniert augenscheinlich erstmal trotzdem noch.

hexenmeister

Ich muss gestehen, das mit Null-Frame habe ich nicht verstanden.
Hast du mit dieser latenz ein konkretes Problem?
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy