因为自己要做一个关于ESP32的项目,自己想把这个过程记录下来并且分享一下自己在这个过程中如何进行操作,以及我自己遇到的一些问题是如何解决的。
首先,我们需要将阿里云物联网平台配置好,(这里配置阿里云物联网平台可以参考,但MQTT协议部分讲的不是很详细,我对这部分进行进一步解析)(10条消息) (一)MQTT连接阿里云物联网平台(小白向)_阿里云mqtt_弦急的博客-CSDN博客
将阿里云物联网平台创建好,相关的产品设备也设置好之后,我们就可以参照着MQTT协议标准先利用网络调试助手打通和阿里云物联网平台数据的传输,之后再用ESP32和阿里云物联网平台进行数据传输。总的流程就是这样,其中会划分为很多部分,之后会一一展开去讲。
我们先来讲mqtt协议,要想完成数据的上传和接收,一定要理解MQTT协议的工作标准。这一部分非常的重要,希望大家慢慢看尽量把这部分看懂。
第一章MQTT的介绍
我先介绍一下MQTT协议,它主要包括以下几个部分(介绍部分有很多专业名词初学者了解即可,不需要完全吃透,之后介绍MQTT控制报文时可以回头来理解其中需要的细节):
一、网络连接(Netwrok Connection):
MQTT使用的底层传输协议基础设施。
-
客户端使用它连接服务端。
-
它提供有序的、可靠的、双向字节流传输。
MQTT 3.1使用的传输层协议是 [RFC793] 定义的TCP/IP协议,同时也支持:
-
TLS协议 [RFC5246]
-
WebSocket协议 [RFC6455]
二、应用消息(Application Message)
MQTT协议通过网络传输应用数据。应用消息通过MQTT传输时,它们有关联的服务质量(QoS)和主题(Topic)。
三、客户端(Client)
使用MQTT的程序或设备。客户端总是通过网络连接到服务端。它可以
-
发布应用消息给其它相关的客户端。
-
订阅以请求接受相关的应用消息。
-
取消订阅以移除接受应用消息的请求。
-
从服务端断开连接。
四、服务端(Server)
一个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介。服务端
-
接受来自客户端的网络连接。
-
接受客户端发布的应用消息。
-
处理客户端的订阅和取消订阅请求。
-
转发应用消息给符合条件的已订阅客户端。
五、订阅(Subscription)
订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量(QoS)等级。订阅与单个会话(Session)关联。会话可以包含多于一个的订阅。会话的每个订阅都有一个不同的主题过滤器。
六、主题名(Topic Name)
附加在应用消息上的一个标签,服务端已知且与订阅匹配。服务端发送应用消息的一个副本给每一个匹配的客户端订阅。
七、主题过滤器(Topic Filter)
订阅中包含的一个表达式,用于表示相关的一个或多个主题。主题过滤器可以使用通配符。
八、会话(Session)
客户端和服务端之间的状态交互。一些会话持续时长与网络连接一样,另一些可以在客户端和服务端的多个连续网络连接间扩展。
九、控制报文(MQTT Control Packet)
通过网络连接发送的信息数据包。MQTT规范定义了十四种不同类型的控制报文,其中一个(PUBLISH报文)用于传输应用消息。
第二章MQTT控制报文格式
MQTT协议控制报文由三部分组成,如下表所示。
Fixed header |
固定报头,所有控制报文都包含 |
Variable header |
可变报头,部分控制报文包含 |
Payload |
有效载荷,部分控制报文包含 |