wangfq c875cf383b fix: 修复 HeartBeat 大小写不匹配导致交互未被记录的问题
根本原因: 设备发送 Method='HeartBeat'(大写B), 代码匹配'Heartbeat'(小写b),
        心跳包被静默忽略, record_interaction 未调用, 导致监控误判为离线。

修复:
- UDP/TCP 方法匹配改为 case-insensitive (method_lower)
- handle_timestamp 增加 record_interaction 调用 (TimeStamp 也是设备交互)
- TCP 连接/断开时写入 tb_device_log 事件日志 (tcp_connect/tcp_disconnect)
2026-06-10 10:01:07 +08:00

EDC 服务 (Edge Data Center)

测试工装边缘数据中心 — Python 实现,基于 uvloop 的高性能异步网络服务。

系统架构

 TCP/UDP         ┌─────────────────────────────────────┐
◄─────────────►  │              EDC 服务                │
                 │                                     │
 UDP :5500  ───► │  设备发现 / 心跳 / 信息查询           │
 UDP :5505  ───► │  消息监听                            │
 TCP :5550  ───► │  时间同步 / 数据上报 / 串口透传       │
                 │                                     │
                 │  后台解析服务 ──► DG430 协议 → MySQL  │
                 └─────────────────────────────────────┘

快速开始

# 创建虚拟环境
python3 -m venv .venv && source .venv/bin/activate

# 安装依赖
pip install -r requirements.txt

# 设置环境变量
export EDC_MYSQL_HOST=127.0.0.1
export EDC_MYSQL_USER=root
export EDC_MYSQL_PASSWORD=your_password
export EDC_MYSQL_DB=edc

# 确保数据库已创建
mysql -u root -e "CREATE DATABASE IF NOT EXISTS edc CHARACTER SET utf8mb4"

# 启动
python run.py

配置

所有配置通过环境变量,见 src/config.py

变量 默认值 说明
EDC_UDP_PORT 5500 UDP 设备发现端口
EDC_UDP_MSG_PORT 5505 UDP 消息监听端口
EDC_TCP_PORT 5550 TCP 数据上报端口
EDC_BIND_HOST 0.0.0.0 绑定地址
EDC_MYSQL_HOST 127.0.0.1 MySQL 地址
EDC_MYSQL_PORT 3306 MySQL 端口
EDC_MYSQL_USER root 数据库用户
EDC_MYSQL_PASSWORD 数据库密码
EDC_MYSQL_DB edc 数据库名
EDC_PARSE_POLL_INTERVAL 0.5 解析轮询间隔(秒)
EDC_LOG_LEVEL INFO 日志级别

协议参考

目录结构

edc_server/
├── run.py                 # 入口
├── requirements.txt       # uvloop, aiomysql
└── src/
    ├── config.py          # 环境变量配置
    ├── models.py          # MySQL 连接池 + 表结构 + CRUD
    ├── protocol.py        # PGLC JSON 协议解析
    ├── dg430.py           # DG430 二进制协议解析
    ├── handlers.py        # 业务处理 + 后台解析服务
    └── server.py          # UDP/TCP 异步服务主程序
Description
EDC 边缘数据中心 — 车检器测试工装后端服务 (Python/uvloop)
Readme 301 KiB
Languages
Python 100%