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
