|
|
einfache Kontrolle der Online - Zeit |
|---|
Der Denkanstoß für dieses Progrämmchen entstand nach einem
spitzen Aufschrei meiner lieben Gattin, nach dem Studium der gerade reingekommenen
Telefonrechnung. Nun ja, diese war etwas höher als üblich und der
Grund waren einfach die Stunden im Internet. Dabei nutze ich einen Vertrag
mit 20 h Mindestumsatz im Monat, die ich auch brauche. Aber alles, was darüber
ist, kostet extra. Und das wollen wir gern minimieren.
Als dann noch zufällig im Python CookBook ein kleiner Timer auftauchte, der auf Basis von Tkinter die Zeit zählte, war mein Entschluß gefasst. Das Resultat ist dieses Programm, das auf diesem CookBook-Modul basiert und nur einige notwendige Anpassungen erfahren hat. Es ist bewusst einfach gehalten. Man startet es mit der Hand und drückt nach dem Zustandekommen der Onlineverbindung, die man auf gewohnte Weise herstellt, den Knopf "Start". Nun zählen die Sekunden los.
Wird die Verbindung wieder getrennt, drückt man auf "Stop" und kann hiernach die Zeit in Ruhe ablesen. Drückt man nun auf "Save", wird der Zeitverbrauch in eine Logdatei geschrieben. Mit Quit wird das Programm beendet.
Das Programm lief zuerst nur unter Windows. Die Ursache habe ich noch nicht gefunden, aber unter Linux startete einfach der Zähler nicht. Inzwischen hat der Autor der Stoppuhr unter Python CookBook den Code geändert und die Funktion timer.clock() durch timer.timer() ersetzt. Nun geht es tatsächlich auf beiden Betriebssystemen. Aber mir ist der Grund noch nicht ganz klar. Hat mal jemand einen Tip?
Nun ist es mit der Log-Datei ja nicht getan, denn wir wollen ja wissen,
ob unsere Verbrauchsnorm überschritten wurde. Dazu dient nun ein weiteres
kleines Auswerteprogramm. Es fragt nach dem Start,
ob man über den aktuellen Monat oder den Vormonat berichtet haben möchte.
Dann checkt es die betreffende Log-Datei durch und gibt die Verbauchswerte
aus. Achtung! Wenn dann mal ein ganzes Jahr herum ist, müssen die alten
Dateien gelöscht werden, sonst hängt der Timer seine neuen Daten
an die alten Dateien!
Mit dieser Zeitüberwachung wird es nun keine großen Überraschungen
mehr geben, wenn die Telefonrechnung kommt. Dafür bleibt aber immer
noch das "Wundern" übrig, wenn man am Ende einer einzelnen Session den
Wert abliest. Was, schon wieder eine Stunde rum? Daher habe ich noch eine
kleine Ergänzung eingefügt, nämlich einen Signalton nach Ablauf
einer bestimmten Zeit. Er sollte hier alle 10 Minuten ertönen. Wer eine
andere Zeit möchte, der kann es leicht abändern (Zeile 33).
Das Verfahren beruht darauf, dass ein Beep (print
'\a') auf die Konsole gegeben wird. Das war für dieses Problem
die einfachste Lösung. Jedoch kam unter Linux der Ton zuerst nicht,
sondern wurde erst beim Beendigen des Programms nachgereicht. Diese kleine
unerwartete Besonderheit ist auf der Seite "Was
nicht geht ... " näher beschrieben. Übrigens, die etwas aufwendigere
Behandlung des Beeps in den folgenden Zeilen dient dazu, die ständige
Wiederholung zu unterdrücken, wenn eine Minute lang immer noch die Bedingung
der 10 Minuten erfüllt ist. Es soll also zum Eintritt der Bedingung
nur einmal piepen. Erst wenn die Bedingung vorübergehend nicht mehr
erfüllt ist, wird die Überwachung wieder "scharfgeschaltet".
Einschub für Fortgeschrittene:
Was kann nun schöner gemacht werden?
Es wäre eleganter, wenn das Programm automatisch geladen und gestartet wird, wenn die Onlineverbindung steht. Vielleicht macht einer der "Leser" mal einen interessanten Vorschlag :-)
Man könnte in die Logdateien noch eine Jahreszahl einbringen, damit es mit älteren Daten keine Kollision gibt. Zugegeben, die Logdateien lassen sich an Einfachheit kaum noch unterbieten. Aber das hat eben auch Vorteile ... :-)