将温度和湿度记录到RRDtool中

时间:2016-07-22 14:14:24

标签: python-3.x logging raspberry-pi rrdtool

My Pi将每分钟的温度和湿度记录到csv文件和RRDtool数据库中:

我创建了这个RRDtool数据库:

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

因此数据库应该每60秒接受一个值

我正在使用python 3脚本进行日志记录。这是重要的部分。

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))

使用rrdtool fetch GarageData.rrd AVERAGE r300时,我只看到nan

                     Temperatur            Humidity

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

当绘制数据库时......图中没有显示任何内容。

我的脚本中的问题在哪里?我以为我在this Tutorial

中做了一切

1 个答案:

答案 0 :(得分:1)

您可能尚未收集到足够的数据。

您的RRD定义使用60秒步骤,但最小的RRA是12分钟步骤(1cdp = 12pdp)。这意味着您需要至少有2个条目才能获得有意义的内容,因此在您在输出中看到某些内容之前,至少需要24分钟(可能更多)收集数据。

当您尝试以5分钟的间隔获取数据时,我建议您还有5pdp的RRA,并且可能还有1pdp的RRA用于测试。这些RRA也很短,但我认为你有理由这样做。

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

如果您添加这些额外的RRA,那么您将能够更快地查看收集的数据。

如果您仍然在值中看到nan,则可能您收集的数据不正确,并且您的read_retry()函数调用未返回有效数据。将这些值打印到文件中,以便您可以看到它们确实是数字。