# 雨量监测系统开发计划 ## 系统概述 开发一个监测系统,通过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