Hallo,
für den kommenden Sommer soll eine Sprühnebelanlage unser Balkon mit kühlfeuchter Luft versorgen.
Der praktische Aufbau steht, das Python-Programm, welches auf einem Raspberry Pi 3 B+ ausgeführt wird steht nur teilweise, genauer gesagt enthält es zwei Fehler denen ich nicht Herr werde.
Gewünschte Funktionsbeschreibung:
Schalter 1 = Nebler an/aus
Taster 1 = Nebler minimal (langer Pumpenstillstand, kurze Sprühzeit)
Taster 2 = Nebler maximal (kurzer Pumpenstillstand, längere Sprühzeit)
Schalter 1 ein schaltet den Nebler ein -> Taster 1 oder Taster 2 startet Schleife mit vorgegebenen Zeiten (lang oder kurz) -> Schalter 1 aus schaltet den Nebler aus.
Optimal wäre es gewesen, wenn Taster 1 und Taster 2 die Intensivität der Nebelung mit +/- variabel verändert hätte, doch das war mir zu hoch.
Das folgende Programm schaltet mir bei Tastendruck die Wasserpumpe über ein Relais, allerdings startet die Schleife nach Ablauf der Ausschaltzeit nicht erneut, da wahrscheinlich der Taster nicht als Schalter gewertet wird.
Zudem schaltet sich der Pumpenausgang nicht sofort bei betätigen des Schalter 1 aus nicht ab.
Kann mir jemand Unterstützung bieten, da sich meine Python-Kenntnisse auf ein Minimum begrenzen.
#!/usr/bin/python
#-*- coding:utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import time
import os
Schalter_Kuehlung_EinAus = 22
Taster_Kuehlung_Stufe_1 = 23
Taster_Kuehlung_Stufe_2 = 24
Ausgang_Wasserpumpe = 17
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(Schalter_Kuehlung_EinAus, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Taster_Kuehlung_Stufe_1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Taster_Kuehlung_Stufe_2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(Ausgang_Wasserpumpe, GPIO.OUT)
try:
while True:
if GPIO.input(Schalter_Kuehlung_EinAus) == True:
Status_Taster_Kuehlung_Stufe_1 = True
Status_Taster_Kuehlung_Stufe_2 = True
if Status_Taster_Kuehlung_Stufe_1 and GPIO.input(Taster_Kuehlung_Stufe_1) and not GPIO.input(Taster_Kuehlung_Stufe_2) == True:
GPIO.output(Ausgang_Wasserpumpe,GPIO.HIGH)
os.system('clear')
print "Wasserpumpe für 15 Sekunden eingeschaltet!"
time.sleep(15)
GPIO.output(Ausgang_Wasserpumpe,GPIO.LOW)
os.system('clear')
print "Wasserpumpe für 300 Sekunden ausgeschaltet!"
time.sleep(300)
if Status_Taster_Kuehlung_Stufe_2 and GPIO.input(Taster_Kuehlung_Stufe_2) and not GPIO.input(Taster_Kuehlung_Stufe_1) == True:
GPIO.output(Ausgang_Wasserpumpe,GPIO.HIGH)
os.system('clear')
print "Wasserpumpe für 30 Sekunden eingeschaltet!"
time.sleep(30)
GPIO.output(Ausgang_Wasserpumpe,GPIO.LOW)
os.system('clear')
print "Wasserpumpe für 120 Sekunden ausgeschaltet!"
time.sleep(120)
except KeyboardInterrupt:
GPIO.cleanup()
Alles anzeigen