first commit
This commit is contained in:
158
server/comman/mqqtclinet.js
Normal file
158
server/comman/mqqtclinet.js
Normal file
@ -0,0 +1,158 @@
|
||||
const mqtt = require('mqtt');
|
||||
const db=require("./db")
|
||||
// db.resetpath("../db.sqlite3")
|
||||
|
||||
// 创建 MQTT 客户端实例
|
||||
const client = mqtt.connect('mqtt://82.156.1.111:40000', {
|
||||
clientId: 'web_collectorserver',
|
||||
username: 'xin',
|
||||
password: 'irishk'
|
||||
});
|
||||
client.subscribe("topic_who_is_here_back");
|
||||
// 定义事件处理程序
|
||||
client.on('connect', () => {
|
||||
console.log('MQTT client connected');
|
||||
client.subscribe('my/topic');
|
||||
});
|
||||
function converjsontokeyvalue(data)
|
||||
{
|
||||
|
||||
let fields = [];
|
||||
let fields1 = [];
|
||||
let fields2 = [];
|
||||
for (let key in data) {
|
||||
// 如果值是字符串,需要用引号包裹
|
||||
let value = typeof data[key] === 'string' ? `'${data[key]}'` : data[key];
|
||||
fields1.push(key);
|
||||
fields2.push( value);
|
||||
|
||||
}
|
||||
|
||||
fields.push(fields1.join(","))
|
||||
fields.push(fields2.join(","))
|
||||
return fields
|
||||
}
|
||||
function converjsontokeyequalvalue(data)
|
||||
{
|
||||
|
||||
let fields = [];
|
||||
|
||||
for (let key in data) {
|
||||
// 如果值是字符串,需要用引号包裹
|
||||
let value = typeof data[key] === 'string' ? `'${data[key]}'` : data[key];
|
||||
fields.push(key+"="+value);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return fields.join(",")
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
client.on('message', async (topic, message) => {
|
||||
if (topic==="topic_who_is_here_back")
|
||||
{
|
||||
var data=JSON.parse(message.toString())
|
||||
data.switch1=data.st[0];
|
||||
data.switch2=data.st[1];
|
||||
data.switch3=data.st[2];
|
||||
data.switch4=data.st[3];
|
||||
if (data.switch1===undefined)
|
||||
{
|
||||
data.switch1=true
|
||||
}
|
||||
if (data.switch2===undefined)
|
||||
{
|
||||
data.switch2=true
|
||||
}
|
||||
if (data.switch3===undefined)
|
||||
{
|
||||
data.switch3=true
|
||||
}
|
||||
if (data.switch4===undefined)
|
||||
{
|
||||
data.switch4=true
|
||||
}
|
||||
if (data.id.split("_")[1]==="4G")
|
||||
{
|
||||
data.is4G=true
|
||||
}else
|
||||
{
|
||||
data.is4G=false
|
||||
}
|
||||
data.device="nothing"
|
||||
delete data.st;
|
||||
|
||||
let sql="SELECT * FROM `remoteswitch` WHERE `id`=?"
|
||||
|
||||
|
||||
|
||||
db.query(sql,data.id,function(err, rows){
|
||||
if (1)
|
||||
{
|
||||
|
||||
}
|
||||
var result=rows
|
||||
|
||||
if (result.length===0)
|
||||
{
|
||||
|
||||
console.log(data)
|
||||
sql="insert into `remoteswitch` ( "+converjsontokeyvalue(data)[0]+" ) values ("+converjsontokeyvalue(data)[1]+")"
|
||||
console.log(sql)
|
||||
db.query(sql,(err,result)=>{
|
||||
console.log(err)
|
||||
console.log("insert ok")
|
||||
})
|
||||
}else
|
||||
{
|
||||
|
||||
sql='update `remoteswitch` set '+converjsontokeyequalvalue(data)+' where id=?'
|
||||
console.log(sql)
|
||||
db.query(sql,[data.id],(err,result)=>{
|
||||
console.log(err)
|
||||
console.log("update ok")
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
//console.log(aaa)
|
||||
|
||||
|
||||
}
|
||||
|
||||
// console.log('Received message:', topic, message.toString());
|
||||
});
|
||||
|
||||
client.on('reconnect', () => {
|
||||
console.log('MQTT client reconnected');
|
||||
});
|
||||
|
||||
client.on('offline', () => {
|
||||
console.log('MQTT client offline');
|
||||
});
|
||||
|
||||
client.on('error', (err) => {
|
||||
console.error('MQTT client error:', err);
|
||||
});
|
||||
|
||||
// 在退出时关闭客户端连接
|
||||
process.on('SIGINT', () => {
|
||||
console.log('Exiting...');
|
||||
client.end(() => {
|
||||
console.log('MQTT client disconnected');
|
||||
process.exit();
|
||||
});
|
||||
});
|
||||
|
||||
function getdevicemqtt() {
|
||||
client.publish('topic_who_is_here', 'who is here');
|
||||
}
|
||||
|
||||
exports.getdevicemqtt=getdevicemqtt
|
Reference in New Issue
Block a user