Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MQTT javascript创建JSON?_Javascript_Json_Mqtt_Thingsboard - Fatal编程技术网

如何使用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

我尝试使用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
我的期望:

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你。