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