上报设备数据
接口功能
当直连设备(网关)有数据需要上报或者非直连设备上报数据到网关时,网关需要调用设备服务数据上报接口将数据上报到物联网平台。
上报设备数据接口的deviceId,requstId和serviceId由SDK组装为消息的header;serviceProperties由SDK组装为消息的body。消息组装格式为JSON。
接口描述
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。
|
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); |