Inhalt
- Warum das Ganze?
- Installation
- Verwendung der GUI
- Verwendung mit dem Terminal
- Verwendung mit Python
- Ideen
1. Warum das Ganze?
Das offizielle 7" Touch LCD, welches es ja schon seit einiger Zeit gibt, hat unter anderem den großen Vorteil, von Raspbian und co. ohne weiteres Zutun unterstützt zu werden, ist also quasi Plug & Play. Wenn also der Preis von etwa 70€ das Budget nicht killt, ist es z.B. für "mobile" Anwendungen, IoT, Home Automation... sehr nützlich und hat mit seinen 7" auch eine recht praktische Größe.
Aaaaaaber: es ist recht hell, was besonders im 24/7 Betrieb nervig ist und nur unnötige Stromkosten verursacht, wenn man gerade schläft, nicht im Zimmer ist etc.
Es hat sich dann ein Weg kristallisiert, mit dem man die Helligkeit ändern kann, und zwar schreibt man einen Wert zwischen 0 und 255 (0-10 gehen aber nicht ) in eine Datei im sysfs (/sys/...) für die Hintergrundbeleuchtung. Außerdem kann man es bei Bedarf auch ganz aus und wieder an schalten. So sieht's dann aus (Achtung, seit dem GIF wurde das API geändert, smooth=True ist nicht mehr default!):
Ich habe mein Python-Modul rpi_backlight schon in diesem Thread vorgestellt und mit viel Hilfe der Python-Cracks verbessert (lang isses her, nochmal )
2. Installation
Zunächst einmal:
Schaut bitte auf die Rückseite eures Displays, dort muss mindestens v1.1 oder höher stehen. Wenn dort v1.0 steht, könnt ihr diese Seite einfach schließen, der Code wird nicht wie erwartet funktionieren, siehe auch hier: https://raspberrypi.stackexchange.com/a/49866/53826
Der Code liegt in der neusten Version auf:
- GitHub: https://github.com/linusg/rpi-backlight
- PyPI: https://pypi.org/project/rpi_backlight/
- Dokumentation: https://rpi-backlight.readthedocs.io/en/latest/
Installiert wird das Modul wie folgt:
(als root oder mit dem --user Flag)
Wichtig:
Nun müsst ihr entweder die benötigten Rechte zum Ändern der Hintergrundbeleuchtung ändern:
Einfügen:
SUBSYSTEM=="backlight",RUN+="/bin/chmod 666 /sys/class/backlight/%k/brightness /sys/class/backlight/%k/bl_power"
Ansonsten müssen später alle Scripte, die schreibend auf die /sys/... Datei zugreifen wollen (=ändern des Zustandes mit den set_* Funktionen) als root ausgeführt werden!
Nun nach der Installation noch prüfen, ob alles geklappt hat:
Nun sollten euch die Befehle rpi-backlight und rpi-backlight-gui aus der Shell und das API in der Python-Installation, die ihr für pip oder setup.py install verwendet habt zur Verfügung stehen.
3. Verwendung der GUI
Die ganz Bequemen können zum Ändern der Helligkeit (und wirklich nur dazu) eine GUI verwenden. Es wird pygobject benötigt. Bei Interesse könne man das ganze natürlich noch erweitern und mit tkinter realisieren, was haltet ihr davon?
4. Verwendung mit dem Terminal
Es gibt ein CLI, dass ich erst kürzlich überarbeitet habe. Zunächst ein Beispiel:
$ rpi-backlight -b 255
$ rpi-backlight -b 20 -s -d 3
$ rpi-backlight --max-brightness
255
$ rpi-backlight --actual-brightness
20
$ rpi-backlight --power
True
$ rpi-backlight --off
Erklärung:
- Helligkeit auf 255 stellen (Maximum)
- Helligkeit auf 20 stellen, dabei 3 Sekunden lang (-d 3) weich überblenden (-s)
- Maximal mögliche Helligkeit ausgeben
- Derzeitige Helligkeit ausgeben
- Derzeitigen an/aus Status ausgeben
- Display ausschalten
Alle Parameter sind:
usage: rpi-backlight [-h] [-b VALUE] [-d DURATION] [-s] [--on] [--off]
[--max-brightness] [--actual-brightness] [--power]
Control power and brightness of the official Raspberry Pi 7" touch display.
optional arguments:
-h, --help show this help message and exit
-b VALUE, --brightness VALUE
set the display brightness to VALUE (11-255)
-d DURATION, --duration DURATION
fading duration in seconds
-s, --smooth fade the display brightness, see -d/--duration
--on set the display powered on
--off set the display powered off
--max-brightness get the maximum display brightness
--actual-brightness get the actual display brightness
--power get the current power state
Alles anzeigen
5. Verwendung mit Python
Um aus eigenen Projekten heraus das Display zu steuern gibt es mit diesem Modul ein Python-API. Wieder ein Beispiel, das selbe wie oben:
>>> bl.set_brightness(255)
>>> bl.set_brightness(20, smooth=True, duration=3)
>>> bl.get_max_brightness()
255
>>> bl.get_actual_brightness()
20
>>> bl.get_power()
True
>>> bl.set_power(False)
Die wichtigsten Funktionen sind:
-
Ändert die Helligkeit des Displays zum Wert value. Dieser darf zwischen 11 und 255 liegen bei 10 und kleiner ging das Display bei mir einfach aus. (Kann das jemand Bestätigen? Geht bei euch z.B. 5?)
Mit dem Parameter smooth kann man die Helligkeit langsam überblenden, duration gibt dabei die Zeit in Sekunden an. -
Schaltet das Display ein oder aus, je nachdem ob on True oder False ist.
Die Funktionen get_* sollten selbsterklärend sein, cli und gui werden die Wenigsten als Teil des API nutzen.
6. Ideen
Zum Schluss noch ein paar Ideen, die ich und andere zur Verwendung hatten:
- Steuerung mit Photowiderstand
- Zeitabhängiges Ein-/Ausschalten und ändern der Helligkeit
- Steuerung in ein Webinterface einbauen (Home automation...)
Hoffentlich hilft es jemandem weiter und für's lesen!