Hallo,
wie Euch bereits bekannt ist fange ich gerade an Python zu lernen.
Mit dem unterstehenden Skript versuche ich sicherzustellen, dass nur korrekte Messwerte meiner 1Wire 18B20 Sensoren in mein mySQL Datenbank gelangen.
Es kommt manchmal vor das ein Sensor mit -62 Grad ausgelesen wird. (ist wohl Treiber bedingt)
kurze Beschreibung:
- zwei messwerte holen
- diese Werte dividieren = Prüfsumme
- ist die Prüfsumme nicht zwischen 0,977 - 1,027 soll neu gelesen werden (also im Programm auf Anfang)
- wenn die Prüfsumme zwischen 0,977 - 1,027 ist soll ein Wert in die Datenbank geschrieben werden und mit dem nächsten Sensor vorgefahren werden.
Im unterstehenden Skript gebe ich die werte noch aus:
[font="Monaco, Consolas, Courier, monospace"] print "neu messen1" ... print "neu messen2"[/font]
[font="Monaco, Consolas, Courier, monospace"]... print "Dieser Wert wird in Datenbank uebergeben" print ist_r1_g1[/font]
[font="Monaco, Consolas, Courier, monospace"]Wie kann ich statt den print Befehlen sagen gehe zum Anfang (auslesen jeweiliger Sensor der falschen Wert gebracht hat) ?[/font]
Danke
Gruß
v1553804
#die werte werden von den sensoren geholt
#ist_r1m1 = erste messung
#ist_r1m2 = zweite messung
fobj = open("/sys/bus/w1/devices/28-00000452df1d/w1_slave", "r")
for line in fobj:
zuordnung = line.split("=")
ist_r1_m1 = zuordnung[0] = zuordnung[1]
fobj.close()
fobj = open("/sys/bus/w1/devices/28-00000452df1d/w1_slave", "r")
for line in fobj:
zuordnung = line.split("=")
ist_r1_m2 = zuordnung[0] = zuordnung[1]
fobj.close()
#hier werden die messwerte von string in int umgewandelt
int_ist_r1_m1 = int(ist_r1_m1)
int_ist_r1_m2 = int(ist_r1_m2)
#hier werden die messwerte von z.b. 22222 in 22.222 umgewandelt
ist_r1_g1 = (int_ist_r1_m1 / 1000.0)
ist_r1_g2 = (int_ist_r1_m2 / 1000.0)
#hier werden die beiden werte geteilt und geben eine pruefsumme
pruef_r1 = (ist_r1_g1 / ist_r1_g2)
print int_ist_r1_m1
print int_ist_r1_m2
print ist_r1_g1
print ist_r1_g2
print pruef_r1
if pruef_r1 > 1.027:
print "neu messen1" #hier soll ein Sprung auf Anfang her
elif pruef_r1 < 0.977:
print "neu messen2" #hier soll ein Sprung auf Anfang her
else:
print "Dieser Wert wird in Datenbank uebergeben" #in DB uebergeben und weiter mit nächsten Sensor
print ist_r1_g1
Alles anzeigen