HM-CFG-USB für Windows

Begonnen von vbs, 21 November 2014, 21:31:32

Vorheriges Thema - Nächstes Thema

vbs

Ich betreibe mein fhem in einer virtuellen Maschine und hatte einige Problem mit der USB-Latenz bei Nutzung von einem HM-CFG-USB zusammen mit dem "hmland". Mein Host-System, an dem der USB-Stick steckt, ist ein Windows 8.1 und mein fhem läuft unter TinyCore-Linux in VMWare. Mein Verdacht war, dass die Latzenz wegen dem "VM-Umgweg" so schlecht ist. Die Latenz schwankte zwischen 40 und 500 ms.
Ich habe auch mal versucht, die VM unter Virtualbox laufen zu lassen, aber dort war die Latenz noch schlechter und war permanent >500 ms.

Die Idee war nun, den HM-CFG-USB nicht mehr mit  der VM zu verbinden, sondern direkt mit dem Windows-Host-System, und dann fhem aus der VM heraus per (virtuellem) Netzwerk mit dem USB-Stick reden zu lassen. Leider funktionierte das hmland nicht von Haus aus unter Windows, wegen der libusb.

Lange Rede, kurzer Sinn: Ich habe etwas an dem hmland rumgebastelt, um ihn unter Windows (cygwin) kompilieren und laufen lassen zu können. Vielleicht hat ja auch jemand anders Verwendung dafür. Kritik bzw. Rückmeldung ist natürlich gerne gesehen.
(Der Code kompiliert und läuft übrigens soweit ich weiß auch weiterhin unter Linux)

Ich habe das Ganze jetzt bei mir unter Windows 8.1 auf einem i5 laufen und eigentlich immer Latenzen <50 ms und es scheint bisher im Zusammenspiel mit fhem stabil und vor allem schnell zu laufen. Also das Latenz-Problem tritt damit bei mir nicht mehr auf.
(Ich nutze nur die hmland.exe. Die anderen Programme (flash und sniff) habe ich noch nicht benutzt, sind aber enthalten)

Source Code:
https://github.com/verybadsoldier/hmcfgusb/tree/cygwin

Binaries finden sich im Anhang.

Außerdem muss der entsprechende Treiber für den Stick installiert werden. Am einfachsten mit dem Tool: http://zadig.akeo.ie/

ogglobi

hiho,
also kann ich einfach die hmland.exe per cmd starten ? ohne irgendwas von cygwin oder dergleichen installieren zu muessen ?

Ich habe jetzt per Zadig den hm-cfg-usb auf WINusb gewechselt und dann die hmland.exe versucht mit den folgenden Argumenten zu starten:

hmland -p 1000
hmland -p 1000 -D
hmland -i
hmland

leider bekomme ich immer folgenden Fehler !

C:\Users\Administrator\Desktop\xx\hmcfgusb>hmland -p 1000
Can't open device: Operation not supported or unimplemented on this platform
Can't find/open hmcfgusb!
Can't initialize HM-CFG-USB!

System = Laptop - i5, Win7x64 pro
im hmcfgusb-Ordner befinden sich die 7 Dateien aus deinem Anhang.

danke schonmal für Hilfe !
gruß ogglobi

vbs

Also die cygwin-DLLs, die beim Ausführen gebraucht werden sind dabei. Cygwin musst du nur installieren, wenn du den Quellcode selbst übersetzen willst.

Zu dem Problem:
Hast du den Treiber für den Stick korrekt installiert? Ich nutze im den WinUSB. Evtl. dann nochmal im Geräte-Manager gucken, ob der Treiber auch dort angezeigt wird.

ogglobi

geschafft :-)

habe es erst auf einem frischen Win8 ausprobiert - hat funktioniert. !
dann den eigentlichen "Win7-Server" nochmal komplett bereinigt und paar mal neu gestartet.
jetzt funktioniert alles !!
vielen Dank !! und schönen Abend.

gruß ogglobi

ogglobi

ich schon wieder :-)

habe jetzt das ganze noch versucht durch ein USB-over-IP Tool laufen zu lassen, um den HM-CFG-USB auf einem Hyper-V 2012 Server-Client mit Windows 7x64pro laufen zu lassen ... leider ohne Erfolg bisher :-(   -   habe es als HidUsb und WinUsb versucht zu sharen aber bekomme immer :

Can't find/open hmcfgusb!
Can't initialize HM-CFG-USB!

im Device-Manager vom Client Win7 bekomme ich den HM-CFG-USB als Universal Serial Bus Devices angezeigt, aber hmland findet ihn irgendwie nicht  ... irgendwelche tips noch ?

gruß ogglobi

vbs

Zu dem USB-over-IP kann ich leider nix sagen, aber warum brauchst du das überhaupt. Per hmland ist doch das HMUSB sowieso netzwerkweit als HMLAN erreichbar. Oder was hast du vor?

ogglobi

Zitat von: vbs am 18 Dezember 2014, 15:42:44
Per hmland ist doch das HMUSB sowieso netzwerkweit als HMLAN erreichbar. Oder was hast du vor?

das stimmt schon, dennoch wollte ich falls möglich hmland nicht auf dem Hypervisor laufen lassen, sondern lieber über USB-over-IP in der virtuellen Maschine von Hyper-V.
mein Motto - "keep the Hypervisor clean" - (soweit es geht) :-)

vielleicht fällt jmd. anders ja noch was ein.
dennoch vielen Dank dir nochmal ! - deine hmland.exe läuft bisher spitze !
gruß ogglobi

tpm88

Bei dem Ansatz ist IMHO aber ein anderes wichtiges Motto, was rede ich, Grundprinzip in der IT verletzt: KISS

Sorry - couldn't resist.
Tobi
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

docb

Hi,
sag mal könnte man mit deiner Lösung den USB-Adapter auch mit eine Windows-Fhem-Installation betreiben? Das geht ja offensichtlich aktuell noch nicht, soweit ich die ganzen Threads verstanden habe...
Viele Grüße
doc
I love FHEM!

vbs

Ja, das sollte gehen. Der hmland ist ja ein eigener Prozess der über Netzwerk angesprochen wird. Das heißt, dem ist es egal ob ein Windows-FHEM oder ein Linux-FHEM anfragt.

docb

Coole Sache, sollte ich das ausprobieren müssen - weil ich zur Zeit kein Glück mit den HM-LANs habe - werde ich berichten! Wenn der nächste HM-LAN auch spinnt (kommt am Dienstag) versuche ich es mit einem USB-Stick.
Viele Grüße
doc
I love FHEM!

LuckyDay

ZitatWenn der nächste HM-LAN auch spinnt

@docb
was tut denn nicht? beim HMLan
den HMUSB mußt du genauso streicheln alle 25 sekunden

docb

Den erstem beim Firmware-Update geschrottet und Nr. 2 und 3 (die als Ersatz gekommen sind) konnte ich nicht konfigurieren, weil die Konfig-Software den aufgedruckte AES-Key nicht akzeptiert hat. Nachdem ich fast nicht glaube, dass zwei HM-Lans einen falsch programmierten AES-Key haben, befürchte ich, dass das vielleicht an der HM-Software liegt, die trotz mehrfacher Neuinstallation und verschiedener Versionen (1.515 und 1.517) noch irgendwas in der Registry hinterlassen hat. Aber ich habe keine Lust deswegen einer meiner zwei Rechner, von den aus ich das versucht habe, platt zumachen um die HM-Software nochmal sauber aufzusetzen. Echt nervig!
Viele Grüße
I love FHEM!

Trebxson

#13
Hallo vbs,

gerhardg verwies mich in meinem Problem-Thread auf deine Bemühungen den HM-CFG-USB in Windows zum Laufen zu bringen.

Ich habe die letzten 3 Wochen viel Energie in FHEM gesteckt, konnte jedoch den Stick bisher nicht ohne größere Probleme zum Laufen bringen. Bis heute :)

Vielen Dank für deine Arbeit!

Ggf. solltest du auf die Treiberinstallation mit zadig noch etwas eingehen. Vor allem die Tatsache, dass das Gerät zunächst nicht gelistet wird, da bereits installiert, verwirrte. Auch die Ungewissheit ob man z.B. WinUSB noch besorgen muss, plagte mich. Bei mir wurde das Gerät letztlich als USB-HID gelistet und mischte sich damit unter drei Treiber der USB-Tastatur. Unterscheiden konnte ich sie durch die Angabe Ort und Vergleich der Ausgben in zadig.

Ich habe nun immer noch ab und an Meldungen, welche jedoch wie nach dem beschrieben Neustart des USB-Sticks aussehen? (wie in hmland unter Linux auch, nur mit anderen Meldungen??). Davor und danach ist alles i.O..

Interrupt transfer not completed: Unknown error code 1 / 0x01!
closing device-connection due to error 5
closing device-connection due to error 5
closing device-connection due to error 5


Timings waren bei mir übrigens während der Anbindung per VM ganz i.O.. Aber erst als ich Teile von hmland auskommentierte, behob ich damit zumindest die letzte der folgenden Meldungen und bekam die Anbindung in FHEM teilweise zum Laufen. Mehr dazu in dem Problem-Thread.
write: Broken pipe
Can't send null frame: Operation timed out


Viele Grüße,
Robert
FHEM auf NUC (NUC5i5MYBE) Lüfterlos (Akasa) bei ~10 W mit Abschaltung bei Nichtanwesenheit + Wake on Pattern Match mit EEE im Sommer.
Heizungssteuerung mit Homematic über FHEM im Winter.
Wassersäule mit Pumpe, WaKü-Technik, Luftsprudel, Wasserstrudel, RGB-Lichtorgel mit Homematic und ZWave.

vbs

Freut mich, wenn jemand etwas damit anfangen kann. Zu deinem Problem hab ich leider keine Ideen, sorry :( Kann nur sagen, dass das bei mir noch nicht aufgefallen ist.