阿里云物联网平台设备间通信(通过规则引擎-云产品流转)

阿里云物联网平台设备间通信(通过规则引擎-云产品流转)

前言

我们正常的使用阿里云物联网平台,一般是:

  1. 设备通过物模型上报数据属性
  2. App通过云端API获取设备的数据属性
  3. App通过云端API调用设备的服务,来控制设备执行各种命令

一般都是设备和App的互动,很少有设备和设备间的通信。但是最近正好就有这种需求,所以开始研究,如何在阿里云物联网平台上面实现设备间通信。

自定义Topic

阿里云物联网平台给了很多Topic,基础通信Topic、物模型通信Topic,这些一看就不知道跟我们的需求没关系,不能乱用。直到看到了自定义Topic,一眼就相中了,感觉遇到了对的人。于是有了如下的思路。
在这里插入图片描述

  • 新建一个自定义Topic/${productKey}/${deviceName}/user/m2m
  • A设备订阅/${productKey}/aName/user/m2m主题
  • B设备订阅/${productKey}/bName/user/m2m主题
  • A设备如果想要给B设备发消息,只要往/${productKey}/bName/user/m2m 发送消息即可
  • B设备就可以接收到A设备发送的消息

But,理想是美好的,现实是残酷的,阿里云物联网平台做了限制,设备只能给自身的Topic发送消息,不能给别的设备的Topic发送消息。所以在第4步就行不通,A设备无法往/${productKey}/bName/user/m2m 发送消息
所以,这一招失败,但是自定义Topic还是有用的。后面再说。

云产品流转

在这里插入图片描述

选择JSON格式

在这里插入图片描述

编写SQL

在这里插入图片描述

转发数据

在这里插入图片描述
这一步是关键,本来是只能转发到固定的设备,但是通过${target}设置了一个变量,即目标设备的deviceName。

具体操作

  • A设备订阅/${productKey}/aName/user/get主题
  • B设备订阅/${productKey}/bName/user/get主题
  • A设备如果想要给B设备发消息,只要往/${productKey}/aName/user/update 发送消息
  • 消息格式是JSON,里面必须包含target这个字段,target:bName
  • 云产品流转就将一条消息转发到/${productKey}/bName/user/get
  • B设备就可以接收到A设备发送的消息,而且还可以从target这个字段知道是谁发消息给他

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kangweijian/article/details/111272209