如何定期生成随机值并使用MQTT协议发布



我想每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);

相关内容

  • 没有找到相关文章

最新更新