From b0c04fb404892e7b14f6f82ba8153bea3db9b097 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期三, 06 八月 2025 17:35:34 +0800
Subject: [PATCH] init

---
 index.js |   31 ++++++++++++++++++++++++++-----
 1 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/index.js b/index.js
index 6991b24..64b43cb 100644
--- a/index.js
+++ b/index.js
@@ -4,6 +4,7 @@
 const aliyunIot = require('aliyun-iot-device-sdk');
 const { getAliyunDeviceSecret } = require('./api');
 const toModel = require('./Strholp');
+const { publishMessage } = require('./mqttClient');
 // 定义 DeviceManager 类来管理设备连接
 class DeviceManager extends EventEmitter {
     constructor() {
@@ -77,7 +78,7 @@
                     logger.info(`尝试重新发送 '${deviceInfo.lastSignal}' 给设备 ${deviceId}`);
                     this.sendKeepAliveToDevice(deviceId);  // 如果设备状态是待确认,则重发上次的信号
                 }
-            }, 5000);  // 每2秒重试一次
+            }, 10000);  // 每2秒重试一次
         }catch(err){
             logger.error(`${deviceId}设备重试机制出错:${err}`)
         }
@@ -137,7 +138,7 @@
                 this.stopRetryMechanism(deviceId);  // 停止重试机制
                 // 根据上次发送的信号启动相应的定时发送机制
                 this.startKeepAlive(deviceId, deviceInfo.lastSignal);  // 启动定时发送 'K0000' 的机制
-                logger.info(`${deviceId}启动定时发送 'K' 的机制60秒一次`);
+                logger.info(`${deviceId}启动定时发送 ${deviceInfo.lastSignal} 的机制60秒一次`);
                 this.registerDevice(deviceId)
             }else{
                 logger.info('注册成功后第二次就发送数据到阿里云')
@@ -173,11 +174,11 @@
                     });
                     // 监听设备连接状态变化
                     deviceInfo.iotDevice.on('connect', () => {
-                        logger.info(`${deviceId} 连接到阿里云IoT平台成功`);
+                        // logger.info(`${deviceId} 连接到阿里云IoT平台成功`);
                     });
                 
                     deviceInfo.iotDevice.on('error', (err) => {
-                        logger.info(`${deviceId} 设备连接错误:`, err);
+                        logger.info(`${deviceId} 设备连接到阿里云IoT平台错误:`, err);
                     });
                 }
                 
@@ -194,6 +195,8 @@
             if (deviceInfo.iotDevice) {
               // 上报属性数据
               const props = deviceInfo.masData
+
+              onDeviceDataReceived(deviceInfo.masData); // 调用函数处理接收到的数据
               deviceInfo.iotDevice.postProps(props, (res) => {
                 if (res.message==='success') {
                     logger.info(`${deviceId} 上报属性成功:`, res);
@@ -268,4 +271,22 @@
         throw new CustomError("新错误", error);
         
     }
-}
\ No newline at end of file
+}
+// 接收到的数据
+const  onDeviceDataReceived=(data)=> {
+    const topic = `touxiji/${data.n}`;
+    const payload = JSON.stringify({
+      ...data,
+      timestamp: new Date().toISOString()
+    });
+    try {
+        logger.info(`发布消息到主题 ${topic}: ${payload}`);
+        publishMessage(topic, payload);
+    } catch (error) {  
+        logger.error(`发布消息到主题 ${topic} 失败:`, error);
+        throw new CustomError("发布消息失败", error);
+
+     }
+   
+  }
+  
\ No newline at end of file

--
Gitblit v1.8.0