Feature #459
openRFC: Neues Wakeup
0%
Description
Ich bin nicht wirklich happy mit vdr-addon-acpiwakeup, daher möchte ich da was neues bauen. Was mir vorschwebt ist eine generische Lösung, die erstmal VDR-Unabhängig ist.
Diese soll bestehen aus:
a) Einem CLI-Skript zum Setzen der Aufwachzeit
b) Init-Skripte/Suspend-Hooks, welche beim Runterfahren die Aufwachzeit setzen
c) "Plugins" fur ACPI, NVRAM, SETTIMER, ...
Unterschiedliche Programme (wie z.B. VDR) können über a) eine Aufwachzeit registrieren / deregistrieren, eventuell cron-like.
Das ganze soll in Python implementiert werden.
Irgendwelche Kommentare / Anregungen dazu?
Updated by steffen_b about 14 years ago
Gute Idee.
- Kiss - de-registrieren sehe ich nicht/ bitte eine Zeitform (Unix timestamp UTC?)
- die unterschiedlichen Programme sollten ihren identifier übergeben, so könnte man einfach unterscheiden zwischen neuer Aufwachzeit und andere Aufwachzeit eines anderen "Programms"
- cron-like für repeating events, ja.
- ob runterfahren erlaubt ist (Mindestzeit unterschritten) sollte am besten über den Rückgabewert zurückkommen
Updated by etobi about 14 years ago
steffen_b wrote:
- Kiss - de-registrieren sehe ich nicht
Für den Anfang kann man vielleicht wirklich mit einem ungewollten Aufwachen leben, aber ich denke der Wunsche eine Aufwachzeit auch wieder zu deaktivieren wird kommen.
/ bitte eine Zeitform (Unix timestamp UTC?)
Das Skript soll standardmäßig Local-Time annehmen und mit --utc UTC. Zeitangaben sollen ISO 8601 sein, optional über Schalter Unix-Timestamps. Evtl. auch locale-Abhängige Zeitformate.
- die unterschiedlichen Programme sollten ihren identifier übergeben, so könnte man einfach unterscheiden zwischen neuer Aufwachzeit und andere Aufwachzeit eines
Jepp, so hatte ich mir das gedacht.
- ob runterfahren erlaubt ist (Mindestzeit unterschritten) sollte am besten über den Rückgabewert zurückkommen
Gute Idee. Dann natürlich auch ne Abfrage wie "wakeup --next-wakeup".
Updated by gda about 14 years ago
/ bitte eine Zeitform (Unix timestamp UTC?)
Das Skript soll standardmäßig Local-Time annehmen und mit --utc UTC.
Ist denn UTC nicht auch der Default bei c't-VDR? Bei uns ist es das jedenfalls. Willst du wirklich einen Default nehmen, der für uns schon mal unbrauchbar ist?
Gerald
Updated by etobi about 14 years ago
Es geht ja hier nur um die Zeit, die an das Skript übergeben wird. Und da das auch vom User bedienbar sein soll, macht Lokalzeit mehr Sinn. Ausserdem übergibt auch VDR die Aufwachzeit/Startzeit des nächsten Timers in Lokalzeit. Intern wird je nach UTC-Einstellung dann entsprechend die Aufwachzeit in UTC oder Lokalzeit gesetzt.
Updated by steffen_b about 14 years ago
Nein der VDR übergibt die Zeit in Unix time stamp UTC. Es wurde früher umgerechnet weil ältere Kernel das anders brauchten (pre .23) Ich denke diese Kernel kann man inzwischen vernachlässigen. Ich finde auch das man es dem User zumuten kann es in Unix time stamp zu übergeben.
Schön fände ich wenn man die 30 min innerhalb der der VDR mit verkehrter Zeit zurückkommt wieder aus dem VDR nehmen könnte und das entsprechend im Skript gehandhabt würde - aber das ist hier halb OT. Das ist eines der Userprobleme beim Testen, da bin ich auch schon selbst reingerannt.
Also wenn man es neu machen will würden folgende Argumente dafür sprechen:
- Vereinfachen des Codes (Kompatibilität für alten Kernel entfernen)
- besser wartbaren Code
- ACPI WakeUP, NVRam, settimer in einem Script
Registrieren klar, de-registrieren, eine Zeit von 0 setzen sollte hier reichen.
Updated by etobi about 14 years ago
steffen_b wrote:
Ich finde auch das man es dem User zumuten kann es in Unix time stamp zu übergeben.
Denke ich nicht. Wenn ich als User möchte, dass die Kiste am 19.11. um 11:00 Uhr aufwachte, dann möchte ich das auch so eingeben und nicht erst überlegen, was das in UTC-Zeit wäre. Dazu sind die locale-Einstellungen schließlich da.
Spielt aber auch keiner Rolle. Der VDR ruft dann ganz einfach `schedule-wakeup --utc 1307880000` auf - da sehe ich jetzt erstmal kein Problem.
Schön fände ich wenn man die 30 min innerhalb der der VDR mit verkehrter Zeit zurückkommt wieder aus dem VDR nehmen
Die Anbindung an den VDR ist dann wieder ein anderes Thema. Mir geht es erstmal um ein System-Tool, das unabhängig vom VDR die Aufwachzeit setzt. Dieses wird dann von vdr-adddon-wakeup-ng, shutdown-at-night, irgendwelchen anderen Anwendungen oder direkt vom User verwendet.
Sobald ich die ersten paar Unit-Tests geschrieben habe, werde ich das ganze hier als Projekt online stellen - wir werden sehen, wie sich das ganze entwickelt.
Updated by etobi about 14 years ago
Ich hab inzwischen schonmal ein paar Zeilen Code geschrieben. Dem Kind/Paket wollte ich den Namen "wakemeup". Und das CLI soll für den Anfang so aussehen:
(1) wakemeup --requester=VDR --comment"Next Timer on Channel Foo" --utc <UNIXTIMESTAMP> (2) wakemeup --update-wakeup-time (3) wakemeup --next-wakeup
(1) wäre das, was z.B. der VDR aufrufen muss. (2) wird durch ein Init-Skript beim Herunterfahren aufgerufen, um die Aufwachzeit (sicherheitshalber) nochmal zu setzen. (3) gibt den nächsten Aufwachtimer aus.
Für den Anfang soll erstmal ACPI unterstützt werden. Die Basis-Konfiguration findet sich in /etc/wakemeup.conf und die Liste mit Aufwach-Requests wird in /var/lib/wakemeup/wakeup-times.list gepflegt. Ich versuch's erstmal so einfach wie möglich zu halten.
Irgendwelche Kommentare dazu? Falls nicht noch jemand einen besseren Namen als "wakemeup" hat, werde ich demnächst ein Projekt dazu anlegen.
Updated by foremon about 14 years ago
Für Mainboards die aus S4, aber nicht aus S5 aufwachen können wäre folgendes noch schön:
- Option, die anstelle des normalen Shutdown (S5) ein Suspend to disk (S4) durchführen falls ein Timer zu setzen wäre.
So habe ich mir das vdr-addon-acpiwakeup angepasst. Sonst machte mein Mainboard leider keinen Wakeup.
Name wakemeup passt.