王旭东
充电桩压测方案
海镕多联机空调485控制器方案说明
电能平台压测程序使用说明
中台软网关解析规则整理
星纵物联LoraWAN网关方案整理
国网376.1协议整理
云快充协议对接方案
科德4G水表离线问题排查
海镕3种空调平台与中台对接参数文档
电信AEP平台NB设备接入教程
牧原项目ARCM500蓝牙调试程序对接文档
中台-Expasion架构设计调整
中台-蓝牙调试小程序对接说明
ADW300-IOT报警新版参数设置(增加DO1和DO2联动)
迈格瑞能MPS微电网混合逆变器整理
微电网混合逆变器参数下发整理
云南交投充电桩协议对接方案
AAC系列空调控制器整理
云快充2.1协议对接方案(新增V2G协议)
本文档使用 MrDoc 发布
-
+
首页
云快充2.1协议对接方案(新增V2G协议)
#### #### 注意事项 - 平台响应桩的请求事件、下发指令都通过中台的操作指令接口 ***/exchange/publish/indicate/operate/{sn}*** - 暂定云快充协议充电桩连接服务器端口是 **20045** - 平台需预先录入充电桩设备,并调用中台接口同步桩信息,否则中台收到桩的报文不予上线。 - 中台调用电能平台的充电桩启动充电鉴权接口、交易记录上报接口,传参和返回值会存入中台 **log_Tenant** 日志,防止丢失数据 - 云快充协议的桩中台固定型号名称:云快充协议充电桩 productKey: OTg5MDYwNDkzNzMzODcxNjE2 secretKey: rdb9d9475f214001 - 下文所有属性上报和事件上报的参数内容,都参照国网协议封装在 **params** 属性中,最终转发平台的数据,固定带上 **sn** 和 **identifier** 属性。 - 下文中所有 **标识符**,对应中台报文日志的 **messageType** 属性。 - 交易流水号格式:桩号(7bytes)+枪号(1byte)+年月日时分秒(6bytes)+自增序号(2bytes); 示例:32010600019236012001061803423060 - 平台下发的指令,中台会创建一个临时的 **commandInfo** 对象缓存在内存中,通过固定的 **key** 识别获取,指令传参带上 **gunNo** ,则这个 **key** 会带上 **_{gunNo}** 作为后缀,无须 **gunNo** 的指令请勿加上这个属性,否则桩回复指令的报文会匹配不到对应的指令缓存导致中台回复下发超时失败。 - 目前充电桩中台分支已使用EIOT主版本 - 心跳报文由于上传频繁且无实际作用,故不存中台报文日志 - 标题加*号的相对云快充1.6版协议有做调整,平台需做兼容 #### 协议概览  ### 1. 上电流程 #### 1.1 ***充电桩登录认证 0x01 (相对1.6版本增加了几个参数) 中台收到报文后,查询数据库有无这台桩的信息,若桩不存在或者已删除,则回复登录认证失败,不予上线。若查询到桩信息,则以 **ykcLoginEvt** 标识符作为登录认证事件转发给平台 **ykcLoginEvt** 事件参数: ```js { //桩编码,14位,不足14位补零 "sn":"55031412782305", //桩类型 0-直流桩 1-交流桩 "devType": 0, //充电枪数量 "portNum": 1, //通信协议版本,版本号乘10,0x0A表示 v1.0 "version": 1.0, //程序版本,ASCII码,不足8位补零 "softversion": "4.1.50", //网络链接类型 0-SIM卡 1-LAN 2-WAN 3-其他 "netType": 0, //SIM卡,BCD码,长度20,取不到置零 "simNo": "01010101010101010101", //运营商 (转成国网协议 12-移动 13-电信 11-联通 14-其他) "netId": 12, //Token,BCD码,长度14 "token": "00000000000000", //手机号码 "phone": "00000000000", //支持网络制式, "networkSupport": 15, //当前网络制式,1-2G 2-3G 4-4G 8-5G "network": 4, //经度 "longitude":"", //纬度 "latitude":"", //充电桩MAC地址 "MAC":"67-66-88-A5-37-FF" } ``` #### 1.2 登录认证应答 0x02 中台直接回复设备,标识符 **ykcLoginEvt_reply** #### 1.3 计费模型验证请求 0x05 标识符 **ykcAskVerfyFeeModel** #### 1.4 计费模型验证请求应答 0x06 标识符 **ykcAskVerfyFeeModel_reply** 中台处理,直接回复桩不一致,桩空闲主动请求计费模型 #### 1.5 计费模型请求 0x09 中台以 **ykcAskFeeModelEvt** 标识符参照国网协议计费模型请求事件转发给平台 这里传参只有桩编号,和国网协议上传当前计费模型编号有差别 **ykcAskFeeModelEvt** 事件参数: ```js { //桩编号 "sn": "55031412782305" } ``` #### 1.6 计费模型请求应答 ##### 1.6.1 ***计费模型请求应答 0x0A 平台调用中台接口将计费模型返回给桩 标识符 **ykcAskFeeModelEvt_reply** 云快充协议以半小时为1单位,将一天分为48个时段,平台参照国网协议旧版的计费模型格式,调整后下发,需要注意费率的精度与国网协议旧版不一致,中台做转换处理后返回给桩 平台调用中台接口传参: ```js { "method": "YKC_ASK_FEEMODEL_RESPONSE", //计费模型Id,协议固定为 1 "feeModelId": 1, //费率数量,最多48个费率 "rateNum": 5, //计损比例,平台不支持计损功能,传0 "calLossRatio": 0, //电费,尖峰平谷深谷费率,精确到五位小数 "chargeFee":[10000,12000,8000,6000,5000], //服务费,对应尖峰平谷深谷时段服务费,精确到五位小数 "serviceFee":[5000,5000,5000,5000,5000], //时段数 最多48 "timeNum": 6, //时段开始时间点,时间点分钟部分仅支持 00或30 ,如果全天仅用一个费率,也得传一个时间过来,如"0000" "timeSeg": ["0530","0800","1130","1330","1900","2300"], //时段标志 10-尖时段 11-峰时段 12-平时段 13-谷时段 14-深谷时段 "segFlag": [10,11,10,12,13,11] } ``` #### 1.7 充电桩心跳包 0x03 中台处理,标识符 **ykcHeartbeat** #### 1.8 心跳包应答 0x04 中台处理,标识符 **ykcHeartbeat_reply** 由于桩不会主动对时,考虑在上电流程结束中台第一次回复心跳包后由中台主动下发对时,并且缓存本次对时的时间戳,每次心跳上报判断距离上次对时超过一天,再次下发对时 ### 2. app充电流程 #### 2.1 启动充电 ##### 2.1.1 ***平台远程控制启机 0xAD 增加了参数, 中台需要根据 **pileType** 充电桩交流或直流处理回复报文 标识符 **ykcStartCharging** 平台调用中台接口传参: ```js { "method": "YKC_START_CHARGING", //平台交易流水号 "preTradeNo": "55031412782305012018061914444680", //枪号 "gunNo": 1, //充电桩类型 1-直流 2-交流 "pileType": 1, //逻辑卡号,显示在屏幕上,长度不足16位左边补零,逻辑卡号为卡面印刷卡号,没有传空 "logicalCardNo": "", //物理卡号,16进制表示,长度不足16位左边补零,桩与平台交互需使用的物理卡号,没有传空 "physicalCardNo": "", //账户余额,保留到小数点两位,10000表示100元 "balance": 10000, //本次充电当前允许的最大功率,单位kW,0-不限制,不传赋默认值0,这里功率调节优先级高于默认最大功率下发 "maxPower": 60, //SOC限制,0-不限制,不传赋默认值0 "socLimit": 80, //充电电量限制,精确到小数点后四位,平台乘倍率下发,0-不限制,不传赋默认值0 "energyLimit": 0, //充电时间限制,单位:分钟 0-不限制,不传赋默认值0 "chaTimeLimit": 0, //充电类型,0-即时充电 1-预约充电,不传默认0 "chaType": 0, //预约启动时间,秒级时间戳,0-表示立即充电,不传默认0 "startTimestamp": 0 } ``` ##### 2.1.2 ***远程启机命令回复 0xA7 平台至少需要等待90秒,超过90秒认定启动失败 由于云快充协议的桩收到启动命令后检测到未插枪会回复充电失败,但是从收到启动命令起60秒内检测到枪重新连接,会补发启动充电成功报文,所以中台这边增加启动充电结果事件推送 交流桩不会上报启动充电结果事件,中台直接根据指令响应结果生成该事件 平台启动充电返回结果是失败,且失败原因是未插枪,应继续等待60秒,以最后收到的启动充电结果事件为准。 2024-09-27 补充:平台这边若未插枪,是不允许下发启动充电的,从源头规避了上述问题。 中台响应结果: ```js { //这里success固定为1,表示接口调用成功,启动充电结果需要看下面的startResult "success": "1", "data": { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //启动结果 0-失败 1-成功 "startResult": 0, //失败原因 0-无 1-设备编号不匹配 2-枪已在充电 3-设备故障 4-设备离线 5-未插枪 "faultCode": 5 }, "errorCode": "", "errorMsg": "" } ``` 中台接口响应之后还会以 **ykcStartChaResEvt** 标识符参照国网协议启动充电结果事件方式转发给平台 **ykcStartChaResEvt** 事件参数: ```js { //桩号 "sn": "55031412782305", //枪号 "gunNo": 1, //平台交易流水号 "preTradeNo": "55031412782305012018061914444680", //启动结果 0-失败 1-成功 "startResult": 0, //失败原因 0-无 1-设备编号不匹配 2-枪已在充电 3-设备故障 4-设备离线 5-未插枪 "faultCode": 5 } ``` #### 2.2 充电中 ##### 2.2.1 充电握手 0x15 充电握手中台以 **ykcBmsStart** 标识符参照国网协议属性上报方式转发给平台 **ykcBmsStart** 属性上报参数: ```js { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMS 通讯协议版本号 "bmsVersion": "1.1", //BMS 电池类型 1-铅酸电池 2-氢电池 3-磷酸铁锂电池 4-锰酸锂电池 5-钴酸锂电池 6-三元材料电池 7-聚合物锂离子电池 8-钛酸锂电池 255-其他 "batType": 3, //BMS 整车动力蓄电池系统额定容量,0.1Ah/位 "batRatedCap": 0, //BMS 整车动力蓄电池系统额定总电压,0.1V/位 "batRatedTotalVol": 0, //BMS 电池生产厂商名称 "batManufactor": "", //BMS 电池组序号 "batNo": "0", //BMS 电池组生产日期 年-月-日 "batManufactureDate": "2024-08-21", //BMS 电池组充电次数 "batChargingTimes": 0, //BMS 电池组产权标识 0-租赁 1-车自有 "batRightsId": 0, //BMS 车辆识别码 "vinCode": "", //BMS 软件版本号 "bmsSoftVersion": "2015111016" } ``` ##### 2.2.2 充电桩上传参数配置 0x17 中台以 **ykcBmsConfig** 标识符参照国网协议属性上报方式转发给平台 **ykcBmsConfig** 属性上报参数: ```js { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMS 单体动力蓄电池最高允许充电电压 0.01 V/位,0 V 偏移量,数据范围:0~24 V "singlBatMaxAllowVol": 24, //BMS 最高允许充电电流 0.1 A/位,-400A 偏移量 "maxAllowCur": 20, //BMS 动力蓄电池标称总能量 0.1 kWh/位,0 kWh 偏移量,数据范围:0~1000 kWh "battotalEnergy": 1000, //BMS 最高允许充电总电压 0.1 V/位,0 V 偏移量 "maxVol": 24, //BMS 最高允许温度 1ºC/位,-50 ºC 偏移量,数据范围:-50 ºC ~+200 ºC "maxTemp": 120, //BMS 整车动力蓄电池荷电状态(soc) 0.1%/位,0%偏移量,数据范围:0~100% "socVal": 65, //BMS 整车动力蓄电池当前电池电压 "batCurVol": 24, //电桩最高输出电压 0.1V/位,0V偏移量 "maxOutputVol": 22, //电桩最低输出电压 0.1V/位,0V偏移量 "minOutputVol": 0, //电桩最大输出电流 0.1A/位,-400A偏移量 "maxOutputCur": 20, //电桩最小输出电流 0.1A/位,-400A偏移量 "minOutputCur": 0 } ``` ##### 2.2.3 充电过程BMS需求与充电机输出 0x23 中台以 **ykcBmsReq** 标识符参照国网协议属性上报方式转发给平台 **ykcBmsReq** 属性上报参数: ```js { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMS 电压需求 0.1V/位,0V偏移量 "needVol": 0, //BMS 电流需求 0.1A/位,-400A偏移量 "needCur": 0, //BMS 充电模式 1-恒压充电 2-恒流充电 对应国网协议 11-恒压充电 12-恒流充电 "chargeMode": 11, //BMS 充电电压测量值 0.1V/位,0V偏移量 "bmsVol": 0, //BMS 充电电流测量值 0.1A/位,-400A偏移量 "bmsCur": 0, //BMS 最高单体动力蓄电池电压 数据分辨率:0.01V/位,0V偏移量,数据范围:0~24 V "bmsSingleMHV": 24, //BMS 最高单体动力蓄电池电压所在组号 数据范围:0~15 "bmsSingleMHVGroupNo": 12, //BMS 当前荷电状态 SOC( %)1%/位,0%偏移量;数据范围:0~100% "sovVal": 55, //BMS 估算剩余充电时间 单位:min 数据范围:0~600 min "remainT": 45, //电桩电压输出值 0.1V/位,0V偏移量 "outputVol": 0, //电桩电流输出值 0.1A/位,-400A偏移量 "outputCur": 0, //累计充电时间 单位:min 数据范围:0~600 min "chgTime": 15 } ``` ##### 2.2.4 充电过程BMS信息 0x25 充电过程BMS信息中台以 **ykcBmsRunIty** 标识符参照国网协议属性上报方式转发给平台 **ykcBmsRunIty** 属性上报参数: ```js { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMS 最高单体动力蓄电池电压所在编号 范围:1~256 "bmsSingleMHVNo": 255, //BMS 最高动力蓄电池温度 -50℃偏移量 范围:-50~200℃ "bmsMHTemp": 80, //最高温度检测点编号 范围:1~128 "bmsMHTempNo": 120, //最低动力蓄电池温度 -50℃偏移量 范围:-50~200℃ "bmsMLTemp": 20, //最低动力蓄电池温度检测点编号 范围:1~128 "bmsMLTempNo": 120, //BMS 单体动力蓄电池电压过高/过低 0-正常 1-过高 2-过低 "bmsSingleVolStatus": 0, //BMS 整车动力蓄电池荷电状态 SOC 过高/过低 0-正常 1-过高 2-过低 "socStatus": 0, //BMS 动力蓄电池充电过电流 0-正常 1-过流 2-不可信 "bmsSingleCurStatus": 0, //BMS 动力蓄电池温度过高 0-正常 1-过流 2-不可信 "bmsTempStatus": 0, //BMS 动力蓄电池绝缘状态 0-正常 1-过流 2-不可信 "bmsInsulationStatus": 0, //BMS 动力蓄电池组输出连接器连接状态 0-正常 1-过流 2-不可信 "bmsConnectionStatus": 0, //充电禁止 0-禁止 1-允许 "chargingProhibit": 0 } ``` ##### 2.2.5 充电过程BMV信息 充电过程BMV信息中台以 **ykcBmvRunIty** 标识符参照国网协议属性上报方式转发给平台 **ykcBmsRunIty** 属性上报参数: ```js { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMV时间戳 "bmvTime": "1724309296", //有效单体总个数 "batCount": 5, //单体动力蓄电池电压 "batVoltages": [20,20,20,20,20] } ``` ##### 2.2.6 充电过程BMT信息 充电过程BMT信息中台以 **ykcBmtRunIty** 标识符参照国网协议属性上报方式转发给平台 **ykcBmtRunIty** 属性上报参数: ```js { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMT时间戳 "bmtTime": "1724309296", //有效动力电池温度总个数 "batCount": 5, //单体动力蓄电池温度,-50~200℃ "batTemps": [40,40,40,40,40] } ``` ##### 2.2.7 ***上传实时数据 0x13 中台以 **ykcDeRealIty** 标识符参照国网协议属性上报方式转发给平台,同 1.5 **ykcDeRealIty** 属性上报参数: ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //状态 0-离线 1-故障 2-空闲 3-充电 "workStatus": 2, //枪是否归位,0-否 1-是 2-未知 "gunPositionState": 1, //是否插枪,0-否 1-是 "gunStatus": 0, //输出电压,1位小数,待机置零 "dcVol": 0, //输出电流,1位小数,待机置零 "dcCur": 0, //枪线温度,整型,偏移量-50,待机置零 "conTemp": 0, //枪线编码,没有置零 "conCode": 0, //SOC,待机置零,交流桩置零 "socVal": 0, //电池组最高温度,整型,偏移量-50,待机置零,交流桩置零 "bMHTemp": 0, //累计充电时间,单位:min,待机置零 "chgTime": 0, //剩余时间,单位:min,待机置零,交流桩置零 "remainT": 0, //充电度数,精确到小数点后四位,待机置零 "totalElect": 0, //计损充电度数,精确到小数点后四位,待机置零,未设置计损比例时等于充电度数 "totalElectCL": 0, //已充金额,精确到小数点后四位;待机置零(电费+服务费)*计损充电度数 "totalCost": 0, //硬件故障,Bit位表示(0否1是) "faultState": 0, //桩体温度,交流桩置零 "pileTemp": 0, //烟感状态 1-启动 2-空闲 3-报警 4-故障 0-无效 "smokeSta": 0, //电表示值 "meterRealVal": 0, //已充电费金额,待机置0 "totalPowerCost": 0, //已充服务费金额,待机置0 "totalServCost": 0, //充电模式 0-单枪充电 1-多枪并充 "chargeMode": 0 } ``` ##### 2.2.8 错误报文 0x1B 中台以 **ykcTotalFaultEvt** 标识符参照国网协议故障告警事件转发给平台,平台判断是否结束订单 **ykcTotalFaultEvt** 事件参数: ```js { //交易流水号,解析全为0会传空 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //错误字段,16进制表示,共8字节,平台根据协议解析相应比特位 "errorCode": "0000000000000000" } ``` ##### 2.2.9 充电阶段BMS中止 0x1D 中台以 **ykcBmsStopEvt** 标识符参照国网协议事件方式转发给平台,平台判断订单是否结束 **ykcBmsStopEvt** 事件参数: 事件参数 ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMS 中止充电原因,HEX,按Bit位区分,平台根据协议解析 "reasonCode": "00", //BMS 中止充电故障原因,HEX,按Bit位区分,平台根据协议解析 "faultCode": "0000", //BMS 中止充电错误原因,HEX,按Bit位区分,平台根据协议解析 "errorCode": "00" } ``` ##### 2.2.10 充电阶段充电机中止 0x21 中台以 **ykcPileStopEvt** 标识符参照国网协议事件方式转发给平台,平台判断订单是否结束 **ykcPileStopEvt** 事件参数: ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //充电机中止充电原因,HEX,按Bit位区分,平台根据协议解析 "reasonCode": "00", //充电机中止充电故障原因,HEX,按Bit位区分,平台根据协议解析 "faultCode": "0000", //充电机中止充电错误原因,HEX,按Bit位区分,平台根据协议解析 "errorCode": "00" } ``` ##### 2.2.11 设备故障上送 ##### 2.2.12 设备故障复位上送 #### 2.3 停止充电 ##### 2.3.1 平台远程停机 0x36 标识符 **ykcAppStopCharging** 平台调用中台接口传参: ```js { "method": "YKC_STOP_CHARGING", //枪号 "gunNo": 1 } ``` ##### 2.3.2 远程停机命令回复 0x35 标识符 **ykcAppStopCharging_reply** 中台接口响应 ```js { "success": "1", "data": { //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //停止结果 0-失败 1-成功 "stopResult": 1, //失败原因 0-无 1-设备编号不匹配 2-枪未处于充电状态 3-其他 "stopFailRes": 0 }, "errorCode": "", "errorMsg": "" } ``` ##### 2.3.3 充电结束 0x19 推测桩充满自停会上送此报文,目前不明确此报文是否会在主动停止充电后上传,暂且当成会上传 中台以 **ykcChaStopEvt** 标识符参照国网协议事件方式转发给平台 **ykcChaStopEvt** 事件参数: ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //BMS 中止荷电状态 SOC 1%/位,0%偏移量,数据范围:0~100% "socVal": 0, //BMS 动力蓄电池单体最低电压 0.01 V/位,0 V 偏移量,数据范围:0 ~24 V "bmsSingleMLV": 0, //BMS 动力蓄电池单体最高电压 0.01 V/位,0 V 偏移量,数据范围:0 ~24 V "bmsSingleMHV": 23, //BMS 动力蓄电池最低温度 1ºC/位,-50 ºC 偏移量,数据范围:-50 ºC ~+200 ºC "bmsMLTemp": -10, //BMS 动力蓄电池最高温度 1ºC/位,-50 ºC 偏移量,数据范围:-50 ºC ~+200 ºC "bmsMHTemp": 80, //电桩累计充电时间 单位:min 数据范围:0~600 min "chgTime": 45, //电桩输出能量 0.1 kWh/位,0 kWh 偏移量,数据范围:0~1000 kWh "totalElect": 6.5, //电桩充电机编号 "chaMachineNo": 1 } ``` ##### 2.3.4 ***交易记录上报 0x3D 参照国网协议的处理方式,中台调用电能平台接口将订单信息传给平台,根据平台回复的确认信息返回给设备。平台根据preTradeNo交易流水号区分协议类型再作处理。 标识符 **ykcOrderUpdateEvt** 中台调用平台接口传参: ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "deviceCode": "55031412782305", //枪号 "gunNo": 1, //开始时间,时间戳,精确到秒 "chargeStartTime": "1724306354", //结束时间,时间戳,精确到秒 "chargeEndTime": "1724309296", //费率时段数量 "timeNum": 5, //费率时段单价(电费+服务费),精确到小数点后五位 "chargeFee":[1,1,1,1,1], //费率时段电量,精确到小数点后四位 "partElect": [0,0,0,0,0], //费率时段计损电量,精确到小数点后四位 "partElectCL":[0,0,0,0,0], //费率时段电费,精确到小数点后四位 "partPowerCost":[0,0,0,0,0], //费率时段服务费,精确到小数点后四位 "partServCost":[0,0,0,0,0], //电表总起值 精确到小数点后四位 "sumStart": "0", //电表总止值 精确到小数点后四位 "sumEnd": "0", //总电量 精确到小数点后四位 "totalElect": 0, //计损总电量 精确到小数点后四位 "totalElectCL": 0, //消费金额 精确到小数点后四位,包含电费、服务费 "totalCost": 0, //电动汽车唯一标识 "vinCode": "", //交易标识 1-app启动 2-卡启动 4-离线卡启动 5-vin码启动充电 //这里转为国网协议对应的启动方式 10-app一键启动 11-VIN 即插即充 12-智能枪启动 13-二维码启动 14-桩侧扫码启动(桩自带识别器) 15-平台启动 16-蓝牙启动 17-离线 VIN 即插即充 "startType": 10, //交易日期时间 "tradeTime": "2024-08-22 13:59:14", //停止原因,单字节16进制字符串,见云快充协议附录13.1,平台解析 "reason": "00", //物理卡号 如果解析全为0,则传空 "physicalCardNo": "" } ``` ##### 2.3.5 交易记录回复 0x40 若中台调用平台接口失败,中台也不回复桩,桩得不到回复仅会在5分钟后重发1次交易记录,为防止丢失订单信息,由中台记录日志 标识符 **ykcOrderUpdateEvt_reply** 平台接口返回参数: ```js { //中台根据 success 区分如何回复给桩 1-成功 0-非法账单 "success": "1", "errorCode": "", "errorMsg": "", "data": null } ``` #### 2.4 并充启机 ##### 2.4.1 运营平台远程控制并充启机 标识符 **ykcStartParallelCha** 平台调用中台接口传参: ```js { "method": "YKC_START_PARALLEL_CHARGING", //平台交易流水号 "preTradeNo": "55031412782305012018061914444680", //枪号 "gunNo": 1, //充电桩类型 1-直流 2-交流 "pileType": 1, //逻辑卡号,显示在屏幕上,长度不足16位左边补零,逻辑卡号为卡面印刷卡号,没有传空 "logicalCardNo": "", //物理卡号,16进制表示,长度不足16位左边补零,桩与平台交互需使用的物理卡号,没有传空 "physicalCardNo": "", //账户余额,保留到小数点两位,10000表示100元 "balance": 10000, //并充序号,平台生成,生成规则:年月日时分秒,多个枪并充时上送并充序号一致,标志为同一次并充操作 "parallelChaNum": "260327000000" } ``` ##### 2.4.2 远程并充启机命令回复 标识符 **ykcStartParallelCha_reply** 平台至少需要等待90秒,超过90秒认定启动失败 由于云快充协议的桩收到启动命令后检测到未插枪会回复充电失败,但是从收到启动命令起60秒内检测到枪重新连接,会补发启动充电成功报文,所以中台这边增加启动充电结果事件推送 交流桩不会上报启动充电结果事件,中台直接根据指令响应结果生成该事件 平台启动充电返回结果是失败,且失败原因是未插枪,应继续等待60秒,以最后收到的启动充电结果事件为准。 2024-09-27 补充:平台这边若未插枪,是不允许下发启动充电的,从源头规避了上述问题。 中台响应结果: ```js { //这里success固定为1,表示接口调用成功,启动充电结果需要看下面的startResult "success": "1", "data": { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //启动结果 0-失败 1-成功 "startResult": 0, //失败原因 0-无 1-设备编号不匹配 2-枪已在充电 3-设备故障 4-设备离线 5-未插枪 "faultCode": 5, //主辅枪标记 0-主枪 1-辅枪 "masterGunFlag": 0, //并充序号,和平台下发的一致 "parallelChaNum": "260327000000" }, "errorCode": "", "errorMsg": "" } ``` 中台接口响应之后还会以 **ykcStartParallelChaResEvt** 标识符参照国网协议启动充电结果事件方式转发给平台 **ykcStartParallelChaResEvt** 事件参数: ```js { //桩号 "sn": "55031412782305", //枪号 "gunNo": 1, //平台交易流水号 "preTradeNo": "55031412782305012018061914444680", //启动结果 0-失败 1-成功 "startResult": 0, //失败原因 0-无 1-设备编号不匹配 2-枪已在充电 3-设备故障 4-设备离线 5-未插枪 "faultCode": 5 } ``` ### 3. 充电桩主动申请启动充电 #### 3.1 启动充电 参照国网协议的处理方式,中台调用平台启动充电鉴权接口,根据平台回复的结果返回给桩,平台根据deviceCode桩号区分协议类型。 ##### 3.1.1 充电桩主动申请启动充电 0xA5 标识符 **ykcStartChargeAuthEvt** 中台调用平台接口参数: ```js { //桩编号 "deviceCode": "55031412782305", //枪号 "gunNo": 1, //启动方式 1-刷卡启动 2-账号启动(暂不支持) 3-vin码启动 "startType": 1, //是否需要密码 0-不需要 1-需要 "needPwd": 1, //账号或者物理卡号 长度16位,不足补零 "authCode": "0000001200325404", //输入密码,16位md5加密 "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", //VIN码 启动方式为vin码启动充电时上送,其他方式置零 "vinCode": "" } ``` ##### 3.1.2 ***运营平台确认启动充电 0xAB 标识符 **ykcStartChargeAuthEvt_reply** 若中台调用接口失败,直接回复桩鉴权失败。 平台创建订单,默认此订单已开始充电 平台返回给中台的结果: ```js { "success": "1", "data": { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //逻辑卡号 BCD码 显示在屏幕上,长度不满16位补零 "logicalCardNo": "0000001200365541", //账户余额 保留两位小数 "balance": 10000, //鉴权成功标志 0-失败 1-成功 "result": 1, //失败原因,见下文 "failRes": 0, //本次充电当前允许的最大功率,单位:kW,0-不限制 "maxPower": 80, //SOC限制,默认0-不限制 "socLimit": 80, //充电电量限制,默认0-不限制 "energyLimit": 0, //充电时间限制,单位:分钟,默认0-不限制 "chaTimeLimit": 0 }, "errorCode": "", "errorMsg": "" } ``` **failRes** 鉴权失败原因: 1-账户不存在 2-账户冻结 3-账户余额不足 4-该卡存在未结账记录 5-桩停用 6-该账户不能在此桩上充电 7-密码错误 8-电站电容不足 9-系统中vin码不存在 10-该桩存在未结账记录 11-该桩不支持刷卡 ##### ***3.1.3 即插即充请求 0xA9 标识符 **ykcPlugAndChargeEvt** 和3.1.1的处理逻辑一致,启动方式为 3-vin码启动 中台调用平台接口参数: ```js { //桩编号 "deviceCode": "55031412782305", //枪号 "gunNo": 1, //启动方式 3-vin码启动 "startType": 3, //是否需要密码 0-不需要 "needPwd": 0, //账号或者物理卡号,这里固定为空 "authCode": "", //输入密码,这里固定为空 "password": "", //VIN码 "vinCode": "LG345678XB1234567" } ``` ##### ***3.1.4 即插即充回复 0xAA 标识符 **ykcPlugAndChargeEvt_reply** 若中台调用接口失败,直接回复桩鉴权失败。 平台创建订单,默认此订单已开始充电 平台返回给中台的结果同3.1.2,这里只展示实际用到的参数 ```js { "success": "1", "data": { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //鉴权成功标志 0-失败 1-成功 "result": 1 }, "errorCode": "", "errorMsg": "" } ``` ##### 3.1.5 实时监测数据 同 2.3.1、2.3.4、2.3.5 #### 3.2 充电桩主动申请并充充电 ##### 3.2.1 充电桩主动申请并充充电 参照国网协议的处理方式,中台调用平台启动充电鉴权接口,根据平台回复的结果返回给桩,平台根据deviceCode桩号区分协议类型。 标识符 **ykcStartParallelChaAuthEvt** 中台调用平台接口参数: ```js { //桩编号 "deviceCode": "55031412782305", //枪号 "gunNo": 1, //启动方式 1-刷卡启动 2-账号启动(暂不支持) 3-vin码启动 "startType": 1, //是否需要密码 0-不需要 1-需要 "needPwd": 1, //账号或者物理卡号 长度16位,不足补零 "authCode": "0000001200325404", //输入密码,16位md5加密 "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", //VIN码 启动方式为vin码启动充电时上送,其他方式置零 "vinCode": "", //主辅枪标记 0-主枪 1-辅枪 "masterGunFlag": 0, //并充序号,由桩生成,生成规则:年月日时分秒,多个枪并充时上送并充序号一致,标志为同一次并充操作 "parallelChaNum": "260327000000" } ``` ##### 3.2.2 运营平台确认并充启动充电 标识符 **ykcStartParallelChaAuthEvt_reply** 若中台调用接口失败,直接回复桩鉴权失败。 平台创建订单,默认此订单已开始充电 平台返回给中台的结果: ```js { "success": "1", "data": { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //逻辑卡号 BCD码 显示在屏幕上,长度不满16位补零 "logicalCardNo": "0000001200365541", //账户余额 保留两位小数 "balance": 10000, //鉴权成功标志 0-失败 1-成功 "result": 1, //失败原因,见下文 "failRes": 0, //并充序号, 与桩上传的一致 "parallelChaNum": "260327000000" }, "errorCode": "", "errorMsg": "" } ``` **failRes** 鉴权失败原因,同3.1.2 #### 3.3 充电结束 ##### 3.3.1 充电结束 0x19 目前不明确此报文是否会在主动停止充电后上传,暂且当成会上传,同 2.4.3 ### 4. 其他指令 #### 4.1 计费模型设置 ##### 4.1.1 ***计费模型设置 0x58 ```js { "method": "YKC_FEEMODEL_UPDATE", //计费模型Id,协议固定为 1 "feeModelId": 1, //电费,尖峰平谷费率,精确到五位小数 "chargeFee":[10000,12000,8000,6000], //服务费,对应尖峰平谷时段服务费,精确到五位小数 "serviceFee":[5000,5000,5000,5000], //计损比例,平台不支持计损功能,计损比例置 0 可以不传 "calLossRatio": 0, //时段数 最多48 "timeNum": 6, //时段开始时间点,时间点分钟部分仅支持 00或30 ,如果全天仅用一个费率,也得传一个时间过来,如"0000" "timeSeg": ["0530","0800","1130","1330","1900","2300"], //时段标志 10-尖时段 11-峰时段 12-平时段 13-谷时段 "segFlag": [10,11,10,12,13,11] } ``` ##### 4.1.2 计费模型应答 0x57 标识符 **ykcFeeModelUpdate_reply** 中台接口响应 ```js { //结果,0-失败 1-成功 "success": "1", "data": { "msgid": "985793334668742656" }, "errorCode": "", "errorMsg": "" } ``` #### 4.2 远程账户余额更新 ##### 4.2.1 远程账户余额更新 0x42 标识符 **ykcUpdateBalance** 平台调用接口传参: ```js { "method": "YKC_UPDATE_BALANCE", //桩编码 "sn": "55031412782305", //枪号 "gunNo": 1, //物理卡号,16进制,非必填,不满16位前面补零,有物理卡号时桩需要校验当前是否此卡充电 "physicalCardNo": "0000001200365541", //账户余额 保留两位小数 "balance": 10000 } ``` ##### 4.2.2 余额更新应答 0x41 标识符 **ykcUpdateBalance_reply** 中台接口响应 ```js { "success": "1", "data": { //桩编码 "sn": "55031412782305", //物理卡号,非必填 "physicalCardNo": "0000001200365541", //修改结果 0-修改成功 1-设备编号错误 2-卡号错误 "result": 0 }, "errorCode": "", "errorMsg": "" } ``` #### 4.3 默认最大功率下发 ##### 4.3.1 默认最大功率下发 0x60 标识符 **ykcMaxPowerSet** 平台调用中台接口传参: ```js { "method": "YKC_MAX_POWER", //枪号 "gunNo": 1, //默认最大功率 单位:kW "maxPower": 50, //开始时间,时间戳,精确到秒,到达此时间后按最大功率执行 "startTime": "1724306354", //结束时间,时间戳,精确到秒,到达此时间后解除最大功率执行限制 "endTime": "1724309296" } ``` ##### 4.3.2 默认最大功率下发应答 0x59 标识符 **ykcMaxPowerSet_reply** 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { "msgid": "985793334668742656" }, "errorCode": "", "errorMsg": "" } ``` #### 4.4 功率调节下发 ##### 4.4.1 功率调节下发 0x52 标识符 **ykcSetChaPower** 平台调用中台接口传参: ```js { "method": "YKC_SET_CHARGING_POWER", //枪号 "gunNo": 1, //允许最大功率 单位:kW "maxPower": 50, //限制时间,单位:分钟 只对本次充电有效,限制时间内重新发起充电不受限制 "limitTime": 30 } ``` ##### 4.4.2 功率调节应答 0x51 标识符 **ykcSetChaPower_reply** 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { "msgid": "985793334668742656" }, "errorCode": "", "errorMsg": "" } ``` #### 4.5 平台请求实时数据 ##### 4.5.1 ***请求实时数据 0x12 标识符 **ykcRefresh** 平台调用中台接口传参: ```js { "method": "YKC_REFRESH", //枪号 "gunNo": 1 } ``` ##### 4.5.2 上传实时监测数据 0x13 响应参数data数据格式同 2.3.5,中台亦会以 **ykcDeRealIty** 标识符参照国网协议属性上报方式转发给平台 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //状态 0-离线 1-故障 2-空闲 3-充电 (国网协议 10-空闲 13-充电中 16-系统故障) "workStatus": 2, //枪是否归位,0-否 1-是 2-未知 "gunPositionState": 1, //是否插枪,0-否 1-是 "gunStatus": 0, //输出电压,1位小数,待机置零 "dcVol": 0, //输出电流,1位小数,待机置零 "dcCur": 0, //枪线温度,整型,偏移量-50,待机置零 "conTemp": 0, //枪线编码,没有置零 "conCode": 0, //SOC,待机置零,交流桩置零 "socVal": 0, //电池组最高温度,整型,偏移量-50,待机置零,交流桩置零 "bMHTemp": 0, //累计充电时间,单位:min,待机置零 "chgTime": 0, //剩余时间,单位:min,待机置零,交流桩置零 "remainT": 0, //充电度数,精确到小数点后四位,待机置零 "totalElect": 0, //计损充电度数,精确到小数点后四位,待机置零,未设置计损比例时等于充电度数 "totalElectCL": 0, //已充金额,精确到小数点后四位;待机置零(电费+服务费)*计损充电度数 "totalCost": 0, //硬件故障,Bit位表示(0否1是) "faultState": 0, //桩体温度,交流桩置零 "pileTemp": 0, //烟感状态 1-启动 2-空闲 3-报警 4-故障 0-无效 "smokeSta": 0, //电表示值 "meterRealVal": 0, //已充电费金额,待机置0 "totalPowerCost": 0, //已充服务费金额,待机置0 "totalServCost": 0, //充电模式 0-单枪充电 1-多枪并充 "chargeMode": 0 }, "errorCode": "", "errorMsg": "" } ``` #### 4.6 重启 ##### 4.6.1 远程重启 0x92 标识符 **ykcRestart** 平台调用中台接口传参: ```js { "method": "YKC_RESTART", //1-立即执行 2-空闲执行 "type": 1 } ``` ##### 4.6.2 远程重启应答 0x91 标识符 **ykcRestart_reply** 中台接口响应 ```js { //结果,0-失败 1-成功 "success": "1", "data": { "msgid": "985793334668742656" }, "errorCode": "", "errorMsg": "" } ``` #### 4.7 OTA升级 ##### 4.7.1 ***远程升级 0x94 平台升级模式为 ftp 文件升级 标识符 **ykcOta** 平台调用中台接口传参: ```js { "method": "YKC_OTA", //桩型号 1-直流 2-交流 "pileType": 1, //桩功率 "pilePower": 15, //升级服务器地址 "ip": "127.0.0.1", //升级服务器端口 "port": "16878", //用户名 "username": "123", //密码 "password": "123", //文件路径,长度最多32 "filePath": "/2024/0111", //文件名称,长度最多32 "fileName": "temp32011253.bin", //执行控制 1-立即执行 2-空闲执行 "controlType": 1, //下载超时时间,单位:min "timeout": 5, //文件MD5签名,升级文件的 MD5 校验码,长度32 "md5": "" } ``` ##### 4.7.2 远程升级应答 0x93 中台指令超时时间内收到桩回复直接响应接口,并参照国网协议以 **ykcOtaResultEvt** 事件方式转发平台,以应对超时时间之后收到桩回复的情况 ```js { "success": "1", "data": { //桩编码 "sn": "55031412782305", //升级结果 0-成功 1-编号错误 2-程序与桩型号不符 3-下载更新文件超时 "result": 0 }, "errorCode": "", "errorMsg": "" } ``` **ykcOtaResultEvt** 事件参数: ```js { //桩编码 "sn": "55031412782305", //升级结果 0-成功 1-编号错误 2-程序与桩型号不符 3-下载更新文件超时 "result": 0 } ``` #### 4.8 平台主动对时 ##### 4.8.1 对时设置 0x56 标识符 **ykcTime** 平台调用中台接口传参: ```js { "method": "YKC_TIME", //当前unix时间戳,毫秒级 "timestamp": "1724222188999" } ``` ##### 4.8.2 对时设置应答 0x55 标识符 **ykcTime_reply** 中台接口响应 ```js { //结果,0-失败 1-成功 "success": "1", "data": { "msgid": "985793334668742656" }, "errorCode": "", "errorMsg": "" } ``` #### 4.9 桩二维码设置 ##### 4.9.1 ***后台远程下发二维码指令 0x5B 标识符 **ykcQRCode** 平台调用中台接口传参: ```js { "method": "YKC_QR_CODE", //枪号 "gunNo": 1, //type 0-QR码,默认 1-汉信码 2-PDF417 3-Data Matrix4 "type": 0, //二维码内容 "QR_code": "www.baidu.com?No=" } ``` ##### 4.9.2 桩应答远程下发二维码指令 0x5A 标识符 **ykcQRCode_reply** 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { "gunNo": "1" }, "errorCode": "", "errorMsg": "" } ``` #### 4.10 平台连接设置 ##### 4.10.1 平台连接设置命令下发 标识符 **ykcServer** 平台调用中台接口传参: ```js { "method": "YKC_SERVER", //平台域名,充电桩优先使用域名和平台连接 "domain": "", //平台地址 "ip": "127.0.0.1", //平台端口 "port": 20045 } ``` ##### 4.10.2 平台连接设置命令应答 标识符 **ykcServer_reply** 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { "gunNo": "1" }, "errorCode": "", "errorMsg": "" } ``` #### 4.11 桩参数设置 ##### 4.11.1 桩参数设置命令下发 标识符 **ykcParamSet** 平台调用中台接口传参: ```js { "method": "YKC_PARAM_SET", //桩号 "sn": "55031412782305", //即插即充开关,0-支持,默认 1-不支持 "plugAndChargeEn": 0, //鉴权超时时间,单位:秒 "authTimeout": 20, //离线充电时间,桩和平台离线后,达到配置时间,停止充电,单位:秒,默认0,不限制 "offlineChaLimit": 10, //定时上报间隔,单位:分钟 默认30 "upInterval": 30, //心跳上报周期,单位:秒,必须大于0,小于90 "heartbeatInterval": 30, //心跳包检测超时次数,必须大于0 "heartbeatTimeoutCount": 3, //充电桩状态信息上报周期,必须大于0 "stateReportInterval": 30, //辅源类型 12或24V "auxPowerVol": 12, //模块类型,一般只用于查询,0-500V标准,1-750V标准,2-500V恒功率模块,3-750V恒功率模块,4-低压 250V模块,5-第二代恒功率模块,6-低压挡100V模块 "moduleType": 0, //最高允许SOC,大于100表示不限制 "maxSoc": 100, //离线充电的开关,0-关 1-开 "offlineChaEn": 0, //离线可充电时长,必须大于等于0 "offlinChaLen": 5, //离线可充电电量,四位小数 "offlineChaElect": 0, //离线时默认限功率,0-不限功率,1-限功率10kW,2-限功率100kW "offlinePowerLimit": 0, //环境过温保护,0-250 "envOverTempVal": 150, //充电限电压,一般只用于查询 "maxOutputVol": 220, //充电限电流,一般只用于查询 "maxOutputCur": 20, //BMS单体保护电压 "singlBatMaxAllowVol": 24, //BMS充电保护温度 "bmsChaProtectTemp": 120 } ``` ##### 4.11.2 桩参数设置命令应答 标识符 **ykcParamSet_reply** 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { "gunNo": "1" }, "errorCode": "", "errorMsg": "" } ``` #### 4.12 桩参数读取 ##### 4.12.1 桩参数读取命令下发 标识符 **ykcParamQuery** 平台调用中台接口传参: ```js { "method": "YKC_PARAM_QUERY", //枪号 "gunNo": 1 } ``` ##### 4.12.2 桩参数读取命令应答 标识符 **ykcParamQuery_reply** 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { //桩编号 "sn": "55031412782305", //即插即充开关,0-支持,默认 1-不支持 "plugAndChargeEn": 0, //鉴权超时时间,单位:秒 "authTimeout": 20, //离线充电时间,桩和平台离线后,达到配置时间,停止充电,单位:秒,默认0,不限制 "offlineChaLimit": 10, //定时上报间隔,单位:分钟 默认30 "upInterval": 30, //心跳上报周期,单位:秒,必须大于0,小于90 "heartbeatInterval": 30, //心跳包检测超时次数,必须大于0 "heartbeatTimeoutCount": 3, //充电桩状态信息上报周期,必须大于0 "stateReportInterval": 30, //辅源类型 1-12V 2-24V "auxPowerVol": 1, //模块类型,一般只用于查询,0-500V标准,1-750V标准,2-500V恒功率模块,3-750V恒功率模块,4-低压 250V模块,5-第二代恒功率模块,6-低压挡100V模块 "moduleType": 0, //最高允许SOC,大于100表示不限制 "maxSoc": 100, //离线充电的开关,0-关 1-开 "offlineChaEn": 0, //离线可充电时长,必须大于等于0 "offlineChaLen": 5, //离线可充电电量,四位小数,平台乘10000下发,传long类型 "offlineChaElect": 0, //离线时默认限功率,0-不限功率,100-限功率10kW,1000-限功率100kW, 这里我理解成1位小数 "offlinePowerLimit": 0, //环境过温保护,-50 ~ 200 "envOverTempVal": 150, //充电限电压,一般只用于查询 "maxOutputVol": 220.5, //充电限电流,一般只用于查询 "maxOutputCur": 20.1, //BMS单体保护电压 "singlBatMaxAllowVol": 24, //BMS充电保护温度 "bmsChaProtectTemp": 120 }, "errorCode": "", "errorMsg": "" } ``` #### 4.13 充电安全防护设置 ##### 4.13.1 充电安全防护设置命令下发 ##### 4.13.2 充电安全防护设置命令应答 ### 5. 地锁 #### 5.1 地锁数据上送 0x61 地锁状态/报警信息变化时,桩立刻上送变位/报警信息;地锁状态不变化时,每隔 5 分钟周期性上送地锁状态,若无报警信息,不上送 中台以 **ykcGroundLockEvt** 标识符参照国网协议地锁状态变更事件转发给平台 **ykcGroundLockEvt** 事件参数 平台调用中台接口传参: ```js { //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //车位锁状态 0-未到位 1-升锁到位 2-降锁到位 "groundLockLiftState": 1, //车位状态 0-无车 1-有车 "parkingLotStatus": 0, //地锁电量状态 0~100% "groundLockBat": 90, //报警状态 0-正常 1-待机状态摇臂破坏 2-摇臂升降异常(未到位) "groundLockError": 0 } ``` #### 5.2 升/降地锁 0x62 标识符 **ykcGroundLock** 平台调用中台接口传参: ```js { "method": "YKC_GROUNDLOCK", //枪号 "gunNo": 1, //UP-升 DOWN-降 "type": "UP" } ``` #### 5.3 桩响应地锁控制 0x63 标识符 **ykcGroundLock_reply** 中台接口响应 ```js { "success": "1", "data": { //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //地锁控制返回标志 1-鉴权成功 0-鉴权失败 "result": 1 }, "errorCode": "", "errorMsg": "" } ``` ### 6. V2G #### 6.1 V2G逆变计费模型设置 标识符 **ykcV2GFeeModelUpdate** 平台调用中台接口传参: ```js { "method": "YKC_V2G_FEEMODEL_UPDATE", //计费模型编码,协议固定为 1 "feeModelId": 1, //电费,尖峰平谷费率,精确到五位小数 "chargeFee":[10000,12000,8000,6000], //服务费,对应尖峰平谷时段服务费,精确到五位小数 "serviceFee":[5000,5000,5000,5000], //计损比例,平台不支持计损功能,计损比例置 0 可以不传 "calLossRatio": 0, //时段数 最多48 "timeNum": 6, //时段开始时间点,时间点分钟部分仅支持 00或30 ,如果全天仅用一个费率,也得传一个时间过来,如"0000" "timeSeg": ["0530","0800","1130","1330","1900","2300"], //时段标志 10-尖时段 11-峰时段 12-平时段 13-谷时段 "segFlag": [10,11,10,12,13,11] } ``` 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { "msgid": "985793334668742656" }, "errorCode": "", "errorMsg": "" } ``` #### 6.2 平台远程启动V2G逆变 标识符 **ykcV2GStartCharging** 平台调用中台接口传参: ```js { "method": "YKC_V2G_START_CHARGING", //平台交易流水号 "preTradeNo": "55031412782305012018061914444680", //枪号 "gunNo": 1, //逻辑卡号,显示在屏幕上,长度不足16位左边补零,逻辑卡号为卡面印刷卡号,没有传空 "logicalCardNo": "", //物理卡号,16进制表示,长度不足16位左边补零,桩与平台交互需使用的物理卡号,没有传空 "physicalCardNo": "", //账户余额,保留到小数点两位,10000表示100元 "balance": 10000, //停止SOC "stopSOC": 20 } ``` 中台接口响应: ```js { //success固定为1,平台根据data里的启动结果判断 "success": "1", "data": { //交易流水号 "preTradeNo": "55031412782305012018061914444680", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //启动结果 0-失败 1-成功 "startResult": 0, //失败原因 0-无 1-设备编号不匹配 2-枪在工作中 3-设备故障 4-设备离线 5-未插枪 "faultCode": 5 }, "errorCode": "", "errorMsg": "" } ``` 中台接口响应之后还会以 **ykcV2GStartChaResEvt** 标识符参照国网协议启动充电结果事件方式转发给平台 **ykcV2GStartChaResEvt** 事件参数: ```js { //桩号 "sn": "55031412782305", //枪号 "gunNo": 1, //平台交易流水号 "preTradeNo": "55031412782305012018061914444680", //启动结果 0-失败 1-成功 "startResult": 0, //失败原因 0-无 1-设备编号不匹配 2-枪已在充电 3-设备故障 4-设备离线 5-未插枪 "faultCode": 5 } ``` #### 6.3 平台远程停止V2G逆变 标识符 **ykcV2GStopCharging** 平台调用中台接口传参: ```js { "method": "YKC_V2G_STOP_CHARGING", //枪号 "gunNo": 1 } ``` 中台接口响应: ```js { //success固定为1,平台根据data里的停止结果判断 "success": "1", "data": { //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //停止结果 0-失败 1-成功 "stopResult": 1, //失败原因 0-无 1-设备编号不匹配 2-枪未处于逆变状态 3-其他 "stopFailRes": 0 }, "errorCode": "", "errorMsg": "" } ``` #### 6.4 V2G逆变实时数据上报 中台以 **ykcV2GDeRealIty** 标识符参照国网协议属性上报方式转发给平台 **ykcV2GDeRealIty** 属性上报参数: ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //状态 0-离线 1-故障 3-逆变 "workStatus": 3, //枪是否归位,0-否 1-是 2-未知 "gunPositionState": 1, //是否插枪,0-否 1-是 "gunStatus": 0, //当前直流侧放电电压,1位小数,待机置零 "dcVol": 0, //当前直流侧放电电流,1位小数,待机置零 "dcCur": 0, //枪线温度,整型,偏移量-50,没有置零 "conTemp": 0, //枪线编码,没有置零 "conCode": 0, //当前SOC "socVal": 0, //电池组最高温度,整型,偏移量-50 "bMHTemp": 0, //累计已逆变时间,单位:min,待机置零 "chgTime": 0, //剩余时间,单位:min,待机置零,交流桩置零 "remainT": 0, //已逆变度数,精确到小数点后四位,待机置零 "totalElect": 0, //计损逆变度数,精确到小数点后四位,待机置零,未设置计损比例时等于已逆变度数 "totalElectCL": 0, //已逆变金额,精确到小数点后四位;待机置零(电费+服务费)*计损逆变度数 "totalCost": 0, //硬件故障,Bit位表示(0否1是) "faultState": 0, //当前逆变功率,单位:W,精确到小数点后两位 "realPower": 0, //当前交流侧A相电压,1位小数 "acVolA": 0, //当前交流侧B相电压,1位小数 "acVolB": 0, //当前交流侧C相电压,1位小数 "acVolC": 0, //当前交流侧A相电流,1位小数 "acCurA": 0, //当前交流侧B相电流,1位小数 "acCurB": 0, //当前交流侧C相电流,1位小数 "acCurC": 0 } ``` #### 6.5 平台读取V2G逆变实时数据 标识符 **ykcV2GRefresh** 平台调用中台接口传参: ```js { "method": "YKC_V2G_REFRESH" } ``` 中台接口响应: ```js { //结果,0-失败 1-成功 "success": "1", "data": { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "sn": "55031412782305", //枪号 "gunNo": 1, //状态 0-离线 1-故障 3-逆变 "workStatus": 2, //枪是否归位,0-否 1-是 2-未知 "gunPositionState": 1, //是否插枪,0-否 1-是 "gunStatus": 0, //输出电压,1位小数,待机置零 "dcVol": 0, //输出电流,1位小数,待机置零 "dcCur": 0, //枪线温度,整型,偏移量-50,待机置零 "conTemp": 0, //枪线编码,没有置零 "conCode": 0, //SOC,待机置零,交流桩置零 "socVal": 0, //电池组最高温度,整型,偏移量-50,待机置零,交流桩置零 "bMHTemp": 0, //累计充电时间,单位:min,待机置零 "chgTime": 0, //剩余时间,单位:min,待机置零,交流桩置零 "remainT": 0, //充电度数,精确到小数点后四位,待机置零 "totalElect": 0, //计损充电度数,精确到小数点后四位,待机置零,未设置计损比例时等于充电度数 "totalElectCL": 0, //已充金额,精确到小数点后四位;待机置零(电费+服务费)*计损充电度数 "totalCost": 0, //硬件故障,Bit位表示(0否1是) "faultState": 0, //当前逆变功率,单位:W,精确到小数点后两位 "realPower": 0, //当前交流侧A相电压,1位小数 "acVolA": 0, //当前交流侧B相电压,1位小数 "acVolB": 0, //当前交流侧C相电压,1位小数 "acVolC": 0, //当前交流侧A相电流,1位小数 "acCurA": 0, //当前交流侧B相电流,1位小数 "acCurB": 0, //当前交流侧C相电流,1位小数 "acCurC": 0 }, "errorCode": "", "errorMsg": "" } ``` 中台亦会以 **ykcV2GDeRealIty** 标识符参照国网协议属性上报方式转发给平台,同6.4 #### 6.6 V2G逆变交易记录上报 标识符 **ykcV2GOrderUpdateEvt** 中台调用平台接口传参: ```js { //交易流水号 "preTradeNo": "32010600019236012001061803423060", //桩编号 "deviceCode": "55031412782305", //枪号 "gunNo": 1, //开始时间,时间戳,精确到秒 "chargeStartTime": "1724306354", //结束时间,时间戳,精确到秒 "chargeEndTime": "1724309296", //尖单价 精确到小数点后五位(尖电费+尖服务费,见费率帧) "sharpFee": 1.30000, //尖电量 精确到小数点后四位 "sharpElect": 0, //计损尖电量 精确到小数点后四位 "sharpElectCL": 0, //尖金额 精确到小数点后四位 "sharpCost": 0, //峰单价 精确到小数点后五位(峰电费+峰服务费) "peakFee": 1.20000, //峰电量 精确到小数点后四位 "peakElect": 0, //计损峰电量 精确到小数点后四位 "peakElectCL": 0, //峰金额 精确到小数点后四位 "peakCost": 0, //平单价 精确到小数点后五位(平电费+平服务费) "flatFee": 1.10000, //平电量 精确到小数点后四位 "flatElect": 0, //计损平电量 精确到小数点后四位 "flatElectCL": 0, //平金额 精确到小数点后四位 "flatCost": 0, //谷单价 精确到小数点后五位(谷电费+谷服务费) "valleyFee": 1.00000, //谷电量 精确到小数点后四位 "valleyElect": 0, //计损谷电量 精确到小数点后四位 "valleyElectCL": 0, //谷金额 精确到小数点后四位 "valleyCost": 0, //逆变电表总起值 精确到小数点后四位 "sumStart": 0, //逆变电表总止值 精确到小数点后四位 "sumEnd": 0, //逆变总电量 精确到小数点后四位 "totalElect": 0, //计损总电量 精确到小数点后四位 "totalElectCL": 0, //逆变金额 精确到小数点后四位,包含电费、服务费 "totalCost": 0, //电动汽车唯一标识 "vinCode": "", //交易标识 1-app启动 2-卡启动 4-离线卡启动 5-vin码启动充电 //这里转为国网协议对应的启动方式 10-app一键启动 11-VIN 即插即充 12-智能枪启动 13-二维码启动 14-桩侧扫码启动(桩自带识别器) 15-平台启动 16-蓝牙启动 17-离线 VIN 即插即充 "startType": 10, //交易日期时间 "tradeTime": "2024-08-22 13:59:14", //停止原因,单字节16进制字符串,见云快充协议附录13.1,平台解析 "reason": "00", //物理卡号 如果解析全为0,则传空 "physicalCardNo": "" } ``` 平台接口返回参数: ```js { //中台根据 success 区分如何回复给桩 1-成功 0-非法账单 "success": "1", "errorCode": "", "errorMsg": "", "data": null } ``` ### 7 日志报文结构 云快充协议中台与桩交互的原始报文和转发平台的报文都存到中台mongodb数据库 **log_Datagram_yyyyMM** 表中,有的报文中台不做转发,就只存原始报文,转发给平台的,将转发的报文和原始报文存一起。 #### 7.1 中台报文日志 ```js { "_id" : Long("989302678269603840"), //桩号 "sn" : "2023080100010001", "deviceId" : Long("41489"), "productId" : Long("230"), "projectId" : Long("1"), "topicStr" : "/sys/a1q5OZTEiYV/2023080100010001/thing/event/property/post", "timestamp" : Long("1724979749080"), //中台转发的报文字符串表示 "plainText" : "{\"id\":\"737\",\"version\":\"1.0\",\"params\":{\"dcGunIdleIty\":{\"gunNo\":1,\"workStatus\":14,\"gunStatus\":10,\"eLockStatus\":10,\"DCK1Status\":10,\"DCK2Status\":10,\"DCPlusFuseStatus\":11,\"DCMinusFuseStatus\":11,\"conTemp1\":100,\"conTemp2\":100,\"dcVol\":6710,\"dcCur\":8000}},\"method\":\"thing.event.property.post\"}", "createTimestamp" : Long("1724979749080"), "type" : "pile", "enterTimestamp" : Long("1724979749"), "totalCost" : 0, "receiveTime" : Long("1724979749080"), //报文类型 "messageType" : "ykcDeRealIty", //中台转发的报文 "datagram" : { "method" : "thing.event.property.post", "id" : "737", "params" : { "ykcDeRealIty" : { "workStatus" : 14, "gunStatus" : 10, "DCK1Status" : 10, "conTemp2" : 100, "gunNo" : 1, "DCMinusFuseStatus" : 11, "eLockStatus" : 10, "DCK2Status" : 10, "DCPlusFuseStatus" : 11, "conTemp1" : 100, "dcVol" : 6710, "dcCur" : 8000 } }, "version" : "1.0" }, //数据传送方向 UP-上行 DOWN-下行 "adapterType": "UP", //桩上报原始报文/中台发给桩的报文 "hexData": "68 5E 02 00 00 0A 55 03 14 12 78 23 05 01 00 40 0D 03 00 9C 40 00 00 E0 93 04 00 9C 40 00 00 80 1A 06 00 9C 40 00 00 20 A1 07 00 9C 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5E 60"; //云快充协议命令字,10进制表示 "code": "10", //桩的ip端口 "remoteAddress" : "/117.132.196.11:9514", "createTime" : ISODate("2024-08-30T09:02:29.080+08:00"), "_class" : "com.acrel.entity.xch.mqtt.StoreDatagram" } ``` #### 7.2 接口日志 中台接口日志(租户日志)存储的是所有平台调用中台接口的日志,包括设备的新增、修改、删除,还有下行指令。 action 字段中台将定义一个枚举,将云快充协议的指令method映射中文说明,优先取用枚举里映射的中文说明,例如 平台远程启动充电、平台远程结束充电等,取不到中文说明再用@TenantLog(action="xx")注解的内容。 ```js { "_id" : Long("989306336757080064"), //默认使用的是注解里的中文说明,中台修改成优先取用指令枚举里的中文说明 "action" : "下发操作指令", "uri" : "/exchange/publish/indicate/operate/ANET20240425", //平台下发的参数 "param" : "[\"ANET20240425\",{\"SwicthId\":\"ANET20240425\",\"group\":\"1\",\"portid\":\"8\",\"method\":\"FORCESWITCH\",\"Switch\":1},{\"enable\":false,\"expired\":false,\"secretApp\":\"NjM1MjU5NTM1MzE4MzgwNTQ1\",\"secretKey\":\"OUdsZVBwSTQ4ZjYzNTI1OTUzNTMxODM4MDU0Ng\"}]", "ip" : "172.22.0.6", //指令执行结果 "result" : "{\"errorCode\":\"2052\",\"errorMsg\":\"设备未连接到MQTT服务器\",\"success\":\"0\"}", "tenantId" : Long("635259535318380544"), "tenantName" : "预付费开发", "secretApp" : "NjM1MjU5NTM1MzE4MzgwNTQ1", "secretKey" : "OUdsZVBwSTQ4ZjYzNTI1OTUzNTMxODM4MDU0Ng", "startTimestamp" : Long("1724980621321"), "endTimestamp" : Long("1724980621331"), "duration" : Long("10"), "type" : "TENANT", "timestamp" : Long("1724980621331"), "serverTime" : ISODate("2024-08-30T09:17:01.331+08:00"), "createTime" : ISODate("2024-08-30T09:17:01.331+08:00"), "delFlag" : "FALSE", "_class" : "com.acrel.entity.sys.log.TenantLog" } ``` #### 7.3 报文类型汇总 | 名称 | messageType | 报文命令字(code) | 数据传送方向 | | :-----------------------------: | :------------------------------: | :--------------: | :----------: | | **充电桩登录认证** | ykcLoginEvt | 0x01 (1) | 上行 | | **登录认证应答** | ykcLoginEvt_reply | 0x02 (2) | 下行 | | **计费模型验证请求** | ykcAskVerifyFeeModel | 0x05 (5) | 上行 | | **计费模型验证请求应答** | ykcAskVerfiyFeeModel_reply | 0x06 (6) | 下行 | | **计费模型请求** | ykcAskFeeModelEvt | 0x09 (9) | 上行 | | **计费模型请求应答** | ykcAskFeeModelEvt_reply | 0x0A (10) | 下行 | | **充电桩心跳包** | ykcHeartbeat | 0x03 (3) | 上行 | | **心跳包应答** | ykcHeartbeat_reply | 0x04 (4) | 下行 | | **平台远程控制启机** | ykcStartCharging | 0xAD (173) | 下行 | | **远程启机命令回复** | ykcStartCharging_reply | 0xA7 (167) | 上行 | | **充电桩主动申请启动充电** | ykcStartChargeAuthEvt | 0xA5 (165) | 上行 | | **运营平台确认启动充电** | ykcStartChargeAuthEvt_reply | 0xAB (171) | 下行 | | **充电启动结果上报** | ykcStartChaResEvt | 0x4F(79) | 上行 | | **充电启动结果上报应答** | ykcStartChaResEvt_reply | 0x4E(78) | 下行 | | **远程账户余额更新** | ykcUpdateBalance | 0x42 (66) | 下行 | | **余额更新应答** | ykcUpdateBalance_reply | 0x41 (65) | 上行 | | **平台远程停机** | ykcAppStopCharging | 0x36 (54) | 下行 | | **远程停机命令回复** | ykcAppStopCharging_reply | 0x35 (53) | 上行 | | **充电握手** | ykcBmsStart | 0x15 (21) | 上行 | | **充电桩上传参数配置** | ykcBmsConfig | 0x17 (23) | 上行 | | **充电过程BMS需求与充电机输出** | ykcBmsReq | 0x23 (35) | 上行 | | **充电过程BMS信息** | ykcBmsRunIty | 0x25 (37) | 上行 | | **充电过程BMV信息** | ykcBmvRunIty | 0x26(38) | 上行 | | **充电过程BMT信息** | ykcBmtRunIty | 0x27(39) | 上行 | | **上传实时数据** | ykcDeRealIty | 0x13 (19) | 上行 | | **错误报文** | ykcTotalFaultEvt | 0x1B (27) | 上行 | | **充电阶段BMS中止** | ykcBmsStopEvt | 0x1D (29) | 上行 | | **充电阶段充电机中止** | ykcPileStopEvt | 0x21 (33) | 上行 | | **充电结束** | ykcChaStopEvt | 0x19 (25) | 上行 | | **交易记录** | ykcOrderUpdateEvt | 0x3D (61) | 上行 | | **交易记录回复** | ykcOrderUpdateEvt_reply | 0x40 (64) | 下行 | | **计费模型设置** | ykcFeeModelUpdate | 0x58 (88) | 下行 | | **计费模型设置应答** | ykcFeeModelUpdate_reply | 0x57 (87) | 上行 | | **功率调节** | ykcSetChaPower | 0x52 (82) | 下行 | | **功率调节应答** | ykcSetChaPower_reply | 0x51 (81) | 上行 | | 请求实时数据 | ykcRefresh | 0x12 (18) | 下行 | | **远程重启** | ykcRestart | 0x92 (146) | 下行 | | **远程重启应答** | ykcRestart_reply | 0x91 (145) | 上行 | | **远程更新** | ykcOta | 0x94 (148) | 下行 | | **远程更新应答** | ykcOtaResultEvt | 0x93 (147) | 上行 | | **对时设置** | ykcTime | 0x56 (86) | 下行 | | **对时设置应答** | ykcTime_reply | 0x55 (85) | 上行 | | **地锁数据上送** | ykcGroundLockEvt | 0x61 (97) | 上行 | | **升/降地锁** | ykcGroundLock | 0x62 (98) | 下行 | | **桩响应地锁控制** | ykcGroundLock_reply | 0x63 (99) | 上行 | | **二维码设置** | ykcQRCode | 0x5B(91) | 下行 | | **二维码设置应答** | ykcQRCode_reply | 0x5A(90) | 上行 | | **离线卡数据同步** | ykcOfflineCardSync | 0x44(68) | 下行 | | **离线卡数据同步应答** | ykcOfflineCardSync_reply | 0x43(67) | 上行 | | **离线卡数据清除** | ykcOfflineCardClean | 0x46(70) | 下行 | | **离线卡数据清除应答** | ykcOfflineCardClean_reply | 0x45(69) | 上行 | | 离线卡数据查询 | ykcOfflineCardQuery | 0x48(72) | 下行 | | 离线卡数据查询应答 | ykcOfflineCardQuery_reply | 0x47(71) | 上行 | | 离线VIN码数据设置 | ykcOfflineVinCodeSet | 0x70(112) | 下行 | | 离线VIN码数据设置应答 | ykcOfflineVinCodeSet_reply | 0x71(113) | 上行 | | 离线VIN码数据查询 | ykcOfflineVinCodeQuery | 0x72(114) | 下行 | | 离线VIN码数据查询应答 | ykcOfflineVinCodeQuery_reply | 0x73(115) | 上行 | | 即插即充 | ykcPlugAndCharge | 0xA9(169) | 下行 | | 即插即充回复 | ykcPlugAndCharge_reply | 0xAA(170) | 上行 | | **设备故障上送** | ykcPileFaultEvt | 0x50(80) | 上行 | | **设备故障上送回复确认** | ykcPileFaultEvt_reply | 0x49(73) | 下行 | | **设备故障复位上送** | ykcPileFaultResetEvt | 0x4B(75) | 上行 | | **设备故障复位上送回复确认** | ykcPileFaultResetEvt_reply | 0x4A(74) | 下行 | | 交易记录召唤 | ykcOrderQuery | 0x4D(77) | 下行 | | 交易记录召唤确认 | ykcOrderQuery_reply | 0x4C(76) | 上行 | | **运营参数查询** | ykcOperParamQuery | 0x80(128) | 下行 | | **运营参数查询应答** | ykcOperParamQuery_reply | 0x81(129) | 上行 | | **默认最大功率下发** | ykcMaxPowerSet | 0x60(96) | 下行 | | **默认最大功率下发应答** | ykcMaxPowerSet_reply | 0x59(89) | 上行 | | **平台连接设置** | ykcServer | 0x5D(93) | 下行 | | **平台连接设置应答** | ykcServer_reply | 0x5C(92) | 上行 | | **参数设置** | ykcParamSet | 0x5F(95) | 下行 | | **参数设置应答** | ykcParamSet_reply | 0x5E(94) | 上行 | | **参数查询** | ykcParamQuery | 0x64(100) | 下行 | | **参数查询应答** | ykcParamQuery_reply | 0x65(101) | 上行 | | 密钥更新 | ykcRSAKeySet | 0x96(150) | 下行 | | 密钥更新应答 | ykcRSAKeySet_reply | 0x95(149) | 上行 | | 日志召唤 | ykcPileLogQuery | 0x98(152) | 下行 | | 日志召唤应答 | ykcPileLogQuery_reply | 0x97(151) | 上行 | | 电子锁设置 | ykcElecLockSet | 0x9A(154) | 下行 | | 电子锁设置应答 | ykcElecLockSet_reply | 0x99(153) | 上行 | | **充电安全防护设置** | ykcChaSafetySet | 0x9C(156) | 下行 | | **充电安全防护设置应答** | ykcChaSafetySet_reply | 0x9B(155) | 上行 | | **充电桩主动申请并充充电** | ykcStartParallelChaAuthEvt | 0xA1(161) | 下行 | | **运营平台确认并充启动充电** | ykcStartParallelChaAuthEvt_reply | 0xA2(162) | 上行 | | **运营平台远程控制并充启机** | ykcStartParallelCha | 0xA4(164) | 下行 | | **远程并充启机命令回复** | ykcStartParallelCha_reply | 0xA3(163) | 上行 | #### 7.4 转发电能平台的topic | 名称 | 标识 | Topic | | :--------------------: | :--------------------------------: | :---------------------: | | 登录认证事件 | thing.event.ykcLoginEvt.post | ykc/pile/up | | 属性(状态)上报 | thing.ykc.property | ykc/pile/up | | 请求计费模型事件 | thing.event.ykcAskFeeModelEvt.post | ykc/pile/askFeeModelEvt | | 故障告警事件 | thing.event.ykcTotalFaultEvt.post | ykc/alarm/up | | 充电阶段BMS中止事件 | thing.event.ykcBmsStopEvt.post | ykc/alarm/up | | 充电阶段充电机中止事件 | thing.event.ykcPileStopEvt.post | ykc/alarm/up | | 启动充电结果事件 | thing.event.ykcStartChaResEvt.post | ykc/start_charging/up | | 充电结束事件 | thing.event.ykcChaStopEvt.post | ykc/stop_charging/up | | 地锁状态上报事件 | thing.event.ykcGroundLockEvt.post | ykc/pile/groundLockEvt | | OTA升级结果事件 | thing.event.ykcOtaResultEvt.post | ykc/pile/otaResultEvt |
王旭东
2026年4月3日 10:08
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码