Abschalten und automatisches Wiedereinschalten

  • Ich möchte hier mal ein paar Tipps zum Abschaltskript (poweroff.pl) geben (LinVDR 0.5).


    1) Wie bereits an anderer Stelle beschrieben, empfiehlt es sich, den PC ein paar Minuten vor dem Start einer Aufnahme hochfahren zu lassen. Damit erkennt VDR, dass er wegen eines Timers und nicht manuell gestartet wurde. Das bewirkt, dass er nach der Aufnahme sofort wieder herunterfährt, sofern nicht kurz darauf die nächste Aufnahme ansteht.
    Dazu wird in setTime einfach der Startzeitpunkt ein paar Minuten vorverlegt:


    # seconds to start the computer before the next timer starts
    my $BOOT_FORERUN = $BOOT_FORERUN;

    ...
    sub setAlarm {
    my $Next = shift;
    # start the computer 3 minutes before the timer starts
    $Next = $Next - (3 * 60);

    # setTime();
    dprint("Next event at ", strftime("%d.%m.%Y %H:%M:%S",localtime($Next)));
    system(sprintf("echo \"%s\" > %s", strftime("%Y-%m-%d %H:%M:%S",localtime($Next)), $PROC_ALARM));
    }


    Hinweis: das SetTime() habe ich aus setAlarm() herausgenommen, ich rufe es im Hauptskript an den passenden Stellen direkt auf (s.a. Punkt 2).


    2) Nun kann es allerdings nach wie vor passieren, dass kurz vor der nächsten Aufnahme der PC durch den Anwender heruntergefahren wird. Das modifizierte Skript trägt entspr. Punkt 1 eine Bootzeit ein, die ein paar Minuten davor liegt. Das kann durchaus ein Zeitpunkt sein, der spätestens nach dem Abschalten des PCs bereits in der Vergangenheit liegt. Der PC würde also gar nicht mehr oder bestenfalls (wenn das Datum ignoriert wird) erst am nächsten Tag wieder hochfahren.
    VDR stellt zwar eine Rückfrage, wenn aber die Powertaste am PC betätigt wird, so erfolgt das Abschalten sozusagen an VDR vorbei, es gibt also keine Rückfrage. Hier kann es sogar passieren, dass man mitten in einer laufenden Aufnahme den PC versehentlich abschaltet. Um das zu verhindern, kann man z.B. während oder kurz vor einer Aufnahme (hier 5 Minuten) das Abschalten per Powertaste ablehnen:


    # seconds to deny shutdown before the next timer starts
    my $SHUTDOWN_LOCK = 5*60;

    ...
    } else {
    # called from cmdline (this includes the PC power button)
    $next = `svdrpsend.pl next abs`;
    if($next =~ /550 No active timers/) {
    # XXX turns alarm off, at least, i hope so
    #system("echo \"0003-10-20 99:00:00\" > /proc/acpi/alarm");
    setTime();
    PowerOff();
    } elsif($next =~ /250 \d+ (\d+)/) {
    setTime();
    # deny shutdown if next timer is currently recording or starts within several minutes
    exit if ($1 - `date +%s` < $SHUTDOWN_LOCK);

    setAlarm($1);
    PowerOff();
    } else {
    print "HELP! What to do? ($next)\n";
    }
    }


    3) Nun kann es aber noch passieren, dass man den PC während der Bootphase wieder abschaltet, bevor ACPI die Kontrolle über die Powertaste übernommen hat. Unter ACPI schaltet die Powertaste den PC ja nicht selbst ab sondern meldet das Drücken nur an das Betriebssystem (es sei denn, man drückt die Taste länger als vier Sekunden). Ohne ACPI bewirkt ein Drücken bei vielen PCs aber ein sofortiges Abschalten. In diesem Fall hat natürlich VDR keine Chance, die Aufweckzeit wieder zu setzen, ohne erneutes Setzen wird die bestehende aber wirkungslos. Der PC wacht nicht mehr selbständig auf. Um das zu vermeiden, sollte man das Abschalten per Powertaste im Bios für Nicht-ACPI-Systeme deaktivieren (bei meinem Siemens D1120 gibt's das). Schon kann man den VDR nach dem Einschalten erst wieder Abschalten, wenn das Betriebssystem mitmischen kann.

  • Servus,


    Zitat

    Original von rwa
    Ich möchte hier mal ein paar Tipps zum Abschaltskript (poweroff.pl) geben (LinVDR 0.5).


    .... ist ja lobenswert, dass du hier die Tipps veröffenlichst. Aber mit dem Shutdown-Script der Version 0.6 wäre das alles nicht nötig gewesen.


    Viele Grüße, Mirko

  • Ich wollte einfach mal meinen Beitrag zum Forum leisten, da ich selbst auch schon sehr davon profitiert habe. Und da es wohl nach wie vor eine Menge 0.5er-Anwender gibt, hab' ich's eben 'reingestellt.

Jetzt mitmachen!

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