Raspberry Pi Touchdisplay Helligkeit via HABPanel Slider Widget einstellen

Aus Laub-Home Wiki

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 Eingabe Item
  • 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: