Xxv

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

xxv ist ein zentraler Dienst zur Administrierung des VDR und dessen Umgebung, bei dem verschiedene Ports offen sind und diese verschiedene Services bedienen können. Einen zusätzlichen Port über ein Plugin einzurichten sollte genauso einfach sein, wie auch einen bestimmten Service bereitzustellen. 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. möglich sein, mit einer TelnetConsole, HttpBrowser, WapTelefon, etc. pp. einen Autotimer einzutragen. Dieser sollte wesentlich schneller die EPG-Daten durchsuchen können (MySQL-Datenbank) und über ein Interface dem VDR den neuen Timer mitteilen. Dabei wird natürlich auch dem singleModus des SVdrP Rechnung getragen und nur ein Befehl abgesendet. Danach wird der Port sofort wieder geschlossen, damit andere Programme wieder auf den svdrp zugreifen können.


Lange Rede kurzer Sinn, hier ein kleiner Überblick der derzeitigen Funktionen:

  • komplett in Perl realisiert
  • sehr generisches Frontend
  • Plugin system
  • Datenbank Unterstützung
  • Epg-Daten werden regelmäßig geparst und eingetragen
  • sehr einfaches Pluginkonzept für zukünftige 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 mplayer-plugin

Installation

Xxv entpacken

cd /usr/local/src 
tar xvzf xxv-<VERSION>.tar.gz

MySQL

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 folgen einige Perl Module, da gibt es wie 2 Wege:

Perl Module per cpan (empfohlen)

Der empfohlende Weg: Mittels "Bundle::Xxv" per CPAN, einfach in das $SOURCEDIR/lib Verzeichniss wechseln und das Bundle installieren. Alle Module die benoetigt werden stehen in diesem Bundle und werden automatisch installiert:

cd $SOURCEDIR/xxv-<VERSION>/lib
perl -MCPAN -e 'install Bundle::Xxv'

Perl Module per Download

Oder eine andere (nicht zu empfehlende) Möglichkeit via Source, auf dem TestPC als Basis Peanut waren es folgende Pakete:

  • Test-Simple-<VERSION>.tar.gz
  • DBI-<VERSION>.tar.gz
  • DBD-mysql-<VERSION>.tar.gz
  • Event-<VERSION>.tar.gz
  • MIME-Base64-<VERSION>.tar.gz
  • Time-HiRes-<VERSION>.tar.gz

Die Installation ist für alle Pakete identisch:

cd $SOURCEDIR
tar xvzf <NAME>-<VERSION>.tar.gz
cd <NAME>-<VERSION>
perl Makefile.PL
make
make install
cd -

Debian-spezifisch

Unter Debian können die Perl Module einfach mit dieser Zeile komplett installiert werden.

apt-get install mysql-server \
                libdbi-perl \
                libevent-perl \
                libtimedate-perl \
                libtime-hires-perl \
                libmime-base64-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