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

5.6 KiB
Raw Blame History

根目录 > jsowell-netty

jsowell-netty 模块

Netty 通信模块,处理充电桩设备的 TCP/MQTT 协议通信。


变更记录 (Changelog)

2026-02-03 11:32:30

  • 初始化模块文档
  • 识别云快充协议处理器 70+ 个
  • 识别电动自行车协议处理器 7 个

模块职责

  • TCP 服务: 基于 Netty 的 TCP 服务器,处理充电桩设备连接
  • MQTT 服务: MQTT 协议支持
  • 协议解析: 云快充协议、电动自行车协议解析
  • 消息处理: 设备登录、心跳、充电控制、数据上报
  • 远程控制: 远程启停充电、参数配置、固件升级

入口与启动

Netty 服务器

// NettyServer.java - 云快充 TCP 服务器
@Component
public class NettyServer {
    // 启动 TCP 服务器,监听充电桩连接
}

// MqttSever.java - MQTT 服务器
@Component
public class MqttSever {
    // 启动 MQTT 服务器
}

服务管理

// 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 电源心跳

业务服务

// 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 依赖

<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 - 远程停止/响应

测试与质量

测试客户端

// 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