Skip to content

注册平台

注册平台负责设备首次登录、录入状态确认、业务 MQTT 参数下发、业务密钥下发和测试模式声明。开放协议与私有协议共用该阶段,后续业务协议由 productCategory 决定。

1 协议基础

设备启动后先连接注册平台。注册平台确认设备已录入并下发业务 MQTT 参数后,设备保存参数、连接业务 MQTT,再根据 productCategory 选择业务协议适配器:

  • productCategory = 5:开放协议。
  • productCategory != 5:私有协议。

注册平台链路使用登录 MQTT Topic;业务链路使用注册平台下发的业务 Topic、chargerKeytestModetestMode = 0 时业务数据使用 AES-128-CBC/PKCS7 加解密,IV 为 16 字节全 0;productCategory = 5testMode = 1 时开放协议业务链路使用未加密明文,便于客户调试协议。testMode = 1 不适用于私有协议。

1.1 数据结构

起始标志指令类型消息体
#注册平台指令使用逗号分隔的字段列表

示例数据:#<指令类型>,<消息体>


2 设备登录 #LOGIN

设备 → 注册平台:设备连接注册平台后发送登录报文。

示例报文:#LOGIN,0,NCS12,0.0.5,864710071234567,460047661234567,89860846123456789000,A

序号字段名类型示例值说明
1指令类型String#LOGIN固定为 #LOGIN;设备登录指令
2指令序号Number0当前代码固定使用 0
3项目名称StringNCS12入口常量,唯一事实来源为 main.lua
4固件版本String0.0.5入口常量,唯一事实来源为 main.lua
5IMEIString864710071234567设备 IMEI
6IMSIString460047661234567SIM 卡 IMSI
7ICCIDString89860846123456789000SIM 卡 ICCID
8项目子类型StringA入口常量,唯一事实来源为 main.lua

3 登录响应 #LOGIN

注册平台 → 设备:注册平台可直接在 #LOGIN 响应中返回录入状态和业务服务器参数。

示例报文:#LOGIN,0,1,1234,mqtt.goldmel.com,1883,user,password,gm/charger/dev/864710071234567,gm/charger/srv/864710071234567,5,0123456789,123456789012345,1236965080482281,0

序号字段名类型示例值说明
1指令类型String#LOGIN固定为 #LOGIN;登录响应指令
2指令序号Number0通常回传设备登录序号
3注册状态Number10 表示未录入,设备保持注册平台链路并播放验证码;非 0 表示可进入业务链路
4验证码String1234未录入时用于屏显或语音提示;已录入时可用于平台注册校验
5业务服务器地址Stringmqtt.goldmel.com业务 MQTT 服务器域名或 IP
6业务服务器端口Number/String1883业务 MQTT 端口
7业务用户名Stringuser业务 MQTT 用户名
8业务密码Stringpassword业务 MQTT 密码
9设备上行 TopicStringgm/charger/dev/864710071234567设备发布业务报文的 Topic;完整响应建议显式下发
10平台下行 TopicStringgm/charger/srv/864710071234567设备订阅业务报文的 Topic;完整响应建议显式下发
11产品类目Number55 选择开放协议;其它数值选择私有协议
12商户编号String0123456789业务平台商户标识
13充电桩编号String123456789012345业务侧桩编号;业务注册报文优先使用该值
14业务密钥String123696508048228116字节业务链路 AES 密钥
15测试模式Number00 表示业务链路使用 AES;1 仅允许 productCategory = 5 的开放协议业务链路使用明文

当前 NCS02-C 代码要求完整业务配置必须包含 testMode。新平台应使用完整响应,避免业务关键配置缺失导致设备拒绝连接业务服务器。

未录入示例#LOGIN,0,0,1234

序号字段名类型示例值说明
1指令类型String#LOGIN固定为 #LOGIN;登录响应指令
2指令序号Number0通常回传设备登录序号
3注册状态Number0未录入或不可进入业务
4验证码String1234设备会进入验证码提示流程

4 业务参数下发 #LOGIN-RETURN

注册平台 → 设备:注册平台也可使用 #LOGIN-RETURN 独立下发业务服务器参数。设备解析完成后会向注册平台回传保存结果。

示例报文:#LOGIN-RETURN,mqtt.goldmel.com,1883,user,password,gm/charger/dev/864710071234567,gm/charger/srv/864710071234567,5,0123456789,123456789012345,1236965080482281,0

开放平台测试模式示例:#LOGIN-RETURN,47.92.99.158,18883,saomachong,qrCODE_@Gm.886601,gm/open/up/862288081565176,gm/open/down/862288081565176,5,5,00000000,0542993181565176,1

序号字段名类型示例值说明
1指令类型String#LOGIN-RETURN固定为 #LOGIN-RETURN;业务参数下发指令
2业务服务器地址Stringmqtt.goldmel.com业务 MQTT 服务器域名或 IP
3业务服务器端口Number/String1883业务 MQTT 端口
4业务用户名Stringuser业务 MQTT 用户名
5业务密码Stringpassword业务 MQTT 密码
6设备上行 TopicStringgm/charger/dev/864710071234567设备发布业务报文的 Topic
7平台下行 TopicStringgm/charger/srv/864710071234567设备订阅业务报文的 Topic
8产品类目Number55 选择开放协议;其它数值选择私有协议
9商户编号String0123456789业务平台商户标识
10充电桩编号String123456789012345业务侧桩编号
11业务密钥String123696508048228116字节业务链路 AES 密钥
12测试模式Number00 表示业务链路使用 AES;1 仅允许 productCategory = 5 的开放协议业务链路使用明文

当前 NCS02-C 代码要求 #LOGIN-RETURN 至少携带 12 个字段,且 testMode 必须为 01。字段缺失、testMode 非法,或 productCategory != 5 时下发 testMode = 1,设备都会拒绝进入业务链路。


5 参数保存结果 #LOGIN-RETURN

设备 → 注册平台:设备解析并保存业务参数后,向注册平台回传结果。

示例报文:#LOGIN-RETURN,0

序号字段名类型示例值说明
1指令类型String#LOGIN-RETURN固定为 #LOGIN-RETURN;业务参数保存结果
2执行结果Number00 保存成功;1 保存失败

6 注册流程约束

6.1 当前处理流程

text
设备发送 #LOGIN
  -> 注册平台返回 #LOGIN 或 #LOGIN-RETURN
  -> login.lua 解析并保存业务参数
  -> reg_flow.lua 连接业务 MQTT
  -> proto_router.lua 根据 productCategory 选择业务协议
  -> charge_sched.lua 发送业务注册和业务心跳

6.2 关键约束

  • productCategory 必须由注册平台或有效持久化配置提供;业务协议选择只由该字段决定。
  • testMode 必须由注册平台或有效持久化配置提供;0 为普通模式,1 为开放协议测试模式。
  • chargerKey 是16字节业务链路 AES 密钥;普通模式必须使用该密钥加解密,开放协议测试模式保留该字段但业务报文明文传输。
  • 业务 Topic 建议由注册平台显式下发;仅依赖本地 Topic 拼接属于旧平台兼容路径。
  • 当前模板没有独立的“注册阶段业务心跳”。业务 MQTT 就绪后,心跳由协议适配器生成:私有协议为 #0,开放协议为 #HEARTBEAT