# UDP数据采集服务器 这是一个基于Python异步IO的UDP数据采集服务器,用于接收、处理和转发实验设备的传感器数据。 ## 主要功能 - 接收并解析设备传感器数据 - 自动识别和管理设备序列号 - 实时监控活跃实验状态 - 数据存储到Redis流 - 通过WebSocket实时转发数据 - 支持数据降采样处理 - 自动重连和错误恢复机制 ## 系统要求 - Python 3.7+ - MongoDB - Redis - 相关Python包依赖: - motor - websockets - redis - asyncio ## 配置说明 ### MongoDB配置 ```python mongodb_url = "mongodb://lab:password@host:27017/lab" ``` ### Redis配置 ```python redis_url = 'redis://host:6379' redis_password = 'password' redis_db = 200 ``` ### 服务器配置 ```python host = '0.0.0.0' port = 6002 ``` ## 数据流程 1. 设备通过UDP发送数据包到服务器 2. 服务器解析数据包,识别设备序列号 3. 查询设备对应的活跃实验 4. 将数据存储到Redis流 5. 通过WebSocket实时转发处理后的数据 ## 主要类和方法 ### UDPServer - `init_mongodb()`: 初始化MongoDB连接 - `init_redis()`: 初始化Redis连接 - `update_active_experiments()`: 更新活跃实验信息 - `process_and_forward_data()`: 处理和转发数据 - `handle_sensor_data()`: 处理传感器数据 - `batch_redis_write()`: 批量写入Redis ## 运行方式 ```bash python data.py ``` ## 数据格式 ### 传感器数据包格式 ### WebSocket消息格式 ```json { "type": "data_batch", "data_points": [ { "sensor_data": { "sensor_name": value }, "timestamp": timestamp } ], "serial_number": "device_serial", "total_points": count } ``` ## 错误处理 - 自动重连机制 - 数据校验 - 异常捕获和日志记录 - 优雅关闭处理 ## 注意事项 1. 确保MongoDB和Redis服务正常运行 2. 检查网络防火墙设置,确保UDP端口开放 3. 监控服务器资源使用情况 4. 定期检查日志文件