easyVDR Kopie des easyVDR-Forums zum Nachschlagen
HOWTO: automatischer Wakeup für EPG-Aktualisierung

easyVDR - >VARforumsname - >HOWTO: automatischer Wakeup für EPG-Aktualisierung

soulianis  09.May.2008 20:13:16
Hallo liebe easyVDR Community,

ich bin in letzter Zeit hier und da auf die Frage gestoßen,
wie man den easyVDR zeitgesteuert aufwachen lässt, um z.B.
das EPG per tvmovie2vdr aktualisieren zu lassen.

Es gibt sicherlich unterschiedliche Wege, das zu lösen, und
einen davon möchte ich hier erläutern, in der Hoffnung, es
nützt jemandem hier :)

Beim herunterfahren sorgt das Skript /usr/bin/easyvdr/easyvdrshutdown.sh
für das Setzen des Wakeup-Timers, es bekommt dazu den nächsten
Timer als erstes Argument übergeben.

Die Logik, die hier eingebaut werden muss, damit der easyVDR
zu einer bestimmten Zeit aufwacht, um das EPG zu aktualisieren,
ist simpel: Angenommen, der Zeitpunkt für die EPG-Aktualisierung
soll morgens um 05:50 Uhr sein, und es ist kein Timer gesetzt
oder der nächste Timer liegt später als 05:50, dann wird der
Wakeup auf 05:50 gesetzt, sonst auf den nächsten Timer.

Ich habe zusätzlich noch den Fall berücksichtigt, dass der easyVDR
kurz vor 05:50 herunterfährt. Ist die Zeit zwischen Herunterfahren
und dem Zeitpunkt für die EPG-Aktualisierung zu kurz (ich habe mal
einen Spielraum von 10 Minuten festgelegt), addiere ich einen Tag
drauf, sodass die EPG-Aktualisierung einmal aussetzt und erst am
nächsten Tag um 05:50 stattfindet.

So wie ich das gelöst habe, sind das 13 Zeilen, die in das Skript
/usr/bin/easyvdr/easyvdrshutdown.sh eingebaut werden müssen, direkt
nach der TIMER=$1 Zuweisung (bei mir in Zeile 10):

cron_wakeup="05:50"
cron_wakeup_time_t=$(date -d "$cron_wakeup" +%s)
let cron_wakeup_thresh=$(date +%s)+600
if [ $cron_wakeup_time_t -lt $cron_wakeup_thresh ]; then
  let cron_wakeup_time_t=$cron_wakeup_time_t+86400
fi
if [ $[$TIMER+0] -gt 0 ] ; then
  if [ $TIMER -gt $cron_wakeup_time_t ] ; then
    TIMER=$cron_wakeup_time_t
  fi
else
  TIMER=$cron_wakeup_time_t
fi

Wünscht man einen anderen Zeitpunkt als 05:50, trägt man ihn in der
ersten Zeile entsprechend ein.

Damit tvmovie2vdr um 05:50 aufgerufen wird, fügt man folgende Zeile
an die /etc/crontab an:

50 5    * * *  root    /usr/share/tvmovie2vdr/tvm2vdr.sh

Für einen anderen Zeitpunkt ändert man die ersten beiden Zahlen, erst
die Minuten und dann die Stunde.

Damit dieser Eintrag funktioniert, muss der Cron-Daemon im OSD-Menü
aktiviert werden (System -> VDR-Setup -> sonstige System-Einstellungen
-> zusätzliche Tools starten -> CRON aktivieren).

Jetzt bleibt das Problem, dass tvmovie2vdr den easyVDR nach Beendigung
nicht herunterfährt. Um das zu lösen, habe ich eine spezielle Variante
des tvm2vdr.sh Skripts für den Cron-Einsatz gemacht.

Zunächst kopiert man das Skript:

cd /usr/share/tvmovie2vdr
cp -p tvm2vdr.sh tvm2vdr.cron.sh

Nun muss der tvm2vdr Aufruf im neuen tvm2vdr.cron.sh Skript ergänzt
werden. In meiner Version der Originaldatei steht in Zeile 31:

  screen -dmS tvmovie2vdr sh -c "cd \"$TVMOVIE2VDRDIR\" ; nice -n25 ./tvm2vdr $TVMOVIE2VDROPT"

Das muss so geändert werden, damit der easyVDR ca. eine Minute, nachdem
tvmovie2vdr fertig ist, herunterfährt:

  screen -dmS tvmovie2vdr sh -c "cd \"$TVMOVIE2VDRDIR\" ; nice -n25 ./tvm2vdr $TVMOVIE2VDROPT ; echo \"$SVDRP hitk power&\"|at now +1 minutes"

Bei dieser Änderung bitte genau auf das Quoting (Anführungszeichen) achten!

Anstatt tvm2vdr.sh muss nun tvm2vdr.cron.sh in der /etc/crontab
aufgerufen werden:

50 5    * * *  root    /usr/share/tvmovie2vdr/tvm2vdr.cron.sh

Das war's. Viel Erfolg!
easyVDR 0.6.10/VDR 1.4.7, Kernel 2.6.28.9 (wolf), ASUS M3N78 Mainboard (NVIDIA GeForce 8200 Chipset), AMD X2 4850e 2x2.5GHz CPU, 2GB RAM, 32 GB Super Talent Ultradrive GX MLC Solid State Disk (FTM32GX25H), 2 x 2TB WD AV-GP Platten (WD20EVDS), LG GH22NS30 SATA DVD-Brenner, TechnoTrend C-1500 DVB-C, Hauppauge PVR-150 Analog, Ausgabe über MagicDVD , atric IR-Empfänger/Einschalter, schwarzes Silverstone Lascala LC20 Gehäuse, Loewe RC4 Fernbedienung (VCR-Modus)
Martin  09.May.2008 22:48:29
ich werd mich weiterhin auf den Zufall verlassen. Trotzdem +1 Karma für die Mühen, und ich hoffe es nutzen viele andere...
Grüße
Martin
-----------------------------------------------------------------------------------------------------------
[url=http://wiki.easy-vdr.de/index.php/Hilfe]Du brauchst Hilfe? Wir brauchen Daten! English-Version: Don't eat yellow snow!
Meine VDRs (Spoiler klicken) 
VDR1: ASROCK Q1900M, 4GB, SSDs als Bootplatte, Bild+Ton aus Geforce 720, easyVDR3.x als Streamdev- und SatIP Client
VDR2: Esprimo, 2GB, NVIDIA Ausgabe per HDMI, kein GraphTFT am VGA Anschluss, easyVDR3.x als Streamdev-Client
VDR3: Activy350; SW: Gen2VDR Activy-Edition
SERVER: Asrock Q170M vPro, Core i5-6600K, Cine S2 V4 mit 4 S2-Tunern, 16GB Corsair, 4*4TB WD-RED, 240 GB SSD,  19" Gehäuse

Clients: Motorola VIP 19xx, Handys und Tablets 


koepcke  10.May.2008 07:04:36
Warum so kompliziert? Das exec-Plugin ermöglicht das zeitgesteuerte Starten des VDR und das Ausführen von Srcipten (z.B. tvmvdr).
TEST-System: Q1900M * MSI GT730 * DD CT 6.5
Prod-System: Gen2VDR5.1 * Zotac D2550 *DELOCK 41341 Riser PCIe>2x PCI * 2x DVB-C 'Hapuppauge 1501'
soulianis  10.May.2008 09:02:02
Vielen Dank für K+  :D

[quote='koepcke link' pid='4548' dateline='1210395876']
Warum so kompliziert? Das exec-Plugin ermöglicht das zeitgesteuerte Starten des VDR und das Ausführen von Srcipten (z.B. tvmvdr).

Das exec Plugin kannte ich noch nicht. Gucke ich mir an. Danke!
Ich wäre ja froh, wenn sich das vereinfachen ließe, besonders in
Hinblick auf den manuellen Aufwand nach jedem easyVDR Update.
easyVDR 0.6.10/VDR 1.4.7, Kernel 2.6.28.9 (wolf), ASUS M3N78 Mainboard (NVIDIA GeForce 8200 Chipset), AMD X2 4850e 2x2.5GHz CPU, 2GB RAM, 32 GB Super Talent Ultradrive GX MLC Solid State Disk (FTM32GX25H), 2 x 2TB WD AV-GP Platten (WD20EVDS), LG GH22NS30 SATA DVD-Brenner, TechnoTrend C-1500 DVB-C, Hauppauge PVR-150 Analog, Ausgabe über MagicDVD , atric IR-Empfänger/Einschalter, schwarzes Silverstone Lascala LC20 Gehäuse, Loewe RC4 Fernbedienung (VCR-Modus)