mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
219 lines
5.6 KiB
Markdown
219 lines
5.6 KiB
Markdown
[根目录](../CLAUDE.md) > **jsowell-netty**
|
||
|
||
# jsowell-netty 模块
|
||
|
||
Netty 通信模块,处理充电桩设备的 TCP/MQTT 协议通信。
|
||
|
||
---
|
||
|
||
## 变更记录 (Changelog)
|
||
|
||
### 2026-02-03 11:32:30
|
||
- 初始化模块文档
|
||
- 识别云快充协议处理器 70+ 个
|
||
- 识别电动自行车协议处理器 7 个
|
||
|
||
---
|
||
|
||
## 模块职责
|
||
|
||
- **TCP 服务**: 基于 Netty 的 TCP 服务器,处理充电桩设备连接
|
||
- **MQTT 服务**: MQTT 协议支持
|
||
- **协议解析**: 云快充协议、电动自行车协议解析
|
||
- **消息处理**: 设备登录、心跳、充电控制、数据上报
|
||
- **远程控制**: 远程启停充电、参数配置、固件升级
|
||
|
||
---
|
||
|
||
## 入口与启动
|
||
|
||
### Netty 服务器
|
||
|
||
```java
|
||
// NettyServer.java - 云快充 TCP 服务器
|
||
@Component
|
||
public class NettyServer {
|
||
// 启动 TCP 服务器,监听充电桩连接
|
||
}
|
||
|
||
// MqttSever.java - MQTT 服务器
|
||
@Component
|
||
public class MqttSever {
|
||
// 启动 MQTT 服务器
|
||
}
|
||
```
|
||
|
||
### 服务管理
|
||
|
||
```java
|
||
// NettyServerManager.java
|
||
@Component
|
||
public class NettyServerManager {
|
||
// 管理多个 Netty 服务器实例
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 对外接口
|
||
|
||
### 协议处理器(云快充)
|
||
|
||
| Handler | 帧类型 | 说明 |
|
||
|---------|--------|------|
|
||
| `LoginRequestHandler` | 0x01 | 设备登录 |
|
||
| `HeartbeatRequestHandler` | 0x03 | 心跳 |
|
||
| `BillingTemplateRequestHandler` | 0x05 | 计费模板请求 |
|
||
| `RemoteStartChargingRequestHandler` | 0x33 | 远程启动充电 |
|
||
| `RemoteStopChargingRequestHandler` | 0x35 | 远程停止充电 |
|
||
| `UploadRealTimeMonitorHandler` | 0x13 | 实时监控数据上报 |
|
||
| `ChargeEndHandler` | 0x15 | 充电结束 |
|
||
| `ConfirmStartChargingRequestHandler` | 0x17 | 确认启动充电 |
|
||
|
||
### 协议处理器(电动自行车)
|
||
|
||
| Handler | 说明 |
|
||
|---------|------|
|
||
| `RegistrationHandler` | 设备注册 |
|
||
| `HeartbeatHandler` | 心跳 |
|
||
| `SettlementUploadHandler` | 结算上报 |
|
||
| `PowerHeartbeatHandler` | 电源心跳 |
|
||
|
||
### 业务服务
|
||
|
||
```java
|
||
// YKCBusinessService.java - 云快充业务服务
|
||
public interface YKCBusinessService {
|
||
void handleLogin(LoginRequestData data);
|
||
void handleHeartbeat(HeartbeatData data);
|
||
void handleChargeEnd(TransactionRecordsData data);
|
||
// ...
|
||
}
|
||
|
||
// EBikeBusinessService.java - 电动自行车业务服务
|
||
public interface EBikeBusinessService {
|
||
void handleRegistration(RegistrationData data);
|
||
void handleSettlement(SettlementData data);
|
||
// ...
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 关键依赖与配置
|
||
|
||
### Maven 依赖
|
||
|
||
```xml
|
||
<dependencies>
|
||
<dependency>
|
||
<groupId>io.netty</groupId>
|
||
<artifactId>netty-all</artifactId>
|
||
<version>4.1.75.Final</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.netty</groupId>
|
||
<artifactId>netty-codec-mqtt</artifactId>
|
||
<version>4.1.79.Final</version>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.jsowell</groupId>
|
||
<artifactId>jsowell-pile</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>com.jsowell</groupId>
|
||
<artifactId>jsowell-thirdparty</artifactId>
|
||
</dependency>
|
||
</dependencies>
|
||
```
|
||
|
||
---
|
||
|
||
## 数据模型
|
||
|
||
### 协议数据结构
|
||
|
||
| 类 | 说明 |
|
||
|-----|------|
|
||
| `YKCDataProtocol` | 云快充协议数据 |
|
||
| `YKCBaseMessage` | 基础消息 |
|
||
| `LoginRequestData` | 登录请求数据 |
|
||
| `RealTimeMonitorData` | 实时监控数据 |
|
||
| `TransactionRecordsData` | 交易记录数据 |
|
||
| `EBikeDataProtocol` | 电动自行车协议数据 |
|
||
|
||
### 帧类型码
|
||
|
||
定义在 `YKCFrameTypeCode.java`:
|
||
- `0x01/0x02` - 登录请求/响应
|
||
- `0x03/0x04` - 心跳请求/响应
|
||
- `0x13/0x14` - 实时数据上报/响应
|
||
- `0x15/0x16` - 充电结束上报/响应
|
||
- `0x33/0x34` - 远程启动/响应
|
||
- `0x35/0x36` - 远程停止/响应
|
||
|
||
---
|
||
|
||
## 测试与质量
|
||
|
||
### 测试客户端
|
||
|
||
```java
|
||
// TestNettyClient.java
|
||
public class TestNettyClient {
|
||
// 用于测试 Netty 服务器的客户端
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 常见问题 (FAQ)
|
||
|
||
### Q: 设备无法连接?
|
||
1. 检查 TCP 端口是否开放
|
||
2. 检查设备 SN 是否已注册
|
||
3. 查看 `YKCBusinessServiceImpl.handleLogin()` 日志
|
||
|
||
### Q: 充电无法启动?
|
||
1. 检查设备在线状态
|
||
2. 检查充电枪状态
|
||
3. 查看 `RemoteStartChargingRequestHandler` 处理逻辑
|
||
|
||
### Q: 实时数据不更新?
|
||
1. 检查心跳是否正常
|
||
2. 检查 `UploadRealTimeMonitorHandler` 处理
|
||
3. 查看 RabbitMQ 消息队列状态
|
||
|
||
---
|
||
|
||
## 相关文件清单
|
||
|
||
```
|
||
jsowell-netty/
|
||
├── src/main/java/com/jsowell/netty/
|
||
│ ├── client/ # Netty 客户端
|
||
│ ├── decoder/ # 协议解码器
|
||
│ │ ├── YkcProtocolDecoder.java
|
||
│ │ ├── YouDianProtocolDecoder.java
|
||
│ │ └── YunKuaiChongDecoder.java
|
||
│ ├── domain/ # 数据模型
|
||
│ ├── factory/ # 处理器工厂
|
||
│ │ ├── YKCOperateFactory.java
|
||
│ │ └── EBikeOperateFactory.java
|
||
│ ├── handler/ # 消息处理器
|
||
│ │ ├── yunkuaichong/ # 云快充处理器 (70+)
|
||
│ │ └── electricbicycles/ # 电动自行车处理器
|
||
│ ├── server/ # Netty 服务器
|
||
│ │ ├── yunkuaichong/ # 云快充服务器
|
||
│ │ ├── electricbicycles/ # 电动自行车服务器
|
||
│ │ └── mqtt/ # MQTT 服务器
|
||
│ ├── service/ # 业务服务
|
||
│ │ ├── yunkuaichong/
|
||
│ │ ├── electricbicycles/
|
||
│ │ ├── camera/
|
||
│ │ └── rabbitmq/ # RabbitMQ 监听
|
||
│ └── strategy/ # 策略模式
|
||
│ └── ykc/ # 云快充策略
|
||
└── pom.xml
|
||
```
|