Hallo Freunde,
nun habe ich meine Androhung war gemacht und ein erstes Framework fuer XXV (Xtreme eXtension for Vdr) wahr gemacht. Natuerlich brauche ich einige tester da dieses Projekt ziemlich umfangreich ist. Schoen waere es auch wenn diejenigen ein wenig Perl koennen um vielleicht mir bei den Plugins zu helfen.
Meldet Euch einfach per PN bei mir wenn Ihr interessiert seid, ich schick Euch dann das Paket zu und helfe bei der Installation. Aber vorerst ... einige Erklaehrungen was eigentlich XXV ist
Wie ja einige von Euch wissen, habe ich frueher ja viel am vdradmin gearbeitet. Durch diese Arbeit kam am Ende der vdradmin BigPatch raus ... letztendlich war es aber nur eine Kruecke um den vorhandenen vdradmin zu erweitern.
Bei dieser Arbeit an dem Patch schwebte mir immer eine einfachere Loesung vor die wesentlich strukturierter und einfacher zu erweitern ist. Es soll ein zentraler Dienst existieren 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
Realisiert wurde das alles dem Event Modul und natuerlich eine MySQL Datenbank, die alle Daten (timers, epg, channels) aufnimmt und sich damit auch wunderbar die Sachen reorganisieren lassen.
Was sollte also vorhanden sein damit xxv laeuft?
Hier die Debian Paketnamen:
- perl: Logisch
- mysql-server: DB mit einer Database xxv und einem User der dort schreibend zugreifen darf
- libdbi-perl: Damit Perl die DB ansprechen kann
- libevent-perl: asynchrone Eventlibrary
Falls ihr ein anderes System nutzt als Debian, solltet ihr ueber CPAN die Module DBI DBD::mysql Event installieren koennen. Ich steh Euch da gerne zur Seite. Dann das Paket xxv-0.01.tar.gz einfach irgendwo entpacken und die xxvd.cfg einfach an Euer System anpassen. Ich hoffe die Kommentare helfen Euch erstmal das System einzurichten.
Anschliessend startet ihr einfach xxv indem ihr in den Ordner wechselt und das Tool startet:
Als Ausgabe werden nur die geladenen Plugins angezeigt mit deren Versionsnummern:
Load Module XXV::MODULES::TIMERS = 0.01
Load Module XXV::MODULES::TELNET = 0.01
Load Module XXV::MODULES::SVDRP = 0.01
Load Module XXV::MODULES::INTERFACE = 0.01
Load Module XXV::MODULES::HTTPD = 0.02
Load Module XXV::MODULES::EPG = 0.01
Load Module XXV::MODULES::CHANNELS = 0.01
Load Module XXV::MODULES::AUTOTIMER = 0.01
Das wars, Euer XXV System steht Euch nun zur Verfuegung. Um das schnell zu testen ruft einfach
auf und das XXV System muesste Euch mit folgenden Zeilen begruessen:
vdr:~# telnet localhost 8001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Welcome to XXV System Ver.: 0.01.
This is Channel 1.
XXV>
Hier einfach 'help' eingeben und ihr seht den Helpscreen mit den moeglichen Befehlen.
XXV> help
This is the VdrTelnetServer.
Please use the following commands:
.=----------+-------+----------+----------------------------------------=.
| Module | Short | Name | Description |
|=----------+-------+----------+----------------------------------------=|
| AUTOTIMER | ad | adelete | Delete a autotimer [aid] |
| AUTOTIMER | ae | aedit | Edit a autotimer [aid] |
| AUTOTIMER | al | alist | List the autotimer [aid] |
| AUTOTIMER | an | anew | Create a autotimer |
| AUTOTIMER | as | astatus | Status from Autotimers |
| AUTOTIMER | au | aupdate | Start the autotimer process |
| CHANNELS | ct | cstatus | Status from Channels Data |
| CHANNELS | cu | cupdate | Read Channels and write into Database |
| EPG | d | display | Show program event [eventid] |
| EPG | et | estatus | Status from EPG Data |
| EPG | n | now | Display events is running now |
| EPG | p | program | List program for channel [channel name] |
| EPG | s | search | Search in EPG Data |
| HTTPD | hh | htmlhelp | This will display the HelpScreen |
| SVDRP | sc | scommand | Send a command to scdrp |
| SVDRP | ss | sstatus | Status from SVDRP |
| TELNET | x | bye | This will exit thge xxv system. |
| TELNET | h | help | This will display the HelpScreen |
| TELNET | q | quit | This will exit the telnet session |
| TIMERS | td | tdelete | Delete Timer [tid] |
| TIMERS | te | tedit | Edit Timer [tid] |
| TIMERS | tl | tlist | List Timers [tid] |
| TIMERS | tn | tnew | Create Timer |
| TIMERS | ts | tsearch | Search Timers [text] |
| TIMERS | ta | tstatus | Status from Timers |
| TIMERS | tt | ttoogle | Activate/Deactive Timer [tid] |
| TIMERS | tu | tupdate | Read Timers and write into Database |
'=----------+-------+----------+----------------------------------------='
Alles anzeigen
Die Bedienung ist relativ einfach, man kann die langen Namen eingeben,
z.B. astatus oder auch nur den ShortBefehl as damit man sich
nicht immer einen Wolf schreiben muss.
Falls ihr schon das Webinterface nutzen wollt dann nehmt einen Browser und ruft folgende URL auf:
Schon seht ihr das Webinterface mit genau den gleichen Plugins, Befehlen usw. und da liegt die Macht von XXV, schreibt man ein Plugin fuer XXV ist es sofort in allen Interfaces zu sehen und zu benutzen.
Hier werde ich Euch kurz die schon realisierten Plugins vorstellen:
Load Module XXV::MODULES::AUTOTIMER = 0.01
Dieses Modul parst die EPG Daten in der DB und versucht anhand der eingetragen Autotimer Sendungen zu finden die dem Suchbegriff im AT entsprechen und programmiert diese im vdr.
Commands:
| AUTOTIMER | ad | adelete | Delete a autotimer [aid] |
| AUTOTIMER | ae | aedit | Edit a autotimer [aid] |
| AUTOTIMER | al | alist | List the autotimer [aid] |
| AUTOTIMER | an | anew | Create a autotimer |
| AUTOTIMER | as | astatus | Status from Autotimers |
| AUTOTIMER | au | aupdate | Start the autotimer process |
Load Module XXV::MODULES::CHANNELS = 0.01
Dieses Modul parst die channels.conf Datei und traegt neue Channels in die DB ein.
Commands:
| CHANNELS | ct | cstatus | Status from Channels Data |
| CHANNELS | cu | cupdate | Read Channels and write into Database |
Load Module XXV::MODULES::EPG = 0.01
Dieses Modul parst die epg.data Datei und traegt neue Events in die DB ein und loescht die alten.
Commands:
| EPG | d | display | Show program event [eventid] |
| EPG | et | estatus | Status from EPG Data |
| EPG | n | now | Display events is running now |
| EPG | p | program | List program for channel [channel name] |
| EPG | s | search | Search in EPG Data |
Load Module XXV::MODULES::HTTPD = 0.01
Dieses Modul stellt einen Webserver zur Verfuegung der dann mit jedem Browser konnektiert werden kann.
z.b. mit
Commands:
Load Module XXV::MODULES::SVDRP = 0.01
Dieses Modul "spricht" hauptsaechlich mit dem Vdr bzw. mit dessen TelnetServer. Mit scommand kann man ein eigenes Kommando schicken und man bekommt die Ausgabe des svdrp zu sehen. z.B.
Commands:
| SVDRP | sc | scommand | Send a command to scdrp |
| SVDRP | ss | sstatus | Status from SVDRP |
Load Module XXV::MODULES::TIMERS = 0.01
Dieses Modul parst die timers.conf und stellt die neuen oder auch veraenderten timer in einer DatenbankTabelle mit gleichen Namen zur Verfuegung.
Commands:
| TIMERS | td | tdelete | Delete Timer [tid] |
| TIMERS | te | tedit | Edit Timer [tid] |
| TIMERS | tl | tlist | List Timers [tid] |
| TIMERS | tn | tnew | Create Timer |
| TIMERS | ts | tsearch | Search Timers [text] |
| TIMERS | ta | tstatus | Status from Timers |
| TIMERS | tt | ttoogle | Activate/Deactive Timer [tid] |
| TIMERS | tu | tupdate | Read Timers and write into Database |
Load Module XXV::MODULES::TELNET = 0.01
Dieses Modul stellt Euch einen TelnetServer zur Verfuegung der auch in der Lage ist mehr als einen Client zu versorgen. Die Maximalanzahl sowie den Port des Servers configuriert ihr in der config.
Commands:
| TELNET | x | bye | This will exit the xxv system. |
| TELNET | h | help | This will display the HelpScreen |
| TELNET | q | quit | This will exit the telnet session |
So das sollte erstmal reichen.
Eins noch, diese Software befindet sich noch im ABSOLUTEN ALPHASTADIUM!!! Also beschreibt mir die Bugs und dann kann es nur noch besser werden.
Ich bin natuerlich auch sehr gespannt auf Eure Vorschlaege was man noch fuer Plugins entwickeln koennte und warum. Aber am meisten bin ich natuerlich am Testfeedback interessiert.
Euer xpix