# Wachalarm-Kiosk Hier finden Sie ein einfach zu nutzendes SD-Karten-Image für einen **Raspberry Pi**, mit dem GroupAlarm (oder eine andere Webseite) direkt im Vollbild z.B. auf einem Monitor anzeigt werden kann. ## Funktionen - **Startet unmittelbar im Vollbild** - Chromium Web-Browser mit allen wichtigen Funktionen - **Automatatische Sicherheitsupdates** - wichtige Updates werden automatisch installiert, bei Bedarf erfolgt in der Nacht ein automatischer Neustart - **Automatische Wiederherstellung** - bei Neustart oder Stromausfall startet das System im vorherigen Zustand eigenständig neu - *Optional:* **Stromsparfunktion** - liegt kein Alarm an, kann der Monitor ausgeschaltet werden - **Maus wird ausgeblendet** - sofern eine Maus angeschlossen ist, wird diese nach inaktivität ausgeblendet --- ## Inbetriebnahme > **Hinweis** > > Benötigt wird ein Raspberry Pi ([kompatible Hardware](#hardware)). 1. Lade das [aktuelle Image](https://git.heko-technik.de/mkrieger/wachalarm/releases) aus dem Release-Bereich herunter. 2. Entpacke die komprimierte Datei auf dem Computer (z.B. dem Programm [7Zip](https://7-zip.de/index.html)). 3. Schreibe das Image mit Hilfe eines SD-Karten-Lesegeräts auf eine SD-Karte. Hierzu kann unter Windows die Anwendung [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/) genutzt werden. 4. Lege die anzuzeigende [Webseite und die weitere Optionen fest](#konfigurations-datei). 5. *Optional*: Lege fest, ob der Raspberry Pi sich automatisch mit einem [WLAN verbinden](#wlan-setup) soll. 6. *Optional*: Setze eine [feste IP-Adresse](#ip-adresse) für das System. 7. Setze die SD-Karte in den Raspberry Pi. Verbinde Ihn mit dem Monitor und dem Internet (Netzwerkkabel oder WLAN). Starte das Gerät. --- ## Einstellungen ### Konfigurations-Datei Die wichtigsten Einstellungen lassen sich ohne vorkenntnisse (von z.B. Linux) direkt mit einem normalen PC anpassen. Benötigt wird ein SD-Karten-Lesegerät und ein Text-Editor. 1. Schließe die zuvor mit dem Image beschriebene SD-Karte an ihren PC an (z.B. per USB-Adapter). 2. Im Datei-Explorer sollte jetzt ein neues Laufwerk erscheinen. In der Partition "Boot" der SD-Karte findet sich die Datei *[wachalarm_einstellungen.txt](https://git.heko-technik.de/mkrieger/wachalarm/blob/custom/home/wachalarm_einstellungen.txt)*. 3. folgende Einstellungen können gesetzt werden: #### Webseite beim Start Legt fest, welche Webseite beim Start geöffnet werden soll. Für Groupalarm wäre dies z.B. die Adresse https://app.groupalarm.com/de/monitor/12345?view_token=meingeheimertoken&theme=dark-theme ``` startup_url=https://app.groupalarm.com/de/monitor/12345 ``` #### Standby - Funktion ein-/ausschalten Legt fest ob der Bildschirm automatisch ausgeschaltet werden soll, wenn kein Einsatz anliegt. Es gibt folgende Optionen: - 1 = aktiviert diese Funktion (Monitor geht aus sobald kein Alarm mehr angzeigt wird) - 0 = deaktivert diese Funktion (Monitor bleibt immer an) ``` standby_enable=1 ``` #### Standby - Art des Monitors festlegen *(gilt nur wenn die Standby-Funktion aktiviert wurde)* Legt fest, was für ein Monitor verwendet wird. Je nach Typ (PC-Monitor oder Fernseher mit HDMI-CEC), sind unterschiedliche Befehle notwendig um den Monitor ein- oder auszuschalten. Es gibt folgende Optionen: - t = Typ "TV", nutzt [CEC-Befehle](https://de.wikipedia.org/wiki/Consumer_Electronics_Control) um den Fernseher ein- oder auszuschalten - m = Typ "Monitor", nutzt den Befehlssatz `xrandr --output HDMI-*` um einen PC-Monitor ein- oder auszuschalten ``` screen_type=t ``` > Achtung! > > Wird ein PC-Monitor verwendet, kann es zu Problemen bei der Sound-Ausgabe kommen. Lösungsansätze finden Sie im Abschnitt ["Bekannte Fehler"](#kein-ton-über-hdmi-raspberry-pi-4) #### Standby - Websocket-URL *(gilt nur wenn die Standby-Funktion aktiviert wurde)* Dieser Wert sollte normalerweise nicht geändert werden. Es handelt sich um die URL des Wachalarm-Servers, über welche Websocket-Befehle empfangen und verarbeitet werden. Nur mit dieser URL kann das Standby-Signal korrekt ausgewertet werden. ``` standby_waipurl=https://wachalarm.heko-technik.de/waip ``` > **Achtung!** > > Es handelt sich hierbei nicht die URL des einzelnen Alarmmonitors! #### Standby - Wachennummer *(gilt nur wenn die Standby-Funktion aktiviert wurde)* Nummer der Wache, für die bei Alarmen der Monitor angeschaltet werden soll, z.B. 52511 für FW GK LE Geilenkirchen ``` standby_wachennr=52511 ``` #### System-Statusmeldungen aktivieren Hiermit kann ein automatisches Senden von Status-Meldungen aktiviert werden. Es handelt sich um allgemeine Systeminforamtionen wie z.B. Kernel-Version, Hardwaremerkmale & Udpatestatus. Personenbezogene Daten werden nicht verarbeitet. - 1 = an - 0 = aus ``` report_enable=1 ``` #### System-Statusmeldungen - Status-URL *(gilt nur wenn System-Statusmeldungen aktiviert wurden)* URL an welche Status-Meldungen durch das System gesendet werden. ``` report_url=https://wachalarm.heko-technik.de/client_statusmessage ``` #### automatische Neustarts Legt fest, ob und wenn ja wann, ein automatischer Neustart des Raspberry Pi erfolgen soll. Diese Funktion ist hilfreich um z.B. bei schlechten WLAN-Verbindungen das System automatisch neuzustarten. Es gibt folgende Optionen: - 0 = automatischer Neustart ist deaktiviert. - w = Neustart jeden Montag um 3:00 Uhr. - z = Neustart jeden Dienstag und jeden Freitag um 3:00 Uhr. - t = Neustart jeden Tag um 3:00 Uhr. ``` restart_type=w ``` --- ### WLAN einstellen WLAN-Verbindungen lassen Sich beim Raspberry über eine spezielle Datei vorgeben, ohne weitere Einstellungen am System zu tätigen. Gehen Sie wie folgt vor, um WLAN zu aktivieren: 1. Schließe die zuvor mit dem Image beschriebene SD-Karte an ihren PC an (z.B. per USB-Adapter). 2. Im Datei-Explorer sollte jetzt ein neues Laufwerk erscheinen. In der Partition "Boot" der SD-Karte eine Datei mit dem Namen `wpa_supplicant.conf` erstellen. 3. Eine fertige Vorlage findet sich hier: [wpa_supplicant.conf](https://git.heko-technik.de/mkrieger/wachalarm/blob/custom/optional_boot_config/wpa_supplicant.conf) 4. Ersetze `Name-des-WLANs` und `ganz-geheimes-kennwort` mit den eigenen WLAN-Einstellungen. 5. Speicher die Datei auf der SD-Karte und setze diese wieder in den Raspberry Pi ein. Nach Abschluss des Startvorgangs sollte sich das Gerät eigenständig mit dem WLAN verbinden. #### Beispiel wpa_supplicant.conf für WLAN _mit Kennwort_ ``` country=DE update_config=1 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev network={ key_mgmt=WPA-PSK ssid="Name-des-WLANs" psk="ganz-geheimes-kennwort" } ``` #### Beispiel wpa_supplicant.conf für WLAN _ohne Kennwort_ ``` country=DE update_config=1 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev network={ ssid="Name-des-WLANs" key_mgmt=NONE } ``` --- ### IP-Adresse vorgeben Mittels der Datei `cmdline.txt` kann direkt eine feste IP-Adresse für den Raspberry Pi vorgegeben werden. 1. SD-Karte in PC einsetzen. 2. In der Boot-Partition die Datei `cmdline.txt` finden und mit einem Editor öffnen. 3. Am ende der ersten Zeile folgenden Text hinzufügen (keine neue Ziele): ```ip=192.168.2.20::192.168.2.1:255.255.255.0:wachalarm:eth0:off:192.168.2.1``` Damit wird die IP-Adresse für die Schnittstelle `eth0` auf 192.168.2.20 festlegt. Einstellungen für das Gateway (`192.168.2.1`), das Subnetz (`255.255.255.0`), den Hostnamen (`wachalarm`) und den DNS-Server (`192.168.2.1`) werden ebenfalls definiert. Bereits angepasste `cmdline.txt`-Dateien findet man hier: [optional_boot_config](https://git.heko-technik.de/mkrieger/wachalarm/tree/custom/optional_boot_config) --- ## Hardware Dieses Image sollte mit allen bekannten [Raspberry Pi's](https://www.raspberrypi.org/products/) funktionieren. Die Versionen 3 und 4 werden empfohlen, da die älteren Varianten zu wenig Leistung bieten. Raspberry 3 und 4 haben zudem ein eingebautes WLAN-Modul. Stelle sicher, dass Sie eine [kompatible SD-Karte](http://elinux.org/RPi_SD_cards) verwenden (mind. 4 GB). `Class 10`-Karten sollten in jedem Fall funktionieren. Ein Raspberry Pi benötigt ein [2.5 A USB-Netzteil](https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/README.md). --- ## Tastenkombinationen Wenn eine Tastatur (z.B. per USB) angeschlossen ist, stehen folgende Tastenkombination zur Verfügung: - `STRG` + `i` -> schaltet den Monitor ein (I) - `STRG` + `o` -> schaltet den Monitor aus (O) - `STRG` + `ALT` + `r` -> startet den Raspberry Pi neu (`reboot`) - `STRG` + `ALT` + `F1` -> wechselt zum Webbrowser (Standardansicht ohne Login) - `STRG` + `ALT` + `F2` -> wechselt zum Konfigutaions-Programm des Raspberry pi (Login notwendig, startet `sudo raspi-config`) - `STRG` + `ALT` + `F3` -> wechselt zur Konsole (Login notwendig, Eingabekonsole für Wartung) --- ## Bekannte Fehler ### kein Ton über HDMI (Raspberry Pi 4) - stelle sicher, dass das HDMI-Kabel am HDMI-Port 0 des Raspberrys angeschlossen ist (direkt neben dem USB-C-Stromanschluss) - prüfe ob der Monitor / Fernseher über den angeschlossenen HDMI-Port auch wirklich einen Ton ausgegeben kann - wechsel mit der [Tastenkombination](#tastenkombinationen) `STRG` + `ALT` + `F3` (Login notwendig) in die Wartungskonsole und prüfe mit dem Befehl `speaker-test` ob ein Test-Ton ausgegeben wird #### Lösungsvariante 1 - Audio-Quelle bei HDMI-Fernseher festlegen - wechsel mit der [Tastenkombination](#tastenkombinationen) `STRG` + `ALT` + `F2` (Login notwendig) in die Konfigurationsoberfläche des Raspberrys und prüfe ob HDMI-0 als Audio-Ausgabequelle eingestellt wurde - verlasse die Konfigurationsoberfläche und starte den Raspberry neu (`sudo reboot`) #### Lösungsvariante 2 - Audio-Quelle bei PC-Monitor mit integrierten Lautsprechern - wechsel mit der [Tastenkombination](#tastenkombinationen) `STRG` + `ALT` + `F3` (Login notwendig) in die Wartungskonsole - führe den Befehl `sudo nano /boot/config.txt` aus umd die Konfigurationsdatei des Raspberrys zu bearbeiten - aktiviere den Parameter `dtparam=audio=on` indem das `#` davor entfernt wird - deaktiviere den Parameter `dtoverlay=vc4-kms-v3d` indem ein `#` davor gesetzt wird - speicher die Datei (`STRG` + `x` und mit `ja` bestätigen) und starte den Raspberry neu (`sudo reboot`) - öffnen nach dem Neustart erneut die Wartungskonsole (`STRG` + `ALT` + `F3`) und prüfe mit dem Befehl `speaker-test` ob ein Test-Ton ausgegeben wird - prüfe alternativ noch, welche Audio-Quelle in den Systemeinstellungen gesetzt wurde (siehe [Lösungsvariante 1](#lösungsvariante-1---audio-quelle-bei-hdmi-fernseher-festlegen)) ### ich benötige ein anderes Kennwort - wechsel mit der [Tastenkombination](#tastenkombinationen) `STRG` + `ALT` + `F2` (Login notwendig) in die Konfigurationsoberfläche des Raspberrys - Navigieren zu `Change User Password` - gebe ein neues Passwort ein und bestätige es - das eingegebene Kennwort gilt für den Benutzer `pi` ### Monitor geht nicht in Standby - stelle sicher, dass das HDMI-Kabel am HDMI-Port 0 des Raspberrys angeschlossen ist (direkt neben dem USB-C-Stromanschluss) - prüfe ob in den [Standby-Einstellungen zur Art des Monitors](#standby---art-des-monitors-festlegen) der richtige Monitor-Typ hinterlegt wurde (`m` für PC-Monitor, `t` für TV-Gerät) - mit den [Tastenkombination](#tastenkombinationen) `STRG` + `I` bzw. `STRG` + `O` kann geprüft werden, ob die Standby-Funktion generell funktioniert - prüfe ob in den [Standby-Einstellungen zur Wachennummer](#standby---wachennummer) die richtige Wachennummer hinterlegt wurde ### Monitor / Fernseher aus Standby erwecken - wenn die Standby-Funktion aktiviert wurde, schaltet sich der angeschlossene Monitor oder Fernseher aus, solange kein Alarm angezeigt wird - mit der beschriebenen [Tastenkombination](#tastenkombinationen) `STRG` + `i` können Sie den Monitor wieder einschalten --- ## Sonstiges ### Image-Erstellung Mit dem Skript `image-setup.sh` kann eigenständig ein aktuelles Image für den Raspberry Pi erstellt werden. Benötigt wird ein PC mit aktuellem Linux (z.B. Ubuntu, oder zweiter Raspberry Pi). Das Skript selbst liefert alle notwendigen Informationen. Der Linux-PC auf dem das Skript ausgeführt wird (`chmod +x image-setup.sh` und dann `./image-setup.sh`) und der Raspberry Pi welcher konfiguriert werden soll, müssen sich im Netzwerk erreichen können. ### Fork Dieses Projekt ist ein Fork von [chilipie-kiosk](https://github.com/jareware/chilipie-kiosk). Dort finden sich weitere Informationen und Antworten zu vielen Detailfragen.