Instale o pacote x11-xserver-utils
para obter o comando xset
.
Em seguida, você pode usá-lo para forçar os sinais DPMS a ligar ou desligar o monitor.
Você pode precisar definir a variável DISPLAY
no ambiente. Por exemplo:
DISPLAY=:0 xset dpms force on
sleep 10
DISPLAY=:0 xset dpms force off
Você pode fazer algo assim em python. Enquete a cada segundo. Lembre-se de ter ativado ou desativado o display. Observe a hora do dia sempre que seu sinal estiver ativo. Quando o tempo desde a última ativação for superior a 2 minutos, desligue o monitor. Vagamente:
import os, subprocess, time
os.environ['DISPLAY'] = ":0"
displayison = False
maxidle = 2*60 # seconds
lastsignaled = 0
while True:
now = time.time()
if GPIO.input(PIR):
if not displayison:
subprocess.call('xset dpms force on', shell=True)
displayison = True
lastsignaled = now
else:
if now-lastsignaled > maxidle:
if displayison:
subprocess.call('xset dpms force off', shell=True)
displayison = False
time.sleep(1)
Se você estiver interagindo com a tela e quiser que ela permaneça ativa durante esse período independentemente do seu gpio, provavelmente é melhor deixar o mecanismo ocioso X11 padrão detecta que 2 minutos inativos decorreram e desligando automaticamente a tela. Basta usar o seu programa para forçar a tela.
Você pode definir um tempo limite ocioso de 120 segundos com uma única chamada de:
xset dpms 120 120 120
e pode então remover a força do python.