欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mqtt協議將數據存儲到mysql

錢多多2年前23瀏覽0評論

MQTT是一種輕量級的發布/訂閱消息傳輸協議,其主要應用場景是物聯網領域。在應用程序中,我們需要把從物聯網設備采集到的數據存儲到數據庫中,而MySQL是一種常用的開源數據庫。那么,如何使用MQTT協議將數據存儲到MySQL中呢?

下面我們來一步步介紹:

// 導入依賴
const mqtt = require('mqtt')
const mysql = require('mysql')
// MQTT broker地址
const MQTT_HOST = process.env.MQTT_HOST || 'tcp://localhost:1883'
// MySQL配置信息
const MYSQL_HOST = process.env.MYSQL_HOST || 'localhost'
const MYSQL_PORT = process.env.MYSQL_PORT || 3306
const MYSQL_USER = process.env.MYSQL_USER || 'root'
const MYSQL_PASS = process.env.MYSQL_PASS || 'root'
const MYSQL_DB = process.env.MYSQL_DB || 'mqtt_data'
// 連接MySQL
const connection = mysql.createConnection({
host: MYSQL_HOST,
port: MYSQL_PORT,
user: MYSQL_USER,
password: MYSQL_PASS,
database: MYSQL_DB
})
connection.connect((err) =>{
if (err) {
console.error('MySQL connection failed: ' + err.stack)
return
}
console.log('Connected to MySQL server.')
})
// 連接MQTT broker
const client = mqtt.connect(MQTT_HOST)
// 訂閱主題
client.on('connect', () =>{
console.log('Connected to MQTT broker.')
client.subscribe('sensor_data', (err) =>{
if (err) {
console.error('Failed to subscribe: ' + err)
} else {
console.log('Subscribed to topic: sensor_data')
}
})
})
// 接收消息
client.on('message', (topic, message) =>{
const data = JSON.parse(message.toString())
// 將數據存儲到MySQL
const sql = 'INSERT INTO sensor_data (device_id, temperature, humidity) VALUES (?, ?, ?)'
connection.query(sql, [data.device_id, data.temperature, data.humidity], (err, result) =>{
if (err) {
console.error('Failed to insert data: ' + err)
} else {
console.log('Data inserted: ' + JSON.stringify(data))
}
})
})

代碼中,我們首先導入MQTT和MySQL的依賴庫。然后,分別設置MQTT broker地址和MySQL的配置信息,創建MySQL連接,連接MQTT broker,并訂閱主題。接著,當收到消息時,我們將其解析為JSON格式,構造SQL語句,并執行INSERT操作,將數據存儲到MySQL中。

這樣,我們就使用MQTT協議將數據存儲到MySQL中,完成了物聯網數據的采集和存儲。