更新时间: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。

serviceProperties

必选

String

服务属性。

接口返回值

返回值

描述

true

成功。

false

失败。

说明:

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

返回结果

广播名称

广播参数

成员

描述

TOPIC_DATA_REPORT_RSP

IotaMessage

(使用intent.getSerializableExtra(DataTransService.DATATRANS_BROADCAST_IE_IOTAMSG)方法获取)

DATATRANS_IE_RESULT

数据上报结果。

DATATRANS_IE_COOKIE

Cookie有效值为1-65535。

示例

用户根据Profile格式使用Json组件拼装服务属性的内容(serviceProperties)。

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

数据上报结果接收

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
//开发者注册广播接收器对设备服务数据上报结果进行相应的的处理
BroadcastReceiver mReportDataRsp;
mReportDataRsp = new BroadcastReceiver() {
    @Override 
    public void onReceive(Context context, Intent intent) {
        //Do Something 
        IotaMessage iotaMsg = (IotaMessage)intent.getSerializableExtra(DataTransService. DATATRANS_BROADCAST_IE_IOTAMSG);
        int cookie = iotaMsg.getUint(DataTransService.DATATRANS_IE_COOKIE, 0);
        int ret = iotaMsg.getUint(DataTransService.DATATRANS_IE_RESULT, 0);
        return;
    }
};
mLocalBroadcastManager = LocalBroadcastManager.getInstance(this);
IntentFilter filterReportData 
= new IntentFilter(DataTransService.TOPIC_DATA_REPORT_RSP);
mLocalBroadcastManager.registerReceiver(mReportDataRsp, filterReportData);