更新时间:2022-02-24 GMT+08:00

设备服务数据上报

接口功能

当直连设备(网关)有数据需要上报或者非直连设备上报数据到网关时,网关需要调用设备服务数据上报接口将数据上报到物联网平台。

接口描述

1
public static boolean dataReport(int cookie, String requstId, String deviceId, String serviceId, String serviceProperties);

接口所属类

DataTransService

参数说明

字段

必选/可选

类型

描述

cookie

可选

int

Cookie有效值1-65535。

requstId

必选

String

请求ID,匹配之前平台下发的服务命令。可以从设备命令接收的广播中获取requestId。

  • 主动数据上报:requestId为NULL。
  • 命令结果上报:当上报的数据匹配到某一次命令请求时,需要填写此次命令请求的请求ID。

deviceId

必选

String

设备ID。

serviceId

必选

String

服务ID,在设备profile中定义的serviceId参数值。

serviceProperties

必选

String

服务属性,在设备profile中定义的属性参数名与属性值的json字符串,属性值为具体设备要上报的数据。

接口返回值

返回值

描述

true

成功。

false

失败。

说明:

此返回值是调用接口的同步返回结果,返回true只是说明接口调用成功,并不说明服务数据上报成功,数据上报成功需要收到DataTransService发出的通知。

示例

开发者调用数据上报接口。

1
DataTransService.dataReport(1211, NULL, "xxxx_xxxx_xxxx_xxxx", "DoorWindow", {\“status\”:\“OPEN\”});

开发者调用数据上报接口前需要实现AgentLite提供的观察者接口。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Subscribe implements MyObserver {
    public Subscribe (Observable dataTransService) {
        dataTransService. registerObserver (this);
    }
    @Override
    public void update(IotaMessage arg0) {
        // TODO Auto-generated method stub
        System.out.println("AgentLiteDataTrans收到通知:" + arg0);
        int mMsgType = arg0.getMsgType();
        switch(mMsgType) {
            //数据上报应答
            case IodevService.IODEV_MSG_DATA_REPORT_RSP:
            getDataReportAnswer(arg0);
            break;
            //被动接收命令
            case IodevService.IODEV_MSG_RECEIVE_CMD:
            getCmdReceive(arg0);
            break;
            //MQTT消息推送
            case IodevService.IODEV_MSG_MQTT_PUB_RSP:
            //logoutResultAction(iotaMsg);
            break;
            default:
            break;
        }
    }