阿里云物联网平台设备间通信(通过规则引擎-云产品流转)
前言
我们正常的使用阿里云物联网平台,一般是:
设备通过物模型上报数据属性App通过云端API获取设备的数据属性App通过云端API调用设备的服务,来控制设备执行各种命令
一般都是设备和App的互动,很少有设备和设备间的通信。但是最近正好就有这种需求,所以开始研究,如何在阿里云物联网平台上面实现设备间通信。
自定义Topic
阿里云物联网平台给了很多Topic,基础通信Topic、物模型通信Topic,这些一看就不知道跟我们的需求没关系,不能乱用。直到看到了自定义Topic,一眼就相中了,感觉遇到了对的人。于是有了如下的思路。
新建一个自定义Topic/${productKey}/${deviceName}/user/m2mA设备订阅/${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。