froschkoenig-lr
Goto Top

Raspberry Pi - Wasserbenebelung mit zwei offenen Punkte im Quellcode

Hallo zusammen,

für den kommenden Sommer soll eine Wasserbenebelung auf dem Balkon für Kühlung sorgen.
Mein Plan sieht vor, dass ein Raspberry Pi eine 12V/DC Wasserpumpe mittels einem Ein/Aus-Schalter in Kombination mit zwei Taster für zwei Stufen schalten soll.

Mit meinen geringen Python-Kenntnisse habe ich es immerhin mal geschafft, dass mir der Schalter die Tasten freigibt und folglich die gewünschte Stufe (Taster 1 oder Taster 2) den Ausgang zum Relais schaltet.

Dennoch habe ich einen Fehler in dem Quellcode,:
Wird Taster 1 oder Taster 2 betätigt, schaltet der Ausgang für die gewünschte Zeit Ein und auch Aus, aber nur einmal. Es muss folglich der Taster "erneut" betätigt werden.

Des Weiteren ist unschön, dass beim Ausschalten des Schalters Ein/Aus der Ausgang gesetzt bleibt, bis die Zeit abgelaufen ist.

Es wäre super wenn ich Hilfe zu den zwei oben genannten Punkte bekommen könnte, im Moment stehe ich an einem Punkt wo es nicht weiter geht...

Hier mein Quellcode:
#!/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()

Content-Key: 648147

Url: https://administrator.de/contentid/648147

Printed on: April 27, 2024 at 22:04 o'clock