赞
踩
最近在做项目的时候,发现阿里云物联同一个产品下的设备只能订阅以其设备名命名的topic,无法实现设备之间的通讯,我捣鼓了许久,终于解决了这个问题。
查看阿里云物联的官方文档,在topic的定义下发现了以下解释:
即指定设备的topic只能由它自己订阅和发布消息,但是如果要实现设备之间的通讯该怎么办呢?继续翻阅文档:此处发现了设备之间通讯的方法:基于规则引擎的M2M设备间通信 (aliyun.com)
我们先在阿里云物联中创建一个产品。
产品名称随机填写,连接方式选择以太网,点击确定。
然后点击查看产品,再按照如下步骤:
定义后的topic名为:
再按照以下步骤添加两个设备:
同理,再添加一个设备:
这里要特别注意,每个设备的topic不一样,topic中的${deviceName}为每个设备自己的名称,例如,设备send的topic为:/hzsl4SSPkDb/send/user/senselong_test,设备receive的topic为:/hzsl4SSPkDb/receive/user/senselong_test,正常情况下设备send和receive只能订阅其本身的topic,为了实现他们之间的通信,我们可以采用以下办法:只需要将send设备topic中的内容发送至receive设备的topic中。
即:
我们需要在规则引擎的云产品流转里面进行设置,旧版更好用一些,这里我们点击右上角返回旧版本。
点击创建规则。
规则名称随便填写,数据格式这里我选择的json。
创建好规则以后,界面如下,点击处理数据中的编写SQL。这里的设备选择send设备,我们需要将它的数据发送至receive设备。
在转发数据界面,点击添加操作,操作选择为发布到另外一个topic,设备选择receive。
最后点击启动云产品流转。
为了验证当前两设备是否能通信,我这里采用MQTTX客户端软件进行验证,下载连接MQTT X:跨平台 MQTT 5.0 桌面客户端工具
下载完成后,我们打开MQTTX。
上图中的参数均能在新版的阿里云物联中找到。如下图。
将连接参数依次复制到MQTTx客户端,点击连接。
此时,设备成功连接。
这时,我们查看阿里云物联,设备已在线。
接下来,我们进行主题订阅。
点击confirm,成功订阅
。
同理,我们重新打开一个mqttx窗口,登录设备send,并订阅主题,主题名已经在上文叙述过了。
添加完成以后,我们用send设备的客户端发送一个消息测试一下, 这时我们看到receive设备成功接收到了消息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。