电川慢充设备服务端通讯说明文档
目录
版本变更说明
2018-4-10
【设置充电站5档计费功率、比例】-【设置功率比例】增加了功率设置的注意事项。
【设置充电站5档计费功率、比例】-【设置功率比例应答】增加了对设置失败的支持。
【 ID卡刷卡充电充值】-【刷卡向模块发送卡号和扣费金额】增加了对退费的支持。
【充值指令:给卡充值+发送卡余额给后台数据同步】-【充值-回复充值】增加了卡号。
2018-3-29
【ID卡刷卡充电充值】增加了对数字卡号生成规则的说明。
2018-3-27
【设备充电】-【设备启动请求】增加了对功率档位的支持。
【查询设备端口状态】-【端口查询请求】增加了对功率的设置。
【充电完成通知】-【设备充电完成上报】停止原因增加了“因充电器功率过大”。
【查询某个端口的充电状态】-【查询端口当前的充电状态响应】增加了对剩余功率退款的支持。
【远程开关机】新增远程开关机的支持。
【ID卡刷卡充电充值】新增了ID卡消费和充值的支持。
【设置充电站充满自停、刷卡退费】新增了设置充电站充满自停、刷卡退费
【设置充电站5档计费功率、比例】新增了设置充电站5档计费功率、比例(特殊说明,目前支持3档,后面两档数据目前默认为0)
【读取设备5档计费功率、比例】新增了读取设备5档计费功率、比例
对应硬件版本:2.2.7
描述
规约
本文档所述的协议是用以东骏科技有限公司物联网服务平台和慢充设备的数据交互。
客服(技术)联系方式
杭州东骏科技有限公司
电话:0571-87017551
手机:13082852087
兼容性
仅适用于授权设备。
词汇表
端口:充电时使用的接口,设备可以单独控制的电力输出结构。
端口编号:端口的程序代码,和设备编号共用用以表示端口在系统中的唯一值。端口编号必须以数字顺序编码,每台机器端口编号不得跳跃,不得重用。
响应类型:上报服务端的数据响应类型。分为即时响应上报和设备主动上报。
会话ID: 由服务端生成,用以区分不同的命令数据链。
网络通讯协议
本章节内容定义通讯模块和服务器之间的通讯协议。
通讯方式
- 数据上报:string字符串
- 指令数据:定长报文
- 通讯网络协议:TCP
协议结构
命令结构
定义:服务器发送,通讯模块接收的数据报文。
1 | 2 | 3 | 4 | 5 | 6 | 7 |
1:开始标识(1byte) “_”
2:报文长度(3byte)(ASCII数字)
3:命令(3byte)(英文大写,第一字节A为保留字段)
4:会话ID(6byte)(每一字节0x00-0x3D之间数字+偏移量0x31,当然如果使用A-Za-z0-9就一定再这个范围之内了,也就满足要求了),每次不同的通讯的会话ID都需要不一样(服务器发起的通讯至少连续的20次通讯不一样,除了特殊说明以外,当然我们的建议还是让每次通讯的会话ID尽可能的不一样),通常设备会在获取到服务器指令执行以后需要回复结果的会返回相同的会话ID给服务器,服务端可以通过会话ID获得设备当前回应的数据是哪一个会话的。同一个会话ID设备会认为是同一次通讯的重复发送,如果设备已经处理了相关的指令,就会丢弃之后相同会话ID的指令。设备由于内存限制,比对的会话ID是之前10次通讯的会话ID,为了可靠期间服务端只要保证连续的20次服务器发起的通讯会话ID不一致就可以了确保设备不会触发丢弃操作而影响指令的执行。另外如果有些命令服务器为了使设备一定收到,但设备只需要执行一次的,这样的命令多次发送用同一会话ID发送就可以了
5:分隔符(1byte) “/”
6:参数(如果没有参数则没有该部分)
7:结束标识(2byte) (0x0D 0x0A)
响应结构
定义:通讯模块发送,服务器接收的报文。
1 | 2 | 3 | 4 | 5 | 6 | 7 |
1:开始标识(1byte) “_”
2:响应类型(2byte) PG-ping,DV-设备号(IMEI),ID-SIM卡ICCID号,CM-客户端命令,RP-数据上报,RS-命令响应, RJ-Json数据上报
3:命令(3byte)(大写英文,回传服务器请求的命令,如果没有服务器请求则为AAA)
4:会话ID(6byte)(无服务器会话ID则返回”000000”,文档中指令的会话ID有特殊定义的,已定义为准)
5:内容长度(3byte)(ASCII数字)6的长度
6:内容(内容长度可以为空)
7:结束标识(2byte) (0x0D 0x0A)
命令限制
- ADV(设备号IMEI号) AID(SIM卡ICCID号) AXT(心跳) AAA(空指令) 为系统内置命令不能用于其他接口
- 业务级别的接口命令不得用 A 开头
业务协议
查询设备端口状态
端口查询请求
关联设备命令:0x01
发送方 | 服务器 |
说明 | 服务端询问设备状态 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,STA |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 空 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 016 STA DSfFGd / <0x0D> <0x0A>
端口查询响应
关联设备命令:0x01
发送方 | 通信模块 |
说明 | 返回服务端查询内容 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,STA |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 端口号
: 状态(1-端口空闲,2-端口正在使用,3-端口禁用,4-端口故障) (“/”端口分隔符) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS STA DSfFGd 011 1 : 0 / 2 : 1 / 3 : 1 <0x0D> <0x0A>
设备充电
最后变更版本:2.2.7,变更日期:2018-3-23
关联设备命令:0x02
设备启动请求
发送方 | 服务器 |
说明 | 支付完成后,启动设备,开始充电 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,RUN |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 端口字段长度(2byte)
端口号(任意长度) 充电时长字段长度(2byte) 充电时长(任意长度) 功率档位字段长度(2byte) 功率档位(任意长度,0-255,0表示不选择) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 023 RUN 123456 / 01 2 02 60 01 1 <0x0D> <0x0A>
设备启动响应
发送方 | 通信模块 |
说明 | 响应服务端启动情况 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,RUN |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 状态(1-成功,2-故障,3-端口已用) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS RUN 123456 001 1 <0x0D> <0x0A>
设备参数设置
关联设备命令:0x08、0x0C
变更设备参数设置
发送方 | 服务器 |
说明 | 设置设备的参数 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DCC |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 3byte最大输出功率,若该值为0时,表示不设置这个值(不足3byte在前面补零)
3byte用户每次刷卡消耗的金额,单位:角(不足3byte在前面补零) 3byte第一个币的充电时间(0-999分钟)或者充电电量(0-9.99度)(不足3byte在前面补零) 3byte第二个币的充电时间(0-999分钟)或者充电电量(0-9.99度)(不足3byte在前面补零) 3byte第三个币的充电时间(0-999分钟)或者充电电量(0-9.99度)(不足3byte在前面补零) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 031 DCC 123456 / 100 010 030 070 120 <0x0D> <0x0A>
变更设备参数设置响应
发送方 | 通信模块 |
说明 | 返回服务端设置情况 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCC |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 1byte 1-成功,0-失败 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCC 123456 001 1 <0x0D> <0x0A>
设备参数查询请求
发送方 | 服务器 |
说明 | 查询设备设置的参数 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DCN |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 016 DCN 123456 / <0x0D> <0x0A>
设备参数查询响应
发送方 | 通讯模块 |
说明 | 返回服务端设置情况 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCN |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 1、最大输出功率,若该值为0时,表示不设置这个值(#/#分割)
2、用户每次刷卡消耗的金额,单位:角(#/#分割) 3、第一次投币时长,单位:分钟(#/#分割) 4、第二次投币时长,单位:分钟(#/#分割) 5、第三次投币时长,单位:分钟 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCN 123456 024 100 #/# 10 #/# 30 #/# 70 #/# 120 <0x0D> <0x0A>
设置IC卡、投币器是否可用
关联设备命令:0x09
更改IC卡、投币器是否可用
发送方 | 服务器 |
说明 | 设置投币器和IC卡是否可用 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DCD |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 1byte投币器开关设置:0-表示关闭 1-表示打开
1byte刷卡功能设置:0-表示关闭 1-表示打开 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 DCD 123456 / 0 1 <0x0D> <0x0A>
更改IC卡、投币器是否可用响应
发送方 | 通信模块 |
说明 | 返回服务端执行情况 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCD |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 1byte 1-表示成功 0-表示失败 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCD 123456 001 1 <0x0D> <0x0A>
端口锁定、解锁
关联设备命令:0x0A
设备端口锁定、解锁设置
发送方 | 服务器 |
说明 | 锁定/解锁设备指定端口 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DCG |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 2byte 端口号
1byte 0-锁定指令/1-解锁指令 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 019 DCG 123456 / 01 1 <0x0D> <0x0A>
设备端口锁定、解锁响应
发送方 | 通信模块 |
说明 | 返回服务端操作结果 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCG |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 1byte 1-表示成功 0-表示失败 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCG 123456 001 1 <0x0D> <0x0A>
远程停止充电
关联设备命令:0x0B
停止指定端口充电
发送方 | 服务器 |
说明 | 停止指定的充电端口(执行退款功能时使用) |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,RTN |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 2byte 端口号 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 RTN 123456 / 01<0x0D> <0x0A>
停止指定端口充电响应
关联设备命令:0x0B
发送方 | 通信模块 |
说明 | 返回服务端执行结果 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCH |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 端口号#/#剩余时间(单位:分) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCH 123456 001 1 #/# 60 <0x0D> <0x0A>
充电完成通知
最后更新版本:2.2.7,最后更新日期:2018-3-23
关联设备命令:0x05
设备充电完成上报
发送方 | 通信模块 |
说明 | 设备充电完成后,上报服务端 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RP |
命令 | 3byte,UWC |
会话ID | 6byte,A80005 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 充电端口#/#
充电剩余时间/电量(单位:分钟/度)#/# 停止原因(0-时间用完了,1-用户手动停止(拔插头或是按了停止按钮),2-充满自动停止,3-端口出现问题被迫停止,4-因充电器功率过大,5-刷卡退费结束)#/# 重传序号(通讯模块生成,该参数是后面DLB命令的参数,获取到充电完成就必须要发送DLB回应设备已经接收到,如果不回应,设备为了保证服务端收到该条消息会每隔一分钟重新发送) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RP UWC A80005 017 1 #/# 70 #/# 2 #/# 56<0x0D> <0x0A>
删除重传队列
发送方 | 服务器 |
说明 | 服务端收到设备充电完成上报后,回应设备让设备删除重传列表中的该条数据。 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DLB |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 重传序号(通讯模块生成) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 DLB 123456 / 56 <0x0D> <0x0A>
线下消费上报
关联设备命令:0x03
设备上报投币数据
发送方 | 通信模块 |
说明 | 设备上报服务端投币数量 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RP |
命令 | 3byte,UTB |
会话ID | 6byte,A80006 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 投币数量(元) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RP UTB A80006 001 1 <0x0D> <0x0A>
设备上报刷卡信息
关联设备命令:0x04
发送方 | 通信模块 |
说明 | 设备上报服务端投币数量 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RP |
命令 | 3byte,USK |
会话ID | 6byte,A80007 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 卡号类型(0-默认 1-包月 2-普通)#/#
刷卡金额(单位:角)#/# 卡号(目前为0,卡号上报需硬件对接) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RP USK A80007 010 2 #/# 20 #/# 0 <0x0D> <0x0A>
设备故障上报
关联设备命令:0x0D
发送方 | 通信模块 |
说明 | 设备上报服务端发生故障 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RP |
命令 | 3byte,DCE |
会话ID | 6byte,A80008 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 端口号#/#
故障类型(设备之定义) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RP DCE A80008 010 2 #/# 20 #/# 0 <0x0D> <0x0A>
查询某个端口的充电状态
关联设备命令:0x06
查询端口当前的充电状态
发送方 | 服务器 |
说明 | 查询某个端口的充电状态 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DCA |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 2byte 端口号 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 DCA 123456 / 01<0x0D> <0x0A>
查询端口当前的充电状态响应
关联设备命令:0x06
发送方 | 通信模块 |
说明 | 响应某个端口的充电状态 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCA |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 端口号:当前上报的端口
(#/#) 剩余时间/剩余电量:当前端口的充电剩余时间或者剩余电量 (#/#) 当前端口的瞬时功率:当前端口的瞬时功率,单位W |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCA 123456 015 1 #/# 1234 #/# 1234 <0x0D> <0x0A>
查询消费数据
最后更新版本:2.2.7,最后更新日期:2018-3-23
关联设备命令:0x07
查询消费总额数据
发送方 | 服务器 |
说明 | 查询设备的消费总额 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DCB |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 固定值 0 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 016 DCB 123456 / <0x0D> <0x0A>
查询消费总额数据响应
发送方 | 通信模块 |
说明 | 返回查询到的消费总额数据 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DCB |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 刷卡总金额
(#/#) 投币总金额 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DCB 123456 009 100#/#100 <0x0D> <0x0A>
远程开关机
最后更新版本:2.2.7,最后更新日期:2018-3-23
关联设备命令:0x0E
打开或关闭充电站
发送方 | 服务器 |
说明 | 打开或关闭充电站 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DKB |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 开关机模式:1-代表关闭,0-代表开机 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 017 DCB 123456 / 1 <0x0D> <0x0A>
打开或关闭充电站响应
发送方 | 通信模块 |
说明 | 远程开打或关闭充电站的响应 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,DKB |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 结果:1-表示成功,0-表示失败或不支持 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS DKB 123456 001 1 <0x0D> <0x0A>
ID卡刷卡充电充值
关联设备命令:0x11、0x12
数字卡号对应规则:本命令支持的ID卡的卡号都是4个字节。比如硬件卡号的值“0x01 0x02 0x03 0x04”。而卡号在服务端系统中维护时为了方便操作需要转换成一个数字序列,我们规定这个数字序列是一个10位的固定长度的整数,比如“0016909060”,不足10位的在前面补零。该数字卡号的生成规则如下。
硬件卡号如下:
字节一 | 字节二 | 字节三 | 字节四 |
我们定义我们的数字在计算时使用uint32_t(32位无符号整形),卡号 = 字节一 << 24 + 字节二 << 16 + 字节三 << 8 + 字节四(<<代表左移)后的十进制数值,不足10个数字的在前面补零得到。
比如卡的硬件卡号是0x01 0x02 0x03 0x04那么,数字卡号就是 (00000001 00000010 00000011 00000100)2进制 = “0016909060”。
当然如果用户需要打印的卡号具有个性化的定义,用户只需要在制作卡的时候和服务端维护卡号做一个转换,本文档定义的规则要求只是确保服务端和通讯模块之间的通讯使用这种方式(能够对应)即可。
如果还不太明白,可以看下下面用计算器做的演示:上图输入的是原始的硬件卡号(十六进制的01 02 03 04),下图是转换成10进制的数字卡号
刷卡向模块发送卡号和扣费金额
关联设备命令:0x11
发送方 | 通信模块 |
说明 | 刷卡向模块发送卡号和扣费金额 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RP |
命令 | 3byte,COI |
会话ID | 6byte,A80013 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 卡号:ID卡卡号( #/#分割)
刷卡扣费退费金额:1代表0.1元,0代表不扣费(#/#分割) 卡里余额:1代表0.1元,此余额是扣费或退费前的余额。(#/#分割) 卡类型:服务端设置的卡的厂家号或型号,ASCII数字(#/#分割) 端口:充电的端口号,ASCII数字(#/#分割) 状态:1byte,1-代表扣款成功,2-代表扣款失败 余额不足,3-代表退费成功(#/#分割) 重传序号:DLB重传序号,服务端接收到该指令以后必须立刻返回DLB通知设备收到此条数据,否则设备会一直发送直到服务端确认收到。该序号在返回DLB通知的时候需要带回来的序号。 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RP COI A80013 035 1234567890#/#10#/#1000#/#1#/#1#/#1#/#56 <0x0D> <0x0A>
删除重传队列
发送方 | 服务器 |
说明 | 服务端收到设备ID卡付款上报后,回应设备让设备删除重传列表中的该条数据。 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DLB |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 重传序号(通讯模块生成) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 DLB 123456 / 56 <0x0D> <0x0A>
充值-上报卡信息
关联设备命令:0x12
发送方 | 通信模块 |
说明 | 卡充值步骤一:刷卡向模块发送卡号和扣费金额 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RP |
命令 | 3byte,COP |
会话ID | 6byte,A80014 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 卡号:ID卡卡号
卡里余额:1代表0.1元 卡类型:服务端设置的卡的厂家号或型号,ASCII数字 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RP COP A80014 021 1234567890#/#1000#/#1 <0x0D> <0x0A>
充值-回复充值
关联设备命令:0x12
发送方 | 服务器 |
说明 | 卡充值步骤二:服务器回复充值 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,COQ |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 卡号:10byte,ID卡卡号
充值金额:5byte,单位:0.1元(最多65500) 卡类型:5byte,服务端设置的卡的厂家号或型号,ASCII数字 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 021 COQ 123456 / 01000 <0x0D> <0x0A>
充值:设备再回复
关联设备命令:0x16
发送方 | 通信模块 |
说明 | 卡充值步骤三:设备再次应答不服气充值是否成功 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,COQ |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 卡号:ID卡卡号(#/#分割)
卡里余额:1代表0.1元(#/#分割) 卡类型:服务端设置的卡的厂家号或型号,ASCII数字(#/#分割) 充值结果:1byte,1-充值成功,0-充值失败(#/#分割) 重传序号:DLB重传序号,服务端接收到该指令以后必须立刻返回DLB通知设备收到此条数据,否则设备会一直发送直到服务端确认收到。该序号在返回DLB通知的时候需要带回来的序号。 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS COQ 123456 026 1234567890#/#1000#/#1#/#1#/#56 <0x0D> <0x0A>
删除重传队列
发送方 | 服务器 |
说明 | 服务端收到设备ID卡充值再回复上报后,回应设备让设备删除重传列表中的该条数据。 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,DLB |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 重传序号(通讯模块生成) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 DLB 123456 / 56 <0x0D> <0x0A>
设置充电站充满自停、刷卡退费
关联设备命令:0x13
设置充满退费参数
发送方 | 服务器 |
说明 | 设置充电站充满自停、刷卡退费 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,CHI |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 充满自停设置:1byte,0-不自停,1-自停
刷卡退费设置:1byte,0-不退废,1-退费 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 018 CHI 123456 / 1 1 <0x0D> <0x0A>
设置充满退费参数应答
发送方 | 通信模块 |
说明 | 设置充电站充满自停、刷卡退费应答 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,CHI |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 固定值:1 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS CHI 123456 001 1 <0x0D> <0x0A>
设置充电站5档计费功率、比例
关联设备命令:0x14
设置功率比例
发送方 | 服务器 |
说明 | 设置充电站5档计费功率、比例,具体用几档依设备而定 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,CHM |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 第一档功率:5byte,ASCII数字 设置第一档的功率范围0-第一档功率,单位:W
第一档比例:3byte,电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例% 第二档功率:5byte,ASCII数字 设置第二档的功率范围:第一档功率—第二档功率,单位:W 第二档比例:3byte,电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例% 第三档功率:5byte,设置第三档的功率范围:第二档功率—第三档功率,单位:W 第三档比例:3byte,电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例% 第四档功率:5byte,设置第四档的功率范围:第三档功率—第四档功率,单位:W(目前预留) 第四档比例:3byte,电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例%(目前预留) 第五档功率:5byte,设置第五档的功率范围:第四档功率—第五档功率,单位:W(目前预留) 第五档比例:3byte,电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例%(目前预留) 注意:功率第一档不能大于第二档,第二档不能大于第三档,以此类推。 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 055 CHM 123456 / 00100 100 00200 050 00300 030 00400 015 0500 010 <0x0D> <0x0A>
设置功率比例应答
发送方 | 通信模块 |
说明 | 设置充电站5档计费功率、比例应答,主板不支持则不回复 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,CHM |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 1-成功,0-失败(与主板要求的不符,比如功率超出了主板的最大功率,功率大小限制与主板要求不符等) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS CHM 123456 001 1 <0x0D> <0x0A>
读取设备5档计费功率、比例
关联设备命令:0x15
读取功率比例
发送方 | 服务器 |
说明 | 读取充电站5档计费功率、比例,读出来是5档,没用的档位全是 0 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,CHO |
会话ID | 6byte,服务器生成 |
分隔符 | 1byte,“/” |
参数 | 固定值 0 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 017 CHO 123456 / 0 <0x0D> <0x0A>
读取功率比例应答
发送方 | 通信模块 |
说明 | 返回五档功率比例值 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,RS |
命令 | 3byte,CHO |
会话ID | 6byte,服务器生成 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 第一档功率:设置第一档的功率范围0-第一档功率,单位:W(#/#分割)
第一档比例:电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例%(#/#分割) 第二档功率:设置第二档的功率范围:第一档功率—第二档功率,单位:W(#/#分割) 第二档比例:电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例%(#/#分割) 第三档功率:设置第三档的功率范围:第二档功率—第三档功率,单位:W(#/#分割) 第三档比例:电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例%(#/#分割) 第四档功率:设置第四档的功率范围:第三档功率—第四档功率,单位:W(#/#分割) 第四档比例:电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例%(#/#分割) 第五档功率:设置第五档的功率范围:第四档功率—第五档功率,单位:W(#/#分割) 第五档比例:电动车在此功率范围内充电时间对应机器设置时间的百分比,充电时间=设置时间*对应比例% |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ RS CHO 123456 053 100#/#100#/#200#/#50#/#300#/#30#/#400#/#15#/#500#/#10 <0x0D> <0x0A>
系统及网络接口
获取设备号
发送方 | 服务器 |
说明 | 在设备连接服务端成功后,服务端立即发送指令请求该设备的设备号
现在约定设备的GSM模块的IMEI号作为唯一设备号 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,ADV |
会话ID | 6byte,000000 |
分隔符 | 1byte,“/” |
参数 | IMEI |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 020 ADV 000000 / IMEI 0x0D 0x0A
设备号响应
发送方 | 通信模块 |
说明 | 设备收到设备号请求时,返回设备号
现在约定设备的GSM模块的IMEI号作为唯一设备号 设备号返回后才能开始真正的业务级别通讯 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,DV |
命令 | 3byte,ADV |
会话ID | 6byte,000000 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | 2byte ID类型:IM
2byte 编码长度:IMEI号长度,一般为15 (一般15byte)设备号:GSM模块IMEI号 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
IMEI号: 987654321012345 _ DV ADV 000000 019 IM 15 987654321012345 0x0D 0x0A
心跳Ping
发送方 | 通信模块 |
说明 | 设备连接成功后,轮询发送心跳包,保持长连接。
综合考虑运营商GPRS的超时、路由映射缓存超时、流量节省等因素, 心跳间隔建议在60秒 |
开始标志 | 1byte,“_” |
响应类型 | 2byte,PG |
命令 | 3byte,AXT |
会话ID | 6byte,000000 |
内容长度 | 3byte,001 |
内容 | 信号值:0-31(,分割)
误码率:0-7(#/#分割) 上次心跳响应时间:整数值(可能为负,10ms为单位,上次心跳发出时间到上次接收到服务器心跳返回的时间,可以初略估计出网络的传输和服务器的响应速度) |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ PG AXT 000000 009 31 , 0 #/# 74 0x0D 0x0A
信号值显示建议:
以下以5格信号显示为例:信号值0-5显示0格,信号值6-12显示为1格,信号值13-16显示为2格,信号值17-20显示为3格,信号值21-25显示为4格,信号值26-31显示为5格。同时如果误码率≥5,则信号格数在原来基础上减去1,如果计算的信号格数为负数则显示为零格。
通常信号值为15以下(包括15)的建议通过信号放大或者调整天线匹配等手段使模块获得更好的信号,在这种信号情况下会出现掉线率高,数据延时高等情况,对通讯和业务会造成影响。
心跳响应
发送方 | 服务器 |
说明 | 服务端回复心跳 |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,AXT |
会话ID | 6byte,000000 |
分隔符 | 1byte,“/” |
参数 | P |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 017 AXT 000000 / P 0x0D 0x0A
获取ICCID
发送方 | 服务器 |
说明 | 在设备返回设备号后,服务端发送指令获取SIM卡的ICCID |
开始标志 | 1byte,“_” |
报文长度 | 3byte,表示整个报文的总长度,ASCII数字表示 |
命令 | 3byte,AID |
会话ID | 6byte,000000 |
分隔符 | 1byte,“/” |
参数 | |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
_ 016 AID 000000 / 0x0D 0x0A
ICCID响应
发送方 | 通信模块 |
说明 | 设备收到ICCID请求时,返回ICCID |
开始标志 | 1byte,“_” |
响应类型 | 2byte,ID |
命令 | 3byte,AID |
会话ID | 6byte,000000 |
内容长度 | 3byte,表示内容长度,ASCII数字表示 |
内容 | ICCID号 |
结束标志 | 2byte,\r\n(0x0D 0x0A) |
示例:
ICCID号 : 898602B3131650175846
_ ID AID 000000 020 898602B3131650175846 0x0D 0x0A
心跳和握手流程
设备通讯模块连接上服务器后会首先发送一次心跳,此时服务器就可以和模块通讯了,一般来说首先进行身份鉴别,通过获取IMEI和ICCID指令,获取设备的IMEI和ICCID号校验设备的身份信息。心跳是由模块发起,当发起心跳以后服务端必须在5秒钟之内回复心跳,建立连接以后模块会每个一定的时间发送心跳给服务器用来保持长连接和通讯确认。
打
印
新
页
打
印
新
页
打
印
新
页