Also bin jetzt auf mysql umgestiegen. Dieser wird jetzt aber mit nem Interrupt gestartet
# -*- coding: utf-8 -*-
import time, mysql, mysql.connector
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# Verwendete Pins am Rapberry Pi
A=18
B=23
C=24
D=25
closed=4
safe=17
rain=22
start=27
wait = 0.005
# Pins aus Ausgänge definieren
GPIO.setup(A,GPIO.OUT)
GPIO.setup(B,GPIO.OUT)
GPIO.setup(C,GPIO.OUT)
GPIO.setup(D,GPIO.OUT)
GPIO.setup(safe,GPIO.OUT)
GPIO.setup(closed,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(rain,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(start,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
GPIO.output(A, False)
GPIO.output(B, False)
GPIO.output(C, False)
GPIO.output(D, False)
GPIO.output(safe, False)
# Schritte 1 - 8 festlegen
def Step1():
GPIO.output(D, True)
time.sleep (wait)
GPIO.output(D, False)
def Step2():
GPIO.output(D, True)
GPIO.output(C, True)
time.sleep (wait)
GPIO.output(D, False)
GPIO.output(C, False)
def Step3():
GPIO.output(C, True)
time.sleep (wait)
GPIO.output(C, False)
def Step4():
GPIO.output(B, True)
GPIO.output(C, True)
time.sleep (wait)
GPIO.output(B, False)
GPIO.output(C, False)
def Step5():
GPIO.output(B, True)
time.sleep (wait)
GPIO.output(B, False)
def Step6():
GPIO.output(A, True)
GPIO.output(B, True)
time.sleep (wait)
GPIO.output(A, False)
GPIO.output(B, False)
def Step7():
GPIO.output(A, True)
time.sleep (wait)
GPIO.output(A, False)
def Step8():
GPIO.output(D, True)
GPIO.output(A, True)
time.sleep (wait)
GPIO.output(D, False)
GPIO.output(A, False)
def Step_off():
GPIO.output(A, False)
GPIO.output(B, False)
GPIO.output(C, False)
GPIO.output(D, False)
def vor(steps):
# Volle Umdrehung
for i in range (steps):
Step1()
Step2()
Step3()
Step4()
Step5()
Step6()
Step7()
Step8()
#print i
def ruck(steps):
# Volle Umdrehung
for i in range (steps):
Step8()
Step7()
Step6()
Step5()
Step4()
Step3()
Step2()
Step1()
#print i
def close():
geschl=GPIO.input(closed)
GPIO.output(safe, True)
while geschl != 1:
ruck(1)
geschl=GPIO.input(closed)
time.sleep(0.5)
def openit(steps):
GPIO.output(safe, True)
time.sleep(1.0)
vor(steps)
GPIO.output(safe, False)
print "Fenster", steps
def close1(channel):
print "Regen erkannt, Fenster wird geschlossen"
close()
def move(channel):
connection = mysql.connector.connect(host = 'IP-Adresse', \
user = 'vorhanden', \
passwd = 'einpasswort', \
db = 'test')
cursor=connection.cursor()
cursor.execute("SELECT steps FROM Fenster")
steps=int(cursor.fetchall()[0][0])
if 0 < steps <= 256:
print "Fahre", steps, "steps"
close()
openit(steps)
else:
print "Zu viele Schritte, Abbruch"
GPIO.add_event_detect(rain, GPIO.RISING, callback=close1, bouncetime=500)
GPIO.add_event_detect(start, GPIO.RISING, callback=move, bouncetime=2000)
print "Anlauf, Fenster wird geschlossen"
close()
GPIO.output(safe, False)
while True:
time.sleep(10)
GPIO.cleanup()
Alles anzeigen