From 3754f4e5f16adc3855e1ab1b73581b213d64e513 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期二, 06 一月 2026 13:04:08 +0800
Subject: [PATCH] 更新优化

---
 config.json  |    6 +
 index.js     |   27 +++--
 /dev/null    |    0 
 combined.log |  136 +++++++++++++++++++++++++++
 package.json |    2 
 config.js    |   88 +++++++++++++++++
 error.log    |   17 ---
 7 files changed, 248 insertions(+), 28 deletions(-)

diff --git a/combined.log b/combined.log
index dc28d51..981e96b 100644
--- a/combined.log
+++ b/combined.log
@@ -2048,3 +2048,139 @@
 {"level":"info","message":"客户端已连接: 127.0.0.1:56632","service":"dialysis-server","timestamp":"2025-09-22 19:08:39"}
 {"level":"warn","message":"客户端连接超时,关闭连接: 127.0.0.1:56632","service":"dialysis-server","timestamp":"2025-09-22 19:13:39"}
 {"level":"info","message":"客户端已连接: 127.0.0.1:65283","service":"dialysis-server","timestamp":"2025-09-22 19:13:44"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-05 14:22:07"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听端口 60961","service":"dialysis-server","timestamp":"2026-01-05 14:22:07"}
+{"level":"info","message":"客户端已连接: 192.168.0.201:53789","service":"dialysis-server","timestamp":"2026-01-05 14:22:52"}
+{"level":"info","message":"接收数据: 192.168.0.201:53789","service":"dialysis-server","timestamp":"2026-01-05 14:25:15","数据":"55aa00130b0310c6000701f402f2"}
+{"level":"info","message":"校验和验证成功: 754","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"运行模式&权值: 16","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"数据标识: 7","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"数据值: 500","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"warn","message":"设备 130b03 当前未连接,跳过发送","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"✅ 设备 130b03 已连接到阿里云 IoT","service":"dialysis-server","timestamp":"2026-01-05 14:25:15"}
+{"level":"info","message":"接收数据: 192.168.0.201:53789","service":"dialysis-server","timestamp":"2026-01-05 14:25:53","数据":"55aa00130b0302c60001000001e9"}
+{"level":"info","message":"校验和验证成功: 489","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"运行模式&权值: 2","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"数据标识: 1","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"数据值: 0","service":"dialysis-server","timestamp":"2026-01-05 14:25:53"}
+{"level":"info","message":"接收数据: 192.168.0.201:53789","service":"dialysis-server","timestamp":"2026-01-05 14:26:34","数据":"55aa00130b0301c6000800f002df"}
+{"level":"info","message":"校验和验证成功: 735","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"运行模式&权值: 1","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"数据标识: 8","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"info","message":"数据值: 240","service":"dialysis-server","timestamp":"2026-01-05 14:26:34"}
+{"level":"warn","message":"客户端连接超时,关闭连接: 192.168.0.201:53789","service":"dialysis-server","timestamp":"2026-01-05 14:31:34"}
+{"level":"info","message":"已加载配置文件 config.json","service":"dialysis-server","timestamp":"2026-01-06 11:29:45"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 11:29:45"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60961","service":"dialysis-server","timestamp":"2026-01-06 11:29:45"}
+{"level":"info","message":"收到 SIGINT 信号,正在关闭...","service":"dialysis-server","timestamp":"2026-01-06 11:30:09"}
+{"level":"info","message":"已加载配置文件 config.json","service":"dialysis-server","timestamp":"2026-01-06 11:30:11"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 11:30:11"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60962","service":"dialysis-server","timestamp":"2026-01-06 11:30:11"}
+{"level":"info","message":"收到 SIGINT 信号,正在关闭...","service":"dialysis-server","timestamp":"2026-01-06 11:30:17"}
+{"level":"info","message":"已加载配置文件 config.json","service":"dialysis-server","timestamp":"2026-01-06 11:31:30"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 11:31:30"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60962","service":"dialysis-server","timestamp":"2026-01-06 11:31:30"}
+{"level":"info","message":"客户端已连接: 192.168.0.17:32753","service":"dialysis-server","timestamp":"2026-01-06 11:34:17"}
+{"level":"info","message":"接收数据: 192.168.0.17:32753","service":"dialysis-server","timestamp":"2026-01-06 11:34:39","数据":"346230643061"}
+{"level":"error","message":"数据长度无效。期望长度为14字节。","service":"dialysis-server","timestamp":"2026-01-06 11:34:39","实际长度":6,"数据":"346230643061"}
+{"level":"info","message":"接收数据: 192.168.0.17:32753","service":"dialysis-server","timestamp":"2026-01-06 11:35:37","数据":"55aa00130b0300c6000400dc02c6"}
+{"level":"info","message":"校验和验证成功: 710","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"运行模式&权值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"数据标识: 4","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"数据值: 220","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"warn","message":"设备 130b03 当前未连接,跳过发送","service":"dialysis-server","timestamp":"2026-01-06 11:35:37"}
+{"level":"info","message":"✅ 设备 130b03 已连接到阿里云 IoT","service":"dialysis-server","timestamp":"2026-01-06 11:35:49"}
+{"level":"info","message":"接收数据: 192.168.0.17:32753","service":"dialysis-server","timestamp":"2026-01-06 11:38:21","数据":"55aa00130b0300c6000400dc02c6"}
+{"level":"info","message":"校验和验证成功: 710","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"运行模式&权值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"数据标识: 4","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"info","message":"数据值: 220","service":"dialysis-server","timestamp":"2026-01-06 11:38:21"}
+{"level":"warn","message":"客户端连接超时,关闭连接: 192.168.0.17:32753","service":"dialysis-server","timestamp":"2026-01-06 11:43:21"}
+{"level":"info","message":"客户端已连接: 192.168.0.17:32754","service":"dialysis-server","timestamp":"2026-01-06 11:43:22"}
+{"level":"info","message":"接收数据: 192.168.0.17:32754","service":"dialysis-server","timestamp":"2026-01-06 11:43:23","数据":"55aa00130b0300c6000f000001f5"}
+{"level":"info","message":"校验和验证成功: 501","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"运行模式&权值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"数据标识: 15","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"info","message":"数据值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:43:23"}
+{"level":"warn","message":"客户端连接超时,关闭连接: 192.168.0.17:32754","service":"dialysis-server","timestamp":"2026-01-06 11:48:23"}
+{"level":"info","message":"客户端已连接: 192.168.0.17:32755","service":"dialysis-server","timestamp":"2026-01-06 11:48:24"}
+{"level":"info","message":"接收数据: 192.168.0.17:32755","service":"dialysis-server","timestamp":"2026-01-06 11:52:15","数据":"55aa00130b0300c6000f000001f5"}
+{"level":"info","message":"校验和验证成功: 501","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"运行模式&权值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"数据标识: 15","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"数据值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:15"}
+{"level":"info","message":"已关闭设备连接: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:52:26"}
+{"level":"info","message":"已加载配置文件 config.json","service":"dialysis-server","timestamp":"2026-01-06 11:52:30"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 11:52:30"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60962","service":"dialysis-server","timestamp":"2026-01-06 11:52:30"}
+{"level":"info","message":"客户端已连接: 192.168.0.17:32759","service":"dialysis-server","timestamp":"2026-01-06 11:52:30"}
+{"level":"info","message":"接收数据: 192.168.0.17:32759","service":"dialysis-server","timestamp":"2026-01-06 11:52:35","数据":"55aa00130b0300c6000f000001f5"}
+{"level":"info","message":"校验和验证成功: 501","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"运行模式&权值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"数据标识: 15","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"数据值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"warn","message":"设备 130b03 当前未连接,跳过发送","service":"dialysis-server","timestamp":"2026-01-06 11:52:35"}
+{"level":"info","message":"✅ 设备 130b03 已连接到阿里云 IoT","service":"dialysis-server","timestamp":"2026-01-06 11:52:46"}
+{"level":"info","message":"接收数据: 192.168.0.17:32759","service":"dialysis-server","timestamp":"2026-01-06 11:53:17","数据":"55aa00130b0300c60010000001f6"}
+{"level":"info","message":"校验和验证成功: 502","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"设备类型: 0","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"设备ID: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"运行模式&权值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"主要报警标志: 198","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"当前无报警","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"其他报警标志: 0","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"数据标识: 16","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"数据值: 0","service":"dialysis-server","timestamp":"2026-01-06 11:53:17"}
+{"level":"info","message":"已关闭设备连接: 130b03","service":"dialysis-server","timestamp":"2026-01-06 11:54:21"}
+{"level":"warn","message":"配置文件 config.json 未找到,使用默认配置","service":"dialysis-server","timestamp":"2026-01-06 12:54:33"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 12:54:33"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60961","service":"dialysis-server","timestamp":"2026-01-06 12:54:33"}
+{"level":"info","message":"已加载配置文件","service":"dialysis-server","timestamp":"2026-01-06 12:56:46","可执行目录":"d:\\gitData\\ZL-Communication","打包运行":false,"路径":"d:\\gitData\\ZL-Communication\\config.json"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 12:56:46"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60962","service":"dialysis-server","timestamp":"2026-01-06 12:56:46"}
+{"level":"info","message":"客户端已连接: 192.168.0.17:57394","service":"dialysis-server","timestamp":"2026-01-06 12:56:46"}
+{"level":"info","message":"收到 SIGINT 信号,正在关闭...","service":"dialysis-server","timestamp":"2026-01-06 12:59:46"}
+{"level":"info","message":"已加载配置文件","service":"dialysis-server","timestamp":"2026-01-06 13:01:56","可执行目录":"D:\\gitData\\ZL-Communication","打包运行":true,"路径":"D:\\gitData\\ZL-Communication\\config.json"}
+{"level":"info","message":"血透机服务已初始化,等待客户端连接...","service":"dialysis-server","timestamp":"2026-01-06 13:01:56"}
+{"level":"info","message":"✅ 血透机TCP服务器已启动,监听 0.0.0.0:60962","service":"dialysis-server","timestamp":"2026-01-06 13:01:56"}
+{"level":"info","message":"客户端已连接: 192.168.0.17:57525","service":"dialysis-server","timestamp":"2026-01-06 13:01:57"}
diff --git a/config.js b/config.js
new file mode 100644
index 0000000..83020a7
--- /dev/null
+++ b/config.js
@@ -0,0 +1,88 @@
+const fs = require('fs');
+const path = require('path');
+const logger = require('./logger');
+
+const defaultConfig = {
+  server: {
+    port: 60961,
+    host: '0.0.0.0'
+  }
+};
+
+function resolveConfigPaths() {
+  const isPackaged = !!process.pkg;
+  const exeDir = isPackaged ? path.dirname(process.execPath) : __dirname;
+  const cwd = process.cwd();
+
+  const explicit = process.env.CONFIG_PATH && process.env.CONFIG_PATH.trim()
+    ? path.resolve(process.env.CONFIG_PATH.trim())
+    : null;
+
+  const candidates = [];
+  if (explicit) candidates.push(explicit);
+  // 优先:可执行文件所在目录(适用于 pkg 打包后的 exe 同目录)
+  candidates.push(path.join(exeDir, 'config.json'));
+  // 其次:当前工作目录(命令行运行时常用)
+  candidates.push(path.join(cwd, 'config.json'));
+  // 最后:源码目录(开发环境默认)
+  candidates.push(path.join(__dirname, 'config.json'));
+
+  return { candidates, isPackaged, exeDir };
+}
+
+function loadConfig() {
+  const { candidates, isPackaged, exeDir } = resolveConfigPaths();
+  let userConfig = {};
+  let usedPath = null;
+
+  for (const p of candidates) {
+    try {
+      if (fs.existsSync(p)) {
+        const raw = fs.readFileSync(p, 'utf-8');
+        userConfig = JSON.parse(raw);
+        usedPath = p;
+        break;
+      }
+    } catch (err) {
+      logger.warn('读取配置路径失败,尝试下一个', { 路径: p, 错误: err.message });
+    }
+  }
+
+  if (usedPath) {
+    logger.info('已加载配置文件', { 路径: usedPath, 打包运行: isPackaged, 可执行目录: exeDir });
+  } else {
+    logger.warn('未找到配置文件,使用默认配置', { 打包运行: isPackaged, 可执行目录: exeDir });
+  }
+
+  const cfg = { ...defaultConfig };
+  if (userConfig && typeof userConfig === 'object') {
+    if (userConfig.server && typeof userConfig.server === 'object') {
+      const s = userConfig.server;
+      if (typeof s.port === 'number' && Number.isFinite(s.port)) {
+        cfg.server.port = s.port;
+      }
+      if (typeof s.host === 'string' && s.host.trim()) {
+        cfg.server.host = s.host.trim();
+      }
+    }
+  }
+
+  if (process.env.PORT) {
+    const envPort = Number(process.env.PORT);
+    if (Number.isFinite(envPort) && envPort > 0 && envPort < 65536) {
+      cfg.server.port = envPort;
+      logger.info('使用环境变量 PORT 覆盖端口', { port: envPort });
+    } else {
+      logger.warn('环境变量 PORT 无效,忽略', { PORT: process.env.PORT });
+    }
+  }
+
+  if (process.env.HOST && process.env.HOST.trim()) {
+    cfg.server.host = process.env.HOST.trim();
+    logger.info('使用环境变量 HOST 覆盖主机', { host: cfg.server.host });
+  }
+
+  return cfg;
+}
+
+module.exports = { loadConfig };
diff --git a/config.json b/config.json
new file mode 100644
index 0000000..4d42b6b
--- /dev/null
+++ b/config.json
@@ -0,0 +1,6 @@
+{
+  "server": {
+    "port": 60966,
+    "host": "0.0.0.0"
+  }
+}
diff --git a/error.log b/error.log
index 932ede3..e69de29 100644
--- a/error.log
+++ b/error.log
@@ -1,17 +0,0 @@
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 12:23:52","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:43:20","错误":{"code":200,"data":{},"id":"3","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:43:59","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:44:41","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:44:56","错误":{"code":200,"data":{},"id":"3","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:48:20","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:49:44","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:50:44","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:55:40","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"向阿里云物联网平台发送数据失败,设备ID: 130b03","service":"dialysis-server","timestamp":"2025-09-16 13:55:59","错误":{"code":200,"data":{},"id":"2","message":"success","method":"thing.event.property.post","version":"1.0"}}
-{"level":"error","message":"创建服务器时发生严重错误","service":"dialysis-server","timestamp":"2025-09-16 15:30:58","堆栈":"RangeError [ERR_SOCKET_BAD_PORT]: options.port should be >= 0 and < 65536. Received 80961.\n    at new NodeError (node:internal/errors:387:5)\n    at validatePort (node:internal/validators:365:11)\n    at Server.listen (node:net:1591:5)\n    at createServer (D:\\gitData\\ZL-Communication\\index.js:254:16)\n    at Object.<anonymous> (D:\\gitData\\ZL-Communication\\index.js:336:1)\n    at Module._compile (node:internal/modules/cjs/loader:1198:14)\n    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)\n    at Module.load (node:internal/modules/cjs/loader:1076:32)\n    at Function.Module._load (node:internal/modules/cjs/loader:911:12)\n    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)","错误":"options.port should be >= 0 and < 65536. Received 80961."}
-{"level":"error","message":"创建服务器时发生严重错误","service":"dialysis-server","timestamp":"2025-09-16 15:31:16","堆栈":"RangeError [ERR_SOCKET_BAD_PORT]: options.port should be >= 0 and < 65536. Received 80961.\n    at new NodeError (node:internal/errors:387:5)\n    at validatePort (node:internal/validators:365:11)\n    at Server.listen (node:net:1591:5)\n    at createServer (D:\\gitData\\ZL-Communication\\index.js:254:16)\n    at Object.<anonymous> (D:\\gitData\\ZL-Communication\\index.js:336:1)\n    at Module._compile (node:internal/modules/cjs/loader:1198:14)\n    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1252:10)\n    at Module.load (node:internal/modules/cjs/loader:1076:32)\n    at Function.Module._load (node:internal/modules/cjs/loader:911:12)\n    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)","错误":"options.port should be >= 0 and < 65536. Received 80961."}
-{"level":"error","message":"调用 sendDataToAliyun 时发生同步错误","payload":{"alarms":["液位","气泡","温度","电导"],"dataFlag":1,"dataValue":0,"deviceId":"130b03","deviceType":0,"modeAndValue":2,"otherAlarmFlag":0,"timestamp":"2025-09-16T07:49:57.611Z"},"service":"dialysis-server","timestamp":"2025-09-16 15:49:57","错误":"Cannot read properties of undefined (reading 'catch')"}
-{"level":"error","message":"调用 sendDataToAliyun 时发生同步错误","payload":{"alarms":["液位","气泡","温度","电导"],"dataFlag":1,"dataValue":0,"deviceId":"130b03","deviceType":0,"modeAndValue":2,"otherAlarmFlag":0,"timestamp":"2025-09-16T07:50:10.924Z"},"service":"dialysis-server","timestamp":"2025-09-16 15:50:10","错误":"Cannot read properties of undefined (reading 'catch')"}
-{"level":"error","message":"调用 sendDataToAliyun 时发生同步错误","payload":{"alarms":["液位","气泡","温度","电导"],"dataFlag":1,"dataValue":0,"deviceId":"130b03","deviceType":0,"modeAndValue":2,"otherAlarmFlag":0,"timestamp":"2025-09-16T07:52:32.336Z"},"service":"dialysis-server","timestamp":"2025-09-16 15:52:32","错误":"Cannot read properties of undefined (reading 'catch')"}
-{"level":"error","message":"调用 sendDataToAliyun 时发生同步错误","payload":{"alarms":["液位","气泡","温度","电导"],"dataFlag":1,"dataValue":0,"deviceId":"130b03","deviceType":0,"modeAndValue":2,"otherAlarmFlag":0,"timestamp":"2025-09-16T07:53:42.544Z"},"service":"dialysis-server","timestamp":"2025-09-16 15:53:42","错误":"Cannot read properties of undefined (reading 'catch')"}
-{"level":"error","message":"调用 sendDataToAliyun 时发生同步错误","payload":{"alarms":["液位","气泡","温度","电导"],"dataFlag":1,"dataValue":0,"deviceId":"130b03","deviceType":0,"modeAndValue":2,"otherAlarmFlag":0,"timestamp":"2025-09-16T07:53:45.959Z"},"service":"dialysis-server","timestamp":"2025-09-16 15:53:45","错误":"Cannot read properties of undefined (reading 'catch')"}
diff --git a/index.js b/index.js
index 22526da..b91a696 100644
--- a/index.js
+++ b/index.js
@@ -2,6 +2,10 @@
 const net = require('net');
 const logger = require('./logger');
 const { sendDataToAliyun } = require('./aliyun-iot');
+const { loadConfig } = require('./config');
+
+// 加载配置(端口、主机)
+const CONFIG = loadConfig();
 
 
 function getDateString() {
@@ -214,7 +218,7 @@
 
         // 构造 payload
         const payload = {
-            deviceName:'',
+            deviceName:'威力生',
             deviceType:deviceType, //设备类型 0是血透1 是血滤
             n: deviceIdHex, //设备序列号 也就是id
             RunningState: modeAndValue, // 运行模式&权值
@@ -310,13 +314,13 @@
                             payload.o=dataValue
                             break;
                         case 15:
-                            payload.ssy=dataValue
+                            payload.N=dataValue
                             break;
                         case 16:
-                            payload.szy=dataValue
+                            payload.O=dataValue
                             break;
                         case 17:
-                            payload.mb=dataValue
+                            payload.P=dataValue
                             break;
                         default:
                             logger.warn('未知的数据标识', { dataFlag });
@@ -370,13 +374,13 @@
                             payload.o=dataValue
                             break;
                         case 15:
-                            payload.ssy=dataValue
+                            payload.N=dataValue
                             break;
                         case 16:
-                            payload.szy=dataValue
+                            payload.O=dataValue
                             break;
                         case 17:
-                            payload.mb=dataValue
+                            payload.P=dataValue
                             break;
                         default:
                             logger.warn('未知的数据标识', { dataFlag });
@@ -457,17 +461,18 @@
 
         });
 
-        const PORT = process.env.PORT || 60961;
+        const { port: PORT, host: HOST } = CONFIG.server;
 
-        server.listen(PORT, '0.0.0.0', () => {
-            logger.info(`✅ 血透机TCP服务器已启动,监听端口 ${PORT}`);
+        server.listen(PORT, HOST, () => {
+            logger.info(`✅ 血透机TCP服务器已启动,监听 ${HOST}:${PORT}`);
         });
 
         server.on('error', (err) => {
             logger.error('服务器监听错误', {
                 错误: err.message,
                 堆栈: err.stack,
-                端口: PORT
+                端口: PORT,
+                主机: HOST
             });
 
             // 如果是端口占用,尝试重启或退出
diff --git a/package.json b/package.json
index d1e5e97..79f7840 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,8 @@
     "zl-communication": "./index.js"
   },
   "scripts": {
+    "start": "node ./index.js",
+    "pkg": "pkg index.js",
     "test": "echo \"Error: no test specified\" && exit 1"
 
   },
diff --git a/zl-communication-linux b/zl-communication-linux
deleted file mode 100644
index 486fb8b..0000000
--- a/zl-communication-linux
+++ /dev/null
Binary files differ
diff --git a/zl-communication-macos b/zl-communication-macos
deleted file mode 100644
index d0b0d1b..0000000
--- a/zl-communication-macos
+++ /dev/null
Binary files differ
diff --git a/zl-communication-win.exe b/zl-communication-win.exe
deleted file mode 100644
index fcd2d20..0000000
--- a/zl-communication-win.exe
+++ /dev/null
Binary files differ

--
Gitblit v1.8.0