我在一個小型微控制器上有一些代碼,它使用 MQTT 在主題“motorbeta”下發布傳感器讀數,格式是 JSON,看起來像這樣:{溫度:257.00,壓力: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);
});
uj5u.com熱心網友回復:
我相信您要求采用兩個變數的 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);
});
請記住,控制臺日志僅用于錯誤驗證目的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/400239.html
標籤:javascript 节点.js MQTT
