Files
2025-01-22 07:34:41 +00:00

103 lines
2.0 KiB
Markdown

# 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. 定期检查日志文件