103 lines
3.1 KiB
Markdown
103 lines
3.1 KiB
Markdown
|
|
# IoT设备数据本地存储方案
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
|
|||
|
|
本方案实现了将外部API接口返回的IoT设备数据存储到本地数据库表中,并提供定时同步和手动同步功能。
|
|||
|
|
|
|||
|
|
## 数据库表结构
|
|||
|
|
|
|||
|
|
### 1. iot_device_data(设备数据表)
|
|||
|
|
存储所有IoT设备的实时数据,包括:
|
|||
|
|
- 设备基本信息(ID、类型、名称)
|
|||
|
|
- 设备状态(电量、温度、步数等)
|
|||
|
|
- 位置信息(经纬度、海拔)
|
|||
|
|
- 信号信息(信号强度、GPS状态)
|
|||
|
|
- 时间信息(更新时间、创建时间)
|
|||
|
|
|
|||
|
|
### 2. iot_sync_log(同步日志表)
|
|||
|
|
记录数据同步的详细日志,包括:
|
|||
|
|
- 同步类型(自动/手动)
|
|||
|
|
- 同步状态(成功/失败)
|
|||
|
|
- 同步统计(总数、成功数、失败数)
|
|||
|
|
- 错误信息
|
|||
|
|
|
|||
|
|
## 核心组件
|
|||
|
|
|
|||
|
|
### 1. 数据同步服务(IotDeviceSyncService)
|
|||
|
|
- 负责从外部API获取数据
|
|||
|
|
- 数据转换和映射
|
|||
|
|
- 批量插入/更新本地数据库
|
|||
|
|
- 同步日志记录
|
|||
|
|
|
|||
|
|
### 2. 定时任务(IotDeviceSyncJob)
|
|||
|
|
- 每5分钟自动同步一次数据
|
|||
|
|
- 确保数据的实时性
|
|||
|
|
|
|||
|
|
### 3. 手动同步接口(IotDeviceSyncController)
|
|||
|
|
- 提供手动触发同步的API接口
|
|||
|
|
- 支持立即同步数据
|
|||
|
|
|
|||
|
|
### 4. 数据查询接口(IotDeviceProxyController)
|
|||
|
|
- 从本地数据库查询设备数据
|
|||
|
|
- 支持分页和条件查询
|
|||
|
|
- 保持与前端接口的兼容性
|
|||
|
|
|
|||
|
|
## 部署步骤
|
|||
|
|
|
|||
|
|
### 1. 执行数据库脚本
|
|||
|
|
```sql
|
|||
|
|
-- 执行 add_iot_device_table.sql 创建表结构
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 重启后端服务
|
|||
|
|
确保新的实体类、Mapper、Service等组件被正确加载。
|
|||
|
|
|
|||
|
|
### 3. 验证功能
|
|||
|
|
- 访问手动同步接口:`POST /api/iotSync/sync`
|
|||
|
|
- 检查数据库中的数据
|
|||
|
|
- 验证前端页面数据展示
|
|||
|
|
|
|||
|
|
## API接口
|
|||
|
|
|
|||
|
|
### 手动同步接口
|
|||
|
|
```
|
|||
|
|
POST /api/iotSync/sync
|
|||
|
|
```
|
|||
|
|
手动触发数据同步
|
|||
|
|
|
|||
|
|
### 设备数据查询接口
|
|||
|
|
```
|
|||
|
|
POST /api/iotDevice/queryList
|
|||
|
|
```
|
|||
|
|
从本地数据库查询设备数据(保持原有接口格式)
|
|||
|
|
|
|||
|
|
## 数据流程
|
|||
|
|
|
|||
|
|
1. **定时同步**:每5分钟自动从外部API获取最新数据
|
|||
|
|
2. **数据转换**:将API返回的JSON数据转换为数据库实体
|
|||
|
|
3. **数据存储**:插入新设备或更新现有设备数据
|
|||
|
|
4. **前端查询**:前端页面从本地数据库查询数据
|
|||
|
|
5. **日志记录**:记录每次同步的详细日志
|
|||
|
|
|
|||
|
|
## 优势
|
|||
|
|
|
|||
|
|
1. **性能提升**:前端查询本地数据库,响应更快
|
|||
|
|
2. **数据稳定**:不依赖外部API的可用性
|
|||
|
|
3. **历史数据**:可以保存设备的历史状态数据
|
|||
|
|
4. **离线查询**:即使外部API不可用,也能查询本地数据
|
|||
|
|
5. **数据统计**:可以基于本地数据进行统计分析
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **数据一致性**:定时同步可能存在5分钟的数据延迟
|
|||
|
|
2. **存储空间**:需要定期清理历史数据,避免数据库过大
|
|||
|
|
3. **同步监控**:建议监控同步日志,及时发现同步失败的情况
|
|||
|
|
4. **数据备份**:建议定期备份设备数据表
|
|||
|
|
|
|||
|
|
## 扩展功能
|
|||
|
|
|
|||
|
|
1. **数据清理**:可以添加定时清理过期数据的任务
|
|||
|
|
2. **数据统计**:可以基于本地数据生成设备状态统计报表
|
|||
|
|
3. **告警功能**:可以基于设备状态数据实现告警功能
|
|||
|
|
4. **数据导出**:可以添加数据导出功能
|