/** * 开源代码,仅供学习和交流研究使用,商用请联系三丙 * 微信:mohan_88888 * 抖音:程序员三丙 * 付费课程知识星球:https://t.zsxq.com/aKtXo */ syntax = "proto3"; package infrastructureProto; option java_package = "sanbing.jcpp.proto.gen"; option java_outer_classname = "ProtocolProto"; service ProtocolInterface { rpc onDownlink(stream RequestMsg) returns (stream ResponseMsg) {} } message RequestMsg { int64 ts = 1; TracerProto tracer = 2; ConnectRequestMsg connectRequestMsg = 10; DownlinkRequestMessage downlinkRequestMessage = 11; } message ResponseMsg { TracerProto tracer = 2; ConnectResponseMsg connectResponseMsg = 12; DownlinkResponseMessage downlinkResponseMsg = 13; } message ConnectResponseMsg { ConnectResponseCode responseCode = 1; string errorMsg = 2; } message ConnectRequestMsg { string nodeId = 1; } enum ConnectResponseCode { ACCEPTED = 0; REFUSE = 1; } message TracerProto { string id = 1; string origin = 2; int64 ts = 3; } message UplinkQueueMessage { int64 messageIdMSB = 1; int64 messageIdLSB = 2; int64 sessionIdMSB = 3; int64 sessionIdLSB = 4; string messageKey = 5; string protocolName = 6; bytes requestData = 10; 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; TransactionRecord transactionRecord = 30; BmsChargingErrorProto bmsChargingErrorProto = 31; BmsParamConfigReport bmsParamConfigReport = 33; BmsChargingInfoProto bmsChargingInfoProto = 34; BmsAbortProto bmsAbortProto = 35; RestartPileResponse restartPileResponse = 36; BmsHandshakeProto bmsHandshakeProto = 37; OtaResponse otaResponse = 38; } message DownlinkRequestMessage { int64 messageIdMSB = 1; int64 messageIdLSB = 2; int64 sessionIdMSB = 3; int64 sessionIdLSB = 4; string protocolName = 6; string pileCode = 7; optional int64 requestIdMSB = 8; optional int64 requestIdLSB = 9; optional bytes requestData = 10; string downlinkCmd = 20; LoginResponse loginResponse = 21; VerifyPricingResponse verifyPricingResponse = 22; QueryPricingResponse queryPricingResponse = 23; SetPricingRequest setPricingRequest = 24; RemoteStartChargingRequest remoteStartChargingRequest = 25; RemoteStopChargingRequest remoteStopChargingRequest = 26; TransactionRecordAck transactionRecordAck = 27; RestartPileRequest restartPileRequest = 28; OtaRequest otaRequest = 29; } message DownlinkResponseMessage { bool success = 1; optional string error = 2; } 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 LoginResponse { bool success = 1; string pileCode = 2; } 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 VerifyPricingResponse { bool success = 1; int64 pricingId = 30; } message QueryPricingRequest { string pileCode = 4; optional string additionalInfo = 20; } message QueryPricingResponse { string pileCode = 4; int64 pricingId = 30; PricingModelProto pricingModel = 1; } message PricingModelProto { PricingModelType type = 3; PricingModelRule rule = 4; string standardElec = 5; string standardServ = 6; map flagPrice = 8; repeated PeriodProto period = 9; } message PeriodProto { int32 sn = 1; string begin = 2; string end = 3; PricingModelFlag flag = 4; } message FlagPriceProto { PricingModelFlag flag = 1; string elec = 2; string serv = 3; } enum PricingModelType { CHARGE = 0; // 充电费率模型 DISCHARGE = 1; // 放电费率模型 } enum PricingModelRule { STANDARD = 0; SPLIT_TIME = 1; } enum PricingModelFlag { TOP = 0; // 尖峰 PEAK = 1; // 峰 FLAT = 2; // 平 VALLEY = 3; // 谷 DEEP = 4; // 深谷 } 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 { int64 ts = 1; string pileCode = 4; string gunCode = 5; GunRunStatus GunRunStatus = 41; repeated string faultMessages = 6; optional string additionalInfo = 20; } message ChargingProgressProto { int64 ts = 1; string pileCode = 4; string gunCode = 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 SetPricingRequest { string pileCode = 4; int64 pricingId = 30; PricingModelProto pricingModel = 1; } message SetPricingResponse { bool success = 1; string pileCode = 4; int64 pricingId = 30; } message RemoteStartChargingRequest { string pileCode = 4; string gunCode = 5; string tradeNo = 6; string limitYuan = 7; optional string additionalInfo = 20; } message RestartPileRequest { string pileCode = 4; int32 type = 7; optional string additionalInfo = 20; } message RemoteStartChargingResponse { int64 ts = 1; string pileCode = 4; string gunCode = 5; string tradeNo = 6; bool success = 7; string failReason = 8; optional string additionalInfo = 20; } message RestartPileResponse { int64 ts = 1; string pileCode = 4; bool success = 7; } message RemoteStopChargingRequest { string pileCode = 4; string gunCode = 5; } message RemoteStopChargingResponse { int64 ts = 1; string pileCode = 4; string gunCode = 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 TransactionRecord { string pileCode = 4; // 充电桩编码 string gunCode = 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; // 附加信息 } message BmsChargingErrorProto { int64 ts = 1; string pileCode = 4; string gunCode = 5; string tradeNo = 6; optional string additionalInfo = 20; } message TransactionRecordAck { string tradeNo = 6; bool success = 7; } message BmsParamConfigReport { int64 ts = 1; // 时间戳 string pileCode = 2; // 桩编码 string gunCode = 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) } message BmsChargingInfoProto { int64 ts = 1; // 时间戳 string pileCode = 4; string gunCode = 5; string tradeNo = 6; optional string additionalInfo = 20; } message OtaRequest { string pileCode = 1; // 桩编号 int32 pileModel = 2; // 桩型号 int32 pilePower = 3; // 桩功率 string address = 4; // 升级服务器地址 int32 port = 5; // 升级服务器端口 string username = 6; // 用户名 string password = 7; // 密码 string filePath = 8; // 文件路径 int32 executionControl = 9; // 执行控制 int32 downloadTimeout = 10; // 下载超时时间 } message OtaResponse { string pileCode = 1; // 桩编号 bool success = 2; optional string errorMsg = 3; } message BmsAbortProto { int64 ts = 1; // 时间戳 string pileCode = 4; string gunCode = 5; string tradeNo = 6; optional string additionalInfo = 20; } message BmsHandshakeProto { int64 ts = 1; // 时间戳 string pileCode = 2; // 桩编码 string gunCode = 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; // 附加信息 }