ich stehe momentan komplett auf dem Schlauch.
Ich frage einen DS18B20 Sensor ab und möchte damit Temperaturgesteuert eine Relais schalten.
Ich kann den Sensor abfragen und auch das Relais schalten.
Sobald ich aber die Abfrag erweitere komme ich durcheinander.
Ich möchte, dass ab einem bestimmen Schwellenwert das Relais geschaltet wird. An diesem Relais hängen 2 Lüfter.
Sobald der Schwellenwert wieder unterschritten ist, soll das Relais wieder geschaltet werden und die Lüfter sollen ausgehen.
Was ich nicht möchte, dass immer wieder das Relais geschaltet wird, obwohl es nicht benötigt wird.
Es soll quasi ein "Merker" gesetzt werden, damit nur bei "ein" oder bei "aus" geschaltet wird.
Code: Alles auswählen
#!/usr/bin/python3
import time
import RPi.GPIO as GPIO
a = ("/sys/bus/w1/devices/28-0000067cc099/w1_slave") # Sensor DS18B20
schwellwert = 22
luefter = "an"
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11, GPIO.LOW)
schleife = True
def sensorauslesen():
try:
sen1 = open(a)
tfile1 = sen1.read()
sen1.close()
tempdata = tfile1.split("\n")[1].split(" ")[9]
temp1 = float(tempdata[2:])
temp1 = temp1 / 1000
temp1 = round(temp1,2)
temp1 = float(temp1)
print(temp1)
abfrage()
except Exception as e:
print ("Sensor 1 Fehler!",e)
abfrage()
def abfrage():
#print(temp1)
if temp1 >= schwellwert and luefter == "an":
print("Luefter laeuft bereits - Temp immer noch zu hoch")
pass
elif temp1 >= schwellwert and luefter == "aus":
luefter = "an"
GPIO.output(11, GPIO.LOW)
elif temp1 < schwellwert and luefter == "an":
GPIO.output(11, GPIO.HIGH)
luefter = "aus"
elif temp1 < schwellwert and luefter == "aus":
print("Temp i.O.")
pass
time.sleep(5)
sensorauslesen()
- Der "Merker" wird immer wieder überschrieben, sodass nicht der letzte Wert hinterlegt ist
- Bei der IF ELIF Abfrage bin ich mir nicht sicher, ob diese an der richtigen Stelle ist. Ich habe extra "print" Befehle eingebaut, diese werden aber nicht ausgegeben.
Danke für die Hilfe