Raspberry Pi Browser im Kioskmodus starten
Ich möchte meinen Raspberry Pi 4 welcher am offiziellen 7" Touchdisplay hängt direkt in eine Webapps (HabPanel von openHAB) booten. Dafür braucht es einen Browser der den Kiosk Mode, also einen Vollbildmodus, bei dem nur die Webapplikation zu sehen ist, unterstützt. Die Wahl hier fiel auf chromium.
Voraussetzungen
Als Basis Installation kommt hier Raspberry Pi OS Lite (hier Trixie) zum Einsatz, also das Image ohne vorinstallierte Benutzeroberfläche. Hier ein paar weiterführende Links:
- Raspberry Pi OS Installation
- Raspberry Pi 4 mit dem offiziellen 7" Touchdisplay
- Raspberry Pi mit openHAB als Smart Home Schaltzentrale
Installation von Paketen
Nun kommen wir zum Setup des Kioskmode und installieren als erstes eine Benutzeroberfläche:
apt install -y --no-install-recommends xserver-xorg x11-xserver-utils xinit openbox xinput
Nun noch den Chromium Browser:
apt install -y --no-install-recommends chromium rpi-chromium-mods
ja, es werden hier alle möglichen Pakete mit installiert ;-)
Konfiguration des Kiosk Modus
Nun kommen wir zur Konfiguration des Ganzen.
Als erstes sagen wir mittels raspi-config, das wir automatisch in die CLI via Pi User booten wollen:
# falls nicht schon als pi User eingeloggt
su - pi
# dann einfach raspi-config starten
sudo raspi-config
Hier müssen wir Text Console aktivieren und speichern.
System Options --> Boot --> B1 Console Text console --> No Reboot
und dann noch den Auto Login aktivieren:
System Options --> Auto Login --> YES --> No Reboot
Nun richten wir die Autostart Datei unseres Display Managers openbox ein. Dafür legen wir als erstes den Config Ordner an:
mkdir /home/pi/.config/openbox/
und legen dort diese Datei ab:
/home/pi/.config/openbox/autostart
# Disable any form of screen saver / screen blanking / power management
xset s off
xset s noblank
xset -dpms
# Allow quitting the X server with CTRL-ATL-Backspace
setxkbmap -option terminate:ctrl_alt_bksp
# Touch correction, if not needed comment out
xinput set-prop "10-0038 generic ft5x06 (00)" "Coordinate Transformation Matrix" -1 0 1 0 -1 1 0 0 1
URL='https://www.google.com'
# URL Check
until [ "$(curl -o /dev/null -s -w '%{http_code}' "$URL")" = "200" ]; do
sleep 1
done
# Start Chromium in kiosk mode
#sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' ~/.config/chromium/'Local State'
#sed -i 's/"exited_cleanly":false/"exited_cleanly":true/; s/"exit_type":"[^"]\+"/"exit_type":"Normal"/' ~/.config/chromium/Default/Preferences
chromium "$URL" \
--incognito \
--kiosk \
--disable-component-update \
#--enable-features=WebContentsForceDark \
--check-for-update-interval=31536000
Was passiert hier?
- Deaktivierung von Powermanagement, damit das Display immer an bleibt.
- CTRL + ALT + BACKSPACE zum beenden des Modus
URL=definiert die zu ladende Webseite. --> definiert hier eure Startseite für das Kiosk System- Prüft mittels curl, ob die URL erreichbar ist.
- Starten des Chromium Browser im Kiosk Mode. Hier gewünschte URL angeben.
- Solltet ihr DarkMode haben wollen: Chromium / Chrome Dark Mode via Konfigurationsschalter
Nun bringen wir noch den X-Server in den Autostart, damit der Pi automatisch in diesen Bootet, nachdem auf der Cli der Pi User automatisch eingeloggt wurde.
jetzt fügen wir der .bash_profile die untenstehende Zeile am Ende ein. Sollte die Datei noch nicht da sein, einfach anlegen.
/home/pi/.bash_profile
if [ -z "$DISPLAY" ] && [ "${XDG_VTNR:-0}" -eq 1 ]; then
exec startx -- -nocursor
fi
Zum Abschluss starten wir den Pi neu.
sudo reboot
Bei Neustart sollte er dann nach ein wenig Zeit den Browser inklusive der gewünschten Webseite anzeigen.
Refresh des Browser via Shell
Mochte man die Webseite Neuladen und man hat keine Tastatur angeschlossen, kann man via SSH den F5 Key an den Browser schicken:
# Install xdotool
apt update && apt install xdotool -y
# falls nicht als Pi User angemeldet
su - pi
# Browser Refresh ausführen
DISPLAY=:0 xdotool key "ctrl+F5"
Der Befehl sendet ein CTRL + F5 an den Browser.
HABPanel im Browser starten
bei mir läuft openHAB mit HABPanel auf dem Pi via Docker. Da HABPanel erst ein wenig später hochgefahren ist, habe ich eine Prüfung auf die HABPanel Seite gemacht und starte Chromium erst wenn die Webseite verfügbar ist.
until curl --fail -s http://localhost:8080/habpanel/; do sleep 1; done && chromium-browser 'http://localhost:8080/habpanel/' --incognito --kiosk
TIPP: HABPanel auf Deutsch anzeigen lassen:
TIPP: HABPanel Standard Panel festlegen:
Möchte man direkt in ein Dashboard springen, so kann man dieses direkt in der URL angeben, Voraussetzung hierfür ist das vorherige festlegen des Standard Panels.
until curl --fail -s http://localhost:8080/habpanel/; do sleep 1; done && chromium-browser 'http://localhost:8080/habpanel/#/view/YOURDASHBOARD' --incognito --kiosk --disable-component-update --check-for-update-interval=31536000 --aggressive-cache-discard --disable-sync-preferences --process-per-site
Firefox-ESR im Kiosk Mode
möchte man lieber Firefox nutzen, welcher ab der Version 78 ebenfalls den Kiosk Mode unterstützt, so kann man diesen nachinstallieren:
apt update && apt install firefox -y
der Befehl um diesen dann im Kiosk Mode zu starten ist wie folgt:
firefox --private-window --kiosk 'http://localhost:8080/habpanel/#/view/Overview'
einfach überall wo der chromium mittels chromium-browser 'http://localhost:8080/habpanel/#/view/Overview' --incognito --kiosk --disable-component-update --check-for-update-interval=31536000 gestartet wird durch den oben stehenden Befehl ersetzten. Schon hat man einen Firefox anstelle des Chromium Browsers.