Nachdem ich mir vor Jahren mit Hilfe eines Raspberry Pi und eInk-Displays eine Uhr/Wetterstation gebastelt hatte, wollte ich erst einen weiteren Raspberry dafür vorbereiten und das eInk-Display eines nicht mehr verwendeten Kindle dranbasteln.

Dann bin ich allerdings darauf gestoßen, dass auf einem Kindle "auch nur Linux" läuft und er sich jailbreaken lässt. Also für was braucht's noch den Raspberry Pi?

Für dieses Projekt jedenfalls nicht.

Nachem ich alle unter Kindle Jailbreak beschriebenen Schritte durchgeführt und den KUAL Launcher installiert hatte, machte ich mich daran, eine KUAL Extension zu schreiben, die wie schon auf meiner Raspberry-Pi-Uhr Uhrzeit/Wetter/aktuelle Raumtemperaturen anzeigt. Dafür konnte ich meine Python-Skripte mehr oder weniger 1:1 wiederverwenden.

Da auf dem Kindle-Display um einiges mehr Platz ist, als auf dem 4"-Display meiner Raspberry-Uhr, musste ich die Anzeige noch etwas umbauen und hatte noch ein neues Diagramm gebastelt, welches den ganztägigen Temperaturverlauf anzeigt.

Leider musste ich feststellen, dass trotz aller verwendeten Energiespar-Maßnahmen (WLAN nur kurz für Datenabruf einmal je halbe Stunde aktiviert, Gerät in Deep Sleep schicken und nur einmal die Minute aufwachen lassen, um die Uhrzeit zu aktualisieren) der Akku des Kindle nur für zwei Tage hielt.
Da ich ihn schnurlos an einer Stelle verwenden wollte, an der keine Steckdose vorhanden ist, musste ich auf die Uhrzeitanzeige verzichten und reduzierte die Aktualisierung des Displays auf einmal pro Stunde.

KUAL Extension "Wetter"

Hier kann meine KUAL-Extension heruntergeladen werden, die irgendwie immer noch "Uhr" heißt, obwohl ich die Uhrzeitanzeige eigentlich nicht mehr verwende 🤔

Die ZIP-Datei muss entpackt und in das extensions-Verzeichnis auf der obersten Ebene des Kindles geschoben werden, die sich zeigt, wenn man das Kindle per USB an dem Computer anschließt.
Davor müssen die Skripte allerdings angepasst werden, damit sie euren Ansprüchen genügen und mit eurem Server zusammenarbeiten, der die Daten wohl in einer anderen Art zur Verfügung stellt, als meiner es tut. Und wahrscheinlich auch teilweise ganz andere Daten liefert.

Meine KUAL Extension zur Wetteranzeige ist also nur eine kleine Hilfe, falls auch jemand so ein Projekt starten möchte.

Kleine Beschreibung der vorhandenen Dateien und Funktionen

+bin
  - datum.py        Erstellt ein PNG in welchem das aktuelle Datum angezeigt wird (siehe unten)
                    Dieses wird später mit dem Wetterbild zusammengelegt
  - sleepcheck.py   Prüft anhand config.ini ob das Gerät in den Schlafmodus
                    versetzt werden sollte (z.B. nachts, wo keine draufschaut)
  - start-uhr.sh    Hauptprogramm für Wetteranzeige + Uhrzeitanzeige
                    (Akku hält hier etwa zwei Tage)
  - start-wetter.sh Hauptprogramm für Wetteranzeige + Datumsanzeige
                    (Akku hält hier etwa zwei Wochen)
  - uhr.py          Erstellt ein PNG in welchem die aktuelle Uhrzeit angezeigt wird (siehe unten)
                    Dieses wird später mit dem Wetterbild zusammengelegt
  - wetter.py       Eine Variante meiner Wetter-Anzeige (siehe unten)
                    Wird zusammen mit der Uhrzeit kombiniert
  - wetter2.py      Eine Variante meiner Wetter-Anzeige (siehe unten)
                    Wird zusammen mit der Datums-Anzeige kombiniert
  - wetterwidget.py Klasse für die Anzeige der Wetterdaten
                    Wird in wetter.py und wetter2.py verwendet
- config.ini        Einstellungen für die Skripte, wie API-URLs für
                    den Datenabruf und Energiespar-Schlafenszeiten
- config.xml        config-Datei für KUAL. Muss nicht angepasst werden
+ font              Ordner für Font-Dateien. Fonts müssen hinzugefügt werden!
+ icons             Ordner für Icon-Dateien. Icons müssen hinzugefügt werden!
- menu.json         config-Datei für KUAL. Muss nicht angepasst werden
+ testfiles         Ordner mit Beispiels-JSON-Dateien, wie sie die
                    die Skripte von den API-URLs erwarten

Ausgabe von datum.py, uhr.py, wetter.py und wetter2.py:

 

In start-uhr.sh repektive start-wetter.sh werden dann die jeweiligen Python-Skripte angestoßen, welche die Bilder erstellen, dann die Bilder zusammengefügt und auf dem Display ausgegeben.
Dann wird der Kindle entweder für eine Minute (Uhr) oder für die in config.ini angegebene Zeit in den Ruhezustand versetzt. Oder noch länger, wenn er laut config.ini Schlafen sollte.

start-uhr.sh wurde von mir allerdings nicht mehr weiter überarbeitet. Hier kann man die Schlafenzeiten und Abstände zwischen den Datenabrufen nicht über die config.ini steuern.

Die Skripte start-uhr.sh und start-wetter.sh laufen in einer Endlosschleife und können nur beendet werden, indem man den Kindle neu startet (Einschalttaste länger drücken...je nachdem auch mehrmals länger drücken, bis er neustartet).

Außerdem wird das Programm nach der nächsten Aktualisierung beendet, wenn die in der config.ini angegebene exiturl vorhanden ist und keine 404 meldet.
Ich habe hier zum Beispiel die URL http://192.168.178.99/io/stopkindle angegeben, welche nicht existiert. Wenn ich nun in das Verzeichnis io auf dem Webserver eine Datei namens stopkindle lege (deren Inhalt spielt keine Rolle), dann verlässt das Skript bei der nächsten Ausführung die Schleife und der Kindle reagiert wieder auf Tastendrücken.