设备接入 IOTDA-离线开发插件:decode接口说明

时间:2024-07-03 16:53:31

decode接口说明

decode接口的入参binaryData为设备发过来的CoAP报文的payload部分。

设备的上行报文有两种情况需要插件处理(消息是模组回复的协议ACK,无需插件处理):

  • 设备上报数据(对应图中的消息

    字段名

    类型

    是否必填

    参数描述

    identifier

    String

    设备在应用协议里的标识, 物联网平台 通过decode接口解析码流时获取该参数,通过encode接口编码时将该参数放入码流。

    msgType

    String

    固定值"deviceReq",表示设备上报数据。

    hasMore

    Int

    表示设备是否还有后续数据上报,0表示没有,1表示有。

    后续数据是指,设备上报的某条数据可能分成多次上报,在本次上报数据后,物联网平台以hasMore字段判定后续是否还有消息。hasMore字段仅在PSM模式下生效,当上报数据的hasMore字段为1时,物联网平台暂时不下发缓存命令,直到收到hasMore字段为0的上报数据,才下发缓存命令。如上报数据不携带hasMore字段,则物联网平台按照hasMore字段为0处理。

    data

    ArrayNode

    设备上报数据的内容。

    表1 ArrayNode定义

    字段名

    类型

    是否必填

    参数描述

    serviceId

    String

    服务的id。

    serviceData

    ObjectNode

    一个服务的数据,具体字段在产品模型里定义。

    eventTime

    String

    设备采集数据时间(格式:yyyyMMddTHHmmssZ)。

    如:20161219T114920Z。

    示例

    {
        "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"
        }]
    }

    LwM2M协议的数据格式跟MQTT的数据格式不同。

  • 设备对平台命令的应答(对应图中的消息

    字段名

    类型

    参数描述

    是否必填

    identifier

    String

    设备在应用协议里的标识,物联网平台通过decode接口解析码流时获取该参数,通过encode接口编码时将该参数放入码流。

    msgType

    String

    固定值"deviceRsp",表示设备的应答消息。

    mid

    Int

    2字节无符号的命令id。在设备需要返回命令执行结果(deviceRsp)时,用于将命令执行结果(deviceRsp)与对应的命令进行关联。

    物联网平台在通过encode接口下发命令时,把物联网平台分配的mid放入码流,和命令一起下发给设备;设备在上报命令执行结果(deviceRsp)时,再将此mid返回给物联网平台。否则物联网平台无法将下发命令和命令执行结果(deviceRsp)进行关联,也就无法根据命令执行结果(deviceRsp)更新命令下发的状态(成功或失败)。

    errcode

    Int

    请求处理的结果码,物联网平台根据该参数判断命令下发的状态。

    0表示成功,1表示失败。

    body

    ObjectNode

    命令的应答,具体字段由产品模型定义。

    :body体不是数组。

    示例

    { 
        "identifier": "123", 
        "msgType": "deviceRsp", 
        "mid": 2016, 
        "errcode": 0, 
        "body": { 
            "result": 0 
        } 
    }
support.huaweicloud.com/devg-iothub/iot_02_4020.html