rain_monitor/todo.md
2025-07-12 17:41:49 +08:00

144 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 雨量监测系统开发计划
## 系统概述
开发一个监测系统通过ModBus-RTU协议与两种设备通信收集并展示气象和雨量数据。
新增PWS01设备通过HTTP GET请求获取数据提供更全面的气象要素。
## 系统架构
- Web界面监听10003端口
- TCP服务器监听10004端口与设备通信
- 两种客户端设备地址码01(气象站)和02(雨量计)
- PWS01设备通过HTTP GET请求通信
## 开发任务
### 1. 数据采集模块
- [ ] 实现TCP服务器监听10004端口
- [ ] 实现ModBus-RTU协议解析
- [ ] 设备01(气象站)数据采集15分钟一次
- 发送指令:`010301f400100408`
- 解析返回数据(风速、风向、温湿度等)
- [ ] 设备02(雨量计)数据采集
- 发送指令:`02030000000ac5fe`
- 解析返回数据(当天降雨量、瞬时降雨量等)
- [ ] 实现数据转换(根据设备寄存器定义)
- [ ] 新增PWS01设备HTTP GET请求数据采集
- 创建专门的包处理HTTP GET请求
- 解析JSON响应数据
### 2. 数据存储模块
- [ ] 设计MySQL数据库表结构
- 设备01数据表
- 设备02数据表
- [ ] 实现数据持久化存储
- [ ] 实现数据查询接口
- [ ] 新增PWS01设备表结构
- 设备信息表存储设备基本信息以设备ID为主键
- 设备数据表存储设备采集的气象数据以设备ID为外键
### 3. Web服务器模块
- [ ] 实现Web服务器监听10003端口
- [ ] 设计API接口
- 获取最新数据
- 查询历史数据(支持时间范围)
- 数据聚合(按小时、天等)
- 触发设备查询
- [ ] 新增PWS01设备API接口
- 获取PWS01设备信息
- 获取PWS01最新数据
- 查询PWS01历史数据
### 4. 前端界面
- [ ] 参考提供的HTML风格实现Web界面
- [ ] 实现数据可视化(图表展示)
- [ ] 实现数据表格展示
- [ ] 实现数据导出功能
- [ ] 实现设备连接状态显示
- [ ] 新增PWS01设备专属页面
- 显示设备信息
- 展示全部气象要素数据
- 数据可视化
### 5. PWS01设备集成
- [ ] 新增查询方法
- 实现HTTP GET请求获取设备数据
- 解析JSON响应
- [ ] 新增定时采集任务
- 默认15分钟查询一次
- 可配置查询间隔
- [ ] 新增数据结构
- PWS01设备信息结构
- PWS01设备数据结构
- [ ] 新增数据库表
- pws01_devices表存储设备信息
```sql
CREATE TABLE IF NOT EXISTS pws01_devices (
id VARCHAR(50) PRIMARY KEY,
active_time BIGINT NOT NULL,
bind_space_id VARCHAR(50) NOT NULL,
category VARCHAR(20) NOT NULL,
create_time BIGINT NOT NULL,
custom_name VARCHAR(100),
icon VARCHAR(255),
ip VARCHAR(50) NOT NULL,
is_online BOOLEAN NOT NULL,
lat VARCHAR(20),
local_key VARCHAR(50),
lon VARCHAR(20),
model VARCHAR(50) NOT NULL,
name VARCHAR(100) NOT NULL,
product_id VARCHAR(50) NOT NULL,
product_name VARCHAR(100) NOT NULL,
sub BOOLEAN NOT NULL,
time_zone VARCHAR(10) NOT NULL,
update_time BIGINT NOT NULL,
uuid VARCHAR(50) NOT NULL,
last_query_time DATETIME,
INDEX idx_ip (ip),
INDEX idx_product_id (product_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
- pws01_data表存储设备数据
```sql
CREATE TABLE IF NOT EXISTS pws01_data (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
device_id VARCHAR(50) NOT NULL,
timestamp DATETIME NOT NULL,
temp_current INT,
humidity_value INT,
battery_percentage INT,
temp_unit_convert VARCHAR(10),
windspeed_unit_convert VARCHAR(10),
pressure_unit_convert VARCHAR(10),
rain_unit_convert VARCHAR(10),
bright_unit_convert VARCHAR(10),
temp_current_external INT,
humidity_outdoor INT,
temp_current_external_1 INT,
humidity_outdoor_1 INT,
temp_current_external_2 INT,
humidity_outdoor_2 INT,
temp_current_external_3 INT,
humidity_outdoor_3 INT,
atmospheric_pressture INT,
pressure_drop INT,
windspeed_avg INT,
windspeed_gust INT,
rain_1h INT,
rain_24h INT,
rain_rate INT,
uv_index INT,
dew_point_temp INT,
feellike_temp INT,
heat_index INT,
windchill_index INT,
INDEX idx_device_id (device_id),
INDEX idx_timestamp (timestamp),
FOREIGN KEY (device_id) REFERENCES pws01_devices(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
## 技术栈
- 后端Go语言
- 数据库MySQL
- 前端HTML, CSS, JavaScript, Chart.js