2016-07-22 22 views
1

My Pi Logs Temperatur und Luftfeuchtigkeit jede Minute in eine CSV-Datei und in einer RRDtool Datenbank:Log Temperatur und Feuchtigkeit in RRDtool

ich so diese RRDtool Datenbank erstellt:

rrdtool create /home/pi/Desktop/GarageData.rrd --step 60 
DS:Temperatur:GAUGE:300:U:U 
DS:Humidity:GAUGE:300:U:U 
RRA:AVERAGE:0.5:12:24 
RRA:AVERAGE:0.5:288:31 

So ist die Datenbank sollte akzeptiere einen Wert alle 60 Sekunden

Ich logge mit einem Python 3 Skript. Hier ist der wichtige Teil.

import Adafruit_DHT 
from rrdtool import update as rrd_update 
humidity, temperatur = Adafruit_DHT.read_retry(Adafruit_DHT.AM2302, '22') 
rrd_update('/home/pi/Desktop/GarageData.rrd', 'N:%s:%s' %(temperatur, humidity)) 

wenn rrdtool fetch GarageData.rrd AVERAGE r300 mit mir nur nan

     Temperatur   Humidity 

1469111040: nan nan 
1469128320: nan nan 
1469145600: nan nan 
1469162880: nan nan 
1469180160: nan nan 
1469197440: nan nan 

zu sehen und wenn der Datenbank Plotten .... nichts ist, zeigt, in der Handlung auf.

Wo ist das Problem in meinem Skript? Ich dachte, ich habe alles genau so gemacht wie in this Tutorial

+0

um sicherzustellen, dass Dinge passieren, wie Sie sie erwarten, würde ich eine Zeile zu Ihrem Python-Skript hinzufügen, wo Sie die Daten zu stderr vor der Übergabe an rrdtool, so dass Sie wissen, welche Daten Sie senden .. . –

Antwort

1

Sie haben vielleicht noch nicht genug Daten gesammelt.

Ihre RRD-Definition verwendet einen 60er-Schritt, aber der kleinste RRA ist ein 12-Minuten-Schritt (1cdp = 12pdp). Das bedeutet, dass Sie mindestens zwei Einträge haben müssen, damit Ihnen etwas Sinnvolles zur Verfügung steht. Daher sollten Sie die Daten mindestens 24 Minuten gesammelt haben, wahrscheinlich mehr, bevor Sie etwas in Ihrer Ausgabe sehen.

Da Sie versuchen, Daten in einem Intervall von 5 Minuten zu holen, würde ich vorschlagen, dass Sie auch eine 5pdp RRA und möglicherweise auch eine 1pdp RRA zum Testen haben. Diese RRA sind auch ziemlich kurz, aber ich nehme an, Sie haben einen Grund dafür.

rrdtool create /home/pi/Desktop/GarageData.rrd --step 60 DS:Temperatur:GAUGE:300:U:U DS:Humidity:GAUGE:300:U:U RRA:AVERAGE:0.5:1:600 RRA:AVERAGE:0.5:5:200 RRA:AVERAGE:0.5:12:24 RRA:AVERAGE:0.5:288:31

Wenn Sie diese zusätzlichen RRAs fügen dann können Sie Ihre gesammelten Daten viel früher sehen.

Wenn in den Werten immer noch nan angezeigt wird, sind Ihre gesammelten Daten möglicherweise falsch, und Ihr read_retry() - Funktionsaufruf gibt keine gültigen Daten zurück. Drucken Sie diese Werte in eine Datei, damit Sie sehen können, dass sie wirklich numerisch sind.