OpenHAB Display

Aus Debacher-Wiki
Version vom 20. November 2025, 20:39 Uhr von Debacher (Diskussion | Beiträge) (→‎Anzeige aus- und einschalten)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springenZur Suche springen

Ein RaspberryPi mit Display

Ursprünglich hatte ich damit experimentiert ein altes Android-Tablet als Display zu konfigurieren. So richtig glücklich bin ich damit aber nicht geworden. Dann habe ich bei Amazon gesehen, dass Display für den Raspi sehr preiswert sind und einen Raspi habe ich immer herumliegen. Ich habe mich dann für das Angebot entschieden, da hier die Verkabelung sehr unauffällig ist, der Raspi wird auf der Rückseite angeschraubt und mit speziellen Kabeln verbunden.

Das Display

Das Display hat bei Amazon knapp 76 € gekostet. Es kam in einer sehr stabilen Verpackung mit allen benötigten Kabeln und Befestigungsmaterial. Beim Befestigungsmaterial ist hervorzuheben, dass ein magnetisierter Schraubendreher dabei ist und jeweils zwei Reserveschrauben. Die kleinen Dinger fallen einem ja leicht einmal unter den Tisch.

Die Montage des Raspi am Display war kein Problem, wobei die Darstellung auf der Amazon-Seite besser ist, als die in der Bedienungsanleitung. Ein USB-Netzteil wird übrigens bei dem Monitor nicht mitgeliefert, die Stromversorgung erfolgt über den Raspi. Mein Raspi-Set wurde mit einem 3A Netzteil geliefert, damit klappt die Stromverorgung einwandfrei.

Raspi-System

Ganz begeistert war ich von der Installation des Raspi-Systems. Dazu habe ich zuerst den Raspberry Pi Imager geladen und installiert. Beim Start sind ein paar Informationen notwendig:

Bildschirmfoto vom 2025-11-13 11-20-18.png

Ich habe einen PasperryPi 4B benutzt, mit 4 GB Speicher. Als System habe ich die 64 Bit Version "Pi OS FULL" ausgewählt. Meine SD-Karte hat 32 GByte. Nach der Auswahl der Speicherkarte und einem Klick auf "Weiter" kommt eine mir bisher unbekannte Funktion, man kann das System noch einer entsprechenden Frage vorkonfigurieren.

Bildschirmfoto vom 2025-11-13 11-30-09.png


Das betrifft:

  • Benutzer
  • WLAN
  • SSH-Aktivierung

Damit entsteht dann ein sofort funktionsfähiges System. Ich musste also keine Tastatur oder Maus anschließen, sondern konnte die restlichen Konfigurationsschritte bequem vom Desktop-Rechner aus per SSH erledigen.

Nachinstalliert habe ich dann später noch

  • unclutter
  • sed
  • joe
  • xdotool

Autostart von Chromium

An dem Display soll Chromium im Kiosk-Mode laufen, ohne irgendwelche Menüs, nur mit OpenHAB als Anwendung im Browser.

Ich habe mir dazu eine Datei autostart im Home-Ordner unterhalb von .config/labwc/ erstellt:

.config/labwc/autostart
#!/bin/bash

xset s noblank
xset s off
#xset -dpms

unclutter -idle 1 -root &

sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/$USER/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/$USER/.config/chromium/Default/Preferences

/usr/bin/chromium --noerrdialogs --disable-crash-reporter --disable-infobars --force-device-scale-factor=1.00 --start-fullscreen --password-store=basic http://192.168.1.95:8080 &

Die Datei wird immer dann ausgeführt, wenn sich der Benutzer, in dessen Homeverzeichnis sie liegt, anmeldet. Da ich bei der Konfiguration des Systems die automatische Anmeldung aktiviert habe, also auch nach dem Booten des Rechners.

Das mit dem Autostart ist schon immer ein großes Problem mit dem Raspi, da sich nach meiner Erfahrung das System mit jedem Update und mit jeder neuen Version ändert. Auch diesmal habe ich viel Zeit damit verbracht, eine funktionsfähige Lösung zu finden. Die meisten Beschreibungen, die ich gefunden habe, funktionieren bei mir nicht.

Anzeige aus- und einschalten

Da bei dem Raspi Wayland benutzt wird funktionieren viele Anleitungen zum Ein- bzw. Ausschalten des Monitors nicht. Aber auch hier gibt es eine Möglichkeit, siehe auch https://forum-raspberrypi.de/forum/thread/60184-tv-bildschirm-ausschalten-einschalten/

wlr-randr --output HDMI-A-1 --off
sleep 20
wlr-randr --output HDMI-A-1 --on

schaltet das Display aus und nach 20 Sekunden wieder ein.

Die Display-Bezeichnung HDMI-A-1 hat mir der Befehl

xrandr

geliefert.

Dazu muss ich mir jetzt noch passende Scripten erstellen.

Nach Eingabe von

export DISPLAY=:0.0
xhost +

kann man manche Kommandos auch aus einer Remote-Sitzung heraus bearbeiten.

Ich bekam die Fehlermeldung:

error: XDG_RUNTIME_DIR is invalid or not set in the environment

Das kann man folgendermaßen lösen:

export XDG_RUNTIME_DIR=/run/user/$(id -u)

oder besser permanent über die .bashrc

echo "export XDG_RUNTIME_DIR=/run/user/$(id -u)" >> ~/.bashrc

Bei meinen Experimenten mit den Cron-Jobs gab es keine direkten Fehlermeldungen. Mittels

journalctl

gab es nur

(CRON) info (No MTA installed, discarding output)

Das Problem lässt sich lässt sich umgehen, indem man eine Datei

/usr/sbin/sendmail 

anlegt und ausführbar macht, mit folgendem Inhalt

#!/bin/bash
exec >> /tmp/sendmail.$(whoami) 2>&1
pr -Fn
echo --------------

Ein Android Tablet als Display

Ein normales Android-Tablet eignet sich hervorragend als Display für die Steuerung mittels OpenHAB. Dazu müssen aber mehrere Dinge konfiguriert werden:

  • OpenHAB-App
  • Fully Remote App
  • Rules zum Schulen der Apps von OpenHAB aus

OpenHAB

Ich habe mir die App OpenHAB Beta auf dem Tablet installiert. Diese App startet normalerweise mit einer Sitemap im alten OpenHAB 2 Stil. Man kann aber in den Einstellungen auswählen, dass mit der OpenHAB 3 UI gearbeitet wird. Dann startet bei mit die Layout-Seite Overview.

Fully Remote App

Die Android-Geräte haben das Problem, dass sie immer nach einer gewissen Zeit an Inaktivität das Display abschalten. Ich möchte aber erreichen, dass die OpenHAB-App aber immer aktiv bleibt. Dafür gibt es eine Reihe von Apps. Zusätzlich möchte ich aber das Display auch von OpenHAB aus Ein- und Ausschalten können. Erst einmal nur zeitgesteuert, später auch von Alarmen aus.

Dazu habe ich mit Fully Single App Kiosk eine passende App gefunden. Für diese App gibt es unter https://www.fully-kiosk.com/ eine sehr umfangreiche, aber dadurch auch verwirrende Dokumentation. Übersichtlicher ist die Anleitung unter https://www.schlaue-huette.de/wandtablet/tablet-dimmen-und-aufwecken/ .

Die Bedienung ist nicht unbedingt sofort einsichtig, zumal es sich um ein Kiosk-System handelt.

Wenn man die App startet, dann sieht man nur zwei Einstellmöglichkeiten: - Auswahl der zu startenden App (OpenHAB) - Eingabe einer PIN

Danach kann man dann den Kiosk-Modus starten. Die App bietet hier einen Testmodus, aus dem sie automatisch nach einer Minute wieder aussteigt.Verzichtet man auf den Testmodus und startet den wirklichen Kiosk-Modus, so kann man den beenden, indem man 7ml schnell hintereinander auf das Display tappt. Wenn man schnell genug war, dann erscheint ein Fenster zum PIN eingeben. War man erfolgreich, so landet man wieder im Startbildschirm.

Will man an die weiteren Konfigurationseinstellungen kommen, so muss man von links nach rechts wischen.

Bei den Einstellungen ergibt es Sinn die Remote-Administration zu erlauben, dazu muss man dann auch ein Passwort anlegen. Danach kann man im lokalen Netz remote auf das Display zugreifen. Über das Burger-Menü kann man dann auch auf die Einstellungen zugreifen.

Bildschirmfoto von 2021-11-29 20-56-34.png

Über die hier vorhandenen Funktionen kann man das Display auch Ein- und Ausschalten. Das geht recht einfach über die URLs:

http://192.168.1.16:2323/?cmd=screenOn&password=<geheim>

und

 http://192.168.1.16:2323/?cmd=screenOff&password=<geheim>

Damit eignet sich die App auch gut zur Nutzung in OpenHAB Rules und Scripts.

Rules zum Steuern der Apps

Ich habe mir zwei Rules mit Zeitsteuerung erstellt. Die eine Rule schaltet das Display morgens um 7 Uhr ein und die andere schltet es um 23.30 Uhr wieder aus. Das zugehörige Script (zum Einschalten) besteht nur aus zwei Zeilen:

var HttpUtil = Java.type("org.openhab.core.io.net.http.HttpUtil")
HttpUtil.executeUrl("GET", "http://192.168.1.16:2323/?cmd=screenOn&password=<geheim>", 2000)