Küchen-Display

Kiosk und Gesten auf dem Pi

Stand 8.11.2026, zu #15 (Ruhebildschirm) und #2 (Gesten). Auf dem Display läuft der Ruhebildschirm aus Entwurf C4 im Chromium-Kiosk. Unten rechts sitzt die Figur (F2), ein Tipp darauf startet ein Gespräch mit Elektra (docs/stimme-und-geste.md). Eine Handgeste vor der Kamera blättert die Seiten um. Uhr, Datum und Wetter sind echt (docs/datenweg.md), die Termine sind noch Platzhalter.

Was läuft

Teil Datei im Repo Auf dem Pi
Kiosk-Seite mit Schrift pi/kiosk/index.html, pi/kiosk/schrift/ ~/kuechen-display/kiosk/
Wetterbild (W5, flach) docs/entwuerfe/wetter/flach/*.png ~/kuechen-display/kiosk/wetter/
Figur (F2) docs/entwuerfe/figur/*-klein.png ~/kuechen-display/kiosk/figur/
Küchen-Dienst: Seite und Ereignisse pi/dienst/dienst.py Dienst kuechen-dienst
Kameradienst pi/gesten/gesten.py, geste.py Dienst kuechen-gesten, nur beim Testen an
Rückweg-Leiste auf App-Seiten mit Mikro-Knopf (#10, #70) pi/kiosk-rueckweg/ ~/kuechen-display/kiosk-rueckweg/, siehe docs/spotify.md
Fensterregel und Panel (Bildschirmtastatur) pi/kiosk/labwc-rc.xml, pi/kiosk/wf-panel-pi.ini ~/.config/labwc/rc.xml, ~/.config/wf-panel-pi/wf-panel-pi.ini
Chromium-Autostart pi/kiosk/kiosk.desktop, pi/kiosk-start.sh ~/.config/autostart/kiosk.desktop, ~/kuechen-display/kiosk-start.sh
Deploy vom Mac pi/push.sh –
Einrichtung pi/install-kiosk.sh ~/kuechen-display/install-kiosk.sh

Der Küchen-Dienst liefert die Seite auf http://localhost:8080/ aus (nur lokal erreichbar) und schickt ihr Ereignisse als Server-Sent Events an /ereignisse. Der Kameradienst liest die Kamera, findet mit MediaPipe die Hände und schickt erkannte Gesten per POST an den Küchen-Dienst (/geste, /hand). Bilder verlassen das Gerät nicht und werden nicht gespeichert.

Gesten

Festlegung in #2:

Geste Wirkung
Hand zügig quer wischen, nach links nächste Seite rechts (Heute → Morgen)
nach rechts Seite links (Heute → Apps)
flache Hand, Finger nach oben, ca. 0,6 s ruhig Stopp: Elektra hört auf zu sprechen

So entscheidet der Code (Schwellen oben in pi/gesten/geste.py, Tests in test_geste.py):

Einrichten oder aktualisieren

pi/push.sh

Siehe docs/deploy.md. Die erste Einrichtung (Token, Gerätewerte der Bridge) steht in docs/stimme-und-geste.md.

Bildschirmtastatur

Tippt man in ein Textfeld (zum Beispiel die Suche im Spotify-Player), geht unten die Bildschirmtastatur von Pi OS auf (squeekboard, deutsches Layout). Sie läuft schon von Haus aus. Damit sie sichtbar wird, braucht es drei Dinge, eingerichtet von pi/install-kiosk.sh und pi/kiosk-start.sh:

install-kiosk.sh legt beide Dateien nur ab, wenn sie sich unterscheiden. Beim ersten Mal sichert es die alte Datei als *.vor-kiosk, lädt labwc neu (kill -HUP) und startet das Panel neu.

Von Hand ein- und ausblenden (zum Prüfen ohne Finger):

ssh kuechen-display.local 'DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus busctl --user call sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true'

Das Panel (Taskleiste) läuft im Kiosk nicht. Auch ausgeblendet ließ es oben einen Streifen von etwa 5 px stehen, und seine Hinweise (Updates, „power supply not capable …“) erschienen über dem Kiosk. pi/kiosk-start.sh beendet es deshalb bei jedem Start. Pi OS startet es über /etc/xdg/labwc/autostart, und labwc läuft mit -m (eigene und System-Konfiguration werden zusammengeführt), ein eigener Autostart kann es also nicht weglassen. Folgen: Über VNC gibt es keine Taskleiste, und die Akku-Anzeige (batteryTray.py, ein Symbol im Panel) ist nicht zu sehen. Den Akku-Wächter betrifft das nicht. Panel für eine VNC-Sitzung zurückholen:

ssh kuechen-display.local 'WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/1000 setsid -f lwrespawn /usr/bin/wf-panel-pi'

Ein Neustart des Kiosks beendet es wieder. pi/kiosk/wf-panel-pi.ini (autohide=true) bleibt, damit ein von Hand gestartetes Panel nicht über dem Kiosk steht.

Kiosk sofort neu starten

ssh kuechen-display.local "pkill -x chromium; sleep 1; setsid -f sh kuechen-display/kiosk-start.sh '?debug=1' </dev/null >/tmp/kiosk.log 2>&1"

pkill -x chromium trifft nur den Browser. Ein pkill -f chromium… würde die eigene ssh-Befehlszeile mit beenden.

Das System läuft auf en_GB. Damit Chromium kein Übersetzungsfenster zeigt, reichen die Flags --lang=de-DE --disable-features=Translate allein nicht: In ~/.config/chromium/Default/Preferences müssen außerdem translate.enabled auf false und die Sprachen unter intl auf de stehen (bei beendetem Chromium ändern).

Zusätze an der Adresse:

Prüfen

ssh kuechen-display.local 'journalctl -u kuechen-gesten -f | grep -E "Geste|Kamera:"'

Jede Minute steht dort eine Zeile Kamera: … Bilder/s, … CPU … %, jede erkannte Geste als Geste: {...}.

Messwerte vom 8.11.2026 (Tischtest am Schreibtisch)

Die Kamera lag unter dem Display und schaute leicht nach oben, später sitzt sie darüber.

Messwerte vom 29.10.2026

Bekannte Grenzen