首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RRDtool数据不一致

RRDtool数据不一致
EN

Stack Overflow用户
提问于 2014-03-10 23:49:13
回答 1查看 65关注 0票数 0

我正在使用RRDtool来绘制我的树莓派上的一个泵的状态。我一定是做错了一些配置,因为值与我输入的值很接近,但不是很精确。

引脚状态应为1或0。

<!-- 2014-03-10 10:24:00 CDT / 1394465040 --> <row><v>NaN</v></row> <!-- 2014-03-10 10:25:00 CDT / 1394465100 --> <row><v>NaN</v></row> <!-- 2014-03-10 10:26:00 CDT / 1394465160 --> <row><v>1.0000000000e+00</v></row> <!-- 2014-03-10 10:27:00 CDT / 1394465220 --> <row><v>2.3711630000e-01</v></row> <!-- 2014-03-10 10:28:00 CDT / 1394465280 --> <row><v>9.8168226667e-01</v></row> <!-- 2014-03-10 10:29:00 CDT / 1394465340 --> <row><v>1.6624716667e-02</v></row> <!-- 2014-03-10 10:30:00 CDT / 1394465400 --> <row><v>9.8544061667e-01</v></row> <!-- 2014-03-10 10:31:00 CDT / 1394465460 --> <row><v>2.9590616667e-02</v></row> <!-- 2014-03-10 10:32:00 CDT / 1394465520 --> <row><v>9.7204963333e-01</v></row> <!-- 2014-03-10 10:33:00 CDT / 1394465580 --> <row><v>2.6263616667e-02</v></row> <!-- 2014-03-10 10:34:00 CDT / 1394465640 --> <row><v>9.7533411667e-01</v></row> <!-- 2014-03-10 10:35:00 CDT / 1394465700 --> <row><v>2.3075633333e-02</v></row> <!-- 2014-03-10 10:36:00 CDT / 1394465760 --> <row><v>9.7849575000e-01</v></row> <!-- 2014-03-10 10:37:00 CDT / 1394465820 --> <row><v>1.9948233333e-02</v></row> <!-- 2014-03-10 10:38:00 CDT / 1394465880 --> <row><v>9.8158333333e-01</v></row> <!-- 2014-03-10 10:39:00 CDT / 1394465940 --> <row><v>1.6888216667e-02</v></row> <!-- 2014-03-10 10:40:00 CDT / 1394466000 --> <row><v>9.2141166667e-01</v></row> <!-- 2014-03-10 10:41:00 CDT / 1394466060 --> <row><v>5.2411610000e-01</v></row> <!-- 2014-03-10 10:42:00 CDT / 1394466120 --> <row><v>5.2411610000e-01</v></row> <!-- 2014-03-10 10:43:00 CDT / 1394466180 --> <row><v>9.6672030000e-01</v></row> <!-- 2014-03-10 10:44:00 CDT / 1394466240 --> <row><v>5.0939110833e-01</v></row> <!-- 2014-03-10 10:45:00 CDT / 1394466300 --> <row><v>5.0939110833e-01</v></row> <!-- 2014-03-10 10:46:00 CDT / 1394466360 --> <row><v>4.9845539167e-01</v></row> <!-- 2014-03-10 10:47:00 CDT / 1394466420 --> <row><v>4.9845539167e-01</v></row> <!-- 2014-03-10 10:48:00 CDT / 1394466480 --> <row><v>9.9399037500e-01</v></row> <!-- 2014-03-10 10:49:00 CDT / 1394466540 --> <row><v>9.9399037500e-01</v></row> <!-- 2014-03-10 10:50:00 CDT / 1394466600 --> <row><v>2.6977033333e-02</v></row> <!-- 2014-03-10 10:51:00 CDT / 1394466660 --> <row><v>9.7898348333e-01</v></row> <!-- 2014-03-10 10:52:00 CDT / 1394466720 --> <row><v>9.7898348333e-01</v></row>

create_db.sh #!/bin/bash rrdtool create pinstats.rrd \ --step 60 \ DS:pump:GAUGE:600:0:1 \ RRA:MAX:0.5:1:2016

update.sh

#!/bin/sh a=0 while [ "$a" == 0 ]; do echo "pump ondate" /home/pi/on.sh /home/pi/graph.sh pump=1 rrdtool update pinstats.rrd N:$pump sleep 60 echo "pump offdate" /home/pi/off.sh /home/pi/graph.sh pump=0 rrdtool update pinstats.rrd N:$pump sleep 120 done

EN

回答 1

Stack Overflow用户

发布于 2014-03-11 11:47:17

您正受到Data Normalisation的影响。

这将根据线性近似调整您的值,以便使时间点位于间隔边界上。也就是说,如果你的时间间隔是5分钟,那么更新后的值将是12:00,12:05,12:10...等

如果您正在绘制一个很大的数字,这是有意义的,这是一个速率;总体平均值仍然有效,并且数据是定期间隔的。但是,如果您使用的是带有小整数的Gauge数据类型,则会出现问题。

为了避免这种情况,您必须在间隔边界上进行更新,而不是使用N作为时间点。

试试下面的shell代码:

代码语言:javascript
复制
interval=60
timestamp=`date +%s`
num_intervals=`expr $timestamp / $interval`
adjusted_time=`expr $num_intervals '*' $interval`
rrdtool update pistats.rrd $adjusted_time:1
sleep $interval
adjusted_time=`expr $adjusted_time + $interval`
rrdtool update pistats.rrd $adjusted_time:0

这段代码确保更新时间正好在间隔边界上,因此不会执行数据标准化(实际上,它变成了null操作)。

有关更多详细信息,请参阅Alex van den Bogaerdt的优秀教程here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22304872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档