Appearance
开放协议 vs 私有协议 对比文档
1 协议概述对比
| 对比项 | 开放协议 (V0.9) | 私有协议 (V2.0.6) |
|---|---|---|
| 来源文档 | 4G充电桩开放协议_V0.9.docx | 扫码充设备通信指令描述V2.0.6.docx |
| 协议定位 | 面向第三方平台的开放接入协议 | 面向自有平台和设备的内部协议 |
| 通信协议 | MQTT-3.1.1 | MQTT-3.1.1 |
| 服务器架构 | 单服务器直连 | 双服务器架构(注册服务器+业务服务器) |
| 数据加密 | AES128-CBC-PKCS7,加密参数联系厂商获取 | AES-128-CBC,Key=(1+imei)转16进制,IV=全零 |
| 指令风格 | 语义化指令名(如CHARGE-START) | 数字指令码(如1=开启充电) |
| 指令序号范围 | 0~65535 | 0~999 |
2 连接参数对比
2.1 MQTT连接参数
| 参数 | 开放协议 | 私有协议(注册服务器) | 私有协议(业务服务器) |
|---|---|---|---|
| 服务器域名 | mqtt.xxxxx.com(可自定义) | login.goldmel.com | mqtt.goldmel.com |
| 端口 | 1883(可自定义) | 1883 | 1883 |
| Client ID | IMEI | 设备IMEI | 设备IMEI |
| 用户名 | 可自定义 | device_login | user |
| 密码 | 可自定义 | device_login@... | user |
2.2 Topic格式对比
| 方向 | 开放协议 | 私有协议(注册服务器) | 私有协议(业务服务器) |
|---|---|---|---|
| 上行(设备→平台) | gm/open/up/<IMEI> | gm/login/dev/(imei) | gm/charger/dev/(imei) |
| 下行(平台→设备) | gm/open/dn/<IMEI> | gm/login/srv/(imei) | gm/charger/srv/(imei) |
关键差异:
- 开放协议使用单一Topic对,平台方可自定义
- 私有协议使用双服务器架构,注册服务器负责设备录入和参数下发,业务服务器负责充电业务
3 数据结构对比
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 数据格式 | #<指令类型>,<指令序号>,<消息体> | #(cmd type),<1>,<2>,...,<type n><LF> |
| 起始标识 | # | # |
| 分隔符 | 逗号 | 逗号 |
| 结束符 | 无明确说明 | <LF>(换行符) |
| 指令类型标识 | 英文语义化名称 | 数字编码或英文缩写 |
4 指令集对比
4.1 指令映射表
| 功能 | 开放协议 | 私有协议 | 差异说明 |
|---|---|---|---|
| 设备注册/登录 | LOGIN | LOGIN | 开放协议上报更详细的出厂参数;私有协议包含设备项目名称和子类型 |
| 登录响应 | LOGIN | LOGIN | 开放协议返回UTC时间戳;私有协议返回绑定/录入状态和验证码 |
| 心跳 | HEARTBEAT | 0 | 开放协议包含注册码编号和端口数据组;私有协议包含信号接收功率和详细费用数据 |
| 心跳响应 | HEARTBEAT | 0 | 开放协议仅确认;私有协议返回执行结果 |
| 设备绑定 | 无 | A | 私有协议独有,管理设备绑定状态 |
| 掉电提醒 | 无 | DROP | 私有协议独有,设备掉电时上报订单信息 |
| 查询充电桩 | DEVICE-QUERY | 无 | 开放协议独有,查询端口状态与计费模板一致性 |
| 查询设备状态 | 无 | 4 | 私有协议独有,查询所有插孔充电状态 |
| 查询端口状态 | PORT-QUERY | 3 | 开放协议按端口查询;私有协议也按端口查询但返回更多费用数据 |
| 开启充电 | CHARGE-START | 1 | 开放协议传入订单编号+金额;私有协议传入充电类型+时长/电量+自停参数+费率扩展 |
| 开启充电响应 | CHARGE-START | 1 | 开放协议返回执行结果码;私有协议返回充电时长/电量+计费功率 |
| 终止充电 | CHARGE-STOP | 2 | 开放协议传入订单编号;私有协议传入插孔序号+充电时长/功率 |
| 终止充电响应 | CHARGE-STOP | 2 | 开放协议返回订单费用明细;私有协议返回剩余时长+费用明细 |
| 充电自停 | AUTO-STOP | 5 | 开放协议3种自停类型;私有协议6种结束类型 |
| 自停响应 | AUTO-STOP | 5 | 开放协议返回订单编号+执行结果;私有协议返回插孔序号 |
| 查询计费模型 | BILLING-QUERY | 无 | 开放协议独有 |
| 设置计费模型 | BILLING-SET | 无 | 开放协议独有;私有协议将费率嵌入开启充电指令 |
| 查询工作参数 | PARAM-QUERY | 7 | 开放协议查询自停参数+功率限制+心跳间隔;私有协议查询功率阈值+自停计时 |
| 设置工作参数 | PARAM-SET | 无 | 开放协议独有;私有协议通过指令6设置功率阈值 |
| 远程重启 | REBOOT | REBOOT | 开放协议仅含指令序号;私有协议含设备序号 |
| 刷卡充电 | 无 | B | 私有协议独有 |
| 业务服务器配置 | 无 | LOGIN-RETURN | 私有协议独有,注册服务器下发业务服务器参数 |
4.2 私有协议独有指令
| 指令 | 指令码 | 说明 |
|---|---|---|
| 设备绑定 | A | 设置/切换设备绑定状态 |
| 掉电提醒 | DROP | 设备掉电时上报订单信息 |
| 查询设备状态 | 4 | 查询所有插孔充电状态 |
| 刷卡充电 | B | IC卡刷卡充电请求 |
| 业务服务器配置 | LOGIN-RETURN | 注册服务器下发业务服务器连接参数 |
| 设置功率阈值(弃用) | 6 | 设置设备自停相关参数 |
| 设置功率档位(弃用) | 8 | 设置功率计费档位 |
| 查询功率档位(弃用) | 9 | 查询功率计费档位 |
| 校时(弃用) | TIME | 后台校时 |
4.3 开放协议独有指令
| 指令 | 说明 |
|---|---|
| DEVICE-QUERY | 查询充电桩端口运行状态与计费模板一致性 |
| BILLING-QUERY | 查询当前计费模型 |
| BILLING-SET | 设置计费模型 |
| PARAM-SET | 在线修改充电桩运行参数 |
5 核心功能详细对比
5.1 登录/注册
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 指令标识 | #LOGIN | #LOGIN |
| 上报方向 | 设备→平台 | 设备→后台 |
| 设备标识 | 注册码编号(15字节) + IMEI + IMSI + ICCID | 设备项目名称(NCS12等) + IMEI + IMSI + ICCID + subtype |
| 固件版本 | 有 | cat1Ver |
| 设备类型 | 充电桩类型(1=电动自行车充电桩) | 通过项目名称区分(NCS01/NCS02/NCS06/NCS12等) |
| 端口数量 | 有 | 无(通过项目名称隐含) |
| 计费模型编号 | 有 | 无 |
| 自停参数 | 有(自停开关/触发功率/时延/最大功率/最大时长) | 无 |
| 响应内容 | 执行结果 + UTC时间戳 | 执行结果 + 绑定状态 + 录入状态 + 验证码 |
| 双服务器支持 | 无 | 有(LOGIN-RETURN下发业务服务器参数) |
5.2 心跳
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 指令标识 | #HEARTBEAT | #0 |
| 上报周期 | 2分钟 | 2分钟 |
| 设备标识 | 注册码编号 | 无 |
| 信号信息 | 信号强度 | 信号强度 + 信号接收功率 |
| 计费模型 | 计费模型编号 | 无 |
| 端口数据 | 端口号|工作状态|有功功率|剩余金额 | 剩余时长/电量|实时功率|电费|服务费|余额|电量 |
| 数据格式 | List(|分隔) | 单端口数据直接排列 |
| 多端口支持 | 每端口一组List数据 | 通过插孔数量+连续数据表示 |
5.3 开启充电
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 指令标识 | #CHARGE-START | #1 |
| 下发方向 | 平台→充电桩 | 后台→设备 |
| 端口指定 | 端口号(1~12) | 设备序号 + 插孔序号 |
| 订单标识 | 订单编号(<=30字节) | 无(或通过扩展字段传入) |
| 充电金额 | 有(单位:分) | 无(通过充电时长/电量间接体现) |
| 充电类型 | 无(仅按金额充电) | 计时/计量/按功率/按时段 四种模式 |
| 自停参数 | 无(使用设备预设值) | 充满自停开关/功率/延时 + 空载自停功率/延时/开关 + 超载功率 + 最大时长 |
| 费率数据 | 无(通过BILLING-SET单独下发) | 嵌入指令扩展数据(按电量/功率/时段三种扩展) |
| 响应内容 | 执行结果码(1~4) | 执行结果 + 充电类型 + 充电时长/电量 + 服务时长 + 计费功率 |
5.4 终止充电
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 指令标识 | #CHARGE-STOP | #2 |
| 下发方向 | 平台→充电桩 | 后台→设备 |
| 订单标识 | 订单编号 | 无 |
| 端口指定 | 端口号 | 设备序号 + 插孔序号 |
| 同步功能 | 无 | 充电时长/功率(0=关闭设备) |
| 响应费用明细 | 充电时长 + 充电量 + 预付金额 + 电费 + 服务费 + 剩余金额 | 剩余时长/电量 + 充电类型 + 实时功率 + 服务费类型 + 使用时长 + 电费 + 服务费 + 余额 + 使用电量 |
| 金额单位 | 分(100=1元) | 分(50=0.5元) |
| 电量单位 | 0.01度(150=0.15度) | Wh(100=100Wh) |
| 时长单位 | 分钟 | 秒 |
5.5 充电自停
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 指令标识 | #AUTO-STOP | #5 |
| 上报方向 | 充电桩→平台 | 设备→后台 |
| 自停类型 | 3种(充满自停/充电完成/超载保护) | 6种(充满自停/空载自停/充电完成/设备超载/计时超时/充电器拔出) |
| 费用明细 | 充电时长 + 充电量 + 预付金额 + 电费 + 服务费 + 剩余金额 | 剩余时长/电量 + 实时功率 + 充电类型 + 计费功率 + 服务费类型 + 使用时长 + 电费 + 服务费 + 余额 + 使用电量 |
| 响应内容 | 端口号 + 订单编号 + 执行结果 | 插孔序号 + 执行结果 |
5.6 工作参数查询/设置
| 对比项 | 开放协议 | 私有协议 |
|---|---|---|
| 查询指令 | #PARAM-QUERY | #7 |
| 设置指令 | #PARAM-SET | #6(已弃用,现通过开启充电指令传入) |
| 参数内容 | 自停开关 + 触发功率 + 触发时延 + 端口最大功率 + 充电桩最大功率 + 最大充电时长 + 心跳间隔 | 充满自停功率/延时 + 超载功率 + 空载功率/延时/开关 + 最大充电时长 + 累计充电时长 + 自停计时 |
| 计费模型管理 | 独立的BILLING-QUERY/BILLING-SET指令 | 费率数据嵌入开启充电指令扩展字段 |
6 数据单位对比
| 数据项 | 开放协议 | 私有协议 |
|---|---|---|
| 金额 | 分(100=1元) | 分(50=0.5元) |
| 功率 | W(整数,1234=123.4W,注意此处有歧义) | W(整数或小数,200=200W,235.05=235.05W) |
| 电量 | 0.01度(150=0.15度) | Wh(100=100Wh) |
| 充电时长 | 分钟 | 秒 |
| 端口编号 | 1~12 | 4G+蓝牙:0=左侧/1=右侧;4G:1~12 |
7 架构差异总结
7.1 设计理念差异
| 维度 | 开放协议 | 私有协议 |
|---|---|---|
| 设计目标 | 标准化、开放性、第三方接入 | 功能完整、设备管控、内部使用 |
| 指令命名 | 语义化英文命名,可读性强 | 数字编码,传输效率高 |
| 费率管理 | 独立指令(BILLING-QUERY/SET) | 嵌入开启充电指令 |
| 订单管理 | 基于订单编号的全生命周期管理 | 基于端口的充电状态管理 |
| 设备管理 | 简化,关注充电业务 | 完整,包含绑定/录入/双服务器切换 |
| 充电模式 | 按金额充电 | 计时/计量/按功率/按时段 四种模式 |
7.2 私有协议特有架构
- 双服务器架构:注册服务器(login.goldmel.com)负责设备录入和参数下发,业务服务器(mqtt.goldmel.com)负责充电业务
- 设备录入流程:设备先连接注册服务器上报信息,录入成功后注册服务器下发业务服务器参数,设备切换到业务服务器
- 刷卡充电:支持IC卡刷卡充电,包含卡号校验和余额管理
- 掉电保护:设备掉电时主动上报订单信息
- 多种充电模式:计时/计量/按功率/按时段四种收费模式,费率数据嵌入充电指令
7.3 开放协议特有架构
- 单服务器直连:第三方平台直接配置MQTT服务器参数
- 订单编号机制:每笔充电订单有唯一编号,贯穿开启/终止/自停全流程
- 计费模型管理:独立的计费模型查询和设置指令
- 工作参数管理:独立的工作参数查询和设置指令
- 设备查询:支持查询充电桩端口状态与计费模板一致性校验
8 迁移/兼容建议
- 指令映射:开放协议的语义化指令需要映射为私有协议的数字指令码
- 金额单位:两协议均使用"分"为单位,但电量单位不同(0.01度 vs Wh),需做转换
- 时长单位:开放协议使用分钟,私有协议使用秒,需乘以60
- 订单编号:开放协议依赖订单编号管理订单,私有协议依赖端口号,需建立映射
- 费率下发:开放协议通过独立指令设置计费模型,私有协议在开启充电时一并下发费率
- 自停类型:开放协议3种类型需映射到私有协议6种类型
- 双服务器切换:私有协议的注册→业务服务器切换流程在开放协议中不存在