Bastelecke,SmartHome

AN-AUS-AN-AUS

28 Dez , 2013  

Mein DIY-LCD hängt ja nun seit ein paar Wochen in meinem Büro an der Wand und… naja… verstaubt. Zwar habe ich ihn vor 3 Tagen für eine Neuinstallation eines PCs verwendet, aber der groooße Einsatz lässt noch auf sich warten. Oder ist ein neuer „Use-Case“ in Sicht

Digitale Bilderrahmen waren vor ca. 4-5 Jahren ja echt der Hit. Wer keinen besaß war sowas von out, dass man(n) sich schämen musste. Auch ich kam in den Genuss eines DPF (=digital photoframe), den mir ein guter Freund zu meinem Geburtstag schenkte. Aber wie funktionieren diese Dinger denn grundsätzlich? Ausgestattet mit einem kleinen Display meist aus Hochglanz-Plastik gefertigt, kann man Bilder im Diashow-Verfahren von einer Speicherkarte anzeigen lassen. Neuere Modelle haben sogar eine WiFi-Schnittstelle (€!) um auch von anderen Quellen Bilder anzuzeigen.

Um aus meinem DIY-LCD einen DPF machen zu können, ist eine meiner Hauptanforderungen, dass sich der Bildschirm „automatisch“ „irgendwie“ an- und ausschaltet. Denn warum sollte das Teil 24/7 laufen wenn niemand anwesend ist?

Wie kann ich nun das LCD programmatisch an/ausschalten?

Hier ist das Stichwort „tvservice“. Das ist ein Tool mit dem man ein Display am RaspberryPi steuern kann.

Code:

 /opt/vc/bin/tvservice -h
Usage: tvservice [OPTION]...
  -p, --preferred              Power on HDMI with preferred settings
  -e, --explicit="GROUP MODE"  Power on HDMI with explicit GROUP (CEA, DMT, CEA_3D)
                               and MODE (see --modes)
  -o, --off                    Power off the HDMI
  -m, --modes=GROUP            Get supported modes for GROUP (CEA, DMT, CEA_3D)
  -M, --monitor                Monitor HDMI events
  -s, --status                 Get HDMI status
  -a, --audio                  Get supported audio information
  -d, --dumpedid <filename>    Dump EDID information to file
  -h, --help                   Print this information

Mit diesem Tool kann man nun den Monitor ausschalten tvservice -o und wieder anschalten tvservice -p. Bei mir schaltet sich zwar der LCD wieder an, bleibt aber schwarz. Mit dem folgenden Befehl aber wacht er „richtig“ wieder auf: fbset -depth 16

Ein kleines Script vereinfacht die ganze Sache (gefunden hier):

Code:

#!/bin/bash

if [ $1 = 'on' ]; then
  tvservice -p;
  fbset -depth 8;
  fbset -depth 16;
  echo 'Switched Screen ON!' 
fi 

if [ $1 = 'off' ]; then   
   tvservice -o   
   echo 'Switched Screen OFF!' 
fi

Zu beachten ist noch der Screensaver, der beim RPi standardmässig nach 10 Minuten aktiviert wird. Deaktiviert man diesen nicht, dann funktioniert tvservice nicht.

Die /etc/rc.local ist zu erweitern (vor exit 0):

setterm -blank 0 -powerdown 0 -powersave off

Bitte rebooten.

Hier noch meine LCD-Informationen – vielleicht kann man es ja mal gebrauchen:

fbas

mode "1392x868"
 geometry 1392 868 1392 868 16
 timings 0 0 0 0 0 0 0
 rgba 5/11,6/5,5/0,0/16
endmode

tvservice

state 0x120016 [DVI DMT (47) RGB full 16:10], 1440x900 @ 60Hz, progressive

 

Wie geht es nun weiter?

Nachdem software-technisch der LCD an/ausgeschalten werden kann, werde ich nun einen Bewegungssensor an die GPIO-Schnittstelle des RPi anschließen. Erkennt der Sensor eine Bewegung soll das Script den LCD aktivieren. Wann der LCD wieder abgeschalten werden soll, weiß ich noch nicht. Der Sensor kann so eingestellt werden, dass das Signal eine gewisse Zeitspanne aktiv ist. Aber ob diese Zeitspanne erst dann läuft, wenn tatsächlich keine Bewegung mehr registriert wurde oder aber sofort nach Aktivierung beginnt, muss ich noch herausfinden. Ersteres wäre natürlich perfekt!

 


Comments are closed.