意外(错误?)值

Unexpected (wrong?) values

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

这是怎么回事?我无法弄清楚我的错误。

手册页明确指出值始终存储为 rate/s。如果您希望它是 rate/stepwidth,您需要乘以您的值:

CDEF:expection=DS,stepwidth,*

如果您需要 kWh

,甚至更好
CDEF:WR1kWh=WR1,3.6,*