Hi,
ich steige gerade erst mehr oder weniger in Python ein und bin aktuell ein wenig am Zweifeln.
Was ich erreichen möchte:
Step 1: Touchscreen Display Beleuchtung für 5 Minuten aktivieren wenn Bewegung erkannt wurde
Step 2: 433MHz Sensor schalten zu bestimmten Zeiten
Nun habe ich das folgende Skript:
Code
import RPi.GPIO as GPIO
import time
import os
SENSOR_PIN = 23
#GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
logfile = '/var/log/pir.log'
last_trigger = 0
current_time = 0
def log(msg):
file = open(logfile,"a")
file.write("%s: %s\n" % (time.strftime("%d.%m.%Y %H:%M:%S"), msg))
file.close
def set_LT(lt):
global last_trigger
last_trigger = lt
def calc_LTdiff(ct):
diff = ct-last_trigger
return diff
def echo2(text):
print(time.strftime("%d.%m.%Y %H:%M:%S") + ': ' + str(text))
def my_callback(channel):
echo2('Bewegung erkannt')
log('Bewegung erkannt')
set_LT(time.time())
try:
GPIO.add_event_detect(SENSOR_PIN , GPIO.RISING, callback=my_callback)
monitor_an = 0
while True:
aktuelle_stunde = int(time.strftime("%H"))
diff = calc_LTdiff(time.time())
echo2('Diff to LT: ' + str(diff))
if diff > 360 and diff < 500:
monitor_an = 0
elif diff >= 0 and diff <= 360:
if aktuelle_stunde >= 8 and aktuelle_stunde <= 22:
monitor_an = 1
else:
monitor_an = 0
else:
monitor_an = 0
if monitor_an==1:
echo2('Monitor an')
os.system('sudo echo 0 > /sys/class/backlight/rpi_backlight/bl_power')
else:
echo2('Monitor aus')
os.system('sudo echo 1 > /sys/class/backlight/rpi_backlight/bl_power')
echo2('sleep...')
time.sleep(10)
except KeyboardInterrupt:
print "Beende..."
GPIO.cleanup()
Alles anzeigen
An sich funktioniert das An- und Ausmachen des Displays problemlos.
Aber halt nicht im Skript selbst...
Wenn ich die beiden Zeilen mit os.system('sudo...') an anderer Stelle im Skript verwende klappt es.
Aber sobald ich das so mache wie oben beschrieben wird keine Differenz mehr berechnet und entsprechend die Variable nicht monitor_an auf 1 gesetzt...
Kann mir jemand sagen woran es hapert?
Danke im Voraus!