LinuxHid

Aus FHEMWiki
Version vom 27. März 2018, 10:40 Uhr von Pahenning (Diskussion | Beiträge) (→‎wie funktioniert das ganze)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
linuxHid
Zweck / Funktion
Einbinden von HID Devices
Allgemein
Typ Inoffiziell
Details
Dokumentation Thema
Support (Forum) Sonstige Systeme
Modulname 37_linuxHid.pm
Ersteller Andre (Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Todo: Rechtschreibung, Wikifizierung


Human Interface Devices (HID)

Dies ist die erste Version eines FHEM Moduls um unter Linux Events von USB hid Geräten in fhem zu integrieren.

mögliche Anwendungen

  • mit den Tasten einer Harmony Fernbedienung Events in FHEM auslösen
  • entweder per Bluetooth oder per Windows MCE IR Empfänger

hier kommt auch die ursprüngliche Idee Markus her. siehe: http://forum.fhem.de/index.php/topic,14163.msg284851.html#msg284851

  • eine Bluetooth Zehner Tastatur als Fernbedienung für FHEM verwenden

oder alles andere das sich wie eine USB Tastatur verhält. z.b. Präsentations-Fernbedienungen

  • die Encoder einer alten Maus oder eines alten Joysticks als Steuerung oder Rückmeldung in FHEM verwenden
  • ...

ignoreTypes

  • Bei einem neu angelegten hid Device wird ignoredTypes automatisch auf EV_SYN,EV_MSC gesetzt


ignoreValues

  • Ignoriert Werte vom Type KEY_UP, KEY_DOWN,KEY_REPEAT

wie funktioniert das ganze

  • mit cat /proc/bus/input/devices auf der Kommandozeile rausfinden welche hid Devices im System bekannt sind.

der eventX Eintrag in der H: Zeile des gewünschten Geräts ist relevant.

  • prüfen ob der zugehörige Device Eintrag in /dev/input/eventX für den User unter dem FHEM läuft lesbar ist.
  ls -l /dev/input/event*
  • wenn das nicht der Fall ist ensprechende udev Regel anlegen, FHEM mit in die nötige Gruppe aufnehmen oder (nur wenn es gar nicht anders geht) FHEM als root laufen lassen.
  • mit define hid linuxHid eventX das device in fhem.cfg anlegen.
  • sobald Tastendrücke erkannt werden sollte im event monitor die zugehörigen events sichtbar sein.

Es gibt events beim drücken, beim los lassen und beim autorepeat einer taste.

  • diese events lassen sich ganz normal mit fhem notifys weiter verarbeiten
  • alternativ zum cat kann man mit define hid linuxHid xxx erst mal ein hid device anlegen und mit get devices die vorhanden devices auflisten. mit modify kann man dann auf ein echtes device umändern
  • statt eventX kann man auch den device namen angeben (als regex, leerzeichen durch . ersetzt) oder als bus:vendor:device:version:eventTypes string (nicht relevante teile leer lassen)

z.b.:

  define hid linuxHid :0x04f2:0x0402 oder define hid linuxHid .*keyboard.*
  • wenn vorhanden kann auch die mac adresse des device im define angegeben werden: define hid linuxHid 00:04:20:eb:f6:b7


ein physikalisches device kann mehrfach in der device liste auftauchen. 'moderne' Tastaturen mit multimedia tasten erscheinen meist als gerät für die 'normalen' tasten und als gerät für die multimedia tasten. man kann so z.b. der normalen system Tastatur die Multimedia tasten klauen und exclusiv in fhem verfügbar machen und alle anderen tasten weiter auf Systemebene und der konsole verwenden.

das hid device kann entweder exklusiv events an fhem liefern. das ist der default. oder die events landen zusätzlich auch noch ganz normal im betriebsystem.

wenn das device über die usb ids angelegt wird sollte es auch nach abziehen und wieder anstecken automatisch wieder gefunden werden. wenn es über eventX angelegt wurde kann sich beim abziehen und wieder anstecken der bezeichner ändern.

was fehlt noch

  • Zur zeit werden nur Tastatur Events verarbeitet. d.h. die oben angesprochenen Maus und Joystick events gehen noch nicht.
  • Fast alle fhem events haben noch keine symbolischen tasten Namen sondern nur key codes
  • symbolische Namen für press, release und repeat
  • Konfiguration ob release events erzeugt werden sollen
  • standardisieren der in fhem ausgelösten events


was ist noch denkbar

Im exclusiv modus events die nicht für fhem gedacht sind wieder ans system zurück weiterreichen


Links