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
中做了一切答案 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()函数调用未返回有效数据。将这些值打印到文件中,以便您可以看到它们确实是数字。