python 3.x-将温度和湿度记录到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

以及绘制数据库时。。。。情节中什么也没有出现。

我的剧本有什么问题?我想我做的每件事都和本教程中的一模一样

您可能还没有收集到足够的数据。

您的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()函数调用没有返回有效数据。将这些值打印到文件中,这样您就可以看到它们实际上是数字。

相关内容

  • 没有找到相关文章

最新更新