具体如何在阿里云创建一个 MQTT 服务器我就不写出来了,可以去百度一下(主要是我忘了,不好演示)。
有关 MQTT 报文的一些标识在我前面的一篇文章中讲过,感兴趣的可以去看看(有关代码部分讲解的内容也在那里,这里就不细讲了,主要讲如何连接的)
插一嘴,如果有同学找不到可以创建阿里云 MQTT 服务器的地方,检查一下是不是地区没选到华东2(上海)。
一、获取阿里云 MQTT 服务器连接参数
下面的连接方法是参照阿里云的手册进行连接的,有兴趣的同学可以同时看看。
1、创建好一个产品后在创建两个设备(后面演示要用到)
2、先随便进入一个设备中,这里选择的是 test 设备。点击查看DeviceSecret。
3、将三元组的内容分别复制到 mqtt_config.h 文件的这个位置下。
4、点击查看 MQTT 连接参数,只需复制 mqttHostUrl 即可。
5、密码使用阿里云提供的密码生成工具。下载解压完成后,点击 sign.html,填写对应设备信息,点击生成即可。将生成的密码复制到 Password 中。
至此,该示例代码就可以连接上阿里云 MQTT 服务器了。
二、认识阿里云 MQTT 服务器上的主题
有关阿里云的主题介绍在阿里云官方手册中有介绍,感兴趣的同学可以去了解一下。
这些主题可以在产品的 Topic 类列表中查看。
三、如何在阿里云 MQTT 服务器上显示数据
1、点击产品的功能定义。点击编辑草稿。
2、点击添加自定义功能。这里是打算显示温度的一个变化情况。添加完成之后记得点击发布上线!
3、通过查阅官方手册,得知需要向 Topic:/sys/${productKey}/${deviceName}/thing/event/property/post
发送 JSON 格式的数据。该手册中有说明 JSON 格式数据有哪些内容可以添加。还举出了一个例子,其中最重要的就是 params 参数了,该字段中的子参数名字就是前面填写的标识符 temp。
4、在示例代码中,向服务器发送了一个温度值为 6 的消息。
5、运行代码后,在 test 设备的物模型数据中即可观察到温度的值。
四、如何做到两个设备之间的通信
在通常情况下,我们比较常用的需求还是像其他 MQTT 服务器那样一个设备发布了一个携带信息的主题 A 后,订阅该主题 A 的另一个设备就能收到该消息,但在阿里云 MQTT 服务器中却不能这样子,往往是发送给主题 A 的消息却没有发送给订阅了 A 的设备。
如果要实现此功能,就要借助阿里云的另一个功能:云产品流转。
1、要实现该功能,首先要准备两个设备,前面已经创建了一个 test 设备,现在再创建一个 mqtt 设备。并自定义两个主题。
2、在规则引擎中点击云产品流转,切换到旧版。
3、点击创建规则。
4、进入到刚创建好的规则下。点击编写 SQL。
该 SQL 语句的作用是:监控产品 阿里mqtt 中名字为 mqtt 这台设备的发布的主题 /h18lpJMiSVO/mqtt/user/123
,然后把里面发布的消息全部提取出来。
① *代表提取所有消息
② 选择自定义的主题
③ 选择 阿里mqtt 产品中设备
④ 选择名字为 mqtt 的这台设备
⑤ 选择这台设备发布的主题(/h18lpJMiSVO/mqtt/user/123
)
大白话:
监控名字为 mqtt 的设备发布的主题 /h18lpJMiSVO/mqtt/user/123
假设设备发布的消息是:{"data": 123}
执行上面的配置就把这个 {"data": 123}
提取了出来(注:发送的格式一定要是 JSON 格式的数据,并且格式要正确)
5、现在将消息提取出来了,还需要让服务器再转发到另一个设备:test 中。在转发数据中点击添加操作。
就是把上面配置 SQL 以后提取的数据 {"data": 123}
转发到/h18lpJMiSVO/test/user/abc
这个主题上
① 选择自定义
② 选择自己创建的一个产品
③ 选择名字为 test 的这台设备
④ 选择要转发到这台设备订阅的某个主题
6、启动规则
7、使用 MQTT.fx 登录 mqtt 设备(MQTT.fx连接文档)
这里我用的是阿里云比较新版本的计算密码的网页,对于连接 MQTT.fx 来说会更快一些。
8、在 MQTT.fx 上向 /h18lpJMiSVO/mqtt/user/123
主题发送数据 {"data":123}
,在板子上订阅 /h18lpJMiSVO/test/user/abc
主题。
9、关于这个数据转发的内容还有其他好玩的,感兴趣的可以去观摩一下这位大佬写的文章,数据转发部分在文章的后半部分。文章来源:https://www.toymoban.com/news/detail-455154.html
文章来源地址https://www.toymoban.com/news/detail-455154.html
到了这里,关于【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!