设备连接物联网平台后,数据直接上报至物联网平台。平台上的数据可以通过HTTP/2通道流转至您的服务器。这一步中,我们将配置HTTP/2服务端订阅功能。您的服务器可以通过接入HTTP/2 SDK,接收设备数据。

操作步骤

  1. 物联网平台控制台中,为产品配置服务端订阅。
    1. 产品管理页,单击已创建的测试产品对应的查看按钮。
    2. 产品详情页,单击服务端订阅 > 设置
    3. 勾选要订阅的消息类型,然后单击保存
      消息类型 说明
      设备上报消息 包括设备上报的自定义数据和物模型数据(包括属性上报、事件上报、属性设置响应和服务调用响应)。
      设备状态变化通知 指当产品下设备的状态发生变化时,系统发出的通知消息。例如,设备上下线消息。
      设备生命周期变更 包括设备创建、删除、禁用和启用的通知消息。

    控制台订阅配置完成大约1分钟后功能生效。

  2. 接入HTTP/2 SDK。

    如果您使用Apache Maven来管理Java项目,需在项目的pom.xml文件中加入以下依赖项。

    说明 请确保JDK版本为8。HTTP/2更多信息,请参见开发指南(Java)
    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>iot-client-message</artifactId>
        <version>1.1.3</version>
    </dependency>
    
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>3.7.1</version>
    </dependency>
  3. 基于您的阿里云账号AccessKey进行身份认证,建立SDK与物联网平台的连接。
    // 阿里云accessKey
            String accessKey = "xxxxxxxxxxxxxxx";
            // 阿里云accessSecret
            String accessSecret = "xxxxxxxxxxxxxxx";
            // regionId
            String regionId = "cn-shanghai";
            // 阿里云uid
            String uid = "xxxxxxxxxxxx";
            // endPoint:  https://${uid}.iot-as-http2.${region}.aliyuncs.com
            String endPoint = "https://" + uid + ".iot-as-http2." + regionId + ".aliyuncs.com";
    
            // 连接配置
            Profile profile = Profile.getAccessKeyProfile(endPoint, regionId, accessKey, accessSecret);
    
            // 构造客户端
            MessageClient client = MessageClientFactory.messageClient(profile);
    
            // 数据接收
            client.connect(messageToken -> {
                Message m = messageToken.getMessage();
                System.out.println("receive message from " + m);
                return MessageCallback.Action.CommitSuccess;
            });
    参数及获取方式:
    参数 获取途径
    accessKey 您的账号AccessKey ID。

    登录阿里云控制台,将光标移至账号头像上,然后单击accesskeys,跳转至用户信息管理页,即可获取。

    accessSecret 您的账号AccessKey Secret。获取方式同accessKey。
    uid 您的账号ID。

    用主账号登录阿里云控制台,单击账号头像,跳转至账号管理控制台,即可获取账号UID。

    regionId 您物联网平台服务所在地域代码。

    在物联网平台控制台页,右上方即可查看地域(Region)。RegionId 的表达方法,请参见文档地域与可用区

  4. 确认HTTP/2 SDK可以接收到设备消息。

    若监听成功,可以通过SDK的消息回调获得以下数据:

    参数 说明
    messageId 物联网平台生成的消息ID。
    topic 消息来源Topic。
    payload 消息数据。请参见数据格式
    generateTime 消息生成时间戳,以毫秒表示。
    qos
    • 0:消息最多投递1次。
    • 1:消息最少投递1次。