Skip to content

wii-remote Plugin to control VDR

License

Notifications You must be signed in to change notification settings

vdr-projects/vdr-plugin-bewegung

Repository files navigation

Dieses ist ein Plugin für den Video Disk Recorder (VDR).

Written by:                  Torsten Kunkel <[email protected]>

Project's homepage:          ---

Latest version available at: http://www.vdr-portal.de

English documentation:       README_EN


This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
See the file COPYING for more information.

Installation
------------
Das Plugin wird normal mit "make plugins" erstellt und muss dann mit 
"-Pbewegung" beim VDR-Start angegeben werden.

Benutzung
---------
Im VDR-Setup muss die MAC-Adresse der Wiimote eingetragen werden, diese bekommt 
man, wenn man in der Konsole mit "hcitool -scan" mit den (natürlich 
installierten) Bluetooth nach Bluetoothgeräten sucht. Damit die Wiimote sich 
verbinden kann muss sie in den s.g. "Paaringmodus" versetzt werden, dieses 
geschieht mit dem gleichzeitigen Drücken von 1+2. Hat man die MAC-Adresse 
eingetragen und das Verbinden der wiimote erlaubt (ebenfalls VDR-Setup), dann 
braucht man nur noch die Tasten 1+2 der Wiimote zu drücken und diese sollte 
vom VDR erkannt werden.
Mit der Home-Taste (Taste mit Haus) trennt man die Wiimote wieder vom VDR.

"Tasten"belegung
----------------
B + kippen rechts     -> Taste "rechts"
B + kippen links      -> Taste "links"
B + kippen hoch       -> Taste "hoch"
B + kippen runter     -> Taste "runter"
A                     -> Taste "OK"
1                     -> Taste "Menü"
2                     -> Taste "zurück"
hoch                  -> Taste "rot"
rechts                -> Taste "grün"
runter                -> Taste "gelb
links                 -> Taste "blau"
+                     -> Taste "Lautstärke +"
-                     -> Taste "Lautstärke -"
Home                  -> Wiimote trennen


Anmerkungen
-----------
* Mein Quellcode ist gruselig :)
* Dieses Projekt ist aktuell eher als Technikdemo zu betrachten!
* Bei einer registrierten Wiimote leuchtet LED 1+4
* Drehungen werden erst ab X° "gültig", dieser Winkel ist im Setup einstellbar
* Drehungskommandos sind "dauerhaft" bleibt man in der Drehung, dann wird der 
  Befehl noch einmal ausgeführt.
* Es muss eine gepatchte Version der libwiimote-0.4 [1] verwendet werden, 
  da diese sonst nicht im cpp-Umfeld verwendet werden kann [2]. 
  Ich habe bisher nur mit der 0.4 gearbeitet, den CVS-Stand oder ältere
  Bibliotheken habe ich nicht ausprobiert.
* Der libwiimote fehlen leider ein paar Schritte bei der Erstellung, diese ist 
  aber im Forum [3] im ersten Schritt beschrieben.
* Die Bewegungen rechts/links (also das Drehen in der waagerechten) werden 
  nicht ausgewertet. Damit diese Bewegung Daten liefert müsste die Wiisensorbar 
  aktiv sein und die Wiimote in Reichweite sein. Im Normalfall bedeutet dieses, 
  dass dann auch die Wii aktiv sein müsste.
* Wenn man die Wiimote an der Wii benutzen möchte, dann unbedingt im VDR die 
  Verbindungserlaubnis (setup) entziehen, sonst kann es sein, dass die Wiimote 
  sich mit dem VDR und nicht mit der Wii verbindet.

Beschreibung der Funktionsweise
-------------------------------
Das Plugin startet beim Laden 2 Threads, ein Thread liesst permanent von der
Wiimote die Informationen aus, der 2. Thread wertet diese Informationen aus 
und drückt virtuell die entsprechenden Tasten.
Es sind hier 2 Threads notwendig, da die Wiimote permanent Daten sendet, würde 
man es in einem Thread abhandeln, dann entstünde ein Datenstau, die Daten der 
Wiimote würden nicht so schnell abgearbeitet werden wie sie gesendet werden und 
der Benutzer würde einen Zeitversatz empfinden.
Bei den Drehungen wird der Winkel der Wiimote ausgelesen und mit dem 
hinterlegten Winkel in der Konfiguration verglichen. Es wird hierdurch 
festgelegt wie weit man die Wiimote neigen muss, bis es als (z.B.) "runter" 
erkannt wird. Diese Winkel ist seperat einstellbar. Also z.b. 30° für unten, 
aber 45° für oben, denn ich habe festgestellt, dass man mit unterschiedlichen 
Winkeln deutlich bessere Erkennungen bekommt. Rechtshänder z.b. können nach 
links VIEL besser drehen als nach rechts, sie halten die wiimote aber eh schon 
leicht schief, so dass eine Drehung nach links z.b. 45° sein müsste, eine 
Drehung nach rechts aber nur ca. 30 (dieses sind Beispielwerte).


BUGS/TODO
---------
* das Setzen der LEDs beim erneuten Wiimote-Verbinden klappt nicht (LEDs blinken weiter)
* "Testseite". Es soll im Hauptmenü ein OSD geben, auf dem man die Erkennung testen kann.


Links
-----
[1] libwiimote http://libwiimote.sourceforge.net/
[2] Patch libwiimote
    http://sourceforge.net/tracker/index.php?func=detail&aid=1712411&group_id=186431&atid=917257
[3] Erstellanleitung libwiimote
    http://sourceforge.net/forum/forum.php?thread_id=1730045&forum_id=652224