decode接口说明
decode接口的入参binaryData为设备发过来的CoAP报文的payload部分。
设备的上行报文可以分为两种情况:设备上报数据、设备对平台命令的应答(对应下图中的消息①和⑤;消息④是模组回复的协议ACK,无需插件处理)。两种情况下解码输出的字段不同。
字段名 |
类型 |
参数描述 |
是否必填 |
---|---|---|---|
identifier |
String |
设备在应用协议里的标识,IoT平台通过decode接口解析码流时获取该参数,通过encode接口编码时将该参数放入码流。 |
否 |
msgType |
String |
固定值"deviceReq",表示设备上报数据。 |
是 |
hasMore |
Int |
表示设备是否还有后续数据上报,0表示没有,1表示有。 后续数据是指,设备上报的某条数据可能分成多次上报,在本次上报数据后,IoT平台以hasMore字段判定后续是否还有消息。hasMore字段仅在PSM模式下生效,当上报数据的hasMore字段为1时,IoT平台暂时不下发缓存命令,直到收到hasMore字段为0的上报数据,才下发缓存命令。如上报数据不携带hasMore字段,则IoT平台按照hasMore字段为0处理。 |
否 |
data |
ArrayNode |
设备上报数据的内容(详见表2)。 |
是 |
字段名 |
类型 |
参数描述 |
是否必填 |
---|---|---|---|
serviceId |
String |
服务的id。 |
是 |
serviceData |
ObjectNode |
一个服务的数据,具体字段在profile里定义。 |
是 |
eventTime |
String |
设备采集数据时间(格式:yyyyMMddTHHmmssZ)。 如:20161219T114920Z。 |
否 |
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
{
"identifier":"123",
"msgType":"deviceReq",
"hasMore":0,
"data": [{"serviceId":"NBWaterMeterCommon",
"serviceData":{
"meterId":"xxxx",
"dailyActivityTime":120,
"flow": "565656",
"cellId":"5656",
"signalStrength":"99",
"batteryVoltage":"3.5"
}
"eventTime":"20160503T121540Z"} ,
{"serviceId":"waterMeter",
"serviceData":{"internalTemperature":256},
"eventTime":"20160503T121540Z"}
]
}
}
|
字段名 |
类型 |
参数描述 |
是否必填 |
---|---|---|---|
identifier |
String |
设备在应用协议里的标识,IoT平台通过decode接口解析码流时获取该参数,通过encode接口编码时将该参数放入码流。 |
否 |
msgType |
String |
固定值"deviceRsp",表示设备的应答消息。 |
是 |
mid |
Int |
2字节无符号的命令id。在设备需要返回命令执行结果(deviceRsp)时,用于将命令执行结果(deviceRsp)与对应的命令进行关联。 IoT平台在通过encode接口下发命令时,把IoT平台分配的mid放入码流,和命令一起下发给设备;设备在上报命令执行结果(deviceRsp)时,再将此mid返回IoT平台。否则IoT平台无法将下发命令和命令执行结果(deviceRsp)进行关联,也就无法根据命令执行结果(deviceRsp)更新命令下发的状态(成功或失败)。 |
是 |
errcode |
Int |
请求处理的结果码,IoT平台根据该参数判断命令下发的状态。 0表示成功,1表示失败。 |
是 |
body |
ObjectNode |
命令的应答,具体字段由profile定义。
说明:
body体不是数组。 |
否 |
示例:
1 2 3 4 5 6 7 8 9 |
{
"identifier": "123",
"msgType": "deviceRsp",
"mid": 2016,
"errcode": 0,
"body": {
"result": 0
}
}
|