Hallo zusammen,
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, das funktioniert auch gut.
Wenn nun allerdings jemand am Bewegungsmelder vorbeikommt wird das Pythonscript "aktiviert" und ganz normal abgearbeitet. Was zu folge hat, dass der Bildschrim wieder ausgeht, wenn sich niemand mehr bewegt.
Ist es möglich wenn der Powerstatus bereits auf "on" steht, dass das Pythonscript pausiert o.ä. wird bis der Powerstatus wieder auf "off" gesetzt wird?
Der Powerstauts lässt sich mit echo pow 0 | cec-client -s -d 1' abfragen.
Hier der bisherige Code:
#!/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 "Automatische Displayanzeige (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 - n LPD
#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)
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()
Alles anzeigen
Ich hoffe mir kann jemand weiterhelfen
Gruß
Philipp