Ethersex Wiki:DiTeWe

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Didi's teurer Wecker

Features

  • Individuelle Weckzeiten fuer jeden Wochentag
  • Jede Woche im voraus planbar
  • Weiterschlafen funktion, jedenfalls um 10 Minuten
  • Vollgraphische Bedienung
  • Alles in Shellskripte, also leicht zu modifiezieren
  • Aufwachen des Ipaqs zum wecken aus dem suspend

Auf Basis von Ipaq/X11/Matchbox/fltk habe ich angefangen meinen bisherigen Wecker (einen alten Palm 500 mit einem properitaeren Programm Namens Weckup) zu ersetzen. Der Grund wieso ich ueberhaupt einen Handhelds als Wecker nehme ist folgendes: Ich habe die angewohnheit einen Wecker zu ignorieren, wenn er klingelt und nach 2 Minuten wieder aufhoert, auszerdem muss ich unter der Woche zu so verschiedenen Uhrzeiten aufstehen, dass es unbedingt notwendig ist mindestens eine Woche im Vorraus die Aufstehzeiten zu bestimmen.

Meinen Wecker will ich auf Basis von cron und shell skripten realisieren, ohne eine einzige Zeile C Code schreiben zu muessen (ich hab aktuell keine Lust mir nen arm compiler zu installieren).

Um mit der Installation von ditewe anzufangen muss man eine ganze Menge Dateien editieren, um dies zu vermeiden habe ich ein tar.gz gepackt, dass das meiste enthaelt, was man braucht. Man bekommt es hier und muss es auf den Ipaq laden. Zum Beispiel so:

cd /media/ram
wget http://www.dokucode.de/files/ditewe_root.tar.gz
cd / 
tar xzvf /media/ram/ditewe_root.tar.gz

Weiter geht es mit cron und einem extra user `weckup', den wir brauchen, da wir einen extra crontable wollen, die die Weckzeiten der einzelnen Wochentage beinhaltet.

ipkg update
ipkg install cron
ln -s /etc/init.d/crond /etc/rc5.d/S21crond

adduser weckup
echo audio:x:523:weckup >> /etc/group

ipkg install opie-opiealarm
ln -s /home/root/weckup/set_resumetime /etc/apm/resume.d/40weckuptime

An dieser Stelle wird cron installiert und das Startskript, dass in ditewe_root.tar.gz enthalten war automatisch beim booten gestartet. Der user weckup wird angelegt und im darauf folgenden wird die Gruppe audio angelegt und der Benutzer ihr weckup hinzugefuegt, damit er auf die Datei /dev/dsp zugreifen kann, die er braucht um den Klingelton abspielen zu koennen.

Es wird auch opiealarm installiert, das dafuer gebraucht wird den Ipaq aus dem suspend zu holen, wenn ein Wecken ansteht. Das set_resumetime sorgt dafuer, dass die naechste Weckzeit automatisch eingetragen wird, wenn der ipaq aus dem Suspend kommt. Keine Angst opiealarm hat keinerlei Abhaenigkeiten zu Opie, auch wenn der Name dies vermuten laesst.

An dieser Stelle waere ein reboot der Kiste angesagt um alle Dienste zu starten und Benutzerrechte neu zu laden. Um jetzt die Weckertabelle neu zu erstellen fuehrt man `/home/root/weckup/make_cron' aus. Dieses Skript baut aus der ersten Zeile der Dateien die in /home/root/weckup liegen und nach den Wochennamen benannt sind die Weckertabelle auf. Die einzelne Zeile ist sehr simple aufgebaut und enthaelt einfach nur die Weckzeit der Form $STUNDE:$MINUTE und optional noch einen Kommentar dahinter der mit # abgetrennt ist.

Die Dateien sollte man inzwischen auch ueber die Graphische Oberflaeche unter WeckerC editieren koennen ( Wenn matchbox dabei nicht abschmiert, was es gerne mal tut, weil das verwendete Plugin simplebrowser.so recht buggy zu sein scheint). Dort wird ein rxvt mit einem vi und der entsprechenden Datei geladen. Nach dem editieren ueber diesem Weg wird die crontab automatisch neu gebildet und geladen.

Das immer nur die erste Zeile der Wochentagsdateien geladen wird hat folgende bewandtnis: Auf diese Weise kann man mehrere Wochen im vorraus Planen, wann man geweckt werden will. Die oberste Zeile der Weckdatei wird immer dann geloescht, wenn der Wecker angeht, allerdings natuerlich nur, wenn es nicht die einzige ist.

Folgendes muss man noch in die crontab des Users root eintragen, damit die Zeit, wenn der Wecker aus dem suspend kommen soll auch korrekt eingetragen wird.

0 * * * * /home/root/weckup/set_resumetime
`set_resumetime' war im ditewe_root.tar.gz enthalten.

So nun noch einige Anmerkungen zum DiTeWe:

  • Der Wecksound wird bei mir dadurch erzeugt, dass /bin/sh direkt als Audiodatei ausgegeben wird ( das klingt dann ungefaehr so, als wenn man ein Radio mit 1000% verstaerkung ueber das UKW Spektrum fahren laesst ), aendern kann man das in /home/root/weckup/weckup.
  • Um den Wecker zu beenden, oder 10 Minuten schlafen zu legen aktiviert man die entsprechenden Icons unter `Wecker'
  • Die Systemzeit ist wahrscheinlich noch UTC, als -1, bzw -2 Stunden zu Mitteleuropa.

Solltet ihr noch irgendwelche Fehler in der Anleitung finden, schickt mir ne Mail an

stettberger (at) dokucode (dot) de