文档时间:2018.-1-24

首注:此文章是参照以下文章的整合与补充:

https://bbs.aliyun.com/read/309106.html?amp;displayMode=1&page=1&toread=1

https://help.aliyun.com/document_detail/50633.html?spm=5176.doc42693.6.567.LkRjr4

https://help.aliyun.com/document_detail/42693.html?spm=5176.doc42648.6.573.OEriWB

正文

服务端订阅设备获得消息模型

 

阿里iot教程 阿里iot设备_java

注:阅读本文档之前需要通读物联网套件开发帮助文档

1.首先用淘宝或者其他账号登录阿里云选择物联网套件

点击控制台,如果没有权限需要申请

 

阿里iot教程 阿里iot设备_html_02

一、创建产品

1、进入物联网套件控制台,创建产品

 

阿里iot教程 阿里iot设备_java_03

二、创建产品下的设备

、进入产品,找到设备管理,添加设备

 

阿里iot教程 阿里iot设备_html_04

效果如下:

 

阿里iot教程 阿里iot设备_java_05

服务端订阅从队列中获取消息,这里完成的场景是灯泡产品的服务端订阅,来监听设备发送的消息

2、首先配置服务端订阅

 

阿里iot教程 阿里iot设备_服务端_06

保存之后如下图:

 

阿里iot教程 阿里iot设备_嵌入式_07

3、根据帮助文档中的服务端快速接入的指导完成服务端的代码配置,主要是产品和设备的key和

https://help.aliyun.com/document_detail/50633.html?spm=5176.doc42693.6.567.LkRjr4

4、回到物联网套件页面,配置规则引擎,将topic中的消息转发到MNS消息队列中。

3-1、创建规则

 

阿里iot教程 阿里iot设备_html_08

4-2、配置处理数据

 

阿里iot教程 阿里iot设备_阿里iot教程_09

字段:直接填 * 

topic:选中产品, / 后面的就填设备的Topic,如下图

 

阿里iot教程 阿里iot设备_html_10

添加规则引擎的操作方式:主题的创建可以参考第三步进行创建主题,创建之后选中即可

 

阿里iot教程 阿里iot设备_阿里iot教程_11

规则引擎配置完成效果如下:

 

阿里iot教程 阿里iot设备_嵌入式_12

三、查看消息队列

1、进入消息服务,根据区域找到第二步中的创建服务端订阅时,自动创建的队列,看看logging是否为true如果不是,可点击 修改设置 进行修改

 

阿里iot教程 阿里iot设备_java_13

、创建主题

在与队列的相同区域下新建主题,并开启logging

 

阿里iot教程 阿里iot设备_java_14

3、配置主题的订阅列表,将主题中收到的消息转发到指定队列中

 

阿里iot教程 阿里iot设备_服务端_15

配置成功如下图:

 

阿里iot教程 阿里iot设备_阿里iot教程_16

6.代码中设置要接收消息的队列启动监听,也可以使用队列的SDK进行接收消息

队列的SDK:https://help.aliyun.com/document_detail/32449.html?spm=5176.doc27509.6.649.NJBOae

IOT的SDK:https://help.aliyun.com/document_detail/30579.html?spm=5176.doc30581.6.597.5046av

注:

6-1、在官网下载的SDK要导入maven包

6-2、accessId和accessKey的获取方式如下图,accountEndpoint要使用队列公网的地址

 

阿里iot教程 阿里iot设备_服务端_17

 

阿里iot教程 阿里iot设备_html_18

client.getQueueRef("需要接收消息的队列名称");

 

阿里iot教程 阿里iot设备_java_19

 

阿里iot教程 阿里iot设备_阿里iot教程_20

 

7.设备发送消息,观察服务端是否接收到

 

阿里iot教程 阿里iot设备_嵌入式_21

服务端收到消息

 

阿里iot教程 阿里iot设备_阿里iot教程_22

至此,简单的设备连接上云端并且发布消息到自己的服务端完成。

 

附上套件的maven包坐标与套件依赖的公共包

<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-iot -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-iot</artifactId>
<version>4.0.0</version>
</dependency>
 
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>3.2.10</version>
</dependency>