Seit ich mir vor ein paar Jahren das offizielle Raspberry-Pi-Display für ein paar Home-Assistant-Dashboards gekauft habe, hat mich eine Sache geärgert: Dass man den Browser immer selber starten und in den Vollbildmodus bringen musste. Das habe ich nun nach mehreren erfolglosen Anläufen automatisiert. Weil ich dabei in ungefähr drei fiese Sackgassen gelaufen bin, habe ich hier aufgeschrieben, was am Ende funktioniert hat.
Disclaimer #1: Wenn du nur ein Touch-Display brauchst, um Dashboards im Home Assistant zu sehen, dann kauf dir ein billiges Tablet, schalte den Ruhezustand beim Laden ab und installier den Fully-Browser. Das scheint mittlerweile die billigere und weniger pflegeintensive Lösung zu sein.
Disclaimer #2: Es gibt ungefähr Millionen Möglichkeiten, einen Raspberry Pi im Kiosk-Modus zu betreiben. Daher kann es sein, dass die hier beschriebene Lösung bei dir nicht funktioniert – die beiden Alternativen FullpageOS oder die offizielle Raspberry-Pi-Anleitung aber schon. Meine Anleitung bezieht sich ausschließlich auf den Raspberry Pi 4 mit dem offiziellen 7"-Raspberry-Pi-Touch-Display der ersten Generation.
Natürlich wollte ich nicht einfach irgendeinen Kiosk-Modus, sondern hatte ein paar Anforderungen. Bei allen Varianten, die ich ausprobiert habe, bin ich am Ende (bis zur erfolgreichen Variante) an einer dieser Anforderungen gescheitert. Im Detail waren das:
- Das Display muss drehbar sein: Das offizielle Raspberry-Pi-Case für das 7"-Display steht aus Gründen, die ich nie ganz verstanden habe, auf dem Kopf. Das führt dann dazu, dass man die Desktop-Darstellung um 180 Grad drehen muss.
- Diese Display-Drehung soll nicht nur für die Darstellung, sondern auch für die Touch-Bedienung funktionieren. Ich schreibe das, weil es nicht selbstverständlich ist – vor allem nicht, wenn man via VNC auf das Display zugreifen will.
- Die ganze Darstellung soll im Darkmode möglich sein. Auf einem schwarzen Display sieht nur ein schwarzes Dashboard wirklich gut aus; außerdem ist es nachts im Bad einfach unangenehm, wenn einen Wetter, Stromverbrauch und andere Werte optisch so anschreien.
1. Versuch: Das Raspberry-Pi-Tutorial
Auf der offiziellen Raspberry-Pi-Website gibt es ein ziemlich gutes Tutorial zur Installation eines Raspberry Pi im Kiosk-Modus. Genau das habe ich zunächst ausprobiert, durchaus erst mal auch mit Erfolg. Nach irgendeinem Update öffnete sich dann aber der Browser nicht mehr automatisch nach dem Hochfahren und ich hatte in VNC das Problem, dass das Display zwar richtig rum war, die Maussteuerung aber um 180 Grad gedreht. Man musste also rechts unten klicken, wenn man nach links oben wollte. Beides zusammen hat mich irgendwann so genervt, dass ich über eine weitere Möglichkeit gestolpert bin, nämlich …
2. Versuch: PiOSK
PiOSK ist ein vielversprechendes Tool, das einem die Handarbeit beim Einrichten des Kiosk-Modus durch ein Installationsskript abnimmt. Dabei wird dann praktischerweise auch ein Webinterface installiert, über das man mehrere URLs eingeben kann, die dann nacheinander jeweils bildschirmfüllend aufgerufen werden. Genau für diesen Zweck – durch mehrere Seiten rotieren – scheint es mir auch ganz gut geeignet zu sein. Bei mir hat das leider dazu geführt, dass irgendwann die Seite mit dem relevanten Dashboard nicht mehr geladen wurde, sondern nur noch die Home-Assistant-Ladeseite angezeigt wurde. Meine Vermutung ist, dass es irgendein Cache-Problem gab. Ich habe dann nicht weiter daran geforscht, sondern den nächsten Versuch mit frischem System unternommen.
3. Versuch: FullpageOS
FullpageOS macht genau das, was der Name sagt: Es ist ein speziell für den Fullscreen-Modus optimiertes Raspberry-Betriebssystem. Man kann es über den Raspberry Pi Imager sogar direkt aufrufen und auf der SD-Karte (in meinem Fall: USB-Stick) installieren. Genau das habe ich gemacht und war relativ schnell am Ziel; auch Display drehen war kein Thema. Aber dann kam der Endgegner: Dadurch, dass man gar nicht mehr auf die Desktop-Oberfläche kommt und die entsprechenden Darstellungseinstellungen nicht verändern kann, habe ich den Dark Mode bei FullpageOS einfach nicht hinbekommen.
Also neuer Versuch, dieses Mal mit einem frischen Raspberry Pi OS, aber einem kleinen Ausflug in die Vergangenheit.
4. Versuch: Zurück auf Los mit X11 statt Wayland
Hier muss ich etwas ausholen: Neuere Raspberry-Pi-Systeme setzen für die Desktop-Darstellung auf das Display-Server-Protokoll Wayland. Einige ältere Anleitungen funktionieren so nicht mehr, auch die VNC-Darstellung hat sich dadurch verändert (siehe mein Problem mit der Eingabe unter #1).
Eines hatte ich aber noch nicht probiert: Einfach die offizielle Raspberry-Pi-Anleitung aus dem 1. Versuch nehmen, aber statt Wayland eben auf das (veraltete) X11 umstellen (das geht in der Kommandozeile über die Raspi-Konfiguration, also den Befehl sudo raspi-config
).
![[]]
Genau das hat dann am Ende auch funktioniert, dabei bin ich nach dieser Anleitung vorgegangen. Meine Schritte waren also:
- Standard-Raspberry-Pi-OS mit Desktop auf den USB-Stick installieren.
- Im Desktop unter den Darstellungsoptionen auf Dark Theme umstellen.
- Display in der Benutzeroberfläche drehen (auch VNC dreht sich dann mit, anders als bei Wayland)
- Und dann muss man nur noch festlegen, dass beim Start automatisch Chromium im Vollbildmodus die gewünschte Website aufruft.
Dazu bearbeitet man die Datei autostart.
- Mit Nano:
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
- Mit VIM:
sudo vim /etc/xdg/lxsession/LXDE-pi/autostart
Dort fügt man einfach die folgende Zeile ein (mit einer richtigen Adresse, versteht sich):
@chromium-browser --kiosk <HIER DEINE URL OHNE SPITZE KLAMMERN>
Nehmen wir an, wir wollen https://gast.land im Display anzeigen, würde der Eintrag so lauten:
@chromium-browser --kiosk https://gast.land
Das war’s im Wesentlichen auch schon.
Anders als in der verlinkten Anleitung war bei mir die Installation von xscreensaver
eher kontraproduktiv – ich habe einfach in der Raspi-Konfiguration (sudo raspi-config
) unter den „Display Settings“ das „Screen Blanking“ deaktiviert.
Es sind auf der Website noch weitere Schritte beschrieben, u.a. für Maus und Sicherheit.
Displayhelligkeit zeitgesteuert einstellen
Die normale Displayhelligkeit ist auf Tageslicht ausgelegt. Nachts ist einem das gerne mal zu hell. Man könnte jetzt natürlich einen Helligkeitssensor oder sowas installieren – ich habe mir mit einem Cronjob beholfen.
Um 23 Uhr alles abdunkeln:
00 23 * * * /bin/echo 30 > /sys/class/backlight/rpi_backlight/brightness
Um 6 Uhr wird’s dann wieder hell:
00 06 * * * /bin/echo 255 > /sys/class/backlight/rpi_backlight/brightness
Erst habe ich bei diesen Befehlen eine Fehlermeldung bekommen – bei mir lautete der Pfad zur Helligkeitssteuerung nicht .../rpi_backlight/...
, sondern .../10-0045/...
– rausgefunden habe ich das über ein bisschen Trial and Error und indem ich mich durch die Verzeichnisse gehangelt habe.
Und seitdem läuft das Teil. Bin gespannt, bis zu welchem Update.