最近遇到了一个需求:单片机上传数据到阿里云物联网平台,手机端或者网页端能够从物联网平台获取数据并显示到出来,再加一个手机端/网页端通过物联网平台控制单片机。
最终采用了阿里云物联网平台提供的方法,使用规则引擎数据转发的功能,把Topic 1 的消息转发到 Topic 2中,
一、创建一个产品并自定义一个主题
创建主题的时候建议操作权限选择发布和订阅,方便调试。主题中有${deviceName},代表产品下的每一个设备都可以使用这一个类型主题,只要把deviceName改为设备名字(开发时填写主题要把" ${} " 去掉),这样每个设备就具有一个自己的主题,然后使用数据流转功能,每个设备之间就可以进行通信。
二、创建该产品下的一个设备
创建一个设备时,设备名字(我用web1来表示网页端设备)建议都填上。创建好设备后,设备处于未激活状态,这时需要复制该设备的三元组,解析出阿里云物联网平台的域名、用户id、用户名、密码等信息,用于给单片机连接到物联网平台。
三、解析三元组
解析三元组的工具有很多,包括阿里官方也提供了,我习惯用下面这个工具。
四、设备连接到物联网平台
这里我就用MQTT.fx来模拟网页端连接到物联网平台,把相关信息填写好,点击connect按钮即可,如果是真实的单片机设备,也是需要用到这些信息来连接到物联网平台的。
连接成功后,刷新一下设备,可以看到web1这个设备已经显示在线
验证一下web1设备订阅的主题是否能正常使用。
五、规则引擎数据转发功能
根据上面的步骤,我有创建了一个名为stm32的设备,用来模拟真实单片机给物联网平台发消息,接着把消息流转到web1这个中。现在确保两个设备在线。
在右边的规则引擎中点击云产品流转,点击创建规则,规则名称可以随便,但是数据格式这里有个坑:
- 如果你选这json格式,那么stm32给物联网平台发的数据必须是json格式,才能被流转到另外一个主题,否则,另外一个主题是收不到任何消息的。
- 如果选择了二进制,那就可以随意一点,任何消息都可以转发,根据个人需求选择。
点击编辑规则,在这个页面这,处理数据中点击编写SQL,这里就是数据来源的地方,SQL语句可以起到一定的筛选作用,用*号就代表转发所有数据,因为是stm32给我的web1网页端发数据,所以数据来源的是stm32设备下的主题(前面创建产品时自定义的主题,它会为产品下的每个设备分配的一个主题)。
接着在转发数据那里添加一个操作,选择发布到另外一个主题,然后下面的信息填写我们的目标设备的主题即可
编辑完规则后,记得返回启动规则,到此就大功告成啦!
六、测试
stm32发给web1:
stm32发给手机:
以上就是我测试的过程,如果博客有错误的地方欢迎指出,还不了解这个过程的朋友可以评论留言哈!
版权声明:本文为CSDN博主「Let's GO Tiger」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43627022/article/details/116048007
暂无评论