Xxv

Aus VDR Wiki
Wechseln zu: Navigation, Suche

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.


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

Xxv full.gif
Xxv vtx.gif
Xxv autotimer.gif

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/b_277_artikel.shtml Tutorial zum Schreiben eines Plugins für xxv