我想在rrd中存储两个太阳能逆变器的值。我通过modbus获得绝对值(递增计数器(。我创建了这样的rrd:
rrdtool create -s 60 /data/solar.rrd --no-overwrite
DS:WR1:COUNTER:300:0:U
DS:WR2:COUNTER:300:0:U
RRA:AVERAGE:0.5:1:43200
RRA:AVERAGE:0.5:5:25920
RRA:AVERAGE:0.5:60:8784
RRA:AVERAGE:0.5:1440:18993
RRA:MAX:0.5:1440:18993
使用一点Python,我将值插入到这个rrd中(带有调试输出(:
rrdtool.update("/data/solar.rrd","-t","WR1:WR2","N:%i:%i" % (d1.inverter.WH,d2.inverter.WH))
info = rrdtool.info("/data/solar.rrd")
print "%i %i %i" % (info['last_update'],d1.inverter.WH,d2.inverter.WH)
循环运行:
user@machine:~# while(true); do sleep 60; ./get_data4rrd.py; done
1504028308 3521906 1870096
1504028369 3521911 1870097
1504028430 3521916 1870097
1504028491 3521921 1870098
1504028552 3521925 1870098
所以我希望对于DS WR1,我会得到这个值在4到6之间的值。但当进行提取时,情况大不相同:
user@machine:/data# rrdtool fetch solar.rrd AVERAGE -r 1m -s -15m
WR1 WR2
1504028400: 8.1857862607e-02 8.0323781910e-03
1504028460: 8.1857458806e-02 8.0440194250e-03
1504028520: 7.4102207109e-02 8.6226472416e-03
1504028580: 6.5478084175e-02 0.0000000000e+00
我知道rrdtool会对齐我的输入以适应步长,但我仍然希望DS WR1的输出在4-6左右,而不是0.08。
这里怎么了?我想不出我的错误。
手册页明确指出,值始终以速率/s存储。如果你希望它是速率/步长,你需要乘以你的值:
CDEF:expection=DS,stepwidth,*
或者在您想要kWh 的情况下更好
CDEF:WR1kWh=WR1,3.6,*