Für ein kleines Projekt habe ich mir einen 7" Touchscreen für ein Raspberry Pi bestellt. Das Einrichten gelingt sehr schnell. Was schade ist, das der Display mit xscreensaver schwarz wird, aber nicht phsysisch abschaltet. Ich habe aus verschiedenen Quellen funktionen zusammengenommen und diese für den 7" Touchscreen optimiert.
~/bin/xscreensaver-displayhelper
Das Hilfsprogramm besteht aus 2 Teilen die auf den xscreensaver aufbaut. Der erste steuert die HDMI Schnittstelle, der zweite das Display direkt per Flachkabel. Für HDMI müssen zwei Voraussetzungen erfüllt sein. Das Packet "tvservice" und der User muss in der Gruppe video sein. Für den Touchscreen muss das Utility als root, bez. per sudo gestartet werden.
#!/bin/bash #Override DISPLAY (if starts over ssh/shell) #export DISPLAY=:0.0 howto() { PROG=`basename $0` echo "+-----------------------+------------+" echo "displayhelper v1.0 (c)stastka.ch" echo "+-----------------------+------------+" echo "Usage: $PROG [duration_in_sec] [touch|hdmi]" echo "Disable Raspberry Pi Official 7\" Touchscreen or HDMI after xscreensaver starts." echo "Default Duration: 10 seconds" echo "Default Displayoutput: touchscreen" echo "Example: 7\" Touchscreen after 20 seconds go Backlight off" echo "" echo "$PROG 20 touch" echo "" echo "Options:" echo " -s, --status status of display (on|off)" echo " -f, --off Touchscreen/Hdmi off" echo " -o, --on Touchsceen/Hdmi on" echo " -h, --help This help text" } getstatus() { if [ "$SCREENMODE" == "hdmi" ]; then tvservice --status | grep -q HDMI RESULT=$? if [ "$RESULT" -eq 1 ]; then echo "HDMI are off (=$RESULT)" else echo "HDMI are on (=$RESULT)" fi elif [ "$SCREENMODE" == "touch" ]; then RESULT="$(cat /sys/class/backlight/rpi_backlight/bl_power)" if [ "$RESULT" -eq 1 ]; then echo "Touchscreen Backlight are off (=$RESULT)" else echo "Touchscreen Backlight are on (=$RESULT)" fi fi } DURATION_SEC=10 if [[ "" != "$1" && $1 =~ ^[0-9]+$ ]] ; then DURATION_SEC=$1 fi SCREENMODE="touch" if [[ "" != "$2" && $2 =~ ^[a-z]+$ ]] ; then SCREENMODE=$2 fi display_off() { if [ "$SCREENMODE" == "hdmi" ]; then # no --quiet switch tvservice --off > /dev/null elif [ "$SCREENMODE" == "touch" ]; then sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power fi } display_on() { if [ "$SCREENMODE" == "hdmi" ]; then # get the current state of HDMI output tvservice --status | grep -q HDMI RESULT=$? elif [ "$SCREENMODE" == "touch" ]; then RESULT="$(cat /sys/class/backlight/rpi_backlight/bl_power)" fi # if Touchscreen/HDMI was not found, RESULT=1 ... turn it back on if [ "$RESULT" -eq 1 ] ; then if [ "$SCREENMODE" == "hdmi" ]; then # no --quiet switch tvservice --preferred > /dev/null fbset -depth 8 fbset -depth 16 xrefresh elif [ "$SCREENMODE" == "touch" ]; then sudo echo 0 > /sys/class/backlight/rpi_backlight/bl_power fi fi } if [[ "-f" == "$1" || "--off" == "$1" ]] ; then echo "Touchscreen turn off" display_off exit fi if [[ "-h" == "$1" || "--help" == "$1" ]] ; then howto exit fi if [[ "-s" == "$1" || "--status" == "$1" ]] ; then getstatus exit fi if [[ "-o" == "$1" || "--on" == "$1" ]] ; then echo "Touchscreen/HDMI turn on" display_on exit fi TEMPFILE=`tempfile --prefix=xsdisplayhelper. --suffix=.pid` echo 0 > $TEMPFILE interrupt_potential_sleeping_processes() { SLEEP_PID=0 if [ -x $TEMPFILE ] ; then SLEEP_PID=`cat $TEMPFILE` fi if [ "0" != "$SLEEP_PID" ] ; then echo 0 > $TEMPFILE kill $SLEEP_PID fi } # failsafe to make sure monitor stays on in case of quit display_on_exit() { interrupt_potential_sleeping_processes rm $TEMPFILE display_on exit } #set -o monitor notify #set -bm #set +m trap 'display_on_exit' SIGQUIT SIGINT display_on # see fancy process substitution down below while read line ; do if [[ $line =~ ^BLANK || $line =~ ^LOCK ]] ; then ( sleep $DURATION_SEC display_off echo 0 > $TEMPFILE ) & echo $! > $TEMPFILE fi if [[ $line =~ ^UNBLANK ]] ; then interrupt_potential_sleeping_processes display_on fi done < <( xscreensaver-command --watch ) display_on_exit
Möglichkeiten:
- Touchscreen nach 5 Sekunden abschalten: ~/bin/xscreensaver-displayhelper 5 touch&
- HDMI nach 5 Sekunden abschalten: ~/bin/xscreensaver-displayhelper 5 hdmi&
- Status: ~/bin/xscreensaver-displayhelper -s
- Bildschirm an: ~/bin/xscreensaver-displayhelper -o touch
- Bildschirm aus: ~/bin/xscreensaver-displayhelper -f touch
LXDE
Im Autostart des LXDE (~/.config/lxsession/LXDE-pi/autostart) fügt man folgende Zeile ein. Der Touchscreen wird nach 5 Sekunden abgeschatet:
@lxpanel --profile LXDE-pi @pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash @point-rpi sudo ~/bin/xscreensaver-displayhelper 5 touch&
...auch noch interessant
- bash // 03.06.2024Lyrion Music Server / Logitech Media Server STOP Playing
- Raspberry Pi // 22.04.2022Linux USB to RS232 (UART)
- bash // 12.03.2019Tipp für die Linux Bash: jq is a lightweight and flexible command-line JSON processor
- Raspberry Pi // 07.02.2018Raspberry PI: vim mit rechtsclick Text einfügen
Nichts gefunden
Es wurde zur Story Raspberry Pi: 7 Zoll Touchscreen oder HDMI automatisch abschalten kein Kommentar gefundenInformation
Werbung oder Ähnliches sind nicht erlaubt, daher wird jeder Beitrag geprüft und freigegeben.Advertising, etc. are not allowed, so any contribution is reviewed and approved.
Facebook-Webadress are not allowed, Facebook als Webadresse ist nicht erlaubt
* Die E-Mail wird nicht veröffentlicht / The email will not be published
** Bitte Zahl eintragen / Please enter the number
Modal Header
Some text in the Modal Body
Some other text...
(c)2024 stastka.ch // help system