我希望每隔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提前谢谢。
发布于 2020-12-31 18:52:12
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);https://stackoverflow.com/questions/65519740
复制相似问题