ich habe auf meinen Raspberry ein Script laufen welches mir den Bildschirm über HDMI CEC ein und ausschaltet. Das ganze wird über einen Bewegungsmelder gesteuert und funktioniert super.
Allerdings soll der Bildschirm auch noch über eine PHP-Script ein und wieder ausgeschalten werden.
Wenn nun allerdings jemand am Bewegungsmelder vorbeikommt wird das Script aktiviert und ganz normal abgearbeitet. Was zu folge hat, dass der Bildschrim wieder ausgeht, wenn sich niemand mehr bewegt.
Ist es möglich den Powerstatus abzufragen und wenn dieser bereits auf "on" steht, dass das Script pausiert wird bis der Powerstatus wieder auf "off" gesetzt wird?
Hier der bisherige Code:
Code: Select all
#!/usr/bin/python
# Import der Python libraries
import RPi.GPIO as GPIO
import time
import datetime
import subprocess
# GPIO definieren,
PIR_PIN = 7
Led = 11
#Board Mode
GPIO.setmode(GPIO.BOARD)
print "Displayausgabe (CTRL-C zum Beenden)"
print "========================================="
#GPIO als Input definieren
GPIO.setup(PIR_PIN, GPIO.IN)
#Led GPIOs definieren
GPIO.setup(Led, GPIO.OUT)
GPIO.output(Led, GPIO.HIGH)
Read = 0
State = 0
print "%s: Sensor initialisieren ..." % datetime.datetime.now()
# Warten bis Sensor sich meldet
while GPIO.input(PIR_PIN) !=0:
time.sleep(0.1)
print "%s: Fertig! Warte auf Bewegung..." % datetime.datetime.now()
# Schleife bis CTRL+C
def MOTION (PIR_PIN):
print " %s: Bewegung erkannt!" % datetime.datetime.now()
GPIO.output(Led, GPIO.LOW) #LED an
# Standby deaktivieren
#1. standby to weak up from standby
#2. wake up from standby to on n. LPD
subprocess.Popen('echo "on 0" | sudo cec-client -s -d 1', shell=True)
subprocess.Popen('echo "on 0" | sudo cec-client -s -d 1', shell=True)
time.sleep(0.5)
subprocess.Popen('sudo chvt 6 && sudo chvt 7', shell=True)
try:
#Ereignis definieren:
GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=MOTION)
while True:
# Standby aktivieren
subprocess.Popen('echo "standby 0" | sudo cec-client -s -d 1', shell=True)
print "%s: Fertig! Warte auf Bewegung..." % datetime.datetime.now()
GPIO.output(Led, GPIO.HIGH)#LED aus
time.sleep(60)
except KeyboardInterrupt:
print "Exit"
GPIO.cleanup()
Gruß
Philipp