Beschreibung

Ich hatte dank Elternzeit mal wieder Zeit etwas zu programmieren und darf heute vorstellen:
Der Küchen-Computer aus dem 24. Jahrhundert
Der Küchen-Computer im Design aus dem 24. Jahrhundert
(Ja, ich weiß dass der Januar eigentlich 31 Tage hat. Da war noch ein Bug drin...)

Der Küchen-Computer ist ein Raspberry Pi auf dem eine Qt-basierte Anwendung läuft mit folgenden Features:
  • Countdown-Timer (in der Küche immer nützlich)
  • Musikplayer
  • Wetterbericht mit 5-Tagesvorhersage und Satellitenbild
  • Uhr und Kalender

Übersicht

Block-Diagramm
Block-Diagramm. Gelb hervorgehoben: die Panel-Anwendung
Auf dem Raspberry läuft Raspbian, eine für den Kleincomputer optimierte Debian-Distribution.
Für die Musikwiedergabe habe ich mpd installiert, welcher auf die mp3-Sammlung des heimischen Dateiservers zugreift.
Da der Onboard-Sound des Raspi selbst meinen bescheidenen audiophilen Ansprüchen nicht gerecht wird, geht die Musik über eine USB-Soundkarte an den Verstärker. Ein Subwoofer hinter den Kochbüchern und zwei Satelliten-Lautsprecher sorgen für den richtigen Klang.
Die Onboard-Soundkarte wird nur für die Töne des User-Interface verwendet.

Das Display hatte ich vor Jahren mal gekauft und ist eigentlich für die Rückbank im Auto gedacht, damit die Kinder während der Fahrt DVDs gucken können. Seinem Alter entsprechend hat es nur einen Composite Video und VGA-Eingang. Für den HDMI-Ausgang des Raspi musste also ein Konverter her. Gefühlt die halbe Entwicklungszeit drehte sich ausschließlich darum, die fehlerfreie Grafikausgabe per Videokonverter in Raspbian zu konfigurieren.
Ohne große Probleme hingegen wurde das per USB angebundene Touchdisplay des Monitors von Raspbian erkannt.

Das Herz des Küchen-Computers ist jedoch die kitchen_panel-Anwendung, eine C++-Applikation mit QML-basierter grafischer Oberfläche und Klassen für die Musikwiedergabe per mpd-Fernsteuerung und für die LCARS-Elemente, welche sich mit QML-Bordmitteln nicht darstellen ließen.

Musikwiedergabe

Musikwiedergabe
Musik-Player
Zur Musikwiedergabe wird eine Verbindung mit dem mpd aufgebaut um Kommandos (play, stop, next, usw.) abzuschicken und im Gegenzug Informationen über Titel, Album, artist, etc. abzurufen.
Leider klappt das nicht immer reibungslos. Als Workaround läuft darum auf dem Küchen-Computer auch mpc - ein Konsolenclient für mpd welcher durch die Applikation kurzerhand über system-Anweisungen gesteuert wird: system("mpc play -q");

Wetterbericht

Für den Wetterbericht wird der Service von weather.com verwendet. Über eine URL erhält man einen XML-Bericht mit aktuellem Wetter und Wetterprognose.
Beispiel:
http://wxdata.weather.com/wxdata/weather/local/GMXX0007?cc=*&dayf=5&unit=m gibt das Wetter für Berlin (Location GMXX0007) mit den aktuellen Wetterbedingungen (cc=*) und einer 5-Tagesvorhersage (dayf=5) in metrischen Einheiten (unit=m).

Und als Extra kann man sich über Weather Underground auch ein Satelliten-Bild (animated gif) holen:
Beispiellink für Berlin
Für andere Orte einfach die lat- und lon-Angaben durch jeweilige geographische Breite und Länge ersetzen.

Design

LCARS Computer-Panel
Das Vorbild: die Computer-Panel aus Star Trek
Alistair McMillan (CC-by-SA)
Die Star Trek-Nerds haben es schon erkannt: das Design ist im LCARS-Stil aus Raumschiff Enterprise: Das nächste Jahrhundert gehalten und sieht somit aus, als wäre es direkt von Picards Brücke aus dem 24. Jahrhundert in die Gegenwart gebeamt.

Man kann sollte aber nicht einfach lustig drauf los designen, wenn man ein schönes und überzeugendes LCARS-Userinterface will - es ist eine richtige Kunst, die optimale Balance aus Farbgebung, Abständen und Balkenbreite zu finden.
Hier und hier hat sich schon jemand Gedanken über gutes LCARS-Design gemacht.
Und natürlich muss auch die Schriftart passen.

Bilder

Da ich wegen GEMA und Musik-Copyrightbullshit kein Video vom Küchen-Computer in Aktion zeigen kann, gibt es folgend nur ein paar Screenshots:






Links

Hardware

Qt

User Interface

IDv3

MPD und MPC

Wetter