Xxv
Inhaltsverzeichnis |
Beschreibung
Es ist ein zentraler Dienst zum Administrieren des vdr und dessen Umgebung bei dem verschiedene Ports offen sind und diese verschiedene Services bedienen koennen. Einen zusaetzlichen port ueber ein Plugin einzurichten, sollte genauso einfach sein, wie auch einen bestimmten Service bereit zu stellen. Das schreiben eines Plugins geht sehr schnell da der Input (Vdr, DB usw) sowie der Output (Telnet, HTTP, ... ) generisch realisiert wurde. Es soll also z.B. moeglich sein, mit einer TelnetConsole, HttpBrowser, WapTelefon, etc. pp. einen Autotimer einzutragen. Dieser sollte wesentlich schneller die EPG-Daten durchsuchen koennen (MySQL-Datenbank) und ueber ein Interface dem vdr den neuen Timer mitteilt. Dabei wird natuerlich auch dem singleModus des SVdrP Rechnung getragen und nur ein Befehl abgesendet und sofort wieder der Port geschlossen, damit andere Programme wieder auf den svdrp zugreifen koennen.
- Download: http://www.xpix.de/downloads/xxv
- Thread der AlphaVersion: http://vdrportal.de/board/thread.php?threadid=22819
Lange Rede kurzer Sinn, hier ein kleiner Ueberblick der derzeitigen Features:
- komplett in Perl realsiert
- sehr generisches Frontend
- Plugin system
- Datenbank Unterstuetzung
- Epg-Daten werden regelmaessig geparst und eingetragen
- sehr einfaches pluginkonzept fuer zukuenftige Erweiterungen
- mehrere Services aus einem Dienst (Telnet, HTTP, ...)
- Dump-Interface fuer externe Programme
Screenshots
Softwareanforderungen
- mysql-server
- perl
- DBI
- DBD::mysql
- Event
- Test::Simple
- URI
- MIME::Base64
- Time::HiRes
- Attribute::Handlers
- mplayer (optional), installation siehe auch: mplayer-plugin
Installation
Als erstes ist Mysql zu installieren.
cd $SOURCEDIR tar xvzf mysql-<VERSION>.tar.gz ./configure --prefix=/usr/local \ --libexecdir=/usr/local/bin \ --without-extra-tools \ --without-bench make make install find . -name my-medium.cnf -exec cp --backup=t \{} /etc/my.cnf \; cd /usr/local/lib ln -s mysql/libmysqlclient.so* . groupadd mysql useradd -g mysql mysql chown -R mysql var mysql_install_db --user=mysql & ldconfig
Starten des Servers mit.
mysqld_safe --user=mysql &
Nun folgt ein ganzer packen Perl::Module, da gibt es wie 2 Wege.
Mittels "CPAN":
perl -MCPAN -e 'install MODULE'
So in etwa:
perl -MCPAN -e 'install URI'
Oder via Source, auf dem TestPC als Basis Peanut waren es folgende Sachen.
- Test-Simple-<VERSION>.tar.gz
- DBI-<VERSION>.tar.gz
- DBD-mysql-<VERSION>.tar.gz
- Event-<VERSION>.tar.gz
- URI-<VERSION>.tar.gz
- MIME-Base64-<VERSION>.tar.gz
- Time-HiRes-<VERSION>.tar.gz
- Attribute-Handlers-<VERSION>.tar.gz
Die Installation ist fuer alle Pakete Identisch:
cd $SOURCEDIR tar xvzf <NAME>-<VERSION>.tar.gz cd <NAME>-<VERSION> perl Makefile.PL make make install cd -
Zu guter letzt xxv:
cd $SOURCEDIR tar xvzf <VERSION>.tar.gz
Debian-spezifisch
Unter Debian braucht man nicht die perl Module von Hand installieren, diese Zeile sollte ausreichen um xxv zum laufen zu bekommen.
apt-get install mysql-server libdbi-perl libevent-perl libtimedate-perl
Konfiguration
Als erstes erfolgt das anlegen der Datenbank:
bash> mysql -u root -e "create database xxv;"
Rechte setzen:
bash> mysql -u root -e "grant all privileges on xxv.* to xpix@localhost;"
Die $SOURCEDIR/xxv-<VERSION>/xxvd.cfg ist anzupassen:
[General] DSN=DBI:mysql:database=xxv;host=localhost;port=3306 LANGUAGE=german LOGFILE=/var/log/xxvd.log PIDFILE=/var/run/xxvd.pid PWD= USR=xpix
xxv starten
Damit xxv bei jedem Systemstart als Dienst gestartet werden kann, haben wir ein Startskript unter etc/xxvd gespeichert das man in seinem System installieren sollte. Vorher sollte man aber noch den Pfad eingeben wo sich Euer xxv befindet:
cd $SOURCEDIR/xxv-<VERSION> nano etc/xxvd
In den ersten Zeilen einfach das Sourcedir eintragen und mit ctrl-o abspeichern.
# ------------------------------------------- # In welchem Ordner befindet sich bin/xxvd.pl # Where is bin/xxvd.pl FOLDER="/root/XXV" # -------------------------------------------
Damit ihr wisst in welchem Runlevel ihr gerade lauft solltet ihr runlvel aufrufen:
vdr:~# runlevel N 2
Den Level merkt ihr Euch und erstellt im dem Verzeichnis /etc/rc[runlevelnummer].d einen symbolischen Link auf xxvd. Bei meinem Beispiel in Level 2:
cd $SOURCEDIR/xxv-<VERSION> cp etc/xxvd /etc/init.d/. ln -s /etc/init.d/xxvd rc2.d/S90xxvd
Starten von xxv:
cd $SOURCEDIR/xxv-<VERSION> ./bin/xxvd.pl && tail -f /var/log/xxvd.log
oder als Dienst:
/etc/init.d/xxvd restart
Dann einen Browser aufrufen mit folgender URL:
http://ip_deines_vdrs:8080/
oder per Telnet
telnet [ip deines vdrs oder localhost] 8001
User: xxv Password: xxv
Plugins
General
General ist eigentlich kein Plugin, da dies aber xxv so sieht soll es der Vollständfigkeit halber auch aufgelistet werden. Hier werden globale Einstellungen aufgelistet, wie Logfilepfad, Datenbankserver usw.
Manual: http://www.xpix.de/downloads/xxv/doc/General.html
Autotimer
Hier werden die EPG Daten nach Sendungen mit einem bestimmten Text in title, subtitle und text durchsucht und diese als Timer programmiert.
Manual: http://www.xpix.de/downloads/xxv/doc/AUTOTIMER.html
Timers
Dieses Modul erlaubt das löschen, erstellen und editieren der neuen Timer, sowie deren Darstellung.
Manual: http://www.xpix.de/downloads/xxv/doc/TIMERS.html
EPG
Hier wird die epg.data geparst und deren Einträege in einer Datenbank abgespeichert.
Manual: http://www.xpix.de/downloads/xxv/doc/EPG.html
Channels
Hier wird die channels.conf geparst und deren Einträege in einer Datenbank abgespeichert.
Manual: http://www.xpix.de/downloads/xxv/doc/CHANNELS.html
HTTPD
Dieses Modul stellt einen HTTP Server sowie ein Webinterface zur Verfügung um xxv per Browser bedienen zu können.
Manual: http://www.xpix.de/downloads/xxv/doc/HTTPD.html
Telnet
Dieses Modul stellt einen Telnet Server zur Verfügung um xxv per telnet localhost portnummer bedienen zu können.
Manual: http://www.xpix.de/downloads/xxv/doc/TELNET.html
Interface
Dieses Modul stellt einen Telnet Server zur Verfügung um xxv mit anderen GUIs bedienen zu können.
Manual: http://www.xpix.de/downloads/xxv/doc/INTERFACE.html
Wapd
Dieses Modul stellt einen WapD Server zur Verfügung um xxv mittels einem Wap Browser (Handys) bedienen zu können. Zur Zeit noch ohne Funktion.
Manual: http://www.xpix.de/downloads/xxv/doc/WAPD.html
Music
Das MusicPlugin stellt eine Mediabiblothek sowie einen Icecast Streamserver zur Verfügung.
Manual: http://www.xpix.de/downloads/xxv/doc/MUSIC.html
Records
Dieses Plugin stellt alle Aufnahmen übersichtlich dar und erlaubt verschiedene Aktionen auf den einzelnen Records.
Manual: http://www.xpix.de/downloads/xxv/doc/RECORDS.html
Config
Das Konfiguration Plugin erlaubt während der Laufzeit verschiedene Parameter in den Interfaces (HTTP, Telnet ...) zu ändern und diese abzuspeichern.
Manual: http://www.xpix.de/downloads/xxv/doc/CONFIG.html
Grab
Grab stellt das Livebild vom vdr als JPEG Datei zur Verfügung.
Manual: http://www.xpix.de/downloads/xxv/doc/GRAB.html
Remote
Dieses Plugin stellt eine Fernbedienung und in Verbindung mit Grab auch ein Livebild dar. Somit laesst sich der vdr per Interface rudimentaer bedienen.
Manual: http://www.xpix.de/downloads/xxv/doc/REMOTE.html
Status
Status stellt alle Systeminformationen in den Interaces als übersichtliche Darstellung dar.
Manual: http://www.xpix.de/downloads/xxv/doc/STATUS.html
SVDRP
Dieses Plugin stellt alle telnet Befehle der svdrp Schnittstelle vom vdr zur Verfügung
Manual: http://www.xpix.de/downloads/xxv/doc/SVDRP.html
User
Eine Userautentifikation die in allen Interfaces die Kennung und Passwort des Users abfragt und eine Levelverwaltung zur Verfügung stellt.
Manual: http://www.xpix.de/downloads/xxv/doc/USER.html
Vtx
Diese Modul zeigt Videotextseiten an.
Manual: http://www.xpix.de/downloads/xxv/doc/VTX.html
Probleme
- in dem Logile tauchen beim start von xxv Warnungen auf:
6 (3185) [16:41:37 02/01/05] Can't locate Term/ReadLine/Gnu.pm in @INC (@INC contains: /root/XXV/bin/../lib /root/XXV/bin /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/site_perl .) at (eval 27) line 1 7 (3185) [16:41:37 02/01/05] Can't locate Term/ReadLine/Gnu.pm in @INC (@INC contains: /root/XXV/bin/../lib /root/XXV/bin /usr/local/lib/perl/5.6.1 /usr/local/share/perl/5.6.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.6.1 /usr/share/perl/5.6.1 /usr/local/lib/site_perl .) at (eval 27) line 1
Diese können ignoriert werden. Perl versucht verschiedene Module aufzurufen um herauszufinden welches es benutzen darf.
- in dem Lofile tauchen ab und zu folgende Warnungen auf:
37 (805) [12:01:34 02/02/05] Can't locate object method "timers" via package "XXV::MODULES::EPG" (perhaps you forgot to load "XXV::MODULES::EPG"?) at /root/XXV/bin/../lib/Template/Stash.pm line 650.
Diese können ignoriert werden. Perl versucht per eval eine Methode aufzurufen.
Links
[1] | http://www.mysql.org | mySQL |
[2] | http://xpix.dieserver.de/content | Homepage |
[3] | http://xpix.dieserver.de/downloads/xxv | Downloads |
[4] | http://xpix.dieserver.de/content/vdr/xxv/tutorials/ | Tutorial zum Schreiben eines Plugins für xxv |
[5] | older Screenshoots | Etwas ältere Screenshoots |