【问题标题】:MQTT.js how to transfer message into discrete variablesMQTT.js 如何将消息转换成离散变量
【发布时间】:2022-01-01 01:54:12
【问题描述】:

我在一个小型微控制器上有一些代码,它使用 MQTT 在“motorbeta”主题下发布传感器读数,格式为 JSON,如下所示:{temperature:257.00, pressure:100.00}。在我的网络服务器上,我有一个订阅相同 MQTT 主题的脚本。 javascript发布在下面。

在网络服务器上,我想接收收到的消息并在此脚本中创建两个变量(温度和压力)并将每个变量设置为等于其对应的值。例如,温度=257 和压力=100 我该怎么做?我的最终目标是将温度和压力读数推送到具有相应变量名称的列下的 MYSQL 数据库中。

////////////////////////////////////////////////////////////////////////////////
//setup
var mqtt    = require('mqtt'); //for client use
const fs = require('fs');
var count =0; //connected to an end script function
var caFile = fs.readFileSync("filepath/ca.crt");
var topic = "motorbeta";


var options={
    port:8883,
    clientId:"dev",
    username:"user",
    password:"password",
    protocol: 'mqtts',
    clean:true,
    rejectUnauthorized: false,
    retain:false, 
    ca:caFile
};


var client  = mqtt.connect("http://dns",options);


//handle incoming messages
client.on('message',function(topic, message, packet){
    console.log("message is "+ message);
    console.log("topic is "+ topic);
});

//connection dialog
client.on("connect",function(){
    client.subscribe(topic, {qos:1});
});

//handle errors
client.on("error",function(error){
    process.exit(1);
});

【问题讨论】:

  • RegExp 甚至 string.split 都可以。您可以控制修改消息格式吗?
  • 我对双方都有控制权
  • 如果你有能力在不破坏任何东西的情况下改变消息格式,我强烈推荐 JSON。增加最小的开销 - 只需几个“和:”并使其易于解析
  • 好的,这很好。我会将问题格式更改为 JSON 格式。但是我将如何处理传入的 JSON 格式并制作两个变量温度和压力?
  • 你试过什么?您尚未尝试解决此问题,因此我们不知道什么不起作用。作为起点,您的消息需要将密钥用引号括起来才能成为有效的 JSON

标签: javascript node.js mqtt


【解决方案1】:

我相信您要求采用两个变量 JSON 字符串并创建两个变量温度和压力。这可以主要使用问题中发布的代码来完成,除了 client.on('message',function(topic, message, packet) 应该扩展。

假设输入看起来像:{"temperature":257.00,"pressure":115}

所需的代码是:

//handle incoming messages
client.on('message',function(topic, message, packet){
    var raw = ""+message;
    console.log(raw);
    var obj = JSON.parse(raw);
    var temp = obj.temperature; 
    var press = obj.pressure;
    console.log(temp);
    console.log(press);

});

请记住,控制台日志仅用于错误验证目的。

【讨论】:

    猜你喜欢
    • 2013-04-15
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多