【发布时间】:2021-06-24 17:20:13
【问题描述】:
我有一个环境传感器通过 mqtt 将值发送到红色节点。传感器值可能会有所不同,因此我试图平均最后几个以使读数平滑一点。但是我没有得到我期望的输出。正在输入的值 (msg.payload) 范围从 '9865' 到 '10008' 。我希望输出为〜5.9,但我得到小数位,即'0.5766570605187319'
var calSolution1 = 7.00;
var calSolution2 = 4.00;
var calReading1 = 9564;
var calReading2 = 10605;
var length = 10;
var phArray = new Array(length);
var m = (calSolution2-calSolution1)/(calReading2-calReading1); //slope
var b = calSolution1-m*calReading1; //intercept
var x = msg.payload;
var pH = m*x+b;
phArray.shift();
phArray.push(pH);
const reducer = (accumulator, currentValue) => accumulator + currentValue;
msg.payload = (phArray.reduce(reducer) / length);
return msg;
【问题讨论】:
-
如果只放入一个元素,为什么还要使用数组?根据您提供的代码,我猜它与
msg.payload = (m*x+b)/length相同 -
每 10 秒收到一个新的 msg.payload。我想平均最后 10 个以消除读数的变化。
标签: javascript mqtt node-red