第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【STM32 x ESP8266】连接阿里云 MQTT 服务器(报文连接)

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

时间:2021-11-27 20:31:22

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。