linux usb hid input modul

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

Vorheriges Thema - Nächstes Thema

HansDampfHH

#165
Moin, ich würde gerne mit meiner Harmony Ultimate und dem zugehörigen Hub Kommandos and FHEM senden.
Allerdings scheitere ich wohl bereits bei den Voraussetzungen. Kann mir da vielleicht jemand Tipps geben?
Tut mir leid wenn das hier total falsch ist, da es hier ja eigentlich nicht um den Hub geht.

Wenn ich das richtig verstehe muss ich wohl erst mal den HUB per Bluetooth mit meinem FHEM Server (Debian) pairen.
Daran scheitert es aktuell.

Ich muss bei der Harmony ein neues Gerät einhängen (Computer)?
Auf dem FHEM Server nach Bluetooth Geräten suchen?

Wenn die Bluetoothgeräte gekoppelt wurden werden die Harmony Befehle per Bluetooth über den Hub ab den FHEM Server weitergeleitet und können dort mit diesem Modul hier ausgewertet bzw. genutzt werden?

Ich wäre dankbar für ein paar Hinweise zur Umsetzung des Pairings (Hub <-> Fhem-Server).
FHEM Docker, CUL868, Zigbee, CCU2, Jeelink

ectomorph

Nun habe ich es mit dem neuen Modul hin bekommen aber nun erscheinen alle Events doppelt. Weiß jemand wie ich das verhindern kann bzw. wie dies zu stande kommt?

Eventmonitor:
2016-03-28 11:05:08 linuxHid hid EV_KEY:KEY_LEFT
2016-03-28 11:05:08 linuxHid hid EV_KEY:KEY_LEFT
2016-03-28 11:05:09 linuxHid hid EV_KEY:KEY_UP
2016-03-28 11:05:09 linuxHid hid EV_KEY:KEY_UP
2016-03-28 11:05:09 linuxHid hid EV_KEY:KEY_RIGHT
2016-03-28 11:05:09 linuxHid hid EV_KEY:KEY_RIGHT
2016-03-28 11:05:09 linuxHid hid EV_KEY:KEY_DOWN
2016-03-28 11:05:09 linuxHid hid EV_KEY:KEY_DOWN
2016-03-28 11:05:10 linuxHid hid EV_KEY:KEY_ENTER
2016-03-28 11:05:10 linuxHid hid EV_KEY:KEY_ENTER

define hid linuxHid Harmony.Keyboard
attr hid icon it_remote
attr hid ignoredTypes EV_SYN,EV_MSC
attr hid room Wohnzimmer,harmony


justme1968

@igami: was meinst du mit vereinfachen? wenn es um das zusammenfassen beider hid devices zu einem fhem device geht: das geht nicht. du brauchst pro event quelle ein fhem device.

@HansDampfHH: wie du die harmony per bluetoth mit einem pc koppelst hängt von deinem pc ab. das prinzipielle vorgehen ist auf den harmony seiten beschrieben.

der hub 'spielt' tastatur und wird wie jede andere bluetoth tastatur eingebunden.

@ectomorph: zeig mal bitte was mit verbose 5 im log steht.

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

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

igami

Zitat von: justme1968 am 28 März 2016, 12:21:00
@igami: was meinst du mit vereinfachen? wenn es um das zusammenfassen beider hid devices zu einem fhem device geht: das geht nicht. du brauchst pro event quelle ein fhem device.
Hatte erst gedacht ich könnte das umgehen, da ja beide den gleichen name haben. Habe es nun mittels "bus:vendor:device:version:eventTypes" angelegt, damit sichergestellt ist, dass ich immer das richtige habe.

Mir ist eben eingefallen, dass ich ja mein DOIF so umstellen kann, dass es auf Events von beiden Devices reagiert, dann muss ich nicht immer erst testen welche Taste zu welchem Device gehört.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

ectomorph

Hab ein LOG-Auszug mit Verbose 5 anhangen, ganz unten ist noch eine Action mit dem KEY_MUTE verküpft die dann immer doppelt ausgelöst wird.


justme1968

das schaut so aus als ob die tasten wirklich doppelt kommen. wie sind die wiederholungen im hub für dieses gerät eingestellt?

wenn das nicht hilft schau dir mal das hier an: https://forum.fhem.de/index.php/topic,51619.msg432921.html#msg432921

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

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

MattG

Danke an alle, die das Modul entwickelt haben!

Ich habe damit in kürzester Zeit einen Satechi Media Button in Betrieb genommen, um damit meine Musik zu steuern (per http). Mein Setup:

- Fhem läuft dabei auf einem Raspi unter Raspbian Jessie, mit Bluez 5.23. Dadurch ist es recht simpel mit bluetoothctl sich mit dem Knopf zu verbinden, so dass die Verbindung auch dauerhaft über Systemneustarts erhalten bleibt.

- Ich verwende derzeit die Version vom Anfang des Threads - bei den späteren hatte ich das Problem, dass ich die Events doppelt kamen: Die Key up und Key down kamen als getrennte Events, was bei höheren Loglevels im Logfile sichtbar wird, aber in den Events nicht unterschieden wird. Im Logfile taucht z.B. folgendes auf: "value:1 (KEY_DOWN)". Leider reichen meine Perlkenntnisse noch nicht aus, um das zu beheben.

- Benutzt man den Knopf einige Minuten nicht, geht er in einen Sleepmodus und schaltet die Bluetoothverbindung ab. Damit verschwindet das File /dev/input/event0 und das Device geht auf Disconnected. Sobald man wieder auf den Knopf drückt, verbindet sich auf der Linuxebene wieder alles automatisch und /dev/input/event0 kommt zurück. Leider wird das von dem Modul so nicht erkannt. Es ist schon weiter oben im Thread erwähnt worden, dass in dem Fall der automatische Reconnect nicht greift. Auch hier fehlen mir die Perlkenntnisse, um das zu beheben. Im Moment behelfe ich mich mit einem externen Script, das das File überwacht und einfach in FHEM den connect aufruft.

Aber wenn die Verbindung mal steht funktioniert es sehr gut: Wenig Verzögerung und löst zuverlässig aus!

Gruß,
Matthias

justme1968

schau mal bitte etwas weiter oben im thread. ich glaube da hatte ich eine version mit besserem reconenct gepostet.

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

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

MattG

Hallo Andre,

danke für den Hinweis. Ich habe deine Version vom 3.10. ausprobiert - leider wird das Device von dieser Version nicht gefunden. (Ich verwende die Bluetooth-MAC im define und die taucht auch in /proc/bus/input/devices auf.)

Außerdem habe ich die Version vom Dezember von JoergOstertag probiert - hier kommen die Events doppelt.
Inzwischen habe ich auch die Zeile im Quelltext gefunden, an der es hängt. In deiner Version wird Key down und repeat aussortiert und damit gibt's keine Doppelevents: return undef if( $type == EV_KEY && $value != 1);

Ich hab's noch nicht ausprobiert, ob die Version vom Oktober laufen würde, wenn ich direkt /dev/input/event0 angebe - da muss ich noch etwas herumspielen.   

Gruß,
Matthias



Gary

Hallo Andre,

Zitatich glaube da hatte ich eine version mit besserem reconnect gepostet.

Soweit ich sehe, hast du zuletzt am 3.11. eine Version gepostet, die aber noch den Fehler beim reconnect hatte. Du hast dann geschrieben, du würdest das ändern, aber ich habe danach keine weitere Version mehr gefunden - ich betreibe noch immer meine selbstgestrickte Lösung mit dem Timer. Habe ich da eine neuere Modul-Version übersehen? Ist eigentlich geplant das Modul in die FHEM-Source einzuchecken?

Danke und lG!

MattG

Hi!

Inzwischen habe ich mir mal die Version vom 3.11. vorgenommen und zum Laufen gebracht. Ich hatte einfach die 5 Doppelpunkte vor der MAC-Adresse vergessen - war ja im Thread beschrieben, muss man nur lesen ;-)

Es geht mir aber wie Gary - der Reconnect funktioniert nicht und soweit ich den Code nachvollzogen habe, habe ich auch die Stelle gefunden, an der es hakt: in linuxHid_findDevice wird das definierte Device in /proc/bus/input/devices gesucht. Sobald aber beim Connect das Device dort nicht auftaucht gibt linuxHid_findDevice ein undef zurück und es erscheint "not found" im Logfile. In diesem Fall wird kein Timer für den Reconnect aufgerufen. Das passiert nur, wenn das Device bei linuxHid_findDevice auftaucht, aber /dev/input/eventX nicht geöffnet werden kann. Damit greift bei mir der automatische Reconnect auch nicht.

Ich betreibe jetzt wie Gary ein Script, dass den Reconnect von außen anstößt, sobald /dev/input/event0 wieder auftaucht. Unelegant, aber erfüllt den Zweck.

Gruß,
Matthias


Ma_Bo

#176
*****EDIT2
Hab es rausgefunden. Wer lesen kann ist klar im Vorteil. ;)

*****

Hallo Leute,
ich versuche meinen RFID USB Leser zum laufen zu bewegen, aber ich erhalte ständig diese Meldung :

2016.06.28 16:58:42 3: RFID_Scanner: error opening /dev/input/event0

nun steht ja im ersten Beitrag etwas mit
Zitat... udev regel anlegen, fhem mit in die nötige gruppe aufnehmen oder fhem als root laufen lassen.
fhem ist in der Gruppe root, aber das bringt auch nix.
es gibt eine Datei unter  /dev/input/  mit dem Namen event0 , wenn ich diese mit nano event0 öffne steht dort aber nichts drin.

Kann mir jemand sagen, was ich falsch mache?

Grüße Marcel


*****EDIT
Scheint jetzt zu laufen, aber wie kann ich jetzt auf eine Zeichenfolge reagiern ?
Ich habe folgendes im LOG :

2016.06.29 08:30:38 3: RFID_Leser: connected to /dev/input/event0
2016.06.29 08:41:48 5: type:4 code:4 value:458782
2016.06.29 08:41:48 5: type:1 code:2 value:1
2016.06.29 08:41:48 4: type:1 code:2 value:1
2016.06.29 08:41:48 4:  (KEY_1)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458782
2016.06.29 08:41:48 5: type:1 code:2 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458789
2016.06.29 08:41:48 5: type:1 code:9 value:1
2016.06.29 08:41:48 4: type:1 code:9 value:1
2016.06.29 08:41:48 4:  (KEY_8)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458789
2016.06.29 08:41:48 5: type:1 code:9 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458785
2016.06.29 08:41:48 5: type:1 code:5 value:1
2016.06.29 08:41:48 4: type:1 code:5 value:1
2016.06.29 08:41:48 4:  (KEY_4)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458785
2016.06.29 08:41:48 5: type:1 code:5 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458790
2016.06.29 08:41:48 5: type:1 code:10 value:1
2016.06.29 08:41:48 4: type:1 code:10 value:1
2016.06.29 08:41:48 4:  (KEY_9)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458790
2016.06.29 08:41:48 5: type:1 code:10 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458791
2016.06.29 08:41:48 5: type:1 code:11 value:1
2016.06.29 08:41:48 4: type:1 code:11 value:1
2016.06.29 08:41:48 4:  (KEY_0)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458791
2016.06.29 08:41:48 5: type:1 code:11 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458786
2016.06.29 08:41:48 5: type:1 code:6 value:1
2016.06.29 08:41:48 4: type:1 code:6 value:1
2016.06.29 08:41:48 4:  (KEY_5)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458786
2016.06.29 08:41:48 5: type:1 code:6 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458791
2016.06.29 08:41:48 5: type:1 code:11 value:1
2016.06.29 08:41:48 4: type:1 code:11 value:1
2016.06.29 08:41:48 4:  (KEY_0)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458791
2016.06.29 08:41:48 5: type:1 code:11 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458783
2016.06.29 08:41:48 5: type:1 code:3 value:1
2016.06.29 08:41:48 4: type:1 code:3 value:1
2016.06.29 08:41:48 4:  (KEY_2)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458783
2016.06.29 08:41:48 5: type:1 code:3 value:0
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458783
2016.06.29 08:41:48 5: type:1 code:3 value:1
2016.06.29 08:41:48 4: type:1 code:3 value:1
2016.06.29 08:41:48 4:  (KEY_2)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458783
2016.06.29 08:41:48 5: type:1 code:3 value:0
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458783
2016.06.29 08:41:48 5: type:1 code:3 value:1
2016.06.29 08:41:48 4: type:1 code:3 value:1
2016.06.29 08:41:48 4:  (KEY_2)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458783
2016.06.29 08:41:48 5: type:1 code:3 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458792
2016.06.29 08:41:48 5: type:1 code:28 value:1
2016.06.29 08:41:48 4: type:1 code:28 value:1
2016.06.29 08:41:48 4:  (KEY_ENTER)
2016.06.29 08:41:48 5: type:0 code:0 value:0
2016.06.29 08:41:48 5: type:4 code:4 value:458792
2016.06.29 08:41:48 5: type:1 code:28 value:0
2016.06.29 08:41:48 5: type:0 code:0 value:0


Wie kann ich jetzt darauf reagieren ? Am liebsten wäre mir ein Reading mit der Zeichen bzw. Zahlenfolge die sich aus den (KEY_x) ergibt, in meinem Fall 1849050222

Jemand ne Idee ?
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

Gorean

Hallo Leute,

ich habe das linuxHID wie auf der ersten Seite beschrieben installiert, bekomme es aber irgendwie nicht zum laufen...

Mit bluetoothctl besteht auf der RPI Seite Zugriff auf das BT Device (RPI3). In der Harmony App wurde als Gerät "Microsoft - PLEX" angegeben, damit das Pairing gestartet wird.

Nach einem Pair und Connect findet sich auch ein Device "event0" auf dem RPI. Das Device ist in H: kbd, also sollte es ein Input device sein.

Mit "define hid linuxHid event0" ist es aktuell in FHEM eingebunden.

Meine Erwartung wäre jetzt, dass sobald ich das Gerät "Plex" auf der Harmony FB oder in der App starte, die gedrückten Keys im Eventmonitor erscheinen.

Der bleibt leider leer :( Hat irgendjemand einen Tip was schief gehen könnte?

Falls es ein besseres Gerät als "Microsoft - PLEX" gibt, wäre ich für einen Tip dankbar. Ziel wäre es, möglichst viele Tasten der Elite an FHEM übertragen zu können.

VG,
Peter

Gary

Hallo Peter,

ich kann dir folgen und aus meiner Sicht sieht alles gut aus. Und ja, wenn es funkt, dann tauchen die Tasten im Eventmonitor auf.

Hast du überprüft, ob in dem Moment, wo du testest (also die Tasten drückst) tatsächlich das Device am PI verbunden ist (in /proc/bus/input/devices auftaucht) UND das Device hid in FHEM den STATE "Connected" hat? Sowohl der Raspberry als auch FHEM verlieren gerne die Verbindung nach dem pairen ... siehe auch das Thema "Reconnect Scripts".

Ich habe übrigens "WindowsPC" als Gerät ausgewählt - hat sämtliche Steuertasten und ein volles Keyboardlayout (über Plex weiß ich nichts).

LG, Gerald

Gorean

#179
Hallo Gerald,

das hid device in FHEM war nicht sauber connected. Musste fhem noch in die group eintragen...

Danke!!!