Ich versuche gerade meinen Bewegungssensor mit Python abzufragen. Doch bin ich in Python noch ein Noob. Ich kann JS, PHP, Java... aber kein PY. Also neu lernen.
Nun habe ich alles so wie es sein soll. Display geht an bei Bewegung und nach 2 Minuten aus. Doch wenn es einmal mit dem Script ausgeschaltet wurde geht das Display nicht mehr an. Also habe ich ein paar Ausgaben eingebaut, das Callback was den Bewegungsmeldung abfragt reagiert dann nicht mehr. Starte ich das script wieder neu geht es wieder für genau einmal.
Was mache ich falsch? Wieso wird der Callback nicht nocheinmal abgerufen?
Python
import RPi.GPIO as GPIO
import os # Import the os library
import datetime
import time
from datetime import timedelta
SENSOR_PIN =23
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
#start = datetime.datetime(2016, 11, 03, 20, 50, 00)
#now = datetime.datetime.now()
#delta = start -jetzt
displayofftime = datetime.datetime.now()
#print int(delta.total_seconds())
#print '{:%d.%m.%Y %H:%M:%S}'.format(displayofftime)
#print '{:%d.%m.%Y %H:%M:%S}'.format(start)
#datetime.datetime(2005, 7, 14, 12, 30)
#print '{:%d.%m.%Y %H:%M:%S}'.format(datetime.datetime.now())
def mein_callback(channel):
global displayofftime
# Hier kann alternativ eine Anwendung/Befehl etc. gestartet werden.
os.system("echo 0 > /sys/class/backlight/rpi_backlight/bl_power")
displayofftime = datetime.datetime.now() + timedelta(minutes=2)
print '{:%d.%m.%Y %H:%M:%S}'.format(displayofftime)
print('Es gab eine Bewegung!')
try:
GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=mein_callback)
while True:
delta=displayofftime-datetime.datetime.now()
#print '{:%d.%m.%Y %H:%M:%S}'.format(displayofftime)
#print int(delta.total_seconds())
#print "BEN"
if int(delta.total_seconds())<0:
os.system("echo 1 > /sys/class/backlight/rpi_backlight/bl_power")
time.sleep(10)
except KeyboardInterrupt:
print "Beende..."
GPIO.cleanup()
Alles anzeigen