设备管理 IoTDM(联通用户专用)-Agent Lite SDK使用指南(Android)(联通用户专用):数据上报和数据发布
数据上报和数据发布
设备或网关向 物联网平台 上报数据可以通过调用SDK的“设备服务数据上报”接口或“数据发布”接口:
- “设备服务数据上报”接口:deviceId,requstId和serviceId由SDK组装为消息的header;serviceProperties由SDK组装为消息的body。消息组装格式为JSON。
设备或网关登录成功后可以调用DataTransService.dataReport(int cookie, String requstId, String deviceId, String serviceId, String serviceProperties)接口上报数据。
- 当设备主动上报数据时,“requstId”可以为空。
- 当上报的数据为某个命令的响应时,“requstId”必须与下发命令中的“requstId”保持一致。requestId可以从广播中获取,请参考API文档中“设备命令接收”接口的广播参数“DATATRANS_IE_REQUESTID”的说明。
- “serviceId”要与profile中定义的某个serviceId保持一致,否则无法上报数据。
- “serviceProperties”实际上是一个json字符串,内容是健值对(可以有多组健值对)。每个健是profile中定义的属性名(propertyName),值就是具体要上报的内容了。
1 2 3 4 5 6 7 8 910
private void gatewayDataReport() { LogUtil.i(this, TAG, "gatewayDataReport!"); int cookie; String deviceId = GatewayInfo.getDeviceID(); Random random = new Random(); cookie = random.nextInt(65535); LogUtil.i(this, TAG, "cookie = " + cookie); DataTransService.dataReport(cookie, null, deviceId, "Storage", "{\"storage\":10240,\"usedPercent\":20}");}
注册广播接收器对网关数据上报结果进行相应处理。
1
LocalBroadcastManager.getInstance(this).registerReceiver(dataReportRsp, new IntentFilter(DataTransService.TOPIC_DATA_REPORT_RSP));
- “数据发布”接口:topic固定为“/cloud/signaltrans/v2/categories/data”;“serviceData”参数作为消息体(包括header和body),SDK只进行透传,不进行格式调整和组装。
设备或网关登录成功后可以调用DataTransService. mqttDataPub(int cookie, String topic, int qos, byte[] serviceData)接口发布数据。
- “Topic”是要发布数据的topic。
- “Qos”是mqtt协议的一个参数。
- “serviceData”实际上是一个json字符串,内容是健值对(可以有多组健值对)。每个健是profile中定义的属性名(propertyName),值就是具体要上报的内容了。
123
private void gatewayDataPub(int cookie, String topic, int qos, byte[] serviceData) { DataTransService. mqttDataPub(cookie, topic, qos, serviceData);}
注册广播接收器对网关数据上报结果进行相应处理。
1
LocalBroadcastManager.getInstance(this).registerReceiver(mqttDataPubRsp, new IntentFilter(DataTransService.TOPIC_MQTT_PUB_RSP));