Screen-saver ligado e desligado em Raspberry Pi - script em Python

0

Eu sou um noob na programação em python. Como faço para criar um script que acorde o monitor e coloque-o para dormir em uma condição?

import RPi.GPIO as GPIO

PIR = 23


GPIO.setmode(GPIO.BCM)
GPIO.setup(PIR, GPIO.IN)

while True:
    if GPIO.input(PIR):
        """ There should be the "awake monitor" function """"
    else:
        """" There should be something that makes my script run over and over but after for example 2 minutes after there is no signal on PIR.

Como você pode ver, eu tenho um sensor de movimento, que eu quero fazer meu monitor acordado do sono toda vez que ele detecta um movimento, mas depois não há movimento em sua área mais, depois de dois minutos ele deve colocar o monitor para dormir.

Você pode por favor me ajudar?

    
por tarzanno 18.07.2015 / 13:46

1 resposta

0

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.

    
por 18.07.2015 / 14:30