Raspberry Pi Touchdisplay Helligkeit via HABPanel Slider Widget einstellen
Hier eine kleine Anleitung wie man die Helligkeit des Raspberry Pi Touchscreen via HABPanel Slider Widget einstellen kann. Dafür sind folgende Schritte Notwendig:
- Durchreichen der Brightness Control Datei des Touchdisplay in den openHAB Docker Container
- Setzen der richtigen Rechte beim hochfahren des Systems
- Installation des OpenHAB Exec Binding
- Erstellen eines Exec
Thing
und eines EingabeItem
- Einrichten des Slider Widget in openHABs HABPanel
Konfiguration des Linux Systems und des Docker Containers
Da openHAB als openhab user und der gleichnamigen Gruppe ausgeführt wird und im Docker Container leider kein sudo installiert ist, müssen wir der Datei /sys/class/backlight/rpi_backlight
für others
write
Rechte geben. Dies sind die original Rechte.
-rw-r--r-- 1 root root 4096 Apr 30 12:00 /sys/class/backlight/rpi_backlight/brightness
um others write rechte zu geben folgende Befehl absetzen:
chmod o+w /sys/class/backlight/rpi_backlight/brightness
Leider ist das Ganze nicht reboot fest. Also tragen wir den Befehl einfach in die rc.local
vor exit 0
ein:
/etc/rc.local
... chmod o+w /sys/class/backlight/rpi_backlight/brightness exit 0
nun können wir das Verzeichnis /sys/class/backlight/rpi_backlight/
in den Container mounten, damit wir dann per Exec Binding Werte in die brightness
Datei schreiben können. Hierfür fügen wir die Volume Zeile zu unserer openHAB Konfiguration im docker-compose.yml
hinzu:
/opt/openHAB/docker-compose.yml
openhab:
...
volumes:
...
- "/sys/class/backlight/rpi_backlight:/rpi_backlight"
...
Dann deployen wir das Compose Projekt neu:
cd /opt/openHAB
docker-compose up -d
Nun können wir einen ersten Test wagen:
docker exec -ti openhab_openhab_1 /bin/su -c "echo 10 > /rpi_backlight/brightness" - openhab
mit diesem Befehl sollte das Display fast komplett dunkel werden. Ändert ggf. den Container Namen. docker container ls
zeigt die laufenden Container an.
Konfiguration openHAB
Als erstes müssen wir das Exec Binding installieren. Wie das geht und wie das Binding generell funktioniert könnt ihr hier nachlesen:
Ist das Binding installiert, legen wir uns als erstes ein Thing Namens Display_Brightness
an:
echo %2$s > /rpi_backlight/brightness
sorgt dafür, das der eingegeben Wert später dann in die brightness
Datei geschrieben wird. Autorun sorgt dafür, dass wenn der Wert geändert wird, direkt der Befehl auch ausgeführt wird. Wir speichern das Thing und erstellen direkt im Channels, ein Linked Item bei Eingabewert
. Dafür klicken wir einfach auf das Chanel Symbol und sagen Create new Item
.
Das Item wird dann wie folgt konfiguriert:
nach dem wir nun ein Thing
und ein Item
haben müssen wir noch den Befehl in die exec.whitelist
aufnehmen:
/opt/openHAB/data/openhab/conf/misc/exec.whitelist
# For security reasons all commands that are used by the exec binding or transformation need to be whitelisted. # Every command needs to be listed on a separate line below. echo %2$s > /rpi_backlight/brightness
nun können wir einen ersten Test unter Control
wagen:
Hier einfach bei Display Helligkeit Eingabewert
rein klicken und einen Wert von 0-255
eingeben und auf den grünen Haken klicken. Schon sollte euer Display die Helligkeit ändern. Nun können wir im HABPanel ein Widget einrichten.
Konfiguration Slider Widget in HABPanel
Ich habe mich für das Slider Widget entschieden, da man hier schön hin und her sliden kann und somit das Display schnell und einfach heller oder dunkler machen kann. Das Widget habe ich wie folgt konfiguriert:
Speichern und das Endergebnis testen: