Browse Source

连接数据库,并将数据入库

wql2000518 5 months ago
parent
commit
40777bd5e3
4 changed files with 214 additions and 29 deletions
  1. 67 27
      index.js
  2. 129 1
      package-lock.json
  3. 2 1
      package.json
  4. 16 0
      test.json

+ 67 - 27
index.js

@@ -1,40 +1,80 @@
 const mqtt = require('mqtt');
-let mqttClient;
+const mysql = require('mysql2');
+
+const connection = mysql.createConnection({
+  host: '10.186.132.64',
+  port: '3306',
+  user: 'ecology',
+  password: 'k*SE^kYHnr6mgQcixCW7xoMJ',
+  database: 'e10_common'
+});
 
+// 连接到数据库
+connection.connect((err) => {
+  if (err) {
+    console.error('数据库连接失败: ' + err.stack);
+    return;
+  }
+  console.log('已连接到数据库,连接ID: ' + connection.threadId);
+});
+
+let mqttClient;
 // 初始化MQTT客户端
 mqttClient = mqtt.connect('mqtt://10.71.99.211:1883', {
-    clientId: 'electron-mqtt-client',
-    username: 'anning',
-    password: '123456',
-    clean: true
+  clientId: 'electron-mqtt-client',
+  username: 'anning',
+  password: '123456',
+  clean: true
 });
 
 mqttClient.on('connect', () => {
-    console.log('MQTT connected');
-    // 可以在这里订阅主题
-    mqttClient.subscribe('testtopic/total', (err) => {
-        if (!err) {
-            console.log('Subscribed to some/topic');
-        }
-    });
-
-    // 设置发布的主题、消息及 QoS
-    const qos = 0
-    
-    mqttClient.publish('testtopic/total', 'mqtt测试', { qos }, (error) => {
-      if (error) {
-        console.error(error)
-      } else {
-        console.error('===================')
-        console.error(error)
-      }
-    })
+  console.log('MQTT connected');
+  // 可以在这里订阅主题
+  mqttClient.subscribe('/location/ZNAF_TOPIC_10034128/position', (err) => {
+    if (!err) {
+      console.log('Subscribed to some/topic');
+    }
+  });
 });
 
-mqttClient.on('message', (topic, message) => { // 处理接收到的消息
-    console.log(`${topic}: ${message.toString()}`);
+mqttClient.on('message', (topic, msg) => { // 处理接收到的消息
+  let data = JSON.parse(msg.toString())
+  const sql = `INSERT INTO uf_jcrydw (
+    cardId,
+    layerId,
+    x,
+    y,
+    move,
+    lowPower,
+    power,
+    time,
+    supplier,
+    longitude,
+    latitude,
+    layernum,
+    uniqueId,
+    entId
+) VALUES (
+    "${data.cardId}",
+    "${data.layerId}",
+    ${data.x},
+    ${data.y},
+    "${data.move}",
+    ${data.lowPower},
+    "${data.power}",
+    "${data.time}",
+    "${data.supplier}",
+    ${data.longitude},
+    ${data.latitude},
+    "${data.layernum}",
+    "${data.uniqueId}",
+    "${data.entId}"
+  )`;
+  connection.execute(sql, (err, results, fields) => {
+    console.log(err)
+  });
 });
 
 mqttClient.on('error', (err) => {
-    console.error('error:', err);
+  console.error('error:', err);
 });

+ 129 - 1
package-lock.json

@@ -9,7 +9,8 @@
       "version": "1.0.0",
       "license": "ISC",
       "dependencies": {
-        "mqtt": "^5.10.3"
+        "mqtt": "^5.10.3",
+        "mysql2": "^3.12.0"
       }
     },
     "node_modules/@babel/runtime": {
@@ -64,6 +65,15 @@
         "node": ">=6.5"
       }
     },
+    "node_modules/aws-ssl-profiles": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
+      "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
     "node_modules/base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
@@ -178,6 +188,15 @@
         }
       }
     },
+    "node_modules/denque": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/denque/-/denque-2.1.0.tgz",
+      "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
     "node_modules/event-target-shim": {
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
@@ -209,12 +228,33 @@
         "node": ">=16.1.0"
       }
     },
+    "node_modules/generate-function": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz",
+      "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "is-property": "^1.0.2"
+      }
+    },
     "node_modules/help-me": {
       "version": "5.0.0",
       "resolved": "https://registry.npmmirror.com/help-me/-/help-me-5.0.0.tgz",
       "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==",
       "license": "MIT"
     },
+    "node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/ieee754": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
@@ -241,6 +281,12 @@
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
       "license": "ISC"
     },
+    "node_modules/is-property": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz",
+      "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
+      "license": "MIT"
+    },
     "node_modules/js-sdsl": {
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz",
@@ -251,12 +297,33 @@
         "url": "https://opencollective.com/js-sdsl"
       }
     },
+    "node_modules/long": {
+      "version": "5.2.3",
+      "resolved": "https://registry.npmmirror.com/long/-/long-5.2.3.tgz",
+      "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==",
+      "license": "Apache-2.0"
+    },
     "node_modules/lru-cache": {
       "version": "10.4.3",
       "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz",
       "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
       "license": "ISC"
     },
+    "node_modules/lru.min": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/lru.min/-/lru.min-1.1.1.tgz",
+      "integrity": "sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q==",
+      "license": "MIT",
+      "engines": {
+        "bun": ">=1.0.0",
+        "deno": ">=1.30.0",
+        "node": ">=8.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wellwelwel"
+      }
+    },
     "node_modules/minimist": {
       "version": "1.2.8",
       "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
@@ -315,6 +382,47 @@
       "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
       "license": "MIT"
     },
+    "node_modules/mysql2": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmmirror.com/mysql2/-/mysql2-3.12.0.tgz",
+      "integrity": "sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==",
+      "license": "MIT",
+      "dependencies": {
+        "aws-ssl-profiles": "^1.1.1",
+        "denque": "^2.1.0",
+        "generate-function": "^2.3.1",
+        "iconv-lite": "^0.6.3",
+        "long": "^5.2.1",
+        "lru.min": "^1.0.0",
+        "named-placeholders": "^1.1.3",
+        "seq-queue": "^0.0.5",
+        "sqlstring": "^2.3.2"
+      },
+      "engines": {
+        "node": ">= 8.0"
+      }
+    },
+    "node_modules/named-placeholders": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/named-placeholders/-/named-placeholders-1.1.3.tgz",
+      "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
+      "license": "MIT",
+      "dependencies": {
+        "lru-cache": "^7.14.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/named-placeholders/node_modules/lru-cache": {
+      "version": "7.18.3",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/number-allocator": {
       "version": "1.0.14",
       "resolved": "https://registry.npmmirror.com/number-allocator/-/number-allocator-1.0.14.tgz",
@@ -380,6 +488,17 @@
       "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
       "license": "MIT"
     },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "license": "MIT"
+    },
+    "node_modules/seq-queue": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmmirror.com/seq-queue/-/seq-queue-0.0.5.tgz",
+      "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
+    },
     "node_modules/split2": {
       "version": "4.2.0",
       "resolved": "https://registry.npmmirror.com/split2/-/split2-4.2.0.tgz",
@@ -389,6 +508,15 @@
         "node": ">= 10.x"
       }
     },
+    "node_modules/sqlstring": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/sqlstring/-/sqlstring-2.3.3.tgz",
+      "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
     "node_modules/string_decoder": {
       "version": "1.3.0",
       "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",

+ 2 - 1
package.json

@@ -10,6 +10,7 @@
   "license": "ISC",
   "description": "",
   "dependencies": {
-    "mqtt": "^5.10.3"
+    "mqtt": "^5.10.3",
+    "mysql2": "^3.12.0"
   }
 }

+ 16 - 0
test.json

@@ -0,0 +1,16 @@
+{
+    "cardId": "77a5d38a",
+    "layerId": "jcgsP000",
+    "x": 118.0077568199453,
+    "y": 123.57594102122354,
+    "move": "1",
+    "lowPower": 0,
+    "power": "3.8",
+    "time": "2025-01-07 16:44:52",
+    "supplier": "ruida",
+    "longitude": 106.59747674350511,
+    "latitude": 38.1673241017941,
+    "layernum": "1",
+    "uniqueId": "1901ea093a9e492695a596641151f6e8",
+    "entId": "ZNAF_TOPIC_10034128"
+}