4.6 KiB
4.6 KiB
雨量监测系统开发计划
系统概述
开发一个监测系统,通过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表:存储设备信息
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表:存储设备数据
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;
- pws01_devices表:存储设备信息
技术栈
- 后端:Go语言
- 数据库:MySQL
- 前端:HTML, CSS, JavaScript, Chart.js