Acpiwakeupscript
Aus VDR Wiki
(Unterschied zwischen Versionen)
(Vdr standalone acpiwakeup script) |
Hulk (Diskussion | Beiträge) K (Typo) |
||
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Ich habe ein kleines Skript geschrieben das | + | ;Ich habe ein kleines Skript geschrieben das folgendes tut: |
− | + | * Einlesen der /var/lib/vdr/timers.conf Datei | |
− | + | * ermittelt den nächsten Timer | |
− | + | * setze acpi Aufwachzeit. | |
− | + | * sorge dafür, dass das EPG nicht veraltet, mit einem Standard Timer. | |
Es verwendet die ACPI aufwachen Funktionalität des Kernels. Ich habe es mit ''ubuntu 8/04, Standard-Kernel 2.6.24-19-generic, vdr-1.6.0-1ubuntu2''getestet. | Es verwendet die ACPI aufwachen Funktionalität des Kernels. Ich habe es mit ''ubuntu 8/04, Standard-Kernel 2.6.24-19-generic, vdr-1.6.0-1ubuntu2''getestet. | ||
Es ist noch eine Beta-Version. Verwenden Sie es nicht, wenn Sie ihm nicht vertrauen. Verhindern Sie selbst, dass Daten verloren gehen können. | Es ist noch eine Beta-Version. Verwenden Sie es nicht, wenn Sie ihm nicht vertrauen. Verhindern Sie selbst, dass Daten verloren gehen können. | ||
− | + | ;To do Liste: | |
− | + | * bis jetzt werden maximal nur 80 Timer in timers.conf unterstützt. | |
− | + | * wenn kein Timer eingestellt ist und wenn Computer wiederum am letzten Tag des Monats herunterfährt, wacht er am nächsten Tag nicht auf. So das eventuell das EPG veraltet ist. | |
#! /bin/sh | #! /bin/sh | ||
Zeile 19: | Zeile 19: | ||
################### Configuration #################### | ################### Configuration #################### | ||
TIME_TO_BOOT=4 | TIME_TO_BOOT=4 | ||
− | TIME_TO_DOWN= | + | TIME_TO_DOWN=3 |
− | + | ||
################## Functions ######################## | ################## Functions ######################## | ||
Zeile 28: | Zeile 27: | ||
TOMORRO=`expr $TODAY + 1` #should changed because of the last day of the month! | TOMORRO=`expr $TODAY + 1` #should changed because of the last day of the month! | ||
YEAR=`date +%Y%m` | YEAR=`date +%Y%m` | ||
− | NEXT_TIMER="$YEAR$TOMORRO$ | + | TIME="1900" |
+ | NEXT_TIMER="$YEAR$TOMORRO$TIME" | ||
echo "Default Timer is (JJJJMMDDHHhhmm): $NEXT_TIMER" | echo "Default Timer is (JJJJMMDDHHhhmm): $NEXT_TIMER" | ||
} | } | ||
Zeile 36: | Zeile 36: | ||
if [ `echo $(du -b /var/lib/vdr/timers.conf) | awk '{print $1}'` -gt "0" ];then | if [ `echo $(du -b /var/lib/vdr/timers.conf) | awk '{print $1}'` -gt "0" ];then | ||
i=1 | i=1 | ||
− | while [ $i -le | + | while [ $i -le 80 ];do #get the closest timer (max 80 is an improvement) sould be something like: for line in file do... |
STRING=`head -n $i /var/lib/vdr/timers.conf|tail -n 1` | STRING=`head -n $i /var/lib/vdr/timers.conf|tail -n 1` | ||
DATE=`echo $STRING | awk -v FS=":" '{print $3}'` | DATE=`echo $STRING | awk -v FS=":" '{print $3}'` | ||
Zeile 48: | Zeile 48: | ||
MINUTES=`echo $TIME | cut -b 3-4` | MINUTES=`echo $TIME | cut -b 3-4` | ||
NEW_TIMER=`echo $DATE | tr -d '[=-=][:blank:]'`$TIME | NEW_TIMER=`echo $DATE | tr -d '[=-=][:blank:]'`$TIME | ||
− | if [ $NEXT_TIMER -gt $NEW_TIMER ] && [ `expr $NEW_TIMER | + | if [ $NEXT_TIMER -gt $NEW_TIMER ] && [ `expr $NEW_TIMER - $TIME_TO_DOWN - $TIME_TO_BOOT` -gt `date +%Y%m%d%H%M` ];then #keep the newest, but prevent setting past timers |
− | TAKE_TIMER | + | echo "TAKE_TIMER $i (JJJJMMDDHHhhmm): $NEW_TIMER" |
NEXT_TIMER=$NEW_TIMER | NEXT_TIMER=$NEW_TIMER | ||
fi | fi | ||
i=`expr $i + 1` | i=`expr $i + 1` | ||
done | done | ||
− | echo NEXT_TIMER selected (JJJJMMDDHHhhmm): $NEXT_TIMER | + | echo "Now it is (JJJJMMDDHHhhmm): `date +%Y%m%d%H%M`" |
+ | echo "NEXT_TIMER selected (JJJJMMDDHHhhmm): $NEXT_TIMER" | ||
fi | fi | ||
} | } | ||
Zeile 90: | Zeile 91: | ||
set_bios_wakeup_time | set_bios_wakeup_time | ||
− | echo "Please check the set of timers and make suggestions to | + | echo "Please check the set of timers and make suggestions to (jonas - bergel (at) gmx (point) de)" |
exit 0 | exit 0 | ||
− | --[[Benutzer:Jonasbergel|jonasbergel]] | + | --[[Benutzer:Jonasbergel|jonasbergel]] 13:19, 15. März 2009 (CEST) |
− | [[Kategorie: | + | [[Kategorie:Wakeup]][[Kategorie:Skripte]] |
Aktuelle Version vom 18. September 2012, 19:09 Uhr
- Ich habe ein kleines Skript geschrieben das folgendes tut
- Einlesen der /var/lib/vdr/timers.conf Datei
- ermittelt den nächsten Timer
- setze acpi Aufwachzeit.
- sorge dafür, dass das EPG nicht veraltet, mit einem Standard Timer.
Es verwendet die ACPI aufwachen Funktionalität des Kernels. Ich habe es mit ubuntu 8/04, Standard-Kernel 2.6.24-19-generic, vdr-1.6.0-1ubuntu2getestet. Es ist noch eine Beta-Version. Verwenden Sie es nicht, wenn Sie ihm nicht vertrauen. Verhindern Sie selbst, dass Daten verloren gehen können.
- To do Liste
- bis jetzt werden maximal nur 80 Timer in timers.conf unterstützt.
- wenn kein Timer eingestellt ist und wenn Computer wiederum am letzten Tag des Monats herunterfährt, wacht er am nächsten Tag nicht auf. So das eventuell das EPG veraltet ist.
#! /bin/sh # # vdr-shell-acpiwakeup: # usage execute as root via a contab or runlevel # ################### Configuration #################### TIME_TO_BOOT=4 TIME_TO_DOWN=3 ################## Functions ######################## get_default_timer(){ #default timer to keep epg up to date TODAY=`date +%d` TOMORRO=`expr $TODAY + 1` #should changed because of the last day of the month! YEAR=`date +%Y%m` TIME="1900" NEXT_TIMER="$YEAR$TOMORRO$TIME" echo "Default Timer is (JJJJMMDDHHhhmm): $NEXT_TIMER" } get_next_wakeup_timer() { if [ `echo $(du -b /var/lib/vdr/timers.conf) | awk '{print $1}'` -gt "0" ];then i=1 while [ $i -le 80 ];do #get the closest timer (max 80 is an improvement) sould be something like: for line in file do... STRING=`head -n $i /var/lib/vdr/timers.conf|tail -n 1` DATE=`echo $STRING | awk -v FS=":" '{print $3}'` if [ `echo $DATE | grep M` ] || [ `echo $DATE | grep D` ] || [ `echo $DATE | grep F` ] || [ `echo $DATE | grep S` ];then #yet no week days in timers! echo "Do not use days of timers, yet!" DATE=`date +%Y-%m-%d` echo "To prevent loosing a timer I will use fallback date: $DATE (today)" fi TIME=`echo $STRING | awk -v FS=":" '{print $4}'` HOUR=`echo $TIME | cut -b 1-2` MINUTES=`echo $TIME | cut -b 3-4` NEW_TIMER=`echo $DATE | tr -d '[=-=][:blank:]'`$TIME if [ $NEXT_TIMER -gt $NEW_TIMER ] && [ `expr $NEW_TIMER - $TIME_TO_DOWN - $TIME_TO_BOOT` -gt `date +%Y%m%d%H%M` ];then #keep the newest, but prevent setting past timers echo "TAKE_TIMER $i (JJJJMMDDHHhhmm): $NEW_TIMER" NEXT_TIMER=$NEW_TIMER fi i=`expr $i + 1` done echo "Now it is (JJJJMMDDHHhhmm): `date +%Y%m%d%H%M`" echo "NEXT_TIMER selected (JJJJMMDDHHhhmm): $NEXT_TIMER" fi } convert_timer_to_acpi_format() { #convert NEXT_TIMER to acpi format YEAR=`echo $NEXT_TIMER | cut -b 1-4` MONTH=`echo $NEXT_TIMER | cut -b 5-6` DAY=`echo $NEXT_TIMER | cut -b 7-8` HOUR=`echo $NEXT_TIMER | cut -b 9-10` MINUTES=`echo $NEXT_TIMER | cut -b 11-12` if [ $MINUTES -le $TIME_TO_BOOT ];then HOUR=`expr $HOUR - 1` MINUTES=`expr $MINUTES + 60 - $TIME_TO_BOOT` else MINUTES=`expr $MINUTES - $TIME_TO_BOOT` fi BIOS_STRING="$YEAR-$MONTH-$DAY $HOUR:$MINUTES:00" } set_bios_wakeup_time() { echo $BIOS_STRING > /proc/acpi/alarm echo $BIOS_STRING > /proc/acpi/alarm echo -n "BIOS ACPI TIME WAS SET TO: " cat /proc/acpi/alarm } #################### Main ############################# get_default_timer get_next_wakeup_timer convert_timer_to_acpi_format set_bios_wakeup_time echo "Please check the set of timers and make suggestions to (jonas - bergel (at) gmx (point) de)" exit 0
--jonasbergel 13:19, 15. März 2009 (CEST)