Skip to main content

Identity, configuration and inventory

Every format below excludes the outer braces in the explanatory tables but includes the CRC field in the shown wire schema.

CN: device identity and online presence

Uplink

{CN,deviceId,address,firmware,rssi,info1,<info2>,<info3>,<info4>,crc}

Networkaddressinfo1info2info3info4
2G/4GModem IMEISIM ICCIDLACCIVPN label, optional
Wi-FiModule MACLocal IPSSIDWi-Fi passwordReserved

Downlink acknowledgement

{CN,confirmedDeviceId,settings,crc}

settings is a semicolon-delimited list: KEY1:VALUE1;KEY2:VALUE2;. Supported keys are DOMAIN, PORT, HB (heartbeat seconds), BP (inventory seconds), UN, PW, ID, DM and TP (power-bank brand isolation). Omit keys that are not being changed. If the server does not acknowledge, the cabinet repeats CN every 60 seconds.

CS: network and station configuration

Downlink request: {CS,messageId,operation,param1,param2,crc}

Uplink result: {CS,sameMessageId,operation,result,reserved,crc}

Uplink query result: {CS,sameMessageId,currentProductKey,inventoryInterval,mqttHeartbeat,crc}

result is 1 for accepted and 0 for rejected. The device drops a command whose message ID is less than or equal to the last accepted ID; the comparison resets after reconnect.

Operationparam1param2Effect
RESETME00Restart cabinet
RESETNET00Restart network module
RECONNECT00Reconnect to server
HEARTINFOinventory secondsMQTT heartbeat secondsSet report intervals
LEDCFGLED mode value0 QR light off, 1 onSet ambience and QR lights
PBPOWER0 off, 1 on0Set power-bank supply mode
PKtopic ProductKey0Set topic path / IoT ProductKey
UNMQTT/IoT username0Set connection username
PWMQTT/IoT password0Set connection password and CRC secret source
IDdevice ID0Set device ID
DMapproved broker/IoT endpoint0Set server endpoint
APNAPN value0Set cellular APN
WIFISSIDpasswordSet Wi-Fi profile
SAVECFG00Persist pending configuration

Configuration-changing operations are privileged. Restrict them to authenticated operator roles, audit every request/result and never place production values in client-side logs.

LEDCFG values

EffectValue
Green5507B10064800000
Blue5507B10064000080
Red5507B10064005000
White5507B10064808080
Yellow5507B10064408000
Purple5507B10064008068
Pink5507B10064008017
Seven-color breathing rotation5507B11464000000
Marquee5507B11040000000
Off5507B10064000000

These values are persisted through power loss by supported firmware.

GN: network status query

Downlink: {GN,messageId,crc}

4G uplink: {GN,sameMessageId,imei,iccid,rssi,lac,ci,networkStatus,crc}

Wi-Fi uplink: {GN,sameMessageId,mac,wifiModel,rssi,ip,ssid,wifiPassword,crc}

Treat IMEI, ICCID, MAC, IP, SSID and passwords as sensitive operational data. networkStatus is module/profile specific and must not be interpreted as an application success code without the firmware mapping.

DS: station configuration report

Uplink: {DS,messageId,deviceId,networkMode,ambientLight,powerBankSupply,qrLight,reversePowerSlot,crc}

Downlink acknowledgement: {DS,sameMessageId,deviceId,crc}

FieldValues
networkMode4G, WIFI, ETH
ambientLight0 off, 1 on
powerBankSupply0 off, 1 on
qrLight0 off, 1 on
reversePowerSlot0 external power present; otherwise the slot currently reverse-powering the cabinet

The device repeats DS every 60 seconds until acknowledged.

AC: all-slot inventory report

Uplink

{AC,messageId,deviceId,address,networkInfo,rssi,firmware,totalSlots,slotRecord1,...,slotRecordN,crc}

Each slot record is:

slotId:returnState:powerBankId:battery:slotState

FieldMeaning
slotIdOne-based slot number
returnStateReturn acknowledgement state, below
powerBankIdPower bank ID, or NULL when empty/unreadable
battery0..100 percent
slotStateS1S2S3 on older firmware or S1S2S3S4 on newer firmware

Slot-state digits

DigitValues
S1 charging0 off, 1 on, 2 exception
S2 charge class0 normal, 1 22 W, 2 unknown, 3 45 W, 4 65 W
S3 lock0 not fully closed, 1 fully closed
S4 availability0 enabled, 1 disabled, 2 lowest rental priority, 4 brand-prefix mismatch

S4 is available on profiles whose firmware suffix is 240526.1 or later. Accept both three- and four-digit forms after profile negotiation.

Return state

ValueMeaning
0No accepted RS acknowledgement; resets to 0 after power cycle
1Return accepted
2Inserted but lock not seated; device retries RS after about three minutes
3Last release failed/opening exception; slot receives lowest rental priority
4Power-bank brand prefix mismatch

The default AC interval is 180 seconds. A rental or return operation updates inventory only after the command-specific outcome described in Rental and return.

CQ: single-slot report and query

Periodic uplink: {CQ,messageId,slotId,powerBankId,battery,slotState,returnState,crc}

Downlink query: {CQ,messageId,slotId,crc}

slotId=0 requests all slots and the device replies with AC; a positive slot ID requests one slot and the device replies with CQ. Field semantics match AC.

AE: extended slot health report

Uplink

{AE,messageId,deviceId,totalSlots,slotExtended1,...,slotExtendedN,crc}

Each record is:

slotId:status:powerBankVersion:cycleCount:health:actualCapacity:realtimeElectrical

statusMeaning
0Empty
1Normal discharge/standby
2Normal charging
3Full
201Over-voltage protection
202Temperature protection
203Cable abnormal

health and actualCapacity are device-reported values. The final real-time electrical field has changed between firmware families (current/voltage representation); treat it as profile-defined until the exact cabinet firmware is selected. Default interval: 600 seconds.

CM: rental and return rule configuration

Downlink set: {CM,messageId,minBattery,borrowOp,returnOp,lockErrorOp,voiceOp,debugOp,crc}

Downlink query: {CM,messageId,0,0,0,0,0,0,crc}

Uplink result: {CM,sameMessageId,minBattery,borrowOp,returnOp,lockErrorOp,voiceOp,debugOp,disabledMask,inventoryInterval,heartbeatInterval,brandPrefix,crc}

FieldValues
minBattery0..100; 0 in a set request means unchanged; default 80
borrowOp101 authorization required; 100 no authorization; default 101
returnOp100 ignore lock limit / polling charge; 101 require lock limit / full-charge mode; 199 switch to polling mode immediately (reported as 99)
lockErrorOp101 disable a lock-error slot; 100 ignore condition
voiceOp100..115 Chinese volume 0..15; 200..215 English volume 0..15
disabledMaskHex bitmask: bit 0 is slot 1; 1 means disabled
inventoryIntervalSeconds
heartbeatIntervalSeconds
brandPrefix0 disables isolation; otherwise required power-bank ID prefix

Unsupported operation values must be rejected, not coerced.

CC: available count

Downlink: {CC,messageId,crc}

Uplink: {CC,sameMessageId,availableCount,crc}

availableCount is the cabinet's current eligible count under its battery, slot, return-state, brand and charge-class rules. It is telemetry, not proof that a later release succeeded.