2017-08-29 157 views
-2

我想将两个太阳能逆变器的值存储在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) 

运行它在一个循环:

[email protected]:~# 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之间的值。但这样做,当取它的很大的不同:

[email protected]:/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。

这里有什么问题?我无法弄清楚我的错误。

回答

0

该手册页明确指出,数值总是以rate/s存储。如果你希望它是速度/ stepwidth你需要乘以你的价值:

CDEF:expection=DS,stepwidth,* 

甚至更​​好的情况下,你想千瓦时

CDEF:WR1kWh=WR1,3.6,*