gpt4 book ai didi

javascript - 如何使用 MQTT JavaScript 创建 JSON?

转载 作者:行者123 更新时间:2023-12-03 04:11:05 25 4
gpt4 key购买 nike

我正在尝试使用 MQTT javascript 发布一些实时值。下面我需要设置正确的 JSON 格式值。在这里,我只能为所有总线发送一个值,但我需要发送单独的总线单独的值。如何做到这一点。

我当前的代码:

var data = {
Buses: "BusA", "BusB", "BusC",
Speed: BusA_minspeed + (BusA_maxspeed - BusA_minspeed) * Math.random(), // It should be use seperate values seperate Buses
FL: BusA_minfl + (BusA_maxfl - BusA_minfl) * Math.random()
};

我的期望:

Buses  Speed FL
BusA 123 80
BusB 231 40
BusC 124 50

我的发布部分

function publishTelemetry() {
data.Speed = genNextValue(data.Speed, BusA_minspeed, BusA_maxspeed);
data.FL = genNextValue(data.Fl, BusA_minfl, BusA_maxfl);
client.publish('v1/devices/me/telemetry', JSON.stringify(data));
}

function genNextValue(prevValue, min, max) {
var value = prevValue + ((max - min) * (Math.random() - 0.5)) * 0.03;
value = Math.max(min, Math.min(max, value));
return Math.round(value * 10) / 10;
}

最佳答案

根据你的期望,我认为你应该有这样的 JSON 结构

data 有一个属性 Buses,它是以下对象的数组

{
Name: BUS_NAME,
Speed: BUSS_SPEED,
FL: YOUR_FL
}

JSON

var data = {
Buses: [{
Name: 'BusA'
Speed: BusA_minspeed + (BusA_maxspeed - BusA_minspeed) * Math.random(), // It should be use seperate values seperate Buses
FL: BusA_minfl + (BusA_maxfl - BusA_minfl) * Math.random()
},{
Name: 'BusB'
Speed: BusB_minspeed + (BusB_maxspeed - BusB_minspeed) * Math.random(), // It should be use seperate values seperate Buses
FL: BusB_minfl + (BusB_maxfl - BusB_minfl) * Math.random()
},{
Name: 'BusC'
Speed: BusC_minspeed + (BusC_maxspeed - BusC_minspeed) * Math.random(), // It should be use seperate values seperate Buses
FL: BusC_minfl + (BusC_maxfl - BusC_minfl) * Math.random()
}]
}

如果您有上述 JSON 结构,您可以按如下方式发送单独的数据

使用以下函数并传递busName来获取特定总线的对象

function getBusData(busName){
return data.buses.filter(function(bus){
return bus.Name == busName;
})[0];
}

使用

 var busA_data = getBusData('BusA');

现在,使用您的busA_data,其中应包含

{ 
Name: 'BusA'
Speed: 123,
FL: 80
}

要发布,您需要使用 JSON.stringify 将 JSON 转换为字符串,并按如下方式发布

client.publish(YOUR_BROKER, JSON.stringify(busA_data));

并且您需要在 .on('message', fn) 中执行相反的操作,例如

client.on('message', function (topic, payload) {
const obj = JSON.parse(payload.toString()) // payload is your JSON as string
})

关于javascript - 如何使用 MQTT JavaScript 创建 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44330464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com