vdrfb

Einsatzszenario

Bedienung:
Fernbedienung Timer programmieren Setup Einstellungen am VDR / Reelbox

Downloads

Hinweise:
Programmierung: Java und Ewe Kanalnummern Speichern der Konfigurationsdatei SVDRP
Warum keine Rückantworten ?

eine Fernsteuerung für den VDR und die Reelbox, auf der ja auch VDR läuft ;))

Die Reelbox hat bei mir gerade meinen myVDR2 ersetzt. Sie kann zwar etwas weniger, ist dafür aber auch kein kompletter PC mit all seinen Vor- und Nachteilen.

Einsatzszenario

Wozu diese Fernbedienung ?

Programmiert habe ich sie für eigene Zwecke, die Ursprünge liegen mit der in 2002 erstellten vdrremote schon länger zurück. Damals ging es um die Fernsteuerung meines VDR – Rechners von einen anderen Rechner aus, an dem ich mittels TV – Karte das Bild des VDR sehen konnte.

Heute benutze ich die vdrfb für folgende Zwecke:

  1. Im Esszimmer steht ein kleiner TV, an dem Tisch kann auch „gebastelt“ werden und last but not least steht mein Stubenfahrrad da. Der TV ist zum Fernsehen, Radio (Fritz) und MP3 hören per Antennenkabel an meine Reelbox angeschlossen. zum Steuern benutze ich einen PocketPC mit WLAN und eben vdrfb.

  2. Im Schlafzimmer, in der Küche und im Garten steht je eine Funkbox, die an der Reelbox angeschlossen sind. Damit wird Radio und MP3 gehört. Zum Steuern wieder der PocketPC und die vdrfb.

  3. Alle 2 Wochen kommt die TV – Zeitung. Die lese ich abends oder in der Küche oder im Garten. Wenn mich eine Sendung interessiert, wird sie gleich per vdrfb auf dem PocketPC oder dem Laptop (unter Linux) in die Reelbox programmiert. Danach fasse ich die TV – Zeitung nur noch einmal an ...

Die vdrfb bietet weder den Funktionsumfang, noch ist sie Konkurrenz zu dem vdradmin oder LAN – Streaming – Client – Lösungen. vdrfb will keine Streams steuern, und vdradmin läuft leider (noch) nicht auf der Reelbox. Ausserdem hatte mein Palm – Browser Probleme mit der Darstellung der vdradmin – Seiten. Ich wollte also ein Programm genau zur Fernsteuerung und Timerprogrammierung, welches sowohl auf meinem Linux – Laptop, als auch auf meinen billig bei ebay geschossenen PocketPC mit WLAN (mein neuer Treo 650 hat zwar GSM, aber kein WLAN mehr) funktioniert.

Bedienung

Fernbedienung

Die Bedienung ist simpel, jeder, der eine VDR – Fernbedienung kennt, sollte damit zurecht kommen.



Timer programmieren

Auch das Eintragen von Timern sollte unproblematisch sein:




Die Zeiten habe ich anders als bei vdradmin als Textinput gestaltet, in der man die Zeiten einfach als Ziffernfolge schnell eintragen kann, also 2010 für 20:10. So wird die Zeichenkette an den VDR / der Reelbox übergeben.

Nicht unterstützt werden regelmäßige Aufnahmen, da diese wohl i.d.R nicht mal eben schnell beim Lesen einer Zeitung programmiert werden. Um diese zu unterstützen, müsste ein weiteres Control gebaut werden oder das Datum wie in der ersten Version rein über ein Textinput in der Form „2005-09-09“ oder eben „-----SS“ progranmiert werden.

Das Datum wird beim Start mit dem aktuellen Datum vorbelegt, i.d.R müssen also nur Tag und am Ende des Monats der Monat gewechselt werden, je nachdem, wie weit die Aufnahme in der Zukunft liegt.

Tipp: bei regelmäßigen Aufnahmen einfach den ersten Termin programmieren und den dann später am TV über das Menu ändern

Setup

Beim Setup kann sicherlich der eine oder andere Hinweis nicht schaden:




Beim ersten Start muss man zunächst in das Setup gehen. In der obersten Zeile bei „Eingabe von Name oder IP“ steht dann zunächst einmal „nicht gesetzt“. Was da steht ist zu löschen und statt dessen ist die IP – Adresse, bei mir z.B. 192.168.1.100, oder der Name anzugeben, unter der der VDR oder die Reelbox auf dem Rechner / im Netz bekannt ist, bei mir z.B. „reel“.

Die Hinweise in der Kanalliste sind zu markieren und zu löschen, dann ist eine Kanalliste in folgender Form einzutragen:

Kanalnummer Kanalname:Kanalnummer Kanalname:

usw. Natürlich müssen die Kanalnummern und Kanalnamen mit denen übereinstimmen, die auf dem VDR / der Reelbox verwendet werden. Beim Eintragen wird dem VDR / der Reelbox nur die Nummer übergeben, deswegen sollte wie im Bild dort auf dem Platz 5 auch tatsächlich ARD bzw. „Das Erste“ sein, wobei der Name egal ist. Er sollte nur nicht zu lang sein, da die angezeigte Länge begrenzt ist.

Wichtig bei der Kanalliste sind also folgende Punkte:

  1. Kanalnummern müssen zu den Kanalnummern auf dem VDR / der Reelbox passen. Am besten schreibt man vom TV (Menu -> Kanäle) ab, das geht schnell.

  2. die einstelligen Nummern 1..9 bitte einstellig lassen, also nicht 01 o.ä.

  3. wichtig ist das Leerzeichen, da das später zum extrahieren der Nummer aus dem Feld verwendet wird. (s.a. Hinweise)

  4. wichtig ist ebenfalls der abschließende Doppelpunkt „:“. Also nicht vor dem ersten Eintrag und auch nach dem letzten Eintrag. Und den Doppelpunkt auch nicht in einem Kanalnamen verwenden – er ist schlicht das Trennzeichen in der Konfigurationsdatei und dort nicht „geschützt“.

Durch Anklicken des unteren Buttons wird die Konfiguration als Textdatei geschrieben und sollte bei dem nächsten Start automatisch eingelesen werden. Gleichzeitig werden auch ohne das Schreiben ins Dateisystem die Werte übernommen, damit kann man auch ohne gespeicherte Konfiguration arbeiten. Für mehr Informationen s.a. die Hinweise.

Einstellungen am VDR / Reelbox

Last but not Least müssen noch 2 Dinge am VDR / der Reelbox sichergestellt werden:

  1. Der SVDRP – Timeout (bei Reelbox unter ReelSetup --> Inaktivität) ist auf „1“ zu stellen

  2. Die verwendeten Clients sind in der svdrphost.conf einzutragen, ggf. auch das ganze Heimnetzwerk. Die svdrphost.conf findet sich je nach Distribution unter /etc/vdr o.ä., bei der Reelbox unter /etc/video

vdrfb baut für jeden Befehl eine Verbindung auf und wieder ab.

Vorteil:

  1. andere SVDRP – Anwendungen werden nicht blockiert

Nachteile:

  1. allzu schnelle Tastendrücke gehen nicht

  2. wenn der Timeout nicht runtergefahren wird blockiert der VDR die Verbindung so lange, wie der Timeout der Inaktivität eingestellt ist

  3. der kurze Timeout ist schlecht für eine manuelle telnet – Verbindung auf den Port 2001 ;)

Mehr dazu bei den Hinweisen

Downloads

es gilt die GPL!

Plattform

Download

Java – Jar (Linux, Mac, Win ..)
benötigt Java – VM oder Ewe - VM

vdrfb-jar.zip

Windows exe
läuft selbstständig

vdrfb-win32.zip

Ewe – Datei
läuft überall, wo Ewe – VM installiert ist

vdrfb.ewe

PDA – Varianten
benötigen Ewe-VM, sind aber selbst startfähig


PocketPC 2003

vdrfb-pocketpc-2003.zip

PocketPC ARM

vdrfb-pocketpc-arm.zip

PocketPC MIPS

vdrfb-pocketpc-mips.zip

PocketPC SH3

vdrfb-pocketpc-sh3.zip

HPC 2.11 ARM

vdrfb-hpc2-11-arm.zip

HPC 2.11 MIPS

vdrfb-hpc2-11-mips.zip

HPC 2.11 SH4

vdrfb-hpc2-11-sh4.zip

HPC 2.11 SH3

vdrfb-2-11-sh3.zip

Casio BE 300

vdrfb-casiobe300.zip

EWE-VM's und SDK

www.ewesoft.com

Java – SDK, IDE und JRE's

www.sun.com

Quelltext

vdrfb.java

Applet – wer will

vdrfb-applet.zip



Hinweise

Programmierung: Java und Ewe

Dank meiner bescheidenen Java – Kenntnisse und der Suche nach einer portablen VM bin ich bei der Ewe – VM von ewesoft gelandet. Sie ist klein, schnell und auf etlichen und für mich wichtigen Plattformen verfügbar (Palm leider erst „coming soon“). Dafür verfügt sie nur über einen gegenüber Java beschränkten Sprachumfang.

Geschrieben werden ganz normale Java – Programme, wie z.B. vdrfb.java. Dies kann mit normalen Editoren oder auch kompletten IDE's geschehen. Ich habe mit einem Editor angefangen und später netbeans verwendet, weil es beim Java – SDK – Download von Sun (www.sun.com und dann dort suchen) mit dabei ist, wenn man will. Das sah dann so aus:




Neben der Installation des Java – SDK (automatisches Setup) muss man noch das Ewe – SDK installieren, das gibt es neben ausführlicher Anleitung ebenfalls auf www.ewesoft.com und ist ebenfalls ganz einfach.

Kompiliert wird der Quelltext dann mit der Einbindung der ewe.jar – Bibliothek aus dem Ewe – SDK, z.B. bei mir unter Linux so: javac -classpath /opt/ewe/classes/ewe.jar vdrfb.java . Bei Verwendung der IDE wird die ewe.jar einfach unter den Projekteigenschaften zum Projekt hinzugefügt. Beim Kompilieren von vdrfb.java bekomme ich eine „deprecated“ - Meldung, die von der Verwendung der Timeout – Behandlung eines Handles herührt. Habe ich aber ignoriert, da es ja geht, halt nur „veraltet“ ist. Bei netbeans kann man diese Meldungen auch ganz abschalten.

Nach der Kompilation kann das Programm getestet werden, indem die erzeugte vdrfb.class direkt aufgerufen wird, z.B. ewe vdrfb (wenn ewe im Pfad ist und man in dem Build – Verzeichnis mit den vdrfb*.class steht).

Zuletzt werden die Zielplattformen mit dem Tool Jewel.ewe aus dem Ewe – SDK erzeugt, das sieht dann so aus:




Hier sind nur die Zielplattformen anzugeben und auf „Build Targets“ zu klicken ...

Das Programm selbst besteht dank meiner pragmatischen (faulen?) Denkweise nur aus einer Klasse, die ohne die static void main auskommt, da die Klasse Form erweitert wird. (Steht alles in der Ewe – Doku). Funktionsblöcke sind zu Methoden zusammengefasst, es gibt auch 3 eigene Methoden zu Erzeugung der verwendeten Buttons und Labels, mit denen dann vor allem die Ereignisbehandlung vereinfacht wird.

Kanalnummern

Die übergebene Kanalnummer wird aus dem Control mittels getText() und anschließender Abspaltung der Zeichen vor dem Leerzeichen extrahiert. Nachteil: Die Nummer muss korrekt eingetragen sein und vor allem darf das Leerzeichen zwischen Kanalnummer und Kanalname nicht vergessen werden. Vorteil: Man kann Kanäle auslassen, von denen man eh nie aufnimmt. Auch ist die Sortierung egal. Bei einer index – gesteuerten Extraktion der Kanalnummer darf es weder Lücken noch andere Sortierungen geben.

Speichern der Konfigurationsdatei

Das Speichern der Konfigurationsdatei ist nicht ganz trivial. Immerhin soll das Programm auf völlig verschiedenen Plattformen mit völlig verschiedenen Dateisystemen laufen. Absolute Pfadangaben wie /home/heiko/.vdrfb kennt Windows nicht, mit „C:\vdrfb“ kann Linux nichts anfangen und die PDA – Varianten kennen schon beides nicht. Registry scheidet damit ebenso aus.

Als einfachste Lösung habe ich mich entschlossen als Pfad das Startverzeichnis des Programmes zu nehmen. Genauer benutze ich die Ewe – Methode zum Anlegen eines File – Objektes, die die Datei im „aktuellen“ Verzeichnis anlegt. Da dies beim Start aus dem gleichen Verzeichnis gleich ist, kann auch die Datei wieder von dort gelesen werden. Das hat aus meiner Sicht vor allem diese Folgen:

  1. Das Programmverzeichnis muss schreibbar für Nutzer sein, ansonsten können keine Konfigurationen gespeichert werden. Bei jedem Start sind dann die IP und vor jeder Timerprogrammierung zumindest die benötigte Kanalnummer im Setup einzugeben. Unter Linux deswegen die jar – Datei unter $HOME speichern, z.B. wie bei mir $HOME/.bin
    Andererseits kann man eine vdrfbconfig bereitstellen und durch Schreibschutz vor Änderungen schützen.

  2. Wer Programme gerne in Startverzeichnisse kopiert (Windows Desktop, Startmenu unter PocketPC 2003 ...) wird u.U. einen weiteren Eintrag vdrfbconfig zu sehen bekommen, ein Löschen bewirkt den Verlust der Konfiguration.

  3. Das Benutzen von Links und Verknüpfungen zur startbaren Datei sind u.U. mit Vorsicht zu geniessen, vor allem wenn mal so und mal so gestartet wird.

Eigentlich ist das System gaaanz einfach und ich habe keine Probleme damit, aber ich weiss ja nicht auf welche Ideen ihr da draussen alles so kommt ...

SVDRP

vdrfb macht im Prinzip nichts anderes, als mittel einer kleinen Oberfläche Befehle zu bauen und diese dann an den SVDRP – Port des VDR / der Reelbox zu schicken.

Dieser SVDRP – Port und seine Befehle, die auch ich natürlich verwende, sind u.a. im vdr-wiki im entsprechenden Kapitel gut beschrieben.

Grundsätzlich kann man mit telnet <Adresse des VDR> 2001 eine Telnet – Verbindung öffnen, in der sich öffnenden Shell (keine System – Shell) kann man dann Befehle wie chan + o.ä. eingeben.

Weiterhin wird diese Schnittstelle auch von anderen Programmen genutzt, wie z.B. dem vdradmin.

Die Schnittstelle (genauer der Port) kann leider nur einmal geöffnet sein, hält also z.B. ein Programm die Verbindung länger offen, kann in dieser Zeit kann anderes Programm die Schnittstelle nutzen.

Da ich nur einzelne Befehle absetzen will und keine länger offenen Sessions brauche, öffne und schließe ich die Verbindung für jeden abgesetzten Befehl. Allzu schnelle Abfolgen gehen zwar dadurch nicht, aber das brauche ich eh nicht und die Schnittstelle ist zwischendurch wieder offen.

Wer will kann natürlich mit dem Quelltext eigene Buttons und Befehlsfolgen basteln und an den VDR / der Reelbox schicken.

Warum keine Rückantworten ?

Ich habe etwas auch daran probiert, Rückantworten vom VDR / der Reelbox zu bekommen und auszuwerten. Dazu habe ich einen entsprechenden Stream gebaut, der die Antwort auf dem SVDRP – Port empfängt und in einen String wandelt. Konkret habe ich die Liste der Kanäle geholt und in eine Kanalliste umgearbeitet und mir die gesetzten Timer anzeigen lassen.

Problematisch waren die Umlaute. Da brach das Programm im Lauf ab und es gab 1000 „komische Effekte“. Nachdem unter Linux mit den vdrfb.class alles halbwegs lief, habe ich die erzeugten Programme mal auf Windows und PocketPC ausprobiert: unter Windows alle Umlaute Datenmüll und unter PocketPC wurde gleich garnichts mehr angezeigt.

Sicherlich könnte man mit Locales und Auswertung der Plattform das Problem mit vieeel Aufwand lösen, aber andererseits brauchte ich 3 Minuten, um meine 30 Kanäle einzutippen, von denen ich maximal aufnehme.

Wer es dennoch versuchen will findet hier den letzten Stand des Quelltextes, der mit Rückantworten gearbeitet hat, ich habe es wieder rausgeschmissen.

erstellt: 9. September 2005 hthede_at_gmx.de

Seitenanfang