Hallo, ich möchte mittels Raspberry und Python Lüfter steuern.
Die an aus Intervalle funktionieren, jetzt möchte ich jedoch noch eine Auszeit der Lüfter in den Skript vorsehen.
Nachfolgend findet ihr meinen Code, ich habe die Lüfteransteuerungen aufgrund der Fehlersuche durch print Befehle erstetzt.
#!/usr/bin/python
# coding=utf-8
#Zeitsteuerung der Luefter mittels Taster
import time
import RPi.GPIO as GPIO
import os
#Definition der Variablen fuer die Pins
BUTTON = 38
LED = 40
#Zeitvorgabe in Sekunden fuer Luefter an
on = 5
#Zeitvorgabe in Sekunden fuer Luefter aus
off = 7
#Auszeit der Lueftersteuerung
#Start in Stunden.Minuten
start = 14.15
#Ende in Stunden.Minuten
ende = 14.20
#Variable fuer aktuellen Zustand der LED
led_on = False
#
#
#Verwendung der Boardbeschriftung und Unterdrueckung von Warnungen
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
#Definition des Input und des Output
GPIO.setup(BUTTON, GPIO.IN)
GPIO.setup(LED, GPIO.OUT)
#Definiton der Callback Funktion
def toggle_led(channel):
global led_on
led_on = not led_on
GPIO.output(LED,GPIO.HIGH if led_on else GPIO.LOW)
#
#Definiton der Funktion zur Zeitschaltung der Luefter
def zeitschaltuhr (an, aus):
while led_on == True:
print "anschalten"
#For Schleife fuer time.sleep, um die Reaktionszeit auf eine Sekunde zu verkuerzen
for i in range(an):
time.sleep(1.)
print i
#Aktuelle Zeit (Stunden.Minuten) abfragen und in Variable schreiben
std = time.strftime("%H.%M")
#Bedingung zur Abschaltung per Schalter
if led_on == False:
break
#Zeitbedingung (Auszeit) für Fortsetzung der Schleife
elif (std >= start) and (std <= ende):
print "Zeitbedingung"
break
print "auschalten"
for i in range(aus):
time.sleep(1.)
print i
if led_on == False:
break
#
GPIO.add_event_detect(BUTTON, GPIO.FALLING, callback=toggle_led, bouncetime=350)
#
#
try:
while True:
zeitschaltuhr (on, off)
pass
#
except KeyboardInterrupt:
print "Ctrl-C - quit"
#
finally:
GPIO.cleanup()
Alles anzeigen
Ich gebe initial ein Startzeit und eine Endzeit für die Auszeit vor, in einer For -Schleife frage ich dieses Zeitfenster mittels einer If-Bedingung
ab. Bei meiner Fehlersuche konnte ich feststellen, dass die If-Bedingung nicht berücksichtigt wird. Entferne ich z.B einen Teil der If-Bedinfung
also folgendermaßen
dann wird die Bedingung berücksichtigt.
Ich habe noch nicht viel Erfahrung mit Python bzw. Programmieren und komme irgendwie nicht weiter. Hätte vielleicht jemand einen Tip?