身份、配置与库存
以下说明表中的格式省略了文字解释中的最外层大括号,但展示的报文格式都包含 CRC 字段。
CN: 设备身份与上线
上行
{CN,deviceId,address,firmware,rssi,info1,<info2>,<info3>,<info4>,crc}
| 网络 | address | info1 | info2 | info3 | info4 |
|---|---|---|---|---|---|
| 2G/4G | 模组 IMEI | SIM ICCID | LAC | CI | VPN 标识,可选 |
| Wi-Fi | 模组 MAC | 本地 IP | SSID | Wi-Fi 密码 | 预留 |
下行确认
{CN,confirmedDeviceId,settings,crc}
settings 使用分号分隔:KEY1:VALUE1;KEY2:VALUE2;。支持 DOMAIN、PORT、HB(心跳秒数)、BP(库存上报秒数)、UN、PW、ID、DM 和 TP(充电宝品牌隔离)。不修改的键不要发送。服务端未确认时,机柜每 60 秒重发一次 CN。
CS: 网络与整机配置
下行请求: {CS,messageId,operation,param1,param2,crc}
上行结果: {CS,sameMessageId,operation,result,reserved,crc}
上行查询结果: {CS,sameMessageId,currentProductKey,inventoryInterval,mqttHeartbeat,crc}
result 为 1 表示接受,0 表示拒绝。设备会丢弃消息 ID 小于或等于最近已接受 ID 的指令;重连后比较窗口复位。
| 操作 | param1 | param2 | 作用 |
|---|---|---|---|
RESETME | 0 | 0 | 重启机柜 |
RESETNET | 0 | 0 | 重启网络模组 |
RECONNECT | 0 | 0 | 重连服务端 |
HEARTINFO | 库存上报秒数 | MQTT 心跳秒数 | 设置上报周期 |
LEDCFG | 灯光模式值 | 0 关二维码灯,1 开 | 设置氛围灯和二维码灯 |
PBPOWER | 0 关,1 开 | 0 | 设置充电宝供电模式 |
PK | 主题 ProductKey | 0 | 设置主题路径 / IoT ProductKey |
UN | MQTT/IoT 用户名 | 0 | 设置连接账号 |
PW | MQTT/IoT 密码 | 0 | 设置连接密码及 CRC 密钥来源 |
ID | 设备 ID | 0 | 设置设备 ID |
DM | 经批准的 Broker/IoT 地址 | 0 | 设置服务器地址 |
APN | APN 值 | 0 | 设置蜂窝网络 APN |
WIFI | SSID | 密码 | 设置 Wi-Fi 配置 |
SAVECFG | 0 | 0 | 保存待生效配置 |
修改配置的操作属于高权限指令。必须限制在经过认证的运营角色中,审计每次请求和结果,并禁止把生产值写入前端日志。
LEDCFG 参数
| 效果 | 参数值 |
|---|---|
| 绿色 | 5507B10064800000 |
| 蓝色 | 5507B10064000080 |
| 红色 | 5507B10064005000 |
| 白色 | 5507B10064808080 |
| 黄色 | 5507B10064408000 |
| 紫色 | 5507B10064008068 |
| 粉色 | 5507B10064008017 |
| 七色呼吸轮转 | 5507B11464000000 |
| 炫彩跑马 | 5507B11040000000 |
| 关闭 | 5507B10064000000 |
受支持固件会在断电后保存这些参数。
GN: 网络状态查询
下行: {GN,messageId,crc}
4G 上行: {GN,sameMessageId,imei,iccid,rssi,lac,ci,networkStatus,crc}
Wi-Fi 上行: {GN,sameMessageId,mac,wifiModel,rssi,ip,ssid,wifiPassword,crc}
IMEI、ICCID、MAC、IP、SSID 和密码都属于敏感运营数据。networkStatus 由模组/固件配置定义,未取得固件映射前不能把它当成应用层成功码。
DS: 整机配置上报
上行: {DS,messageId,deviceId,networkMode,ambientLight,powerBankSupply,qrLight,reversePowerSlot,crc}
下行确认: {DS,sameMessageId,deviceId,crc}
| 字段 | 值 |
|---|---|
networkMode | 4G、WIFI、ETH |
ambientLight | 0 关,1 开 |
powerBankSupply | 0 关,1 开 |
qrLight | 0 关,1 开 |
reversePowerSlot | 0 表示存在外部供电;其他值表示当前给机柜反向供电的槽位 |
设备在收到确认前每 60 秒重发一次 DS。
AC: 全槽位库存上报
上行
{AC,messageId,deviceId,address,networkInfo,rssi,firmware,totalSlots,slotRecord1,...,slotRecordN,crc}
每个槽位记录为:
slotId:returnState:powerBankId:battery:slotState
| 字段 | 含义 |
|---|---|
slotId | 从 1 开始的槽位号 |
returnState | 归还确认状态,见下表 |
powerBankId | 充电宝 ID;槽位空或无法读取时为 NULL |
battery | 0..100 电量百分比 |
slotState | 旧固件为 S1S2S3,新固件为 S1S2S3S4 |
槽位状态位
| 状态位 | 值 |
|---|---|
S1 充电 | 0 关,1 开,2 异常 |
S2 充电类型 | 0 普通,1 22 W,2 未知,3 45 W,4 65 W |
S3 锁 | 0 未完全关闭,1 已完全关闭 |
S4 可用性 | 0 启用,1 禁用,2 最低租借优先级,4 品牌前缀不匹配 |
固件尾缀为 240526.1 或更新时支持 S4。完成配置协商后,解析器应同时接受 3 位和 4 位形式。
归还状态
| 值 | 含义 |
|---|---|
0 | 尚未收到有效 RS 确认;断电后重置为 0 |
1 | 归还已确认 |
2 | 已插入但锁未到位;设备约三分钟后重试 RS |
3 | 上次弹出失败/开锁异常;该槽位进入最低租借优先级 |
4 | 充电宝品牌前缀不匹配 |
AC 默认周期为 180 秒。租借或归还后何时更新库存,以租借与归还中的指令结果为准。
CQ: 单槽位上报与查询
周期上行: {CQ,messageId,slotId,powerBankId,battery,slotState,returnState,crc}
下行查询: {CQ,messageId,slotId,crc}
slotId=0 查询全部槽位,设备用 AC 回复;正数查询单个槽位,设备用 CQ 回复。字段语义与 AC 相同。
AE: 槽位扩展健康上报
上行
{AE,messageId,deviceId,totalSlots,slotExtended1,...,slotExtendedN,crc}
每条记录为:
slotId:status:powerBankVersion:cycleCount:health:actualCapacity:realtimeElectrical
status | 含义 |
|---|---|
0 | 空槽 |
1 | 正常放电/待机 |
2 | 正常充电 |
3 | 已充满 |
201 | 过压保护 |
202 | 温度保护 |
203 | 线材异常 |
health 和 actualCapacity 是设备上报值。最后一个实时电气字段在不同固件中存在电流/电压表示差异,应在确定具体机柜固件后按配置解析。默认上报周期为 600 秒。
CM: 借还规则配置
下行设置: {CM,messageId,minBattery,borrowOp,returnOp,lockErrorOp,voiceOp,debugOp,crc}
下行查询: {CM,messageId,0,0,0,0,0,0,crc}
上行结果: {CM,sameMessageId,minBattery,borrowOp,returnOp,lockErrorOp,voiceOp,debugOp,disabledMask,inventoryInterval,heartbeatInterval,brandPrefix,crc}
| 字段 | 值 |
|---|---|
minBattery | 0..100;设置请求中的 0 表示不变;默认 80 |
borrowOp | 101 借出后需要授权;100 无需授权;默认 101 |
returnOp | 100 不判断锁限位/轮询充电;101 判断锁限位/全充模式;199 实时切换轮询模式(回复为 99) |
lockErrorOp | 101 锁异常时禁用槽位;100 忽略此条件 |
voiceOp | 100..115 中文音量 0..15;200..215 英文音量 0..15 |
disabledMask | 十六进制位掩码:bit 0 对应 1 号槽;1 表示禁用 |
inventoryInterval | 秒 |
heartbeatInterval | 秒 |
brandPrefix | 0 关闭品牌隔离;其他值为充电宝 ID 必须匹配的前缀 |
未支持的操作值必须拒绝,不能自动纠正。
CC: 当前可借数量
下行: {CC,messageId,crc}
上行: {CC,sameMessageId,availableCount,crc}
availableCount 是机柜根据电量、槽位、归还状态、品牌及快充规则计算出的当前可借数量。它只是遥测数据,不代表后续弹出一定成功。