Files
jsowell-charger-web/jsowell-netty/CLAUDE.md
2026-02-03 14:20:30 +08:00

219 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[根目录](../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
```