此协议规定了电动自行车充电桩(以下简称充电桩)与充电运营管理系统(以下简称运营端)之间通信的接口和报文规范。
充电桩与运营端之间的通信采用 Mqtt 协议。
MQTT服务器地址:47.104.230.110
MQTT服务器端口:1883
MQTT用户名:admin
MQTT密码:admin123456
订阅地址所有信息的topic统一为 zoke/设备编号,登录指令为(zoke/login) 消息类型放入消息内容中
设备启动后播报:设备已启动
设备联网成功后播报:设备已联网
充电桩每隔时间 C 发送设备信息,充电桩发送N次均未收到应答数据则桩主动重置到未登录的状态。
当充电枪状态发生改变时,应立即上报一次设备信息。
初始值为:C=20 秒,N=3。
消息格式为json格式 {type:消息类型,data:{消息内容}} 消息类型对应编号的详情见附录A
充电桩每次上电启动或连接断开重连后,首先发送登录命令给运营端进行身份校验,登录成功后才允许进行充电命令交互(重启,设置服务器地址,设备参数读取,设备参数设置除外) 间隔120秒上传一次,登录成功就开始状态上传(2,82)
| 字段名称 | 备注 |
|---|---|
| 桩编号 | 默认流量卡ICCID码 |
| 插口数量 | 2、10、20 |
| 通讯协议版本号 | 1 |
| 硬件版本号 | 1 |
| 软件版本号 | 2 |
| 流量卡ICCID码 | 88888888888888888 |
消息格式:消息码,桩编号,插口数量,通讯协议版本号,硬件版本号,软件版本号,流量卡ICCID码
示例:{"type":"1",data:{"key1":"1234567812345678","key2":"2","key3":"1","key4":"1","key5":"1","key6":"88888888888888888"}}
语言提示:登录成功时,语音提示:设备登录成功
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 结果 | 0=失败1=成功 |
| 服务器时间 | 格式:YYYYMMDDHHMMSS,桩可根据此时间进行校时 |
消息格式:消息码,桩编号,结果,服务器时间
示例:{"type":"81","data":{"key1":"1234567812345678","key2":"1","key3":"20241107111111"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 插口数量 | 2、10、20 |
| 1号状态 | 0: 空闲 1: 充电中 2: 故障 |
| 2号状态 | 0: 空闲 1: 充电中 2: 故障 |
| ..... | ..... |
| N号状态 | 0: 空闲 1: 充电中 2: 故障 |
| 4G模组CSQ | 信号强度CSQ |
| 主板温度 | 精确度为0.01摄氏度。如100=1摄氏度,3100=31摄氏度 |
消息格式:消息码,桩编号,插口数量,1号状态,1号状态,N号状态,4G模组CSQ,主板温度
示例:{"type":"2","data":{"key1":"1234567812345678","key2":"6","key3":"0","key4":"0","key5":"0","key6":"60","key7":"2400"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 服务器时间 | 格式:YYYYMMDDHHMMSS |
消息格式:消息码,桩编号,服务器时间
示例:{"type":"82","data":{"key1":"1234567812345678","key2":"20241107111111"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 插口号 | 1: 1号枪 2: 2号枪 |
| 订单号 | 平台生成 |
| 实时电压 | 精确度为0.01V 如100=1V |
| 实时电流 | 精确度为0.01A 如100=1A |
| 实时功率 | W瓦 |
| 最大功率 | W瓦 |
| 已充电时长 | 秒 |
| 已充电电量 | 精确度为0.01度 如:100=1度 |
消息格式:消息码,桩编号,插口号,订单号,实时电压,实时电流,实时功率,最大功率,已充电时长,已充电电量
示例:{"type":"3","data":{"key1":"1234567812345678","key2":"2","key3":"orderid","key4":"100","key5":"100","key6":"100","key7":"100","key8":"60","key9":"2400"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 |
消息格式:消息码,桩编号
示例:{"type":"83","data":{"key1":"1234567812345678"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 插口号 | 1: 1号枪 2: 2号枪 |
| 订单号 | 平台生成 |
| 充电时长 | 秒 充满自停为最大充电时长 |
| 账户余额 | 精确度为0.01元 如100=1元 |
消息格式:消息码,桩编号,插口号,订单号,充电时长,账户余额
示例:{"type":"4","data":{"key1":"1234567812345678","key2":"2","key3":"orderid","key4":"36000","key5":"600"}}
语言提示:启动成功时,语音提示:{1号口}已开启, 失败时语音提示:{1号口}启动失败
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 枪号 | 1: 1号枪 2: 2号枪 |
| 订单号 | |
| 结果 | 0: 启动成功 1: 充电中 2: 枪号错误 3: 枪故障 4: 桩故障 5: 其他原因 |
消息格式:消息码,桩编号,枪号,订单号,结果
示例:{"type":"84","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"0"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 插口号 | 1: 1枪 2: 2枪 ... |
| 订单号 | 平台生成 |
| 账户余额 | 0.01元 如100=1元 |
消息格式:消息码,桩编号,插口号,订单号,账户余额
示例:{"type":"5","data":{"key1":"1234567812345678","key2":"2","key3":"orderid","key4":"600"}}0
语言提示:结束成功时,语音提示:{1号口}结束充电, 失败时语音提示:{1号口}结束充电失败
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 枪号 | 1: 1枪 2: 2枪 ... |
| 订单号 | 平台生成 |
| 结果 | 0: 结束成功 1: 枪号错误 2: 该枪未充电 3: 其他原因 |
消息格式:消息码,桩编号,枪号,订单号,结果
示例:{"type":"85","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"0"}}
桩停止充电(如远程主动关闭、欠压、过压、过温、空载、充满、购买量用完等),联网状态下桩需要向后台上报结束订单,未收到平台应答需每隔5秒重发一次,重发3次后可删除该订单。
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 插口号 | 1: 1号枪 2: 2号枪 ... |
| 订单号 | 1 |
| 结束原因 | 参照附录2 |
| 充电时长 | 秒 |
| 充电电量 | 精确度为0.01度 如100为1度 |
| 最大功率 | W瓦 |
消息格式:消息码,桩编号,插口号,订单号,结束原因,充电时长,充电电量,最大功率
示例:{"type":"6","data":{"key1":"1234567812345678","key2":"2","key3":"orderid","key4":"0","key5":"100","key6":"100","key7":"600"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 枪号 | 1: 1号枪 2: 2号枪 ... |
| 订单号 | |
| 结果 | 0: 接收成功 1: 接收失败 |
| 余额 | 精确度为0.01 如100=1元 |
消息格式:消息码,桩编号,枪号,订单号,结果,余额
示例:{"type":"86","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"0","key5":"100"}}
桩在线的情况下,刷卡且选择好枪号,充电桩上报请求信息,运营管理系统对用户信息进行校验,校验通过后,桩才可继续充电。
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 插口号 | 1: 1号枪 2: 2号枪 ... |
| 卡号 | 物理卡号 |
消息格式:消息码,桩编号,插口号,卡号
示例:{"type":"7","data":{"key1":"1234567812345678","key2":"2","key3":"12345678"}}
语言提示:启动成功,语音提示:{1号口}开始充电, 失败时语音提示:您的卡{结果},根据刷卡充电回复播报结果
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 枪号 | 1: 1号枪 2: 2号枪 ... |
| 订单号 | |
| 充电时长 | 秒 |
| 结果 | 0: 允许充电 1: 余额不足 2: 有未结算订单 3: 无效卡 4: 挂失卡 |
| 余额 | 精确度为0.01如100=1元 |
消息格式:消息码,桩编号,枪号,订单号,充电时长,结果,余额
示例:{"type":"87","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"360","key5":"0","key6":"100"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 卡号 | 物理卡号 |
消息格式:消息码,桩编号,卡号
示例:{"type":"8","data":{"key1":"1234567812345678","key2":"12345678"}}
语言提示:启动成功,语音提示:您当前余额剩余{余额}元
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 卡号 | 物理卡号 |
| 结果 | 0: 有效卡 1: 无效卡 |
| 余额 | 精确度为0.01元如100=1元 |
消息格式:消息码,桩编号,卡号,结果,余额
示例:{"type":"88","data":{"key1":"1234567812345678","key2":"22342","key3":"0","key4":"360"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 枪号 | 1: 1号枪, 2: 2号枪, ... |
| 告警编码 | 参照附录 3 |
| 告警时间 | 格式: YYYYMMDDHHMMSS |
| 告警状态 | 0: 恢复, 1: 告警 |
| 告警值 | 告警时对应的数值,如过压时的电压,过温时的温度等。精确度为0.01 如100=1摄氏度 |
消息格式:消息码,桩编号,枪号,告警编码,告警时间,告警状态,告警值
示例:{"type":"9","data":{"key1":"1234567812345678","key2":"1","key3":"0","key4":"20241107111111","key5":"0","key6":"100"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 |
消息格式:消息码,桩编号
示例:{"type":"89","data":{"key1":"1234567812345678"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 |
消息格式:消息码,桩编号
示例:{"type":"10","data":{"key1":"1234567812345678"}}
语言提示:重启成功,语音提示:重启成功。重启失败,语音提示:重启失败
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 结果 | 0: 准备重启, 1: 重启失败 |
消息格式:消息码,桩编号,结果
示例:{"type":"90","data":{"key1":"1234567812345678","key2":"0"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 主站IP地址 | 192.168.1.1 8090 |
| 端口 | 服务器端口 |
消息格式:消息码,桩编号,主站IP地址,端口
示例:{"type":"11","data":{"key1":"1234567812345678","key2":"127.0.0.01","key3":"9600"}}
语言提示:设置成功,语音提示:设置成功。设置失败,语音提示:设置失败
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 结果 | 0: 成功, 1: 失败 |
消息格式:消息码,桩编号,结果
示例:{"type":"91","data":{"key1":"1234567812345678","key2":"0"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 |
消息格式:消息码,桩编号
示例:{"type":"12","data":{"key1":"1234567812345678"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 状态上报间隔 | 单位秒 |
| 充电进度上报间隔 | 单位秒 |
| 浮充功率 | 单位瓦 |
| 浮充时间 | 单位秒 |
| 功率为零时间 | 单位秒 |
| 单路最大功率 | 单位瓦 |
| 整机最大功率 | 单位瓦 |
| 最大充电时长 | 单位秒 |
消息格式:消息码,桩编号,结果,状态上报间隔,充电进度上报间隔,浮充功率,浮充时间,功率为零时间,单路最大功率,整机最大功率,最大充电时长
示例:{"type":"92","data":{"key1":"1234567812345678","key2":"0","key3":"30","key4":"30","key5":"30","key6":"30","key7":"30","key8":"30","key9":"303","key10":"3000"}}
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 状态上报间隔 | 单位秒 |
| 充电进度上报间隔 | 单位秒 |
| 浮充功率 | 单位瓦 |
| 浮充时间 | 单位秒 |
| 功率为零时间 | 单位秒 |
| 单路最大功率 | 单位瓦 |
| 最大充电时长 | 单位秒 |
消息格式:消息码,桩编号,状态上报间隔,充电进度上报间隔,浮充功率,浮充时间,功率为零时间,单路最大功率,最大充电时长
示例:{"type":"13","data":{"key1":"1234567812345678","key2":"30","key3":"30","key4":"30","key5":"30","key6":"30","key7":"30","key8":"3000"}}
语言提示:设置成功,语音提示:设置成功。设置失败,语音提示:设置失败
| 字段名称 | 备注 |
|---|---|
| 桩编号 | |
| 设置结果 | 0: 成功; 1: 失败 |
消息格式:消息码,桩编号,设置结果
示例:{"type":"93","data":{"key1":"1234567812345678","key2":"0"}}
| 消息码 | 功能 |
|---|---|
| 1 | 登录 |
| 2 | 状态上报 |
| 3 | 充电进度上报 |
| 4 | 远程启动充电 |
| 5 | 远程结束充电 |
| 6 | 停止充电上报 |
| 7 | 刷卡启动充电 |
| 8 | 刷卡查询余额 |
| 9 | 告警 |
| 10 | 重启 |
| 11 | 远程设置主站地址 |
| 12 | 设备参数读取 |
| 13 | 设备参数设置 |
| 81 | 登录回复 |
| 82 | 状态上报回复 |
| 83 | 充电进度上报回复 |
| 84 | 远程启动充电回复 |
| 85 | 远程结束充电回复 |
| 86 | 停止充电上报回复 |
| 87 | 刷卡启动充电回复 |
| 88 | 刷卡查询余额回复 |
| 89 | 告警回复 |
| 90 | 重启回复 |
| 91 | 远程设置主站地址回复 |
| 92 | 设备参数读取回复 |
| 93 | 设备参数设置回复 |
| 结束码 | 结束原因 |
|---|---|
| 0 | 其他原因 |
| 1 | 充满停止 |
| 2 | 余额不足 |
| 3 | 远程停止 |
| 4 | 未插插座 |
| 5 | 拔出停止 |
| 6 | 过压停止 |
| 7 | 欠压停止 |
| 8 | 过温停止 |
| 9 | 计量异常 |
| 10 | 异常烟雾 |
| 11 | 单路功率超限停止 |
| 12 | 整机功率超限停止 |
| 结束码 | 结束原因 |
|---|---|
| 0 | 过压故障 |
| 1 | 欠压故障 |
| 2 | 高温故障 |
| 3 | 计量故障 |
| 4 | 黏连故障 |
| 5 | 空载 |
| 6 | 烟雾告警 |
| -1 | 其他 |