Berechnung in Schleifen
Verfasst: Mittwoch 20. August 2014, 19:24
Hallo Forum,
ich baue mir gerade eine Temperaturüberwachung mit einem Raspberry Pi für meine KWL Anlage - http://de.wikipedia.org/wiki/Kontrollie ... C3%BCftung
Soweit habe ich alles am laufen, allerdings stehe ich nun vor dem Problem dass ich gerne die Energieeffizienz meiner KWL-Anlage automatisch berechnen möchte.
Die Formel lautet: Wirkungsgrad = (Zulufttemperatur - Frischlufttemperatur) / (Ablufttemperatur - Frischlufttemperatur) * 100
Ich würde nun gerne bei der Schleife ansetzen wollen.
Diese Schleife fragt die Sensoren ab und liefert die aktuelle Temperatur. Die Abfrage der Sensoren dauert aber immer und sollte nicht zu häufig / schnell hintereinander ausgeführt werden, daher würde ich gerne die ausgelesenen Werte aus "data" berechnen.
Ich müsste also irgendwie die Berechnung (data[3] - data[1]) / (data[2] - data[3]) *100 eingebaut bekommen. Wer kann mir dabei helfen?
Das Skript habe ich im Internet gefunden, ich selber bin Python-Neuling.
http://www.kompf.de/weather/pionewiremini.html
Hier das Skript:
Wenn ich das Skript wie oben stehend ausführe erhalte ich durch print die Ausgabe:
12.562
20.437
19.187
15.25
N:12.5:20.437:19.125:15.25:1
Ziel ist es später eine Ausgabe zu erhalten.
12.562 (data[1])
20.437 (data[2])
19.187 (data[3])
15.25 (data[4])
83.42 (errechnet durch die Formel data[3] - data[1]) / (data[2] - data[3]) *100
ich baue mir gerade eine Temperaturüberwachung mit einem Raspberry Pi für meine KWL Anlage - http://de.wikipedia.org/wiki/Kontrollie ... C3%BCftung
Soweit habe ich alles am laufen, allerdings stehe ich nun vor dem Problem dass ich gerne die Energieeffizienz meiner KWL-Anlage automatisch berechnen möchte.
Die Formel lautet: Wirkungsgrad = (Zulufttemperatur - Frischlufttemperatur) / (Ablufttemperatur - Frischlufttemperatur) * 100
Ich würde nun gerne bei der Schleife
Code: Alles auswählen
for path in pathes:Diese Schleife fragt die Sensoren ab und liefert die aktuelle Temperatur. Die Abfrage der Sensoren dauert aber immer und sollte nicht zu häufig / schnell hintereinander ausgeführt werden, daher würde ich gerne die ausgelesenen Werte aus "data" berechnen.
Ich müsste also irgendwie die Berechnung (data[3] - data[1]) / (data[2] - data[3]) *100 eingebaut bekommen. Wer kann mir dabei helfen?
Das Skript habe ich im Internet gefunden, ich selber bin Python-Neuling.
http://www.kompf.de/weather/pionewiremini.html
Hier das Skript:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re, os, rrdtool, time
# function: read and parse sensor data file
def read_sensor(path):
value = "U"
try:
f = open(path, "r")
line = f.readline()
if re.match(r"([0-9a-f]{2} ){9}: crc=[0-9a-f]{2} YES", line):
line = f.readline()
m = re.match(r"([0-9a-f]{2} ){9}t=([+-]?[0-9]+)", line)
if m:
value = str(float(m.group(2)) / 1000.0)
f.close()
except (IOError), e:
print time.strftime("%x %X"), "Error reading", path, ": ", e
return value
# define pathes to 1-wire sensor data
pathes = (
"/sys/bus/w1/devices/28-000004e12842/w1_slave",
"/sys/bus/w1/devices/28-000004e1378f/w1_slave",
"/sys/bus/w1/devices/28-000004e1485c/w1_slave",
"/sys/bus/w1/devices/28-000004e24d48/w1_slave"
)
# read sensor data
data = 'N'
for path in pathes:
data += ':'
data += read_sensor(path)
i = read_sensor(path) # Zu Debugzwecken - diese Zeile sollte wieder raus da hier die Sensoren nochmals abgefragt werden!
print i
time.sleep(1)
data += ':'
bypass = open("/sys/class/gpio/gpio10/value", "r")
bypassline = bypass.readline().rstrip()
bypass.close()
data += bypassline
print data
# insert data into round-robin-database
rrdtool.update(
"/mnt/ramdisk/kwl.rrd",
data)
Wenn ich das Skript wie oben stehend ausführe erhalte ich durch print die Ausgabe:
12.562
20.437
19.187
15.25
N:12.5:20.437:19.125:15.25:1
Ziel ist es später eine Ausgabe
Code: Alles auswählen
N:12.5:20.437:19.125:15.25:1:83.42
12.562 (data[1])
20.437 (data[2])
19.187 (data[3])
15.25 (data[4])
83.42 (errechnet durch die Formel data[3] - data[1]) / (data[2] - data[3]) *100