设备管理 IoTDM(联通用户专用)-Agent Lite SDK使用指南(Android)(联通用户专用):数据上报和数据发布

时间:2023-11-01 16:20:05

数据上报和数据发布

设备或网关向 物联网平台 上报数据可以通过调用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));
support.huaweicloud.com/devg-IoT/iot_02_5086.html