# cpr-sensor-server **Repository Path**: mstes/cpr-sensor-agent ## Basic Information - **Project Name**: cpr-sensor-server - **Description**: 处理传感器数据并持久化 - **Primary Language**: Go - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-01-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CPR Sensor Agent ## 项目简介 CPR Sensor Agent 是一个基于 Go 语言开发的心肺复苏(CPR)传感器数据采集与处理系统。该系统通过 TCP 协议接收来自多个传感器的数据,实现气流、压力、距离和位置等关键指标的实时监测与分析,适用于 CPR 培训和实时监护场景。 ## 功能特性 - **多传感器数据采集**:支持气流、压力、距离和位置等多种传感器数据的实时采集 - **TCP 通信协议**:提供稳定的 TCP 服务器,支持传感器设备的连接和数据传输 - **RESTful API 控制**:通过 HTTP 接口实现系统的启动、停止和数据记录控制 - **数据记录管理**:提供完善的数据记录和存储功能,便于后续分析和回放 - **配置管理**:支持通过配置文件灵活调整系统参数 - **并发处理**:采用 Go 语言协程实现高效的数据并行处理 ## 系统架构 ### 核心组件 ``` ├── main.go # 程序入口 ├── agent.yaml # 代理配置文件 ├── config.toml # 系统配置 ├── go.mod # Go 模块依赖 ├── makefile # 构建脚本 │ ├── sensor/ # 传感器处理模块 │ ├── airflow.go # 气流传感器处理 │ ├── press.go # 压力传感器处理 │ ├── distance.go # 距离传感器处理 │ ├── location.go # 位置传感器处理 │ ├── record.go # 数据记录管理 │ ├── config.go # 配置管理 │ └── server.go # HTTP 服务控制 │ └── tcpserver/ # TCP 服务器模块 ├── connection.go # 连接管理 ├── server.go # TCP 服务实现 └── error.go # 错误定义 ``` ### 传感器模块 - **气流传感器 (Airflow)**:采集气流数据,进行电压转换和流量计算 - **压力传感器 (Pressure)**:监测压力变化,识别激活状态和阈值事件 - **距离传感器 (Distance)**:测量距离数据,支持循环数据处理 - **位置传感器 (Location)**:定位和偏差分析,输出位置结果 ## 快速开始 ### 环境要求 - Go 1.16 或更高版本 - Linux/Windows/macOS 操作系统 ### 安装部署 1. **克隆项目** ```bash git clone https://gitee.com/mstes/cpr-sensor-agent.git cd cpr-sensor-agent ``` 2. **构建项目** ```bash make build ``` 3. **配置文件** 编辑 `agent.yaml` 或 `config.toml` 文件,配置传感器参数和服务器设置: ```yaml # 气流传感器配置 airflow: max_flow: 100.0 threshold_flow: 5.0 # 压力传感器配置 pressure: min_pressure: 10 # 距离传感器配置 distance: min_distance: 5 # 位置传感器配置 location: min_center: 50 tolerance_horizontal: 10 tolerance_vertical: 15 # TCP 服务器配置 tcp_server: bind_ip: "0.0.0.0" port: 8080 ``` 4. **运行服务** ```bash # 默认配置运行 ./cpr-sensor-agent # 指定配置文件 ./cpr-sensor-agent -conf_name=agent -conf_path=/etc/cpr/ ``` ### 使用说明 #### 启动服务 服务启动后将自动初始化所有传感器处理器并开始监听 TCP 连接: ```bash ./cpr-sensor-agent ``` #### API 控制接口 系统提供以下 HTTP 控制接口: - **启动记录** ```bash curl -X POST http://localhost:8080/start -d '{"uid":"test001","modules":["airflow","pressure"]}' ``` - **停止记录** ```bash curl -X POST http://localhost:8080/stop ``` #### TCP 数据格式 传感器数据通过 TCP 连接发送,每行一条数据记录: ```json // 气流数据 {"type":"airflow","value":123} // 压力数据 {"type":"pressure","value":456} // 距离数据 {"type":"distance","value":789} // 位置数据 {"type":"location","value":[100,200,300,400,500]} ``` ## 开发指南 ### 添加新传感器 1. 在 `sensor/` 目录下创建新的处理器文件 2. 实现数据处理接口和回调函数 3. 在 `sensor/server.go` 中注册新的处理器 ### 运行测试 ```bash # 运行所有测试 make test # 运行特定模块测试 go test ./sensor/... go test ./tcpserver/... ``` ### 代码规范 项目遵循 Go 语言官方编码规范,使用 `gofmt` 进行代码格式化: ```bash make fmt make lint ``` ## 目录结构说明 ``` cpr-sensor-agent/ ├── agent.yaml # 主配置文件 ├── config.toml # 备用配置文件 ├── main.go # 程序入口点 ├── go.mod # Go 依赖管理 ├── go.sum # 依赖校验 ├── makefile # 构建和开发任务 │ ├── sensor/ # 传感器处理模块 │ ├── airflow.go # 气流传感器实现 │ ├── press.go # 压力传感器实现 │ ├── distance.go # 距离传感器实现 │ ├── location.go # 位置传感器实现 │ ├── record.go # 数据记录管理 │ ├── config.go # 配置加载和管理 │ ├── server.go # HTTP 服务和路由 │ └── first_dis.go # AED 首次发现功能 │ ├── tcpserver/ # TCP 服务器模块 │ ├── connection.go # 连接封装和操作 │ ├── server.go # TCP 服务核心逻辑 │ ├── error.go # 错误类型定义 │ └── test/ # TCP 服务器测试 │ └── test/ # 集成测试模块 ├── main.go # 测试入口 └── raw.txt # 测试数据 ``` ## 贡献指南 欢迎提交 Issue 和 Pull Request 改进本项目。在提交代码前,请确保: 1. 代码通过所有现有测试 2. 遵循项目代码规范 3. 新功能包含相应的测试用例 ## 许可证 本项目采用 [MIT 许可证](LICENSE),详情请参阅 LICENSE 文件。 ## 联系方式 - 项目地址:https://gitee.com/mstes/cpr-sensor-agent - 问题反馈:https://gitee.com/mstes/cpr-sensor-agent/issues