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

数据发布

接口功能

当直连设备(网关)有数据需要发布或者非直连设备发布数据到网关时,网关需要调用设备服务数据发布接口将数据发布到物联网平台。其与数据上报功能上的区别在于,发布的数据可以自己规定Topic,同时JSON字符串需要自己组装传入接口,SDK只做透传。

接口描述

1
mqttDataPub(int cookie, String topic, int qos, byte[] serviceData);

接口所属类

DataTransService。

参数说明

字段

必选/可选

类型

描述

uiCookie

可选

int

Cookie有效值1-65535。

pucTopic

必选

String

发布数据的Topic。

uiQos

必选

int

Mqtt协议的相关的参数,一般为“1”

pbstrServiceData

必选

byte[]

发布数据的包体。

接口返回值

返回值

描述

true

成功。

false

失败。

说明:

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

实例

开发者调用数据发布接口。

1
DataTransService. mqttDataPub1211, "/huawei/v1/devices/336d9bac-9ebf-44e9-95cf-efac5f05da3a/services/Storage", 1, bstrBody);

开发者调用数据发布接口前需要实现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
27
28
29
30
31
32
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;
            case IodevService.IODEV_MSG_MQTT_SUB_RSP:
            //TopicSubcribeResultAction(iotaMsg);
            break;
            case IodevService.IODEV_MSG_MQTT_DATA_RECV_RSP:
            //DataRecvAction(iotaMsg);
            break;
            default:
            break;
        }
    }