easyVDR

Normale Version: HOWTO: automatischer Wakeup für EPG-Aktualisierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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 Smile

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

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

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

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

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

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

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

Das war's. Viel Erfolg!
ich werd mich weiterhin auf den Zufall verlassen. Trotzdem +1 Karma für die Mühen, und ich hoffe es nutzen viele andere...
Warum so kompliziert? Das exec-Plugin ermöglicht das zeitgesteuerte Starten des VDR und das Ausführen von Srcipten (z.B. tvmvdr).
Vielen Dank für K+  Big Grin

(10.05.2008, 07:04)koepcke link schrieb: [ -> ]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.