easyVDR

Normale Version: Plugin 'easyvdr' - Erste Schritte mit einem ungewohnten Plugin.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Das Plugin easyvdr ist soweit, dass ihr bald einen ersten Test machen könntet.

Für erste Tests ist es sehr wichtig, dass ihr als allererstes ein 'Gefühl' für dieses Plugin bekommt und versteht warum und wie das Plugin funktioniert.
Ich würde dringend raten, zu allererst mit einem ungepachten VDR und nur zwei oder drei Plugins zu beginnen.
Nicht mehr.

Zur Installation, vdr braucht einen Patch. Dieser Patch hat keine Nebenwirkungen auf andere Plugins oder den VDR selbst.
Der Patch erlaubt dem Plugin nur, auf VDR interne Schnittstellen zuzugreifen. Wird das Plugin nicht geladen/benutzt hat man einen Standard-VDR.

Was macht das Plugin zur Zeit?

1. Erstellt einen Hauptmenü Eintrag.
2. Startet andere Plugins beim Start von VDR.
3. Erlaubt den manuellen Start von Plugins via Menü (grüne Taste).
4. Erlaubt den manuellen Stop von Plugins via Menü (rote Taste)  - mit Einschränkungen -> keine Devices, Skins, DeviceHooks.
    Und: das zu stoppende Plugin muss sauber programmiert sein, sonst stürzt VDR ab. Kann man je Plugin verbieten, siehe Punkt 5
5. Liest je Plugin die Einstellungen aus einer separaten Textdatei: /etc/vdr/conf.d/<PLUGIN_NAME>_settings.ini
6. Erlaubt die Anpassung der Plugin Kommandozeile und Plugin Auto Start via menü und schreibt Änderungen zurück in die ini Datei

[Bild: plg_easyvdr.png]
Installation.
Ich nutze immer VDR ohne Installation, direkt aus dem Source Verzeichnis. Das hier beschreibt schrittweise eine Testumgebung.


Code:
cd /usr/src
wget ftp://ftp.tvdr.de/vdr/vdr-2.4.1.tar.bz2
tar xf vdr-2.4.1.tar.bz2

# make install legt mit einer lokalen config nur Ordner im Source Unterordner an.
cd vdr-2.4.1
cp ../Make.config .
make -j4
make install


Jetzt gibt es einen lauffähigen VDR-2.4.1, aber noch ohne Patch.
Zu VDR werden einige Beispiel - Plugins mitgeliefert. Die werden hier nicht benötigt.
Räumen wir erst einmal auf.

Code:
rm -rf ./PLUGINS/src/*
rm -rf ./PLUGINS/lib/*


Jetzt den Source code des Plugins holen ( demnächst.. ;-) )
Code:
cd ./PLUGINS/src
wget https://gen2vdr.de/wirbel/easyvdr/vdr-easyvdr-latest.tgz
tar xf vdr-easyvdr-latest.tgz


VDR jetzt patchen.
Code:
cd /usr/src/vdr-2.4.1
patch -p1 -i PLUGINS/src/easyvdr-<VERSION>/patches/vdr-plugin-easyvdr.diff

Die Ausgabe muss so aussehen;
Code:
patching file plugin.h

Und jetzt muss VDR neu gebaut werden.
Code:
make clean
make -j4
make install
Jetzt kann das Plugin compiliert werden.

In meinem Falle der lokalen Installion..
Code:
cd PLUGINS/src/easyvdr-<VERSION>
make clean install


Des weiteren werden einige Test Plugins benötigt, die werden wie immer gebaut.

Ich benutze
1. das control Plugin, mit dem ich das Menü des VDR in der bash bekomme
2. softhddevice
3. sleeptimer zum spielen/testen
4. skinsoppalusikka zum spielen/testen
5. satip
Zeit für die Konfiguration. Das Plugin 'easyvdr' benötigt zum Start eine Konfigurationsdatei:

/etc/vdr/conf.d/easyvdr.ini

download

Meine sieht z.Z. so aus:

Code:
[Common]
Description = easyvdr setup helper plugin
PluginConfigFile = /etc/vdr/conf.d/*_settings.ini
MainMenuEntry = EasyVdr Setup
PluginDebug = true
PluginManagerDebug = true


[HelpText]
Common::Description = The description displayed in VDR settings menu.
Common::MainMenuEntry = The name of the VDR main menu entry.
Common::PluginConfigFile = The full path for the plugins settings, the asterisk will be later replaced by the actual plugins name.
Common::PluginDebug = true/false : extended debug messages from core plugin to stderr
Common::PluginManagerDebug = true/false : PluginManager debug messages to stderr
Die Einstellungen je Plugin am praktischen Beispiel, mit download Links.

Plugin control
Das control Plugin soll automatisch gestartet werden, es darf via Menü gestoppt werden und hat keine Kommandozeilen Optionen die beim Start benötigt werden.
Code:
[EasyPluginManager]
AutoRun = true
Stop = true
Args =

[HelpText]
EasyPluginManager::AutoRun = true/false : automatic start of this plugin
EasyPluginManager::Stop = true/false : stop and unload of plugin at runtime. Can be disabled for problematic plugins.
EasyPluginManager::Args = string : plugin commandline args. May be empty: 'Args ='


Plugin satip
Das satip Plugin wird nicht automatisch gestartet. Das Plugin soll mit zwei satip devices laufen und
braucht deswegen die Kommandozeile '-d2'. Dieses Plugin ist besonders, es integriert devices,
welche sich kaum sicher stoppen lassen - die Option Stop, welche das Stoppen via Menü erlaubt
wird hier einfach ignoriert. Das satip Plugin ist zuerst gar nicht geladen (kein AutoRun), auch nicht im Menü "Einstellungen" zu finden.
Erst wenn man per Hauptmenü Eintrag sich zum Plugin durchhangelt und das Plugin mit der Grünen Taste im Menü startet, läuft es.
Code:
[EasyPluginManager]
Args=-d2
AutoRun=false
Stop=true


Plugin softhddevice
Wenn man will, kann man auch Ausgabedevices wie softhddevice später starten, wie hier zu sehen. In dem Fall hat man so etwas einen headless VDR,
der (siehe erstes Beispiel) sich perfekt vom control Plugin via "telnet localhost 2002" bedienen lässt. Funzt super.
Ich muss softhddevice mit Parametern starten, bei mir also '-f -v vdpau -a hw:1,7'. Auch softhddevice ist ein device Plugin, und lässt sich nicht stoppen, wenn es erst mal läuft.
Code:
[EasyPluginManager]
Args=-f -v vdpau -a hw:1,7
AutoRun=false
Stop=false
Damit das Plugin letztlich funktionieren kann, muss es das einzige Plugin sein, welches per VDR Option -P gestartet wird.

Am besten für die ersten Gehversuche direkt aus der Befehlszeile ohne runvdr starten:

Code:
cd /usr/src/vdr-2.4.1
./vdr -D2 -c. -v. -Peasyvdr

In meinem Falle gönne ich dem VDR zwei dvb devices und benutze das Source Verzeichnis zum Testen
als Verzeichnis für Video und Configs, so dass meine normalen Dateien nicht überschrieben werden.

Ansonsten noch Hinweise:
- ohne dieses Plugin ist das ein ganz normaler VDR wie gehabt. Dann werden Plugins wieder mit -P gestartet.

- Plugins OHNE config Datei werden nicht gestartet und haben Voreinstellungen. Sobald der Benutzer dann via Menü
  Einstellungen wählt, die nicht mit den Voreinstellungen identisch sind, wird eine neue Datei vom Plugin selbst angelegt.

- /etc/vdr/conf.d/* muss schreibbar sein. Wenn das ein Problem ist, könnt ihr dem Plugin mit dem Parameter -c den
  Pfad zu einem anderen Ordner übergeben.

- alle ini Files sind case sensitiv. 'autoLoad' ist also eine andere Einstellung als 'AutoLoad'

- keine Kommentare in ini Files.

- die Reihenfolge der Einträge ist beim Lesen beliebig, Sektionen dürfen gesplitten werden (sehr unleserlich - vermeiden..); und alle diese Dateien werden vom Plugin auch geschrieben.

- Nach jedem Speichern wird die Reihenfolge sortiert und Sektionen zusammen gefasst sein, alphabetisch, wobei nach klein und GROSS Buchstaben unterschieden wird.

- es gibt in den Textdateien Werte, die als boolean (true/false), Text (leer oder irgendetwas), Integer (-INTMAX..INTMAX) oder float(Kommazahl, fix mit Punkt als dezimalseparator)