Hallo,
bin gerade dabei eine Wetterstation zu bauen. Funktioniert auch soweit zufriedenstellent.
Hab einen Arduino mini clon mit ein paar sensoren und einem Funkmodul in eine umgebaute Solarlampe eingebaut.
Weiß nicht ob ich da im Richtigen Forum poste, da es sich um Python Code handelt, allerdings ist glaub ich eher die rrd Datenbank mein Problem.
Bin jetzt gerade dabei die Daten in eine rrd- Datenbank zu schreiben hab da allerdings irgentein Problem:
Das ist mal die Fehlermeldung die beim Ausführen kommt:
ZitatAlles anzeigen
initialisierung
Temperatur: 20.90 C Luftfeuchtigkeit: 44.50 Ds1820Temp: 21.31 Lichtsensor: 3.09
Stunde:Minute:Sekunde: 20:10:13
N:21.31:20.9:0:0:3.09:44.5
Traceback (most recent call last):
File "funkempf.py", line 207, in <module>
Datenverarbeitung(Datenuebertragung())
File "funkempf.py", line 184, in Datenverarbeitung
rrdtool.update("%s/wetterstation.rrd" % (os.path.dirname(os.path.abspath(__file__))), data)
rrdtool.error: /home/pi/Wetterstation/wetterstation.rrd: found extra data on update argument: 3.09:44.5
Zitat
Temperatur: 20.90 C Luftfeuchtigkeit: 44.50 Ds1820Temp: 21.31 Lichtsensor: 3.09
Stunde:Minute:Sekunde: 20:10:13
Das sind die Daten von der Wetterstation.
Das ganze kommt als Ascii Liste per Funk. Hab die Sache dann umgwandelt in char, dann in Listen für die jeweiligen Messwerte aufgeteilt und schließlich daraus Floatzahlen berechnet.
Die Konfiguration der Datenbank sieht folgendermaßen aus:
ZitatAlles anzeigenrrdtool create wetterstation.rrd --step 900 \
> DS:tempds1820:GAUGE:1200:-40:80 \
> DS:tempdht:GAUGE:1200:-40:80 \
> DS:Luftdruck:GAUGE:1200:800:1100 \
> DS:Batterie:GAUGE:1200:0:5\
> DS:Helligkeit:GAUGE:1200:0:5\
> DS:Luftfeuchtigkeit:GAUGE:1200:0:100 \
> RRA:AVERAGE:0.5:1:960 \
> RRA:MIN:0.5:96:3600 \
> RRA:MAX:0.5:96:3600 \
> RRA:AVERAGE:0.5:96:3600
Hier geschieht dann die Ausgabe, die erstellung des Datenstrings für rrd und die Update funktion.
print("Temperatur: %.2f C Luftfeuchtigkeit: %.2f Ds1820Temp: %.2f Lichtsensor: %.2f" % (listinfloat(w1),listinfloat(w2),listinfloat(w3), listinfloat(w4)))
print strftime("Stunde:Minute:Sekunde: %H:%M:%S", lt)
#> DS:tempds1820:GAUGE:1200:-40:80 \ mw1
#> DS:tempdht:GAUGE:1200:-40:80 \ mw2
#> DS:Luftdruck:GAUGE:1200:800:1100 \ mw3
#> DS:Batterie:GAUGE:1200:0:5\ mw4
#> DS:Helligkeit:GAUGE:1200:0:5\ mw5
#> DS:Luftfeuchtigkeit:GAUGE:1200:0:100 \ mw6
data="N:"
data+=str(listinfloat(w3))
data+=":"
data+=str(listinfloat(w1))
data+=":"
data+="0"
data+=":"
data+="0"
data+=":"
data+=str(listinfloat(w4))
data+=":"
data+=str(listinfloat(w2))
print(data)
rrdtool.update("%s/wetterstation.rrd" % (os.path.dirname(os.path.abspath(__file__))), data)
Alles anzeigen
Alles bis auf die rrdtool.update Funktion funktioniert Fehlerfrei!
Was mache ich da falsch? Die Dateneingabe für die rrd Datenbank würde ja so aussehen oder: N:21.31:20.9:0:0:3.09:44.5 (2 Sensordaten fehlen noch)