如何周期性地生成一个随机值并使用MQTT协议发布?

How to generate a random values periodically and publish it using MQTT protocol?

我想每 1 秒完全生成不同的随机值并将其发布到 MQTT 协议。 该代码正在运行,但它一直在发送最后一个值如何让它每 1 秒发送一个不同的值?

var mqtt = require('mqtt')

var Broker_URL = 'mqtt://localhost';
var client  = mqtt.connect(Broker_URL);

var MIN_PER_RANK =75
var MAX_PER_RANK =100

client.on('connect', function () {
    console.log("MQTT connected  "+ client.connected);
})

class virtualsensor {
    
    sendStateUpdate (newdata) {
        client.publish("testtopic", newdata)
    }
}

let vs = new virtualsensor()

let newdata = '';

for (var i=0; i<5; i++){
    newdata= String(Math.floor(Math.random() * (MAX_PER_RANK - MIN_PER_RANK  + 1) + MIN_PER_RANK));
    vs.sendStateUpdate(newdata)
}

var interval = setInterval(function(){vs.sendStateUpdate(newdata)},1000);

输出:

testtopic 81
testtopic 76
testtopic 89
testtopic 100
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96
testtopic 96

提前致谢。

for 循环仅生成 5 个值,然后 setInterval() 再次重用该循环中的最后一个值。

for 循环在这里并没有真正做任何有用的事情,它会在一秒钟内发布 5 个“随机”值(这不是您要求的)然后 setInterval() 只是重复发送一遍又一遍的最后一个值。

删除for循环并将随机值生成器移动到传递给setInterval()

的函数
var interval = setInterval(function(){
  newdata= String(Math.floor(Math.random() * (MAX_PER_RANK - MIN_PER_RANK  + 1) + MIN_PER_RANK));
  vs.sendStateUpdate(newdata)
},1000);