SVDRP
Inhaltsverzeichnis |
Einführung
Das SVDRP (Simple VDR Protokoll) erlaubt es per simpler TCP-Verbindung auf Port 2001 (ab VDR 1.7.15 Port 6419) einfache Befehle an den VDR zu schicken, um z.B. eine Nachricht auf dem Fernseher anzuzeigen oder VDR fern zusteuern. (Windows: Mit PuTTY (protocol: raw) oder telnet, Linux: netcat oder telnet )
Bevor man jedoch von einem Host aus den vdr ansprechen darf, muss man ihn dafür freischalten. Dies geschieht über die Datei svdrphosts.conf im Konfigurationsverzeichnis des VDR. Der Aufbau ist recht simpel:
IP-Adresse[/Netzmaske]
Also einfach zeilenweise die erlaubten Host-IPs eintragen, oder wenn man gleich ganze Netzblöcke freigeben will, eine IP und eine Maske dazu, natürlich in der ultra modernen Schreibweise der Anzahl der Bits (also /24, usw.).
- Anmerkung
- Der VDR erlaubt keine gleichzeitigen Verbindungen mehrerer Clients. Und damit blockiert ein Client alle anderen, die zur gleichen Zeit auf den SVDRP zugreifen wollen. Auch vdradmin und vdradmin AM verwenden SVDRP und konkurrieren damit um diese Verbindung.
Die Befehle
Übersicht
#> svdrpsend.pl HELP 220 vdr SVDRP VideoDiskRecorder 1.6.0; Sun Mar 23 18:18:36 2008 214-This is VDR version 1.6.0 214-Topics: 214- CHAN CLRE DELC DELR DELT 214- EDIT GRAB HELP HITK LSTC 214- LSTE LSTR LSTT MESG MODC 214- MODT MOVC MOVT NEWC NEWT 214- NEXT PLAY PLUG PUTE REMO 214- SCAN STAT UPDT VOLU QUIT 214-To report bugs in the implementation send email to 214- vdr-bugs@tvdr.de 214 End of HELP info 221 vdr closing connection
Beschreibung
Befehl | Verwendung |
---|---|
CHAN | [ + | - | <Nummer> | <Name> | <ID> ] |
Schaltet einen Kanal hoch, runter, oder springt zur angegebenen Kanalnummer, zum Kanalnamen, oder zur Kanal-ID. Ohne Parameter, bzw. nach einem Kanalwechsel wird die Nummer und der Name des aktuellen Kanals angezeigt. | |
CLRE | |
Löscht die EPG-Daten. | |
DELC | <Nummer> |
Löscht den Kanal. | |
DELR | <Nummer> |
Löscht die Aufnahme mit der angegebenen Nummer. Um die Aufnahmenummer zu erhalten muss vorher der LSTR Befehl ausgeführt werden. Die Nummern ändern sich durch Löschen anderer Aufnahmen nicht. ACHTUNG: AUFNAHMEN WERDEN OHNE VORHERIGE NACHFRAGE GELÖSCHT!! | |
DELT | <Nummer> |
Löscht einen Timer. | |
EDIT | <Nummer> |
Startet den Schnittvorgang für die Aufnahme mit der angegebenen <Nummer>, entsprechend der in der Datei marks.vdr hinterlegten Schnittpunkte. Bevor eine Aufnahme geschnitten werden kann, sollte die entsprechende Nummer der Aufnahme unter Zuhilfenahme des LSTR Befehls ermittelt werden. Es kann immer nur eine Aufnahme zu gleichen Zeit geschnitten werden. | |
GRAB | <filename> [ <Qualität> [ <Breite> <Höhe> ] ] |
Speichert das aktuelle Fernsehbild auf die lokalen Festplatte ab. Bilder können als JPEG oder PNM, abhängig von der vorgegebenen Dateiendung gespeichert werden. Die Qualität des erfassten Bildes kann in der Bereich von 0 bis 100 festgelegt werden, wobei 100 (der Standard) "beste Qualität" bedeutet (diese Option ist nur für JPEG verfügbar). Die Größe Parameter definieren die Größe des resultierenden Bildes (Standard ist der gesamte Bildschirm). Wenn der Dateiname nur die Endung ist (.jpg, .jpeg oder .pnm) werden die Bilddaten über die SVDRP Verbindung geschickt, diese Daten sind base64 kodiert. Das selbe geschieht wenn "-" (ein Minuszeichen) als Dateiname angegeben wird, in diesem Fall ist das Bildformat auf JPEG.
Bespiel für die Anzeige des base64-kodierten Fernsehbildes über Netzwerk und die direkte Darstellung mittels des Programms display von http://www.imagemagick.org svdrpsend.pl -d <hostname> 'grab -' | sed -n -e 's/^216-//p' -e '1ibegin-base64 644 -' -e '$a====' | uudecode | display - Für das Abspeichern des erfassten Fernsehbildes auf der lokalen Festplatte muss die Option -g mit den Zielverzeichnis gesetzt werden. Der VDR kann nur vom ersten Device grabben, d.h. der Treiber für die Full-Featured-Karte muss zuerst geladen werden! | |
HELP | [ <Begriff> ] |
Hilfe. | |
HITK | [ <Taste> ] |
"Drückt" die Taste der Fernbedienung. Ohne Parameter werden die Namen aller gültigen Tasten aufgelistet. | |
LSTC | [ <Nummer> | <Name> ] |
Ohne Parameter werden alle Kanäle aufgelistet. Wird eine Nummer angegeben, wird nur dieser Kanal aufgelistet, bei Angabe eines Namens alle Kanäle, bei denen dieser im Namen auftaucht.
Zur Beschreibung des Formates siehe channels.conf | |
LSTE | [ <Kanal> ] [ now | next | at <Zeit> ] |
Ohne Parameter werden alle EPG-Daten ausgegeben. Wird ein Kanal angegeben (entweder mit Nummer, oder mit Kanal-ID), werden nur die EPG-Daten dieses Senders angezeigt. 'now, 'next' 'at <time>' sind Filter. Das Format findet man in epg.data. | |
LSTR | [ <Nummer> ] |
Ohne Parameter werden alle Aufnahmen aufgelistet. Sonst wird die Zusammenfassung der angegebenen Aufnahme angezeigt.
Ein Eintrag der Auflistung aller Aufnahmen sieht beispielsweise so aus 250 2 08.03.07 20:00* Tagesschau 2 ist die Nummer der Aufnahme. Danach folgt Datum und Uhrzeit der Aufnahme. Der Stern hinter der Uhrzeit zeigt an, dass die Aufnahme neu ist. Als Letztes folgt der Titel der aufgenommenen Sendung. Die Zusammenfassung einer Aufnahme hat das gleiche Format, wie ein EPG-Eintrag in epg.data. Für Details siehe Vdr(5) | |
LSTT | [ <Nummer> ] |
Ohne Parameter werden alle Timer (programmierte Aufnahmen) aufgelistet, Sonst nur der angegeben Timer. | |
MESG | [ <Nachricht> ] |
Zeigt eine Nachricht über das OSD auf dem Fernseher an. Ohne Parameter wird die aktuell anhängige Nachricht (wenn vorhanden) angezeigt. Sobald das OSD verfügbar ist, wird die Nachricht für ein paar Sekunden angezeigt, wenn die vorige Nachricht noch nicht angezeigt werden konnte, wird sie überschrieben. | |
MODC | <Nummer> <Einstellungen> |
Ändert die Kanaleinstellungen. Das Format von <Einstellungen> muss das gleiche sein wie das des LSTC Befehls. | |
MODT | <Nummer> on | off | <Einstellungen> |
Ändert einen Timer. Das Format von <Einstellungen> muss das gleiche sein wie das des LSTT Befehls. Mit 'on und 'off' kann ein Timer einfach ein- und ausgeschaltet werden. | |
MOVC | <Nummer> <nach> |
Verschiebt einen Kanal nach <nach> in der Kanalliste. | |
MOVT | <Nummer> <nach> |
Verschiebt einen Timer nach <nach> in der Timerliste. | |
NEWC | <Einstellungen> |
Erstellt einen neuen Kanal. Das Format von <Einstellungen> muss das gleiche sein wie das des LSTC Befehls. | |
NEWT | <Einstellungen> |
Erstellt einen neuen Timer. Das Format von <Einstellungen> muss das gleiche sein wie das des LSTT Befehls.
Beispiel für <Einstellungen>: 1:19:5:2010:2150:51:50:Das Gelbe vom Ei: aktiv:Kanalnummer:Tag_des_Monats:Startzeit:Endzeit:Priorität:Dauerhaftigkeit:Titel: Tag_des_Monats kann dabei folgende Formate haben: 19 2005-03-19 MTWTFSS MTWTFSS@19 MTWTFSS@2005-03-19 | |
NEXT | [ abs | rel ] |
Zeigt den nächsten Timer an. Ohne Parameter geschieht die Ausgabe in menschenlesbarer Form. Mit dem Parameter 'abs' wird die absolute Zeit in Sekunden angegeben, während beim Parameter 'rel' die Zeit von jetzt bis zur Aufnahme in Sekunden angeben wird. Wenn die mit 'abs' zurückgegeben Zeit in der Vergangenheit liegt, bzw. die mit 'rel' zurückgegebene Zeit negativ ist, findet die Aufnahme des Timers gerade statt. Der Erste Wert der ausgegeben wird stellt die Nummer des Timers dar. | |
PLAY | <number> [ begin | <position> ] |
Spielt die Aufnahme mit der nummer <Nummer> ab. Die entsprechende Nummer der Aufnahme sollte unter Zuhilfenahme des LSTR Befehls ermittelt werden. Durch Angabe von 'begin' kann die Aufnahme vom Anfang an wiedergegeben werden. Andere Startpositionen koennen als Frame index oder im Format hh:mm:ss[.ff] angegeben werden. Wird kein Startpunkt für die Wiedergabe angegeben, wird die letzte Wiedergabe fortgesetzt. | |
PLUG | <name> [ <command> [ <options> ]] |
Sendet ein Kommando an ein Plugin. Der PLUG Befehl ohne Parameter listet alle Plugins auf. Wenn nur ein Plunginname angegeben wird, werden für diese Plugins alle möglichen Befehle angezeigt. Wenn ein Kommando hinzugefügt wird ( optional gefolgt von Parametern), wird der Befehl an das Plugin gesendet und das Ergebnis wird ausgegeben. Das Schlüsselwort 'help' listet alle möglichen SVDRP Befehle für das Plugin auf. Wenn 'help' gefolgt von einem Befehl angegeben wird, wird eine detailierte hilfe für dieses Kommando ausgegeben. Das Schlüsselwort 'main' ruft die Hauptmenü Funktion des angegebenen Plugins auf. | |
PUTE | |
Fügt EPG-Daten ein. Das Format der Daten ist in der Manualpage Vdr(5) bzw. in epg.data beschrieben und muss genau eingehalten werden. Ein einzelner Punkt in einer Zeile beendet die Eingabe und sorgt für die Weiterverarbeitung der eingegeben Daten, die bislang nur zwischengespeichert wurden. | |
REMO | [ on | off ] |
Schaltet, Fernbedienungs-Kontrolle an / aus, ohne Parameter wird zum nächsten Zustand, geschaltet. | |
SCAN | |
Erzwingt einen EPG-Scan. Auf Systemen mit nur einer DVB-Karte wird der Scan auf dieser durchgeführt, wenn gerade keine Aufnahme läuft. | |
STAT | disk |
Liefert Informationen über den Festplattenspeicher-Verbrauch (Total, Frei, Prozent). | |
UPDT | <Einstellungen> |
Aktualisiert einen Timer. Das Format von <Einstellungen> muss das gleiche sein wie das des LSTT Befehls. Wenn der Timer noch nicht existiert, wird er erstellt. | |
VOLU | [ <Nummer> | + | - | mute ] |
Setzt die Lautstärke entweder direkt (Bereich: 0 - 255), oder Schrittweise. Mit mute wird der Ton stumm geschaltet. Ohne Parameter wird die aktuelle Lautstärke angezeigt. | |
QUIT | |
Beendet die Verbindung zu VDR (SVDRP). Alternativ kann man auch CTRL-D drücken. |
SVDRP Antwort Codes
214 Hilfetext 215 EPG Eintrag 216 Image grab data (base 64) 220 VDR-Service bereit 221 VDR-Service schließt Sende-Kanal 250 Angeforderte Aktion okay, beendet 354 Start senden von EPG-Daten 451 Angeforderte Aktion abgebrochen: lokaler Fehler bei der Bearbeitung 500 Syntax-Fehler, unbekannter Befehl 501 Syntax-Fehler in Parameter oder Argument 502 Befehl nicht implementiert 504 Befehls-Parameter nicht implementiert 550 Angeforderte Aktion nicht ausgeführt 554 Transaktion fehlgeschlagen
Die Antworten sind vom Format:
<Antwort Code><-|Leerzeichen><Text><newline>
Bei der letzten Zeile wird anstelle des - nach dem Antwort Code ein Leerzeichen gesetzt.
svdrpsend.pl
svdrpsend.pl ist ein Perlscript, welches die direkte Eingabe von Kommandos auf einer Konsole unterstützt.
Beispiel:
svdrpsend.pl help
Optionen
Achtung: ab vdr-1.7.15 Standard-Port geändert auf 6419.
Parameter | Beschreibung |
---|---|
-d hostname | Ziel Hostname (standard: localhost) |
-p port | SVDRP Portnummer (standard: 2001) |
SVDRP-Clients
Es gibt eine ganze Reihe von Applikationen, die per SVDRP mit dem VDR kommunizieren und z.B. eine Fernbedienungsfunktion oder komplette Bedienoberflächen per Web implementieren.