Raspberry Pi에서 화면 보호기 켜기 및 끄기 - Python 스크립트

Raspberry Pi에서 화면 보호기 켜기 및 끄기 - Python 스크립트

저는 Python 프로그래밍에 능숙하지 않습니다. 조건에 따라 모니터를 깨우고 절전 모드로 전환하는 스크립트를 어떻게 작성합니까?

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.

보시다시피 모션 센서가 있는데, 모션이 감지될 때마다 모니터를 절전 모드에서 깨우고 싶지만 해당 영역에 더 이상 모션이 없으면 2분 후에 모니터를 절전 모드로 전환해야 합니다.

저를 도와주세요?

답변1

x11-xserver-utils명령을 얻으려면 패키지를 설치하십시오 xset. 그런 다음 이를 사용하여 강제로DPMS모니터에 켜짐 또는 꺼짐 신호를 보냅니다. DISPLAY환경에서 변수를 설정해야 할 수도 있습니다 . 예:

DISPLAY=:0 xset dpms force on
sleep 10
DISPLAY=:0 xset dpms force off

파이썬에서는 이런 일을 할 수 있습니다. 매초마다 여론조사를 실시합니다. 디스플레이를 켜거나 껐는지 여부를 기억하십시오. 신호가 활성화될 때마다 시간을 기록해 두십시오. 마지막 활성 이후 시간이 2분을 초과하면 디스플레이를 끄십시오. 느슨하게:

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)

화면과 상호 작용 중이고 gpio와 별도로 이 시간 동안 화면이 계속 켜져 있도록 하려면 표준 X11 유휴 메커니즘이 2분의 유휴 시간이 경과했음을 감지하여 자동으로 화면을 끄는 것이 더 나을 것입니다. 프로그램을 사용하여 화면을 강제로 켜십시오.

다음을 한 번 호출하여 유휴 시간 제한을 120초로 설정할 수 있습니다.

xset dpms 120 120 120

그런 다음 파이썬에서 강제를 제거할 수 있습니다.

관련 정보