【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)

具体如何在阿里云创建一个 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、关于这个数据转发的内容还有其他好玩的,感兴趣的可以去观摩一下这位大佬写的文章,数据转发部分在文章的后半部分。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_48896613/article/details/127679452