# CLR Wallbox 充电墙盒服务SDK

## 模块概述

`clr_wallbox` 是 OneApp 车联网生态中的充电墙盒服务SDK，负责充电墙盒设备的通信协议、数据处理、状态管理和业务逻辑封装等功能。该模块为充电墙盒应用提供底层的设备控制和数据服务能力。

### 基本信息
- **模块名称**: clr_wallbox
- **版本**: 0.2.14
- **描述**: 充电墙盒服务SDK
- **Flutter 版本**: >=2.10.5
- **Dart 版本**: >=3.0.0 <4.0.0

## 功能特性

### 核心功能
1. **设备通信协议**
   - OCPP协议支持
   - Modbus通信协议
   - WebSocket实时通信
   - HTTP RESTful API

2. **数据处理服务**
   - 充电数据解析
   - 设备状态处理
   - 配置参数管理
   - 历史数据存储

3. **业务逻辑封装**
   - 充电会话管理
   - 计费逻辑处理
   - 安全验证机制
   - 异常处理流程

4. **状态监控系统**
   - 实时状态监控
   - 健康状态检查
   - 异常告警处理
   - 性能指标统计

## 技术架构

### 目录结构
```
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` - 时间工具

## 业务流程

### 充电启动流程
```mermaid
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消息处理流程
```mermaid
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协议设计

### 消息类型
1. **核心消息**
   - `Authorize` - 授权验证
   - `StartTransaction` - 开始充电
   - `StopTransaction` - 停止充电
   - `Heartbeat` - 心跳消息

2. **状态消息**
   - `StatusNotification` - 状态通知
   - `MeterValues` - 电表数值
   - `BootNotification` - 启动通知
   - `DataTransfer` - 数据传输

3. **配置消息**
   - `ChangeConfiguration` - 修改配置
   - `GetConfiguration` - 获取配置
   - `Reset` - 重置设备
   - `UnlockConnector` - 解锁连接器

### 消息结构
```json
{
  "messageTypeId": 2,
  "uniqueId": "19223201",
  "action": "Heartbeat",
  "payload": {}
}
```

## 数据存储设计

### 本地存储
1. **设备配置**
   - 设备基本信息
   - 通信参数
   - 充电参数
   - 安全配置

2. **充电记录**
   - 充电会话数据
   - 电量消耗记录
   - 时间戳信息
   - 用户信息

3. **状态数据**
   - 设备当前状态
   - 错误信息
   - 性能指标
   - 诊断数据

### 数据同步
- **增量同步**: 仅同步变化数据
- **全量同步**: 定期全量同步
- **冲突解决**: 数据冲突处理策略
- **版本控制**: 数据版本管理

## 安全机制

### 通信安全
- **TLS加密**: 传输层安全
- **证书验证**: 设备身份验证
- **消息签名**: 消息完整性验证
- **防重放**: 防止重放攻击

### 数据安全
- **敏感数据加密**: 本地数据加密
- **访问控制**: 数据访问权限
- **审计日志**: 操作审计记录
- **安全擦除**: 数据安全删除

## 性能优化

### 通信优化
- **连接池**: 复用网络连接
- **消息批处理**: 批量处理消息
- **压缩传输**: 数据压缩传输
- **异步处理**: 非阻塞消息处理

### 存储优化
- **数据压缩**: 存储空间优化
- **索引优化**: 查询性能优化
- **缓存策略**: 热点数据缓存
- **清理机制**: 过期数据清理

## 错误处理

### 错误分类
1. **通信错误**
   - 网络连接失败
   - 协议解析错误
   - 超时错误
   - 服务不可用

2. **业务错误**
   - 认证失败
   - 参数无效
   - 状态冲突
   - 资源不足

3. **系统错误**
   - 内存不足
   - 存储空间不够
   - 系统异常
   - 硬件故障

### 处理策略
- **重试机制**: 自动重试失败操作
- **降级处理**: 服务降级策略
- **补偿机制**: 事务补偿处理
- **告警通知**: 异常情况告警

## 测试策略

### 单元测试
- **协议解析测试**: 消息编解码
- **业务逻辑测试**: 充电流程
- **数据模型测试**: 序列化反序列化
- **工具类测试**: 工具方法功能

### 集成测试
- **协议集成测试**: 设备通信
- **数据库集成测试**: 数据持久化
- **服务集成测试**: 端到端流程
- **第三方集成测试**: 外部系统

### 兼容性测试
- **设备兼容性**: 不同厂商设备
- **协议版本**: OCPP不同版本
- **网络环境**: 不同网络条件
- **并发测试**: 多设备并发

## 部署和维护

### 配置管理
- **环境配置**: 开发、测试、生产
- **协议配置**: 协议参数设置
- **安全配置**: 证书和密钥管理
- **性能配置**: 性能调优参数

### 监控指标
- **设备在线率**: 设备连接状态
- **消息处理量**: 消息吞吐量
- **错误率**: 错误发生频率
- **响应时间**: 消息处理延迟

## 总结

`clr_wallbox` 模块作为 OneApp 的充电墙盒服务SDK，提供了完整的充电设备通信和管理能力。通过标准化的协议支持、稳定的数据处理和完善的安全机制，为充电基础设施的数字化管理提供了可靠的技术支撑。模块具有良好的扩展性和兼容性，能够适应不同厂商的充电设备和多样化的部署环境。
