目录

前言 概述 通讯方式 通讯检测 消息定义 消息内容 登录(1,81) 状态上传(2,82) 充电进度上传(3,83) 远程启动充电(4,84) 远程结束充电(5,85) 停止充电上报订单(6,86) 刷卡启动充电(7,87) 刷卡查询余额(8,88) 告警(9,89) 重启(10,90) 远程设置主站地址(11,91) 设备参数读取(12,92) 设备参数设置(13,93)

附录

附录1 消息码 附录2 充电结束原因 附录3 告警码

电动自行车充电桩通信协议

前言

概述

此协议规定了电动自行车充电桩(以下简称充电桩)与充电运营管理系统(以下简称运营端)之间通信的接口和报文规范。

通讯方式

充电桩与运营端之间的通信采用 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

消息内容

登录(1,81)

充电桩每次上电启动或连接断开重连后,首先发送登录命令给运营端进行身份校验,登录成功后才允许进行充电命令交互(重启,设置服务器地址,设备参数读取,设备参数设置除外) 间隔120秒上传一次,登录成功就开始状态上传(2,82)

登录 消息码:1(充电桩 => 运营端):
字段名称 备注
桩编号 默认流量卡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"}}

语言提示:登录成功时,语音提示:设备登录成功

登录回复 消息码:81(运营端 => 充电桩):
字段名称 备注
桩编号
结果 0=失败1=成功
服务器时间 格式:YYYYMMDDHHMMSS,桩可根据此时间进行校时

消息格式:消息码,桩编号,结果,服务器时间

示例:{"type":"81","data":{"key1":"1234567812345678","key2":"1","key3":"20241107111111"}}

状态上传(2,82)

状态上报 消息码:2(充电桩 => 运营端):
字段名称 备注
桩编号
插口数量 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"}}

状态上报回复 消息码:82(运营端 => 充电桩):
字段名称 备注
桩编号
服务器时间 格式:YYYYMMDDHHMMSS

消息格式:消息码,桩编号,服务器时间

示例:{"type":"82","data":{"key1":"1234567812345678","key2":"20241107111111"}}

充电进度上传(3,83)

充电进度上报 消息码:3(充电桩 => 运营端):
字段名称 备注
桩编号
插口号 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"}}

充电进度上报回复 消息码:83(运营端 => 充电桩):
字段名称 备注
桩编号

消息格式:消息码,桩编号

示例:{"type":"83","data":{"key1":"1234567812345678"}}

远程启动充电(4,84)

远程启动充电 消息码:4(运营端 => 充电桩):
字段名称 备注
桩编号
插口号 1: 1号枪 2: 2号枪
订单号 平台生成
充电时长 秒 充满自停为最大充电时长
账户余额 精确度为0.01元 如100=1元

消息格式:消息码,桩编号,插口号,订单号,充电时长,账户余额

示例:{"type":"4","data":{"key1":"1234567812345678","key2":"2","key3":"orderid","key4":"36000","key5":"600"}}

语言提示:启动成功时,语音提示:{1号口}已开启, 失败时语音提示:{1号口}启动失败

远程启动充电回复 消息码:84(充电桩 => 运营端):
字段名称 备注
桩编号
枪号 1: 1号枪 2: 2号枪
订单号
结果 0: 启动成功 1: 充电中 2: 枪号错误 3: 枪故障 4: 桩故障 5: 其他原因

消息格式:消息码,桩编号,枪号,订单号,结果

示例:{"type":"84","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"0"}}

远程结束充电(5,85)

远程结束充电 消息码:5(运营端 => 充电桩):
字段名称 备注
桩编号
插口号 1: 1枪 2: 2枪 ...
订单号 平台生成
账户余额 0.01元 如100=1元

消息格式:消息码,桩编号,插口号,订单号,账户余额

示例:{"type":"5","data":{"key1":"1234567812345678","key2":"2","key3":"orderid","key4":"600"}}0

语言提示:结束成功时,语音提示:{1号口}结束充电, 失败时语音提示:{1号口}结束充电失败

远程结束充电回复 消息码:85(充电桩 => 运营端):
字段名称 备注
桩编号
枪号 1: 1枪 2: 2枪 ...
订单号 平台生成
结果 0: 结束成功 1: 枪号错误 2: 该枪未充电 3: 其他原因

消息格式:消息码,桩编号,枪号,订单号,结果

示例:{"type":"85","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"0"}}

停止充电上报订单(6,86)

桩停止充电(如远程主动关闭、欠压、过压、过温、空载、充满、购买量用完等),联网状态下桩需要向后台上报结束订单,未收到平台应答需每隔5秒重发一次,重发3次后可删除该订单。

停止充电上报 消息码:6(充电桩 => 运营端):
字段名称 备注
桩编号
插口号 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"}}

停止充电上报回复 消息码:86(运营端 => 充电桩):
字段名称 备注
桩编号
枪号 1: 1号枪 2: 2号枪 ...
订单号
结果 0: 接收成功 1: 接收失败
余额 精确度为0.01 如100=1元

消息格式:消息码,桩编号,枪号,订单号,结果,余额

示例:{"type":"86","data":{"key1":"1234567812345678","key2":"1","key3":"orderid","key4":"0","key5":"100"}}

刷卡启动充电(7,87)

桩在线的情况下,刷卡且选择好枪号,充电桩上报请求信息,运营管理系统对用户信息进行校验,校验通过后,桩才可继续充电。

刷卡启动充电 消息码:7(充电桩 => 运营端):
字段名称 备注
桩编号
插口号 1: 1号枪 2: 2号枪 ...
卡号 物理卡号

消息格式:消息码,桩编号,插口号,卡号

示例:{"type":"7","data":{"key1":"1234567812345678","key2":"2","key3":"12345678"}}

语言提示:启动成功,语音提示:{1号口}开始充电, 失败时语音提示:您的卡{结果},根据刷卡充电回复播报结果

刷卡启动充电回复 消息码:87(运营端 => 充电桩):
字段名称 备注
桩编号
枪号 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"}}

刷卡查询余额(8,88)

刷卡查询余额 消息码:8(充电桩 => 运营端):
字段名称 备注
桩编号
卡号 物理卡号

消息格式:消息码,桩编号,卡号

示例:{"type":"8","data":{"key1":"1234567812345678","key2":"12345678"}}

语言提示:启动成功,语音提示:您当前余额剩余{余额}元

刷卡查询余额回复 消息码:88(运营端 => 充电桩):
字段名称 备注
桩编号
卡号 物理卡号
结果 0: 有效卡 1: 无效卡
余额 精确度为0.01元如100=1元

消息格式:消息码,桩编号,卡号,结果,余额

示例:{"type":"88","data":{"key1":"1234567812345678","key2":"22342","key3":"0","key4":"360"}}

告警(9,89)

告警 消息码:9(充电桩 => 运营端):
字段名称 备注
桩编号
枪号 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"}}

告警回复 消息码:89(运营端 => 充电桩):
字段名称 备注
桩编号

消息格式:消息码,桩编号

示例:{"type":"89","data":{"key1":"1234567812345678"}}

重启(10,90)

重启 消息码:10(运营端 => 充电桩):
字段名称 备注
桩编号

消息格式:消息码,桩编号

示例:{"type":"10","data":{"key1":"1234567812345678"}}

语言提示:重启成功,语音提示:重启成功。重启失败,语音提示:重启失败

重启回复 消息码:90(充电桩 => 运营端):
字段名称 备注
桩编号
结果 0: 准备重启, 1: 重启失败

消息格式:消息码,桩编号,结果

示例:{"type":"90","data":{"key1":"1234567812345678","key2":"0"}}

远程设置主站地址(11,91)

远程设置主站地址 消息码:11(运营端 => 充电桩):
字段名称 备注
桩编号
主站IP地址 192.168.1.1 8090
端口 服务器端口

消息格式:消息码,桩编号,主站IP地址,端口

示例:{"type":"11","data":{"key1":"1234567812345678","key2":"127.0.0.01","key3":"9600"}}

语言提示:设置成功,语音提示:设置成功。设置失败,语音提示:设置失败

远程设置主站地址回复 消息码:91(充电桩 => 运营端):
字段名称 备注
桩编号
结果 0: 成功, 1: 失败

消息格式:消息码,桩编号,结果

示例:{"type":"91","data":{"key1":"1234567812345678","key2":"0"}}

设备参数读取(12,92)

设备参数读取 消息码:12(运营端 => 充电桩):
字段名称 备注
桩编号

消息格式:消息码,桩编号

示例:{"type":"12","data":{"key1":"1234567812345678"}}

设备参数读取回复 消息码:92(充电桩 => 运营端):
字段名称 备注
桩编号
状态上报间隔 单位秒
充电进度上报间隔 单位秒
浮充功率 单位瓦
浮充时间 单位秒
功率为零时间 单位秒
单路最大功率 单位瓦
整机最大功率 单位瓦
最大充电时长 单位秒

消息格式:消息码,桩编号,结果,状态上报间隔,充电进度上报间隔,浮充功率,浮充时间,功率为零时间,单路最大功率,整机最大功率,最大充电时长

示例:{"type":"92","data":{"key1":"1234567812345678","key2":"0","key3":"30","key4":"30","key5":"30","key6":"30","key7":"30","key8":"30","key9":"303","key10":"3000"}}

设备参数设置(13,93)

设备参数设置 消息码:13(运营端 => 充电桩):
字段名称 备注
桩编号
状态上报间隔 单位秒
充电进度上报间隔 单位秒
浮充功率 单位瓦
浮充时间 单位秒
功率为零时间 单位秒
单路最大功率 单位瓦
最大充电时长 单位秒

消息格式:消息码,桩编号,状态上报间隔,充电进度上报间隔,浮充功率,浮充时间,功率为零时间,单路最大功率,最大充电时长

示例:{"type":"13","data":{"key1":"1234567812345678","key2":"30","key3":"30","key4":"30","key5":"30","key6":"30","key7":"30","key8":"3000"}}

语言提示:设置成功,语音提示:设置成功。设置失败,语音提示:设置失败

设备参数设置回复 消息码:93(充电桩 => 运营端):
字段名称 备注
桩编号
设置结果 0: 成功; 1: 失败

消息格式:消息码,桩编号,设置结果

示例:{"type":"93","data":{"key1":"1234567812345678","key2":"0"}}

附录1 消息码

消息码 功能
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 设备参数设置回复

附录2 充电结束原因

结束码 结束原因
0 其他原因
1 充满停止
2 余额不足
3 远程停止
4 未插插座
5 拔出停止
6 过压停止
7 欠压停止
8 过温停止
9 计量异常
10 异常烟雾
11 单路功率超限停止
12 整机功率超限停止

附录3 告警码

结束码 结束原因
0 过压故障
1 欠压故障
2 高温故障
3 计量故障
4 黏连故障
5 空载
6 烟雾告警
-1 其他