如何使用MQTT javascript创建JSON?
我尝试使用MQTT javascript发布一些实时值。下面我需要设置正确的JSON格式值。 在这里,我只能为所有总线发送一个值,但我需要发送单独的总线单独的值。如何做到这一点 我的当前代码:如何使用MQTT javascript创建JSON?,javascript,json,mqtt,thingsboard,Javascript,Json,Mqtt,Thingsboard,我尝试使用MQTT javascript发布一些实时值。下面我需要设置正确的JSON格式值。 在这里,我只能为所有总线发送一个值,但我需要发送单独的总线单独的值。如何做到这一点 我的当前代码: var data = { Buses: "BusA", "BusB", "BusC", Speed: BusA_minspeed + (BusA_maxspeed - BusA_minspeed) * Math.random(), // It should be use seperate
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
我的期望:
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
有一个属性bus
,它是以下对象的数组
{
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_数据
{
Name: 'BusA'
Speed: 123,
FL: 80
}
要发布,您需要使用JSON.stringify
将JSON转换为字符串,并按如下方式发布
client.publish(您的_代理,JSON.stringify(busA_数据))代码>
你需要在.on('message',fn)中做相反的事情,例如
谢谢你@Nadir Laskar。我如何发布所有的值?我需要获得所有的巴士速度和飞行高度。就像上面提到的期望表,同时我为所有的巴士速度和飞行高度生成随机值。你能编辑上面的答案吗?你能发送你的电子邮件ID吗?分享你的电子邮件,我会ping你。