9.1 KiB
9.1 KiB
CLR Wallbox 充电墙盒服务SDK
模块概述
clr_wallbox 是 OneApp 车联网生态中的充电墙盒服务SDK,负责充电墙盒设备的通信协议、数据处理、状态管理和业务逻辑封装等功能。该模块为充电墙盒应用提供底层的设备控制和数据服务能力。
基本信息
- 模块名称: clr_wallbox
- 版本: 0.2.14
- 描述: 充电墙盒服务SDK
- Flutter 版本: >=2.10.5
- Dart 版本: >=3.0.0 <4.0.0
功能特性
核心功能
-
设备通信协议
- OCPP协议支持
- Modbus通信协议
- WebSocket实时通信
- HTTP RESTful API
-
数据处理服务
- 充电数据解析
- 设备状态处理
- 配置参数管理
- 历史数据存储
-
业务逻辑封装
- 充电会话管理
- 计费逻辑处理
- 安全验证机制
- 异常处理流程
-
状态监控系统
- 实时状态监控
- 健康状态检查
- 异常告警处理
- 性能指标统计
技术架构
目录结构
lib/
├── clr_wallbox.dart # 模块入口文件
├── src/ # 源代码目录
│ ├── protocols/ # 通信协议
│ ├── services/ # 业务服务
│ ├── models/ # 数据模型
│ ├── repositories/ # 数据仓库
│ ├── processors/ # 数据处理器
│ └── utils/ # 工具类
├── test/ # 测试文件
└── generated/ # 代码生成文件
依赖关系
核心框架依赖
basic_modular: ^0.2.3- 模块化框架basic_network: ^0.2.3+4- 网络通信框架basic_storage: ^0.2.2- 本地存储框架basic_track: ^0.1.3- 数据埋点
工具依赖
json_annotation: ^4.6.0- JSON序列化dartz: ^0.10.1- 函数式编程freezed_annotation: ^2.0.3- 数据类注解path_provider: ^2.1.3- 文件路径charset_converter: ^2.1.1- 字符编码转换
核心模块分析
1. 模块入口 (clr_wallbox.dart)
功能职责:
- SDK对外接口导出
- 服务初始化配置
- 依赖注入管理
2. 通信协议 (src/protocols/)
功能职责:
- 充电设备通信协议实现
- 消息编码解码处理
- 协议版本管理
- 连接状态维护
主要协议:
OCPPProtocol- OCPP充电协议ModbusProtocol- Modbus工业协议WebSocketProtocol- WebSocket实时协议HTTPProtocol- HTTP REST协议
协议特性:
- OCPP 1.6/2.0: 开放充电点协议
- Modbus RTU/TCP: 工业标准协议
- 自定义协议: 厂商特定协议
- 协议适配: 多协议统一接口
3. 业务服务 (src/services/)
功能职责:
- 充电业务逻辑封装
- 设备管理服务
- 用户认证服务
- 计费结算服务
主要服务:
ChargingService- 充电服务DeviceService- 设备服务AuthService- 认证服务BillingService- 计费服务MonitoringService- 监控服务
4. 数据模型 (src/models/)
功能职责:
- 充电设备数据模型
- 协议消息模型
- 业务实体模型
- 配置参数模型
主要模型:
WallboxDevice- 墙盒设备模型ChargingSession- 充电会话模型OCPPMessage- OCPP消息模型DeviceStatus- 设备状态模型ChargingConfig- 充电配置模型
5. 数据仓库 (src/repositories/)
功能职责:
- 设备数据持久化
- 充电记录存储
- 配置信息管理
- 缓存数据处理
主要仓库:
DeviceRepository- 设备数据仓库SessionRepository- 会话数据仓库ConfigRepository- 配置数据仓库LogRepository- 日志数据仓库
6. 数据处理器 (src/processors/)
功能职责:
- 协议数据解析
- 业务数据转换
- 状态数据处理
- 异常数据过滤
主要处理器:
MessageProcessor- 消息处理器StatusProcessor- 状态处理器DataConverter- 数据转换器ExceptionHandler- 异常处理器
7. 工具类 (src/utils/)
功能职责:
- 协议工具方法
- 数据验证工具
- 加密解密工具
- 时间处理工具
主要工具:
ProtocolUtils- 协议工具CryptoUtils- 加密工具ValidationUtils- 验证工具TimeUtils- 时间工具
业务流程
充电启动流程
graph TD
A[用户请求充电] --> B[设备状态检查]
B --> C{设备是否可用}
C -->|否| D[返回设备不可用]
C -->|是| E[用户身份验证]
E --> F{验证是否通过}
F -->|否| G[返回认证失败]
F -->|是| H[发送充电启动指令]
H --> I[设备响应处理]
I --> J{启动是否成功}
J -->|是| K[创建充电会话]
J -->|否| L[返回启动失败]
K --> M[开始充电监控]
M --> N[记录充电数据]
N --> O[更新充电状态]
O --> P{充电是否完成}
P -->|否| N
P -->|是| Q[结束充电会话]
Q --> R[生成充电报告]
OCPP消息处理流程
graph TD
A[接收OCPP消息] --> B[消息格式验证]
B --> C{格式是否正确}
C -->|否| D[返回格式错误]
C -->|是| E[解析消息内容]
E --> F[识别消息类型]
F --> G[路由到对应处理器]
G --> H[执行业务逻辑]
H --> I[生成响应消息]
I --> J[序列化响应]
J --> K[发送响应消息]
K --> L[记录处理日志]
OCPP协议设计
消息类型
-
核心消息
Authorize- 授权验证StartTransaction- 开始充电StopTransaction- 停止充电Heartbeat- 心跳消息
-
状态消息
StatusNotification- 状态通知MeterValues- 电表数值BootNotification- 启动通知DataTransfer- 数据传输
-
配置消息
ChangeConfiguration- 修改配置GetConfiguration- 获取配置Reset- 重置设备UnlockConnector- 解锁连接器
消息结构
{
"messageTypeId": 2,
"uniqueId": "19223201",
"action": "Heartbeat",
"payload": {}
}
数据存储设计
本地存储
-
设备配置
- 设备基本信息
- 通信参数
- 充电参数
- 安全配置
-
充电记录
- 充电会话数据
- 电量消耗记录
- 时间戳信息
- 用户信息
-
状态数据
- 设备当前状态
- 错误信息
- 性能指标
- 诊断数据
数据同步
- 增量同步: 仅同步变化数据
- 全量同步: 定期全量同步
- 冲突解决: 数据冲突处理策略
- 版本控制: 数据版本管理
安全机制
通信安全
- TLS加密: 传输层安全
- 证书验证: 设备身份验证
- 消息签名: 消息完整性验证
- 防重放: 防止重放攻击
数据安全
- 敏感数据加密: 本地数据加密
- 访问控制: 数据访问权限
- 审计日志: 操作审计记录
- 安全擦除: 数据安全删除
性能优化
通信优化
- 连接池: 复用网络连接
- 消息批处理: 批量处理消息
- 压缩传输: 数据压缩传输
- 异步处理: 非阻塞消息处理
存储优化
- 数据压缩: 存储空间优化
- 索引优化: 查询性能优化
- 缓存策略: 热点数据缓存
- 清理机制: 过期数据清理
错误处理
错误分类
-
通信错误
- 网络连接失败
- 协议解析错误
- 超时错误
- 服务不可用
-
业务错误
- 认证失败
- 参数无效
- 状态冲突
- 资源不足
-
系统错误
- 内存不足
- 存储空间不够
- 系统异常
- 硬件故障
处理策略
- 重试机制: 自动重试失败操作
- 降级处理: 服务降级策略
- 补偿机制: 事务补偿处理
- 告警通知: 异常情况告警
测试策略
单元测试
- 协议解析测试: 消息编解码
- 业务逻辑测试: 充电流程
- 数据模型测试: 序列化反序列化
- 工具类测试: 工具方法功能
集成测试
- 协议集成测试: 设备通信
- 数据库集成测试: 数据持久化
- 服务集成测试: 端到端流程
- 第三方集成测试: 外部系统
兼容性测试
- 设备兼容性: 不同厂商设备
- 协议版本: OCPP不同版本
- 网络环境: 不同网络条件
- 并发测试: 多设备并发
部署和维护
配置管理
- 环境配置: 开发、测试、生产
- 协议配置: 协议参数设置
- 安全配置: 证书和密钥管理
- 性能配置: 性能调优参数
监控指标
- 设备在线率: 设备连接状态
- 消息处理量: 消息吞吐量
- 错误率: 错误发生频率
- 响应时间: 消息处理延迟
总结
clr_wallbox 模块作为 OneApp 的充电墙盒服务SDK,提供了完整的充电设备通信和管理能力。通过标准化的协议支持、稳定的数据处理和完善的安全机制,为充电基础设施的数字化管理提供了可靠的技术支撑。模块具有良好的扩展性和兼容性,能够适应不同厂商的充电设备和多样化的部署环境。