Touchscreen über GPIO aufwecken

  • Hallo zusammen,

    ich bin neu im Forum und hab gleich mal eine Frage.

    Ich habe einen Raspberry Pi 3 und daran den offiziellen 7" Touchscreen angeschlossen.
    Dieser funktioniert auch echt super.
    Ich habe über den Touchscreen eine Türsteuerung realisiert und bekomme mittels Webcam angezeigt wer vor der Tür steht.

    Im Moment ist es so dass der Besucher bei mir Klingelt. Der Raspberry Pi bekommt ein High Signal an einem GPIO und lässt mein Telefon klingeln.
    Ich laufe dann zum Touchscreen und tippe diesen einmal an damit der Bildschirm hell/aktiv wird.
    Dann sehe ich wer draußen steht und kann die Tür über einen Button öffnen.

    Jetzt ist meine Frage: Wie kann ich den Touchscreen automatisch aufwecken sobald an einem GPIO das High Signal liegt, damit ich mir das antippen zum aufwecken spare und der Bildschirm schon aktiv ist wenn ich dort ankomme?

    Der Bildschirm soll dann, genau so wie jetzt auch, nach einer bestimmten Zeit der Inaktivität wieder in den Ruhezustand wechseln.

    Vielen Dank im Voraus.

  • Danke das ist auf jeden Fall schon mal ne gute Idee. Allerdings würde ich dann den Touchscreen nur noch anbekommen wenn es klingelt. Das wäre nicht so gut. Da muss es noch ne andere Lösung geben.
    Aber vielen Dank für die Idee.

    Ach ja ich hab raspian am laufen. Hatte ich noch vergessen zu schreiben.

    Einmal editiert, zuletzt von Lang81 (14. Juni 2016 um 11:49)

  • Hat keiner mehr ne Idee.

    Es muss doch irgend einen Befehl geben um den Monitor aus dem Schlafmodus zu holen.

    Hat vielleicht jemand einen Tipp wo ich da mal suchen könnte?

  • Hi,

    du könntest das blanking ganz abschalten und das Backlight des Displays über deinen Code steuern.

    An:

    Code
    echo 0 > /sys/class/backlight/rpi_backlight/bl_power

    Aus:

    Code
    echo 1 > /sys/class/backlight/rpi_backlight/bl_power
  • Hast Du's mal mit xset versucht (DISPLAY-Variable setzen!)? Je nachdem, ob der Screensaver oder die Energiesparfunktionen zuschlagen, sollte einer der beiden Befehle

    Code
    xset dpms force on
    xset s reset

    den Bildschirm aufwecken.

    Einmal editiert, zuletzt von Manul (18. Juni 2016 um 10:54)

  • Hm bei mir hat es leider noch nicht geklappt. Ich bin allerdings auch nicht wirklich zum Testen gekommen am Wochenende. Hab nur mal kurz den Laptop angeworfen und mich mit dem Pi verbunden und die Befehle nacheinander in die Console eingegeben und dabei den Bildschirm beobachtet. Leider ist er nicht angegangen.

    Ich hoffe ich komme morgen mal dazu mich etwas länger damit zu beschäftigen.


  • Jetzt ist meine Frage: Wie kann ich den Touchscreen automatisch aufwecken sobald an einem GPIO das High Signal liegt,


    Hm bei mir hat es leider noch nicht geklappt

    in der allergrößten Programmiernot einen Roboterfinger an einem Servo anbauen

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne deine Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklärst du dich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Es würde helfen, wenn Du genau beschreiben würdest, was Du versucht hast. Dessen ungeachtet für meinen Vorschlag: Probier mal

    Code
    export DISPLAY=:0
    xset dpms force on
    xset s reset

    (Die erste Zeile enthält einen Doppelpunkt und die Ziffer Null. Groß- und Kleinschreibung beachten!)

  • Gerne. Auf Unix-Betriebssystemen ist im allgemeinen ein sogenannter X-Server dafür zuständig, die Graphikinfrastruktur für GUIs zur Verfügung zu stellen. Ein Programm, das bspw. ein Fenster öffnen will, aber auch eines, das wie xset die Eigenschaften der Anzeige beeinflussen möchte - ein sog. X-Client -, muss also mit diesem X-Server kommunizieren. Dabei kann der X-Server sowohl auf dem selben Rechner laufen wie das Programm, als auch auf einem ganz anderen Rechner.

    Mit welchem X-Server sich der Client nun verbindet, entnimmt er der Umgebungsvariable DISPLAY. Diese hat die Form <hostname>:<displaynummer>. Wird der Hostname weggelassen, wird dafür der lokale Rechner genommen. Der Client öffnet dann eine TCP-Verbindung zu <hostname> auf Port <6000+displaynummer> und hofft, dort mit einem X-Server kommunizieren zu können. Der erste X-Server. der lokal gestartet wird und dementsprechend im Normalfall auch für die Darstellung auf dem lokal angeschlossenen Bildschirm zuständig ist, hat üblicherweise die Displaynummer 0. Programme, die über die GUI gestartet werden, bekommen daher automatisch DISPLAY=:0 vererbt. Wenn Du dich über ssh oder lokal auf der Konsole einloggst, hat Deine Shell aber entweder gar keine Displaynummer oder eine von ssh automatisch gesetzte, die auf einen Tunnel zu dem Rechner verweist, von dem aus Du Dich eingeloggt hast - wenn Du also in einer ssh-Session bspw. ein Terminalfenster oder einen Browser startest, geht das Fenster daher an dem Bildschirm auf, an dem Du sitzt, und nicht an dem, der irgendwo möglicherweise weit weg an Deinem Pi hängt. Und genauso hast Du vermutlich versucht, Deinen lokalen Bildschirm aufzuwecken - der natürlich gar nicht ausgeschaltet war, weswegen Du keinen Effekt gesehen hast. Wenn Du xset dagegen mit DISPLAY=:0 aufrufst, weckt es eben den am Pi angeschlossenen Bildschirm auf.

  • Hey Manul,

    das war ja jetzt wirklich mal super einleuchten und verständlich erklärt.
    Vielen Dank dafür!!!
    Besser kann es ja nicht sein, erst bekommt man bei seinem Problem geholfen und es dann auch noch so erklärt dass man es auch wirklich Verstanden hat.
    :lol: :bravo2: :thumbs1:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!