Es soll ein PIR BewegungsSensor zu einer bestimmten Zeit ein (läuft über Nacht) und wieder ausgeschaltet werden. Bei erkannter Bewegung wird dann ein Relais geschaltet.
Irgendwie funktioniert das noch nicht wie gewollt.
Habe mal den Code angehangen (ausser die Classen zur Zeit und den GPio), vielleicht hat ja jemand eine Idee wo der Fehler liegt, kann auch ganz anders sein.
"Config"
[pir_config]
pir = 7
rel = 6
startzeit = 11,00 #ohne funktion
endzeit = 06,00 #ohne funktion
schaltdauer = 4
[cron_sprache]
txt_1 = Zeit aktiv
txt_2 = Zeit inaktiv
txt_3 = aktuelles Datum & Zeit
txt_4 = eingestellte Startzeit
txt_5 = Startzeit + Schaltdauer
txt_6 = Ende
[pir_sprache]
txt_0 = Bewegungsmelder Zeit Test (CTRL-C Ende)
txt_1 = Warte auf Bewegungsmelder Einstellungen ...
txt_2 = Fertig
txt_3 = Bewegung erkannt
txt_4 = Ende
"start.py"
#!/usr/bin/python
import time
import datetime
import subprocess
from ClassZeit import Zeit
from ConfigParser import SafeConfigParser
#ruft Biblothek auf
parser= SafeConfigParser()
#liest die configDatei zeilen weise ein
parser.read ('/home/pi/meins/script/pir/pirconfig.ini')
#Configzeile
anfangszeit = str(parser.get('pir_config','startzeit'))
endzeit = str(parser.get('pir_config','endzeit'))
txt_4 = parser.get('pir_sprache','txt_4')
myZeit = Zeit
schalter1 = myZeit('Licht')
schalter1.set(00,00, 06,00) # 00:00 --> 6:00
schalter1.set(11,00, 23,59) # 22:00 --> 00:00
while(True):
time.sleep(5)
now = datetime.datetime.now()
h = now.hour
m = now.minute
r = schalter1.check(h, m)
print("",schalter1.name,r)
if(r==True):
print(subprocess.call(['/home/pi/meins/script/pir/pir.py']), schalter1.name, r)
else:
print("nein")
time.sleep(50)
#Abbruch Tastatur
#except KeyboardInterrupt:
#print " " + (txt_4)
"pir.py"
#!/usr/bin/python
#importiert python Biblotheken
import time
from time import sleep, localtime
import datetime
import RPi.GPIO as GPIO
import os
import subprocess
from ConfigParser import SafeConfigParser
from ClassGpio import SimpleGPIO
from ClassZeit import Zeit
#ruft Biblothek auf
parser= SafeConfigParser()
#liest die configDatei zeilen weise ein
parser.read ('/home/pi/meins/script/pir/pirconfig.ini')
#Configzeile
GPIO_PIR = int(parser.get('pir_config','pir'))
GPIO_REL = int(parser.get('pir_config','rel'))
anfangszeit = str(parser.get('pir_config','startzeit'))
endzeit = str(parser.get('pir_config','endzeit'))
txt_0 = parser.get('pir_sprache','txt_0')
txt_1 = parser.get('pir_sprache','txt_1')
txt_2 = parser.get('pir_sprache','txt_2')
txt_3 = parser.get('pir_sprache','txt_3')
txt_4 = parser.get('pir_sprache','txt_4')
print (txt_0)
#Verwendet BCM GPIO 00..nn numern
GPIO.setmode(GPIO.BCM)
#Setzt pins als input&output
GPIO.setup(GPIO_PIR,GPIO.IN)
#GPIO.setup(GPIO_REL,GPIO.OUT)
#Variablen
Current_State = 0
Previous_State = 0
try:
print (txt_1)
while GPIO.input(GPIO_PIR)==1:
Current_State = 0
print " " + (txt_2)
while True:
#Liest Pir Status
Current_State = GPIO.input(GPIO_PIR)
#Bedingung
if Current_State==1 and Previous_State==0:
print " " + (txt_3)#Hilfetext
gpio_7 = SimpleGPIO(GPIO_REL)
gpio_7.write(1)
sleep(100)#Zeitveroegerung koennte Body aussetzen?
Previous_State=1
elif Current_State==0 and Previous_State==1:
print " " + (txt_2)#Hilfetext ini
gpio_7.writeaus(0)
Previous_State=0
time.sleep(0.01)#Zeitverzoegerung Script
myZeit = Zeit
schalter1 = myZeit('Licht')
schalter1.set(0,0, 06,00) # 00:00 --> 6:00
schalter1.set(11,00, 23,59) # 22:00 --> 00:00
while(True):
time.sleep(5)
now = datetime.datetime.now()
h = now.hour
m = now.minute
r = schalter1.check(h, m)
print("",schalter1.name,r)
if(r==False):
os.system('/home/pi/meins/script/pir/start.py')
#Abbruch Tastatur
except KeyboardInterrupt:
print " " + (txt_4)
# Reset GPIO settings
GPIO.cleanup()