mirror of
https://gitee.com/san-bing/JChargePointProtocol
synced 2026-05-04 18:09:54 +08:00
387 lines
12 KiB
Protocol Buffer
387 lines
12 KiB
Protocol Buffer
/**
|
||
* 开源代码,仅供学习和交流研究使用,商用请联系三丙
|
||
* 微信:mohan_88888
|
||
* 抖音:程序员三丙
|
||
* 付费课程知识星球:https://t.zsxq.com/aKtXo
|
||
*/
|
||
syntax = "proto3";
|
||
|
||
package infrastructureProto;
|
||
|
||
option java_package = "sanbing.jcpp.proto.gen";
|
||
option java_outer_classname = "UplinkProto";
|
||
|
||
// 上行队列消息(从充电桩到服务器)
|
||
message UplinkQueueMessage {
|
||
int64 messageIdMSB = 1;
|
||
int64 messageIdLSB = 2;
|
||
int64 sessionIdMSB = 3;
|
||
int64 sessionIdLSB = 4;
|
||
string messageKey = 5;
|
||
string protocolName = 6;
|
||
int64 ts = 7;
|
||
bytes requestData = 10;
|
||
SessionCloseEventProto sessionCloseEventProto = 20;
|
||
LoginRequest loginRequest = 21;
|
||
HeartBeatRequest heartBeatRequest = 22;
|
||
VerifyPricingRequest verifyPricingRequest = 23;
|
||
QueryPricingRequest queryPricingRequest = 24;
|
||
GunRunStatusProto gunRunStatusProto = 25;
|
||
ChargingProgressProto chargingProgressProto = 26;
|
||
SetPricingResponse setPricingResponse = 27;
|
||
RemoteStartChargingResponse remoteStartChargingResponse = 28;
|
||
RemoteStopChargingResponse remoteStopChargingResponse = 29;
|
||
TransactionRecordRequest transactionRecordRequest = 30;
|
||
BmsChargingErrorProto bmsChargingErrorProto = 31;
|
||
BmsParamConfigReportProto bmsParamConfigReportProto = 33;
|
||
BmsChargingInfoProto bmsChargingInfoProto = 34;
|
||
BmsAbortProto bmsAbortProto = 35;
|
||
RestartPileResponse restartPileResponse = 36;
|
||
BmsHandshakeProto bmsHandshakeProto = 37;
|
||
OtaResponse otaResponse = 38;
|
||
GroundLockStatusProto groundLockStatusProto = 39;
|
||
OfflineCardBalanceUpdateResponse offlineCardBalanceUpdateResponse = 40;
|
||
OfflineCardSyncResponse offlineCardSyncResponse = 41;
|
||
TimeSyncResponse timeSyncResponse = 42;
|
||
BmsDemandChargerOutputProto bmsDemandChargerOutputProto = 43;
|
||
StartChargeRequest startChargeRequest = 44;
|
||
SetQrcodeResponse setQrcodeResponse = 45;
|
||
OfflineCardClearResponse offlineCardClearResponse = 46;
|
||
OfflineCardQueryResponse offlineCardQueryResponse = 47;
|
||
}
|
||
|
||
// 会话关闭事件
|
||
message SessionCloseEventProto {
|
||
string pileCode = 2; // 充电桩编码
|
||
SessionCloseReason reason = 3; // 会话关闭原因
|
||
optional string additionalInfo = 20; // 附加信息
|
||
}
|
||
|
||
// 会话关闭原因枚举
|
||
enum SessionCloseReason {
|
||
SESSION_CLOSE_UNKNOWN = 0; // 未知原因
|
||
SESSION_CLOSE_DESTRUCTION = 1; // 自然销毁(空闲超时)
|
||
SESSION_CLOSE_ON_CHANNEL_INACTIVE = 2; // 通道不活跃
|
||
SESSION_CLOSE_MANUALLY = 3; // 手动关闭
|
||
}
|
||
|
||
// 登录请求
|
||
message LoginRequest {
|
||
string pileCode = 2;
|
||
string credential = 3;
|
||
string remoteAddress = 4;
|
||
string nodeId = 10;
|
||
string nodeHostAddress = 11;
|
||
int32 nodeRestPort = 12;
|
||
int32 nodeGrpcPort = 13;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 启动充电请求
|
||
message StartChargeRequest {
|
||
int64 ts = 1;
|
||
string pileCode = 2; // 桩编号
|
||
string gunNo = 3; // 枪编号
|
||
string startType = 4; // 启动类型
|
||
string cardNo = 5; // 账号或物理卡号
|
||
bool needPassword = 6; // 是否需要密码
|
||
string password = 7; // 密码
|
||
string carVinCode = 8; // 车辆识别码(VIN)
|
||
optional string additionalInfo = 20; // 附加信息
|
||
}
|
||
|
||
// 心跳请求
|
||
message HeartBeatRequest {
|
||
string pileCode = 3;
|
||
string remoteAddress = 4;
|
||
string nodeId = 10;
|
||
string nodeHostAddress = 11;
|
||
int32 nodeRestPort = 12;
|
||
int32 nodeGrpcPort = 13;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 校验计费请求
|
||
message VerifyPricingRequest {
|
||
string pileCode = 4;
|
||
int64 pricingId = 30;
|
||
optional string pricingModel = 31;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 查询计费请求
|
||
message QueryPricingRequest {
|
||
string pileCode = 4;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 枪运行状态枚举
|
||
enum GunRunStatus {
|
||
IDLE = 0; // 空闲
|
||
INSERTED = 1; // 已插枪
|
||
CHARGING = 2; // 充电中
|
||
CHARGE_COMPLETE = 3; // 充电完成
|
||
DISCHARGE_READY = 4; // 放电准备
|
||
DISCHARGING = 5; // 放电中
|
||
DISCHARGE_COMPLETE = 6; // 放电完成
|
||
RESERVED = 7; // 预约
|
||
FAULT = 8; // 故障
|
||
UNKNOWN = 9; // 未知
|
||
}
|
||
|
||
// 枪运行状态消息
|
||
message GunRunStatusProto {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
GunRunStatus GunRunStatus = 41;
|
||
repeated string faultMessages = 6;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 充电进度消息
|
||
message ChargingProgressProto {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
string tradeNo = 6;
|
||
string outputVoltage = 7;
|
||
string outputCurrent = 8;
|
||
int32 soc = 9;
|
||
int32 totalChargingDurationMin = 10;
|
||
string totalChargingEnergyKWh = 11;
|
||
string totalChargingCostYuan = 12;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 设置计费响应
|
||
message SetPricingResponse {
|
||
bool success = 1;
|
||
string pileCode = 4;
|
||
int64 pricingId = 30;
|
||
}
|
||
|
||
// 远程启动充电响应
|
||
message RemoteStartChargingResponse {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
string tradeNo = 6;
|
||
bool success = 7;
|
||
string failReason = 8;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 重启充电桩响应
|
||
message RestartPileResponse {
|
||
string pileCode = 4;
|
||
bool success = 7;
|
||
}
|
||
|
||
// 远程停止充电响应
|
||
message RemoteStopChargingResponse {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
bool success = 7;
|
||
string failReason = 8;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// 明细类型枚举
|
||
enum DetailType {
|
||
PEAK_VALLEY = 0; // 峰谷电量明细
|
||
TIME_PERIOD = 1; // 时段电量明细
|
||
}
|
||
|
||
// 峰谷电量明细
|
||
message PeakValleyDetail {
|
||
string topEnergyKWh = 1; // 尖峰电量
|
||
string topAmountYuan = 2; // 尖峰电费
|
||
string peakEnergyKWh = 3; // 峰时电量
|
||
string peakAmountYuan = 4; // 峰时电费
|
||
string flatEnergyKWh = 5; // 平时电量
|
||
string flatAmountYuan = 6; // 平时电费
|
||
string valleyEnergyKWh = 7; // 谷时电量
|
||
string valleyAmountYuan = 8; // 谷时电费
|
||
string deepEnergyKWh = 9; // 深谷电量
|
||
string deepAmountYuan = 10; // 深谷电费
|
||
}
|
||
|
||
// 时段电量明细
|
||
message TimePeriodDetail {
|
||
message PeriodItem {
|
||
int32 periodNo = 1; // 时段序号,从1开始
|
||
string startTime = 2; // 开始时间,格式 HH:mm:ss
|
||
string endTime = 3; // 结束时间,格式 HH:mm:ss
|
||
string energyKWh = 4; // 该时段电量
|
||
optional string amountYuan = 5; // 该时段电费,可选
|
||
}
|
||
repeated PeriodItem periods = 1; // 时段列表
|
||
}
|
||
|
||
// 交易明细
|
||
message TransactionDetail {
|
||
DetailType type = 1; // 明细类型
|
||
optional PeakValleyDetail peakValley = 2; // 峰谷电量明细
|
||
optional TimePeriodDetail timePeriod = 3; // 时段电量明细
|
||
}
|
||
|
||
// 交易记录请求
|
||
message TransactionRecordRequest {
|
||
string pileCode = 4; // 充电桩编码
|
||
string gunNo = 5; // 枪编号
|
||
string tradeNo = 6; // 交易流水号
|
||
int64 startTs = 51; // 开始时间戳
|
||
int64 endTs = 52; // 结束时间戳
|
||
string totalEnergyKWh = 53; // 总电量(必填)
|
||
optional string totalAmountYuan = 54; // 总电费(可选)
|
||
int64 tradeTs = 55; // 交易时间戳
|
||
string stopReason = 56; // 停止原因
|
||
int64 pricingId = 57; // 计费ID
|
||
optional TransactionDetail detail = 58; // 电量电费明细
|
||
optional string additionalInfo = 20; // 附加信息
|
||
}
|
||
|
||
// BMS充电错误消息
|
||
message BmsChargingErrorProto {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
string tradeNo = 6;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// BMS参数配置上报
|
||
message BmsParamConfigReportProto {
|
||
string pileCode = 2; // 桩编码
|
||
string gunNo = 3; // 枪编号
|
||
string tradeNo = 4; // 交易号
|
||
string maxSingleCellVoltage = 5; // BMS单体最高允许充电电压 (V)
|
||
string maxChargeCurrent = 6; // BMS最高允许充电电流 (A)
|
||
string ratedEnergy = 7; // BMS动力蓄电池标称总能量 (kWh)
|
||
string maxTotalChargeVoltage = 8; // BMS最高允许充电总电压 (V)
|
||
string maxTemperature = 9; // BMS最高允许温度 (℃)
|
||
string soc = 10; // BMS荷电状态SOC (%)
|
||
string currentBatteryVoltage = 11; // BMS当前电池电压 (V)
|
||
string pileMaxOutputVoltage = 12; // 电桩最高输出电压 (V)
|
||
string pileMinOutputVoltage = 13; // 电桩最低输出电压 (V)
|
||
string pileMaxOutputCurrent = 14; // 电桩最大输出电流 (A)
|
||
string pileMinOutputCurrent = 15; // 电桩最小输出电流 (A)
|
||
}
|
||
|
||
// BMS充电信息
|
||
message BmsChargingInfoProto {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
string tradeNo = 6;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// BMS中止充电
|
||
message BmsAbortProto {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
string tradeNo = 6;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
|
||
// BMS握手信息
|
||
message BmsHandshakeProto {
|
||
string pileCode = 2; // 桩编码
|
||
string gunNo = 3; // 枪编号
|
||
string tradeNo = 4; // 交易流水号
|
||
string bmsProtocolVersion = 5; // BMS通信协议版本号
|
||
int32 bmsBatteryType = 6; // BMS电池类型
|
||
int32 bmsPowerCapacity = 7; // BMS整车动力蓄电池系统额定容量
|
||
int32 bmsPowerMaxVoltage = 8; // BMS整车动力蓄电池系统额定总电压
|
||
string bmsFactory = 9; // BMS电池生产厂商名称
|
||
int32 bmsSerialNo = 10; // BMS电池组序号
|
||
int32 bmsCreateYear = 11; // BMS电池组生产日期年
|
||
int32 bmsCreateMonth = 12; // BMS电池组生产日期月
|
||
int32 bmsCreateDay = 13; // BMS电池组生产日期日
|
||
int32 bmsChargeCount = 14; // BMS电池组充电次数
|
||
int32 bmsPropertyRightLabel = 15; // BMS电池组产权标识
|
||
string carVinCode = 16; // 车辆识别码(VIN)
|
||
string bmsSoftwareVersion = 17; // BMS软件版本号
|
||
optional string additionalInfo = 20; // 附加信息
|
||
}
|
||
|
||
// OTA响应
|
||
message OtaResponse {
|
||
string pileCode = 1; // 桩编号
|
||
bool success = 2;
|
||
optional string errorMsg = 3;
|
||
}
|
||
|
||
// 地锁状态上报
|
||
message GroundLockStatusProto {
|
||
string pileCode = 2; // 桩编号
|
||
string gunNo = 3; // 枪号
|
||
int32 lockStatus = 4; // 车位锁状态
|
||
int32 parkStatus = 5; // 车位状态
|
||
int32 lockBattery = 6; // 地锁电量状态 (百分比值0~100)
|
||
int32 alarmStatus = 7; // 报警状态
|
||
int32 reserved = 8; // 预留位
|
||
optional string additionalInfo = 20; // 附加信息
|
||
}
|
||
|
||
// 离线卡余额更新响应
|
||
message OfflineCardBalanceUpdateResponse {
|
||
string pileCode = 1; // 充电桩编码
|
||
string cardNo = 2; // 物理卡号
|
||
bool success = 3;
|
||
optional string errorMsg = 4;
|
||
}
|
||
|
||
// 离线卡同步响应
|
||
message OfflineCardSyncResponse {
|
||
string pileCode = 1; // 充电桩编码
|
||
bool success = 3;
|
||
optional string errorMsg = 4;
|
||
}
|
||
|
||
// 时间同步响应
|
||
message TimeSyncResponse {
|
||
string pileCode = 1;
|
||
string time = 2;
|
||
}
|
||
|
||
|
||
|
||
message OfflineCardClearResponse {
|
||
string pileCode = 1; // 充电桩编码
|
||
repeated ClearResult clearResult = 2; // 清除卡号结果集合
|
||
}
|
||
|
||
message ClearResult {
|
||
string cardNo = 1; // 物理卡号
|
||
bool success = 2;
|
||
optional string errorMsg = 3;
|
||
}
|
||
|
||
|
||
|
||
message OfflineCardQueryResponse {
|
||
string pileCode = 1; // 充电桩编码
|
||
repeated QueryResult queryResult = 2; // 查询卡号结果集合
|
||
}
|
||
|
||
message QueryResult {
|
||
string cardNo = 1; // 物理卡号
|
||
bool exist = 2;
|
||
|
||
}
|
||
|
||
|
||
|
||
// BMS需求充电机输出
|
||
message BmsDemandChargerOutputProto {
|
||
string pileCode = 4;
|
||
string gunNo = 5;
|
||
string tradeNo = 6;
|
||
optional string additionalInfo = 20;
|
||
}
|
||
// 设置二维码响应
|
||
message SetQrcodeResponse {
|
||
bool success = 1;
|
||
string pileCode = 4;
|
||
int32 type = 7;
|
||
int32 startAddr = 8;
|
||
}
|