阿里云IOT套件中设备间通讯-规则引擎
设备间通讯模型
控制台的基本使用实现设备之间的通信
1.
登录阿里云物联网套件
2.
进入控制台
3.
在这里创建产品以及产品下的设备
这里模拟场景便于理解demo
,首先有两个个产品湿度传感器和空调
湿度传感器随时监控室内湿度,
如果湿度低于20%,
发送消息指令给空调,
空调开启并加湿空气。
一、
创建产品
二、
创建产品下的设备
效果如下:湿度传感器产品下有一个
humidity_sensor1
的设备;空调产品下有一个air_conditioner
的设备。
4.
现在来
实现湿度传感器产品下的humidity_snesor1
设备检测到室内空气湿度太低,
发送消息指令给空调产品下的air_conditioner
设备来加湿空气
一、
规则引擎通过Topic
的转发来实现设备间的信息交互
首先明确的是设备的topic
只有具有订阅权限才可以被设备订阅,
从而获得topic
中的消息,而默认情况下设备都有三个模板topic
分别是:
/productKey/deviceName/get (
默认只有订阅权限)
/productKey/deviceName/update (
默认只有发布权限)
/productKey/deviceName/update/error (
默认只有发布权限)
所以,规则引擎需要做的事就是从设备humidity_snesor1
的/pk/xxxx/update
中获得消息转发到设备air_conditioner
中的/pk/xxxx/get
中,然后设备air_conditioner
订阅自己的/pk/xxx/get
从而获得消息。
(一)
从公网帮助文档中下载设备接入的SDK
(二)
直接下载demo
部署在IDE
上
(三)代码片段中修改为自己新建的产品设备的相关信息
设备humidity_sensor1和设备air_conditioner都要修改
String productKey = "xxxxxx"; //这个是湿度传感器产品的product key
String productSecret = "xxxxxx";//这个是湿度传感器产品的product secret
final String deviceName = "xxxxxx";//这个是设备名称
String deviceSecret = "xxxxxx";//这个是设备秘钥
String targetServer = "iot-as.aliyuncs.com:80";//接入服务器域名
Integer humidity = 6;//模拟室内湿度 60%
//用于测试的topic
String GetTopic = "/" + productKey + "/" + deviceName + "/get";
String UpdateTopic = "/" + productKey + "/" + deviceName + "/update";
(四)
然后配置规则引擎
规则引擎里主要配置SQL
和转发数据
i.
配置SQL[table=100%][tr][td]
ii.
配置转发(
转发到另一个topic)
[table=100%][tr][td]
(五)
启动规则引擎
(六)
现在启动设备端humidity_sensor1
和air-conditiner
a).
这里首先启动air-conditioner
然后再启动humidity_sensor1
。因为设备的消息流向是humidity_sensor1
☞air-conditiner
。发消息的后启动。
(七)
说明连接成功,此时刷新设备的页面查看设备的状态是否上线
设备humidity_sensor1
启动
设备air-condition
启动
(八)发送消息(两种方式:代码和网页发送消息,不过为了消息的通用性最好发送JSON格式数据)
a)代码发送:只需按顺序启动客户端就可以看到消息的发送和接收
b)网页发送(pop):在湿度传感器产品的humidity_sensor1设备下的update topic 中发送消息,观察控制台能否收到消息
网页发送消息(pop),
客户端收到消息
(九)依次启动设备端
观察控制台灯泡产品下的humidity_sensor1
设备和空调产品下的air-conditioner
设备是否则到消息:
湿度传感器收到消息指令
空调收到湿度传感器的消息
至此,说明设备之间的通讯完成。