Code: Alles auswählen
Ich bin totaler Anfänger was Python betrifft und benötige etwas Hilfe.
Ich schreibe gerade ein Script mit dem ich meine defekte Heizungssteuerung ersetzen will.
Leider bekomme ich es nicht gebacken dass Script am "Leben zu erhalten".
Ich habe schon einiges über while und for schleifen gelesen, konnte aber nicht erfolgreich umsetzen.
Folgendes Script soll immer wieder ausgeführt werden:
Leider werden hier alle Zeilen ohne Einrückung übernommen
#!/usr/bin/pyton
# coding=utf-8
import glob, os, sys, time
import RPi.GPIO as gp
pfad = "/sys/bus/w1/devices/"
x1 = glob.glob(pfad + "28-01192104e8f4")[0]#OELOFENtemperatur
x2 = x1 + "/w1_slave"
y1 = glob.glob(pfad + "28-03089794262f")[0]#ABGAStemperatur
y2 = y1 + "/w1_slave"
z1 = glob.glob(pfad + "28-0119210f5f25")[0]#LADDOMATtemperatur
z2 = z1 + "/w1_slave"
#=============OELOFENTEMPERATUR==================
def OELOFEN_lesen():
OELOFEN = open(x2, "r")
zeilen = OELOFEN.readlines()
OELOFEN.close()
return zeilen
def OELOFENTEMPERATUR():
OELOFEN = OELOFEN_lesen()
while OELOFEN[0].strip()[-3:] != 'YES':
time.sleep(0.2)
OELOFEN = OELOFEN_lesen()
equals_pos = OELOFEN[1].find('t=')
if equals_pos != -1:
temp_string = OELOFEN[1][equals_pos+2:]
temp_a = float(temp_string) / 1000.0
return temp_a
#=============ABGASTEMPERATUR==================
def ABGAS_lesen():
ABGAS = open(y2, "r")
zeilen = ABGAS.readlines()
ABGAS.close()
return zeilen
def ABGASTEMPERATUR():
ABGAS = ABGAS_lesen()
while ABGAS[0].strip()[-3:] != 'YES':
time.sleep(0.2)
ABGAS = ABGAS_lesen()
equals_pos = ABGAS[1].find('t=')
if equals_pos != -1:
temp_string = ABGAS[1][equals_pos+2:]
temp_b = float(temp_string) / 1000.0
return temp_b
#=============LADDOMATTEMPERATUR==================
def LADDOMAT_lesen():
LADDOMAT = open(z2, "r")
zeilen = LADDOMAT.readlines()
LADDOMAT.close()
return zeilen
def LADDOMATTEMPERATUR():
LADDOMAT = LADDOMAT_lesen()
while LADDOMAT[0].strip()[-3:] != 'YES':
time.sleep(0.2)
LADDOMAT = LADDOMAT_lesen()
equals_pos = LADDOMAT[1].find('t=')
if equals_pos != -1:
temp_string = LADDOMAT[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
return temp_c
#=========================VARIABLEN=FESTLEGEN====
x = (OELOFENTEMPERATUR()) # 28-01192104e8f4
print ("Ölofentemperatur", x)
y = (ABGASTEMPERATUR()) #28-03089794262f
print ("Abgastemperatur", y)
z = (LADDOMATTEMPERATUR()) #28-0119210f5f25
print ("Laddomattemperatur", z)
#===========FESTDEFINIERTE=WERTE=============================================
W1 = 68.00 # Laddomat aus
W2 = 70.00 # Laddomat im Betrieb
W3 = 40.00 # Ofen (Lüfter) aus
W4 = 42.00 # Ofen (Lüfter) in Betrieb
W5 = 78.00 # Abgas OK - Ofen (Lüfter) in Betrieb
W6 = 80.00 # Abgas zu Heiß - Beginn Drosselmodus
W7 = 38.00 # Heizungspumpe aus - Wasser zu kalt
W8 = 40.00 # Heizungspumpe im Betrieb
#=============GPIO=für=Relais=Steuerung===========================
gp.setmode(gp.BCM) # BCM Nummer verwenden
gp.setwarnings(False) # Warnmeldungen abschalten
gp.setup(18, gp.OUT) # Pin12 BCM Nummer 18
gp.setup(24, gp.OUT) # Pin18 BCM Nummer 24
gp.setup(25, gp.OUT) # Pin22 BCM Nummer 25
gp.setup(17, gp.OUT) # Pin11 BCM Nummer 17
#============IF=ELIF=ELSE==================================
#============HAUPTPUMPE=======ÖLOFENPUMPE=================
if x > W8:
gp.output(25, gp.LOW) #Relais 25 Ein, Pumpe ein
print("Hauptpumpe ist ein")
elif x < W7:
gp.output(25, gp.HIGH) #Relais 25 Aus, Pumpe aus
print("Hauptpumpe ist aus")
else:
print ("Falscher Übergabewert in ledSteuerung()")
#===================LADDOMAT=HOLZOFEN======================
if z < W1:
gp.output(18, gp.HIGH) #Relais 18 AN, Pumpe aus
print("Laddomat ist aus")
elif z > W2:
gp.output(18, gp.LOW) #Relais 18 AUS, Pumpe an
print("Laddomat ist an")
#=====================OFEN=(LÜFTER)=EIN/AUS================
if y < W3:
gp.output(24, gp.LOW) #Relais 24
print("Ofen (Lüfter) ist Ausgeschaltet")
elif y > W4:
gp.output(24, gp.HIGH) #Relais 24
print("Ofen (Lüfter) ist in Betrieb")
#============ABGAS=ZU HEIß=LÜFTER=DROSSELN================
if y > W6:
gp.output(17, gp.LOW) #Relais 17
print("Abgas zu heiß - Drosselmodus")
elif y < W5:
gp.output(17, gp.HIGH) #Relais 17
print("Abgas OK")
Im Einzeldurchlauf funktioniert es Perfekt,
schon einmal Danke im voraus
Jens76