Beschreibung
Ich hatte dank Elternzeit mal wieder Zeit etwas zu programmieren und darf heute vorstellen: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
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
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
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
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
- Qt-Creator auf Raspbian
- Qt-Creator installieren
- Qt-Creator tool chain (1)
- Qt-Creator tool chain (2)
- QT5 cross-compiling
- Qt und Raspbian: troubleshooting
User Interface
- LCARS-Farben (1)
- LCARS-Farben (2)
- Design-Beispiel: LCARS keyboard
- Design-Beispiel: LCARS patterns
- Star Trek-Sounds (1)
- Star Trek-Sounds (2)
- Entwicklung von LCARS
- Design-Referenz
- LCARS Zeichensatz
- Idee für Datenbankmenü
IDv3
MPD und MPC
- MPD troubleshooting
- libmpd-Downloads
- libmpd player code
- libmpd example code
- libmpd files
- libmpdclient class
- example code
- sound blaster settings