XXV Tester gesucht!

  • 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:


    Code
    cd XXV;
    ./bin/xxvd.pl


    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

    Code
    telnet localhost 8001

    auf und das XXV System muesste Euch mit folgenden Zeilen begruessen:


    Code
    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.



    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:

    Code
    [URL]http://[/URL](ip_eures_vdrs):8080/


    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:

    Code
    | 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:

    Code
    | 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:

    Code
    | 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

    Code
    lynx [URL]http://localhost:8080/[/URL]


    Commands:

    Code
    | HTTPD     | hh    | htmlhelp | This will display the HelpScreen        |


    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.

    Code
    scommand stat disk


    Commands:

    Code
    | 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:

    Code
    | 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:

    Code
    | 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

  • Absolut geile Sache,
    was du da vorhast.


    Stelle mich gerne als Alpha/Beta/Sonstwas-Tester zur Verfügung
    und werde versuchen so schnell wie möglich Bugreports zu schreiben.


    Schick mir einfach eine PM.


    Gruß und großes Lob,
    Henning

    --==Mein neuer VDR läuft: DH102, Athlon64 X2 4850e, 1TB Samsung, Asus M2A-VM HDMI, 2 GB DDR2-800, 80+ Netzteil, TT DVB-S 1.6-4MB & Skystar II==--

    --==VDR 1.6.0-2, HgDVB, ACPI Wakeup, xineliboutput und graphtft auf X mit xf86-video-ati (DualHead / XVideo / DRI) ausm GIT auf Debian Lenny mit Kernel 2.6.28-rc6 ==--

  • Kanns kaum erwarten! :P


    Gruß,
    Henning

    --==Mein neuer VDR läuft: DH102, Athlon64 X2 4850e, 1TB Samsung, Asus M2A-VM HDMI, 2 GB DDR2-800, 80+ Netzteil, TT DVB-S 1.6-4MB & Skystar II==--

    --==VDR 1.6.0-2, HgDVB, ACPI Wakeup, xineliboutput und graphtft auf X mit xf86-video-ati (DualHead / XVideo / DRI) ausm GIT auf Debian Lenny mit Kernel 2.6.28-rc6 ==--

  • Hallo Freunde,


    also es sieht sehr gut aus, ich kann schon autotimer programmieren und normale Timer editieren oder neue anlegen. Auch der Autotimer funktioniert schon sehr gut.


    Ihr muesst Euch aber noch ein wenig gedulden da ich erst mal die Fehler beseitigen will die mir auffallen. Da es aber am Freitag in die Toskana geht werdet ihr spaetesten an diesem Tag eine version von XXV auf Eurer Platte haben.


    Bin ja auch schon sehr gespannt auf die Tests.


    cu xpix

  • xpix


    da du DBI::DBD verwendest, sollte die einbindung anderer datenbanken ja eigentlich kein problem darstellen? (Ausser du verwendest db-spez. dinge wie timestamps, konstanten, etc)


    wenn ja: biete mich an, sqlite und oder vielleicht sogar berkeley db support einzubinden (meine abneigung gegenueber mysql ist ja einigen hier bereits bekannt ;)


    /wastl

  • SQlite halte ich für eine geniale Idee.
    Dann braucht man keinen extra DB-Server.


    Ich sag nur eins: MACH!!! :]



    Gruß,
    Henning

    --==Mein neuer VDR läuft: DH102, Athlon64 X2 4850e, 1TB Samsung, Asus M2A-VM HDMI, 2 GB DDR2-800, 80+ Netzteil, TT DVB-S 1.6-4MB & Skystar II==--

    --==VDR 1.6.0-2, HgDVB, ACPI Wakeup, xineliboutput und graphtft auf X mit xf86-video-ati (DualHead / XVideo / DRI) ausm GIT auf Debian Lenny mit Kernel 2.6.28-rc6 ==--

  • Zitat

    Original von wastl
    xpix


    da du DBI::DBD verwendest, sollte die einbindung anderer datenbanken ja eigentlich kein problem darstellen? (Ausser du verwendest db-spez. dinge wie timestamps, konstanten, etc)


    KLar wastl, da bin ich gerne dabei. SQLLite habe ich mir mal ein wenig genauer angesehen. Sieht sehr interessant aus. Gibt es da auch ein DBD (cpan)Modul fuer?


    cu
    xpix

  • xpix
    gibt fuer eine grosse anzahl von dbs ein DBD-modul.
    das ist ja das nette an perl, dass ein sauberes modulares db-konzept verfuegbar ist mit DBI::DBD und deshalb auch die unterstuetzung zusaetzl. DBs relativ einfach zu realisieren ist.


    siehe:
    http://search.cpan.org/search?query=DBD&mode=module


    sogar JDBC-datenbanken koennen ueber DBD::JDBC eingebunden werden inkl. type4-treiber (ideal fuer zb. oracle und db/2, wenn man sich die installation der jew. clients ersparen moechte). es muss halt ein java-prozess im hintergrund laufen, der umsetzt (habe damit sehr positive erfahrungen gemacht).


    im sourcecode einer perl-app sind (wenn sauber programmiert) in der regel nur 2 zeilen zu aendern: angabe des einzubindenden DBD-treibers und der DB-URL.


    /wastl

  • Zitat

    Original von wastl
    im sourcecode einer perl-app sind (wenn sauber programmiert) in der regel nur 2 zeilen zu aendern: angabe des einzubindenden DBD-treibers und der DB-URL.
    /wastl


    UNd schon bekomme ich ein schlechtes Gewissen wenn ich an meine Statements denke. Also ich benujtze REPLACE, FROM_UNIXTIME und DATE_Format. Ich denke mal das ich stark mysql spezifisch. Trotzdem, diese kleinen haken und oesen lassen sich ziemlich einfach loesen.


    Willst du dich mal an die SQLite Implementierung ranwagen?


    Bei Fragen bin ich natuerlich jederzeit erreichbar und würde dich mit allen kraeften unterstuetzen.

  • gibts bereits den source-code? habe ich etwas uebersehen?


    ad sql: tja. sql ist so ziemlich der schwammigste und unbrauchbarste 'standard' in der computerwelt wenn es um portierung geht. es ist zwar schoen, dass die syntax halbwegs standardisiert ist, aber was hilfts, wenn jede DB ihre eigene implementierung v. timestamps, konstanten, ... hat


    (gerade timestamps werden geruechten zufolge in professionellen db-loesungen gerne immer und ueberall hergenommen. da wird jede aenderung, ... mit einem timestamp versehen ;)


    aber: wenn es den source-code bereits gibt, schaue ich mir das mal an (bzw. einfach als pn-nachricht)


    /wastl



    EDIT: oopsi: gerade ueber umwege den download-link gefunden

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!