Raspberry Pi als BlaulichtSMS - Einsatzmonitor
Diese Seite wird erweitert!
Dieser Blogpost soll es jedem ermöglichen selbst ein Raspberry Pi Wall-Display / Blaulicht SMS Einsatzmonitor einzurichten.
Ich freue mich über Ergänzungen und Änderungsvorschlage - bitte per Mail an email at mwallner punkt net bzw einfach die Kommentarfunktion nutzen!
Hintergrund
Bei einem Votrag bei den Grazer Linuxtagen 2018 haben Martin und ich verschiedene Raspberry Pi Projekte “zum selbermachen” vorgestellt. Darunter waren mitunter die Verwendung als “Treiber für Walldisplays” / Informationsdashboards.
Kurz gefasst: Die Raspberry Pi eignet sich aufgrund des Formfaktors und Preisgestaltung hervorragend als Basis um Informationsdisplays für kleine bis große Projekte umzusetzen.
Im folgenden werden die notwendigen Arbeitsschritte beschrieben um einen Blaulicht SMS “Einsatzmonitor” einzurichten, sodass dieser im Feuerwehrwesen (anm. FF Feuerwehr / Südsteiermark :)) genutzt werden kann.
Vorbereitung, Betriebssystem
Es wird davon ausgegangen, dass alle benötigten Hardwarekomponenten (Raspberry Pi + Gehäuse, SD-Speicherkarte, Netzteil, HDMI-Kabel) bereits vorhanden sind oder im Set gekauft werden.
Als Betriebssystem wird Raspberry Pi OS in der “lite-with-desktop” Version empfohlen, da hier auf unnötige Softwarepakete verzichtet wird und das System so etwas schlanker bleib (vor allem bei Updates spart man hier an Zeit und Datenvolumen).
Siehe Download “Raspberry Pi OS with desktop” auf der offiziellen Raspberry Pi Website.
Die heruntergeladene Image-Datei kann mit geeigneter Software (z.B. Balena Etcher) auf die SD-Karte kopiert werden, sodass diese vom Raspberry genutzt werden kann. (Es ist nicht ausreichend einfach die heruntergeladene Datei auf die SD-Karte zu kopieren, es ist zwingend erforderlich diese zu “flashen” und dadurch die benötigen Partitionen/Dateisystem einzurichten.)
Nicht benötigte Software deinstallieren
Die verfügbaren Betriebssystemabbilder enthalten auch in den “lite”-Versionen einiges an Software die nicht für den Betrieb als Web-Kiosk benötigt wird. Durch das Entfernen dieser optionalen Pakete wird zum einen mehr Speicherplatz auf der SD-Karte frei, vor allem aber werden zukünftige Updates sehr viel schneller laufen, da ebendiese Pakete nicht mehr beachtet werden müssen.
Um ein bestehendes System auf das notwendigste zu reduzieren können folgende Befehle in einem Terminal ausgeführt werden.
sudo apt-get purge wolfram-engine scratch scratch2 nuscratch sonic-pi idle3 -y
sudo apt-get purge smartsim java-common minecraft-pi libreoffice* -y
sudo apt-get clean
sudo apt-get autoremove -y
Um alle verfügbaren Updates der verbleibenden Pakete zu installieren werden folgende Befehle verwendet:
sudo apt-get update
sudo apt-get upgrade
Benötigte Software installieren
Um das Infodisplay zu betreiben benötigen wir folgende Softwarepakete:
chromium-browser
- der Webbrowser, der den Inhalt (BlaulichtSMS Dashboard) anzeigen kannxautomation
- beinhaltet “xte
” bzw. “xdotool
” - Programme um Benutzereingaben zu simulierenunclutter
- ein Programm um den Mauszeiger bei Inaktivität auszublendenx11-server-utils
- beinhaltet “xset
” - ein Programm um den Bildschirmschoner und die Bildschirmenergieverwaltung zu konfigurieren
Die benötigten Pakete können mit folgenden Befehlen installiert werden:
sudo apt-get install chromium-browser
sudo apt-get install xautomation unclutter
sudo apt-get install --no-install-recommends x11-xserver-utils
Automatisches Anmelden
Ein Informationsdisplay sollte entweder immer eingeschaltet, oder per externem Trigger (z.B. Bewegungsmelder => Einschalten per GPIO Kontakt) aktiviert werden.
In jedem Fall ist das System zu konfigurieren, dass dieses ohne Benutzeranmeldung direkt bis zum Desktop durchstartet.
Das ist meistens zwar das Standardverhalten, sollte das aus irgendeinem Grund jedoch nicht gegeben sein kann dies mit dem Konfigurationstool raspi-config
wieder eingestellt werden.
Sollte die Raspberry Pi beim Einschalten nicht automatisch bis zum Desktop durchstarten ist im Terminal
sudo raspi-config
einzugeben und dort bei “Boot Options” den “Auto Login” aktivieren.
Das “Kiosk Script”
Alles bis zu diesem Punkt diente lediglich der Vorbereitung des Systems, der wichtigste Teil ist folgendes Script, welches ein eine Datei im “Home-Verzeichnis” kopiert werden muss:
Im File-Manager im Home-Verzeichnis (/home/pi
) mit Rechtsklick - eine Datei mit dem Namen kiosk.sh
anlegen.
Inhalt von kiosk.sh
:
#!/bin/bash
xset s noblank
xset s off
xset -dpms
unclutter -idle 0.5 -root &
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
chromium-browser --noerrdialogs --disable-infobars --kiosk https://blaulichtsms.net/einsatzmonitor/
while true;
do
sleep 300
xdotool keydown ctrl+r; xdotool keyup ctrl+r;
done
Was macht das?
Die erste Zeile im Script ist ein Shebang und legt den gewünschten Interpreter des Scripts fest.
#!/bin/bash
- in diesem Fall wird das Script mit dem Programm
/bin/bash
(der Bourne-Again-Shell) ausgeführt.
Bildschirm aktiv halten
Als nächstes werden mittels xset
der Bildschirmschoner konfiguriert, sodass dieser nie aktiv wird, sowie das so genannte “display power management system” ausgeschaltet.
(ohne Display Power Management System sollte die Benutzeroberfläche nie in einen Energiesparmodus wechseln)
xset s noblank
xset s off
xset -dpms
Mauszeiger ausblenden
Wir nutzen das Programm “unclutter” um den Mauszeiger bei Inaktivität (nach 0.5 Sekunden) auszublenden.
Wichtig: das “&
” am Ende der Zeile wird benötigt, damit das Script an dieser Stelle weiter macht, da es sich bei “unclutter” nicht wie bei den xset
-Befehlen um einzelne Einstellungen, sondern um ein Programm handelt welches im Hintergrund ausgeführt werden soll.
unclutter -idle 0.5 -root &
Warnmeldungen des Browsers deaktivieren
Der Chromium Browser speichert Informationen darüber ob das Programm zuletzt ordnungsgemäß beendet wurde (oder z.B. der “Stecker gezogen”)
und nutzt diese Information um Warnhinweise anzuzeigen.
Dies ist bei einem Info-Display meistens unerwünscht, deswegen nutzen wir “sed
” um alle Vorkommnisse von
“"exited_cleanly":false
”
sowie
“"exit_type":"Crashed"
”
durch “alles ok”-Stati zu ersetzen.
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences
Browser im Kiosk-Modus starten
Die wohl wichtigste Zeile im Script:
chromium-browser --noerrdialogs --disable-infobars --kiosk https://blaulichtsms.net/einsatzmonitor/
hiermit wird die Anwendung “chromium-browser
” im Kiosk-Modus gestartet.
Die URL (das letzte Argument) kann beliebig angepasst werden um anstelle des Blaulicht Einsatzmonitors eine andere Website anzuzeigen.
Neuladen der Website alle 5 Minuten erzwingen
Diesen Punkt kann man prinzipiell auch weglassen, es handelt sich um proaktive Fehlerbehandlung.
In einer Endlosschleife (while true; do ---> done
) wird 5 Minuten gewartet, und dann per “xdotool
” die Tastenkombination Ctrl+r
zu senden, welche das Neuladen der Website erzwingt.
Durch diese Aktion können z.B. Speicherlecks in verwendeten JavaScript-Bibliotheken “übergangen” werden.
while true;
do
sleep 300
xdotool keydown ctrl+r; xdotool keyup ctrl+r;
done
Inbetriebnahme
Um das Infodisplay/Einsatzmonitor erstmalig zu aktivieren müssen meist Zugangsdaten eingegeben werden - das kann direkt am Raspberry gemacht werden - es empfiehlt sich die benötigten Zugangsdaten vom Browser speichern zu lassen und (sofern vorhanden) die Checkbox “angemeldet bleiben” zu selektieren.
Das “Kiosk Script” manuell testen
In einem Terminal sh /home/pi/kiosk.sh
aufrufen.
Das “Kiosk Script” automatisch starten
Um das Kiosk-Script automatisch mit der Raspberry Pi zusammen zu starten gibt es verschiedene Möglichkeiten. Dieser Post gibt einen guten Überblick incl. detaillierter Erklärungen.
Am einfachsten ist es, den .config/autostart
Ordner zu nutzen - hier werden .desktop
Dateien angelegt welche als “Starter” für beliebige Anwendungen/Scripts genutzt werden können.
Mit einem Texteditor ist folgende Datei zu erstellen:
/home/pi/.config/autostart/Kiosk.desktop
Achtung: der .config
Ordner wird Standardmäßig nicht angezeigt, da dieser mit einem Punkt (.
) beginnt. (einfach den Pfad /home/pi/.config/autostart
in der Addressleiste eingeben um den Ordner direkt zu öffnen)
Inhalt von “Kiosk.desktop
”:
[Desktop Entry]
Name=Kiosk
Comment=Kiosk Script ausführen
Type=Application
Exec=/home/pi/kiosk.sh
Terminal=true
=> Nach einem Neustart sollte der Einsatzmonitor automatisch gestartet werden.
Sollten sich Feuerwehrkollegen auf dieser Seite wiederfinden und Unterstützung beim Setup benötigen - bitte nutzt die ganz oben genannte Mailadresse und nehmt Kontakt auf :-)
Externe Quellen
Ein großer Teil dieser Anleitung wurde initial geborgt von folgenden Seiten: