我正在使用node-red来获取称重传感器的信号。我使用MQTT(从我的python脚本)接收到称重传感器的值,然后我想保存来自MQTT的前5个值以计算称重传感器的偏移量。然后,当我有偏移量时,可以从msg.payload
中减去它,以将称重传感器设置为0。
我已经尝试进行一个while循环来累积前5个值,但是即使前5个值都消失了,结果也会更新。即使循环结束,它似乎也应用了我的循环内的计算。
var offset0 = 0;
var i = 0;
while (i < 5) {
offset0 = parseFloat(msg.payload) + offset0;
i = i + 1;
}
offset0 = offset0 / 5;
msg.payload = offset0;
return msg;
msg
在每个新的来自称重传感器的信息之后更新...或者我只想保留前5个值(5个用于进行测试,那么我想使用5个以上的点) 。
例如,这是我从称重传感器获得的数据:
1.93, 1.94, 1.95, 1.94, 1.96, 1.93, 1.88, 1.93.
应该采用前5个:
1.93, 1.94, 1.95, 1.94, 1.96
并且说出意思。
您可以提取索引的其余部分,并将sum
重置为零,并获取最后五个的平均值,即四位数。
var values = [1.93, 1.94, 1.95, 1.94, 1.96, 1.93, 1.88, 1.93],
sum = 0,
count = 0,
i;
for (i = 0; i < values.length; i++) {
if (i % 5 === 0) sum = 0; // reset
sum += values[i];
if (i % 5 === 4) { // take mean
console.log(sum / 5);
}
}