将温度和湿度记录到 RRDtool 中
Log Temperature and Humidity into RRDtool
我的 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
中的完全一样
您可能还没有收集到足够的数据。
您的 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() 函数调用未返回有效数据。将这些值打印到一个文件中,以便您可以看到它们确实是数字。
我的 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
中的完全一样您可能还没有收集到足够的数据。
您的 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() 函数调用未返回有效数据。将这些值打印到一个文件中,以便您可以看到它们确实是数字。