linux usb hid input modul

Begonnen von justme1968, 13 April 2015, 23:00:21

Vorheriges Thema - Nächstes Thema

Gary

Hallo Andre,

habe es so versucht:
define hid0 linuxHid ::::00:04:20:eb:f6:b7
define hid1 linuxHid ::::00:04:20:f1:f4:04


Das Problem ist aber, dass in der ID selbst Doppelpunkte vorkommen, und somit der im Code verwendete Splitbefehl nur die ersten Stellen "00" abgreift und daher der Vergleich nicht aufgeht. Eine Lösungsmöglichkeit wäre, die ID ähnlich dem Event-Handler alleinstehend zu vergleichen, also im Code anstelle von (Zeile 299):
    return $d if( $uniq && $d->{uniq} eq $uniq );
so:
    return $d if( $d->{uniq} eq $device );

Dann funktioniert das:
define hid0 linuxHid 00:04:20:eb:f6:b7
define hid1 linuxHid 00:04:20:f1:f4:04


So geht es jetzt :-)

Übrigens: Ein Reconnect funktioniert - bedeutet das, ich müsste auch hier einfach ständig versuchen neu zu connecten?

Danke und lG,
Gerald

justme1968

#136
klar. an die : habe ich nicht gedacht. es wäre aber trotzdem nicht gegangen weil du am anfang 4 statt 5 : hattest :)

das split müsste so aussehen: my($bus,$vendor,$product,$version,$eventTypes,$uniq) = split( ':', $device,6 );

aber der vergleich auf device ist auch gut. das macht es noch einfacher. das übernehme ich so.


die vorübergehende lösung wäre ein at das jede minute nachschaut ob das hid device disconnected ist und dann ein reconnect macht. wenn das so funktioniert baue ich das direkt ins modul ein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Gary

Also so geht es jetzt (Prüfung alle 5 min):
define harmony_reconnect_hid0 at +*00:05:00 {if(Value("hid0") eq "Disconnected") { fhem("set hid0 connect") }}

Schöner wäre es, finde ich, wenn das Modul selbst jede Minute mal nachsieht und ich nicht so viele Events bräuchte.

Übrigens sehe ich das richtig, dass "connect" und "reconnect" im Moment genau das Gleiche tun (also zuerst Disconnect und dann neues Connect). Anregung: Vielleicht sollte eines von beiden den Status zuerst prüfen und gar nichts tun, wenn sowieso schon connected (dann hätte ich mir z.B. oben das IF sparen können  ;))

justme1968

das war nicht meine idee das es zwei varianten gibt :)

ich überlege mir was.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

justme1968

#139
anbei eine version zum testen:

- es gibt ein neues attribut collect wenn es gesetzt ist werden alle KEY events gesammelt bis das im attribut angegebene key event auftritt. danach wird ein event mit den bis dahin gesammelten keys erzeugt. also z.b. attr <hid> collect KEY_ENTER

das müsste z.b. mit dem leser hier: http://forum.fhem.de/index.php/topic,41991.msg342143.html#msg342143 oder auch mit barcode lesern funktionieren.


@Gary: im modul gibt es schon immer einen timer der versucht sich neu zu verbinden wenn die verbindung weg ist. kannst du mal bitte debuggen ob der timer bei dir aufgerufen wird? ich kann einen ir empfänger abziehen und wieder anstecken und er wird dann automatisch wieder gefunden. das funktioniert bei mir auch mit einem kleinen bluetooth sender der sich schlafen legt. es sind aber zwei tastendrücke nötig weil der erste die verbindung wieder herstellt. das sollte bei dir aber nicht der fall sein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

iklobitz

Andre, DU bist der Größte  ;) :)
hab´s grad eingespielt und getestet.
Als Ergebnis kommt nun:
2015-11-03 10:47:08 linuxHid hid sequence: 0004271161

Damit kann man doch etwas anfangen.
Vielen Dank !!!!

Gary

Hi andre, bei mir funktioniert ein reconnect leider definitiv nicht. Für Debug-Experimente muss ich mir erst mehr die Zeit nehmen, aber Hinweis vorab nach kurzem Blick in den Code: Es scheint mir, als wäre das Reaktivieren des Timers in der Funktion linuxHid_Connect ganz schön tief in den "IFs" verschachtelt. In den meisten Fällen kommt das Reaktivieren daher überhaupt nicht zu tragen.

Habe bei mir ins Log gesehen, wenn ich die Harmony ausstecke, passiert das:

2015.11.04 17:50:33 3: hid1: disconnected
2015.11.04 17:50:43 2: hid1: device 00:04:20:f1:f4:04 not found

d.h. möglicherweise wird das Connect genau einmal aufgerufen, gelangt in die Abzweigung "device not found", wo aber der Timer nicht neu gesetzt wird und Schluss - kein neuer Versuch. Wie gesagt eine Vermutung, müsste ich mich mal rumspielen. Schaust du mal?
Danke und lG.

justme1968

du hat recht. im not found fall wird der timer nicht neu gestartet.

es sollte reichen den log level zu ändern und den timer dort auch zu starten. ich baue das dann so ein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Frini

#143
Hallo,
ich habe den Thread jetzt durchgearbeitet und bin quasi kurz davor mir einen Empfänger für den Raspberry zu bestellen, um eine Verbindung vom Hub zu FHEM zu schaffen.
Anwendungsfall ist der, dass ich auf Pause oder Play Lampen etc. schalten möchte. Ist ja hier schon häufiger erwähnt.
Jetzt stellt sich mir allerdings die Frage wenn ich die X10 Fernbedienung von Pollin nutze, kann der Harmony Hub über Funk damit kommuniezieren? Kann der Hub die 433Mhz? Oder steh ich gerade total auf dem Schlauch und brauche was anderes. Wäre nett, wenn mich jemand mit dem Zaunpfahl erschlägt und ne funktionierendes Gerät empfiehlt.

Grüße
Matthias

Gary

Hi Matthias,

ich weiß der Thread ist schon lange ... möglicherweise haben da ein paar Punkte zu Missverständnissen geführt, und ich fürchte ich muss dir empfehlen nochmals zu lesen - vieles wurde schon erklärt. Trotzdem nochmals ein paar Kernpunkte aus meiner Sicht:

Der Harmony Hub kann mal per se per Funk im Logitech-eigenen Protokoll mit gar keinem anderen Gerät kommunizieren (also auch nicht 433Mhz). Er kann IR senden (und ein IR-Empfänger kann das an FHEM weiter geben) und mit der Anleitung hier im Thread nun auch per Bluetooth mit dem FHEM verbunden werden und dort als virtuelle Tastatur einzelne Tastendrücke simulieren, die wiederum in FHEM abgefragt werden und Aktionen auslösen können.

Es gibt noch keine Möglichkeit, wenn ich auf der Harmony bei einem x-beliebigen Gerät "Pause" oder "Play" drücke, gleichzeitig FHEM dazu zu bringen eine Lampe einzuschalten. Es gibt noch das FHEM Harmony Modul zur Verbindung des Hubs mit FHEM über LAN, aber mit dieser API kann man derzeit offensichtlich nur auf "Aktionen hören" und nicht auf einzelne Tasten eines konfigurierten Mediengeräts.

Jetzt kommt deine Fernbedienung ins Spiel - wenn du sie dazu bringst FHEM zu steuern, dann kannst du auch Lampen steuern. Dann hat das aber nichts mehr mit dem Harmony Hub zu tun, den brauchst du dazu nicht (außer du würdest mit der Fernbedienung FHEM steuern und FHEM wiederum Lichter und über das Harmony Modul deine Mediengeräte, aber jetzt wird's sehr umständlich ...) Übrigens die Pollin X10 kenne ich zwar nicht, aber ich finde Postings von Wzut und mbrail hier im Forum, dass die Funkanbindung über den USB-Empfänger nicht zu funktionieren scheint - würde ich nochmals prüfen.

Ich glaube du musst deine Anforderungen nochmals neu definieren ... und ich hoffe ich habe das alles selbst richtig verstanden  ;)

LG, Gerald

Frini

Jetzt versteh ich gar nichts mehr. Dieses Modulbist doch dafür da, damit ich den Raspberry, also FHEM, als Gerät am Hub anlernen kann. Dieses Gerät binde ich dann in jede Aktion ein und lege es auf die entsprechenden Tasten (pause,play,stop,etc).
Wenn ich dann entsprechende Taste drücke schalte ich ja das FHEM Gerät und mittels DOIF oder notify verlinke ich dann BluRayPlayer, Kodi, etc und die Lampen oder sonstwas.
Meine Frage ist gewesen, ob dies mit der x10Fernbedienung von Pollin funktioniert. Oder brauch ich da was anderes?

justme1968

genau so ist es. aber du brauchst einen empfänger für ein protokoll das der hub auch sendet.

also entweder mce ir oder bluetooth. der hub kann je kein x10 senden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Frini

Jetzt hab ich's.  ;D
Mcr ir macht wahrscheinlich mehr Sinn. Gibt es eine Empfehlung? Mce ir ist jeder USB Dongle? Oder sind das dir gpio?

justme1968

nicht jeder aber vermutlich viele. such mal nach mce fernbedienung.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Frini

Alles klar. Ich hab jetzt so ne china Fernbedienung für 7€ bei Ama gekauft. Die dürfte Samstag ankommen. Hoffentlich hab ich am WE etwas Zeit, dann setz ich mich dran.
Ist schon sehr komfortabel, wenn das Licht bei Filmstart automatisch ausgeht.
FHEM macht da schon irgendwie süchtig.