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.

正如你所看到的,我有一個運動感應器,我想讓我的顯示器在每次感應到運動時從睡眠狀態喚醒,但在其區域不再有運動後,兩分鐘後它應該讓顯示器進入睡眠狀態。

你能幫我麼?

答案1

安裝x11-xserver-utils包以取得xset命令。然後你可以用它來強制DPMS向顯示器發出開啟或關閉訊號。您可能需要DISPLAY在環境中設定變數。例如:

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

你可以在 python 中做這樣的事情。每秒輪詢一次。請記住您是否已將顯示器設定為開啟或關閉。每當您的訊號處於活動狀態時,請注意當天的時間。當自上次活動以來的時間超過 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

然後可以從蟒蛇身上移除力量。

相關內容