Raspberry Pi als BlaulichtSMS - Einsatzmonitor

Sat, Nov 20, 2021 6-minute read

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 kann
  • xautomation - beinhaltet “xte” bzw. “xdotool” - Programme um Benutzereingaben zu simulieren
  • unclutter - ein Programm um den Mauszeiger bei Inaktivität auszublenden
  • x11-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: