Ein Internet-Wecker mit Raspberry PI

25.11.2014

Letzten Freitag erwähnte Lena, dass sie gerne einen eigenen Wecker hätte. Ungefähr zur gleichen Zeit stolperte ich über den 2,8” LCD-Touchscreen für das Raspberry Pi von Watterott. Das Display ist einfach auf die GPIO-Pins des Pi aufsteckbar und es gibt für beides sogar ein passendes Gehäuse.

20110750_1

Raspberry Pi mit aufgestecktem Display (Bild: Watterott)

20110803

Passendes TEX Berry Gehäuse (Bild: Watterott)

Ich hatte lange Zeit ein ganz ähnliches Gerät, ein Chumby, als Wecker am Bett. Das Chumby war ein kleines, ARM-basierendes Gerät, ebenfalls mit einfachem Touchscreen, welches neben dem eingebauten Wecker und Internet-Radio noch flash-basierende Apps über Channel abonnieren und diese im Wechsel abspielen konnte. Eigentlich immer noch ein ganz valider Nutzungsfall, denn ich für Lena und auf Basis der Combo aus RaspberryPi und Touchscreen wieder zum Leben erwecken wollte.

Meine Idee war zunächst, auf Basis von PyGame und dessen Framebuffer-Unterstützung ein eigenes GUI zu programmieren. Das sollte ähnlich wie die Oberfläche des Chumby ein paar eingebaute Funktionen mitbringen: Uhr mit Weckfunktion, vielleicht ein Kalender, Steuerung eines lokalen Music Player Demons MDM für Musik und Hörspiele, vielleicht noch eine einfacher Mail- oder Chat-Client.

Die Basis-Installation des Displays war zunächst erfreulich einfach. Watterott bietet zu dem Display ein modifiziertes Raspbian-Image inklusive einem X11 mit Framebuffer-Unterstützung für das Display. Auch der Touchscreen funktioniert damit auf Anhieb. Lediglich die Anbindung an das heimische WLAN ist ein kleines Ratespiel und z.B. beim Coder von Google wesentlich eleganter gelöst. Nach ein paar Versuchen und ein bisschen Herum-Googlen hat es aber dann geklappt.

Für das Schreiben der Oberfläche ist PyGame leider kein sehr komfortabler GUI-Baukasten. Ich machte mich also auf die Suche nach etwas Produktiverem. Leider ist die Auswahl bei einem Anzeigegerät ohne OpenGL-Unterstützung sehr mau. Die libSDL wird noch am ehesten unterstützt. Ich habe dann auch einige Libraries probiert:

Für PyGame gibt es ein Beispiel einer MPD-Steuerung.

Daneben gibt es mit PyMPDTouchGui auch eine ausgewachsene Alternative. Das habe ich aber auf meinem Display nicht zum Laufen gebracht.

Eine Bibliothek für LUA (TekUI) sah sehr vielversprechend aus. Die habe ich aber letztlich nicht ausprobiert.

Für das FLTK-Toolkit gibt es eine DirectFB-Unterstützung.

iliXi läuft ebenfalls auf DirectFB, ebenso http://libagar.org/

Selbst Tcl/Tk hätte eine Alternative sein können.

JavaFX wäre vielleicht auch eine Alternative gewesen.

Sehr interessant fand ich QML. Das hätte auch fast funktioniert, scheiterte am Ende aber an der fehlenden OpenGL-Unterstützung. Sollte ich noch einmal ein Kiosk-System mit dem regulären HDMI-Anschluss bauen wollen, ist das aber sicher ein atraktiver Ansatz mit wenig Overhead. Mein Vorgehen basierte dabei auf einem Posting im RaspberryPi-Forum und basierte auf den Paketen

  sudo apt-get install \
       libqt5declarative5 libqt5webkit5-dev \
       qmlscene \
       libqt5webkit5-qmlwebkitplugin \
       libegl1-mesa \
       qtdeclarative5-qtquick2-plugin

Der einfache Aufruf hätte dann sein sollen:

    QT_QPA_PLATFORM=linuxfb:fb=/dev/fb1 /usr/lib/arm-linux-gnueabihf/qt5/bin/qmlscene webkit.qml

… bricht aber leider wegen mangelnder OpenGL-Unterstützung ab.

Letztlich läuft der RaspberryPi jetzt mit einem normalen X11 mit Chromium-Browser im Kiosk Mode. Die Anleitung dafür liefert Dan Purdy.  Den Startschirm bildet eine HTML-Seite mit CoolClock. Es sollen weitere Seiten mit Weckeinstellungen und einer einfachen Steuerung des MPD folgen. Damit hätte ich auch endlich eine bedienbare Alternative zu meinem ersten Projekt mit dem Music Player Demon gefunden.

2014-11-25 08.04.14

Die Uhr als HTML-Seite. Rechts das Menü macht noch nichts

Der aktuelle Stand der Software liegt bei Bitbucket und ist open source.

Allgemein

- Anzeige -


comments powered by Disqus