ESP32-C3模组上跑通MQTT(2)

2024-05-05 16:20
文章标签 mqtt esp32 模组 c3

本文主要是介绍ESP32-C3模组上跑通MQTT(2),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接前一篇文章:ESP32-C3模组上跑通MQTT(1)

本文内容参考:

《ESP32-C3 物联网工程开发实战》

MQTT协议及使用_mqtt endpoint-CSDN博客

特此致谢!

上一回对于远程控制进行了介绍,并且介绍了常见的云端数据通信协议中的HTTP。本文介绍另一个协议 —— MQTT,这也是本系列文章的重中之重。

二、常见的云端数据通信协议

2. MQTT协议

实际上在笔者之前的文章中,已经对于MQTT进行了介绍,参见:

Windows系统下安装Mosquitto的步骤(1)-CSDN博客

在这个系列中,会从更加深入的技术细节层面对于MQTT协议进行讲解。

MQTT(Message Queue Telemetry Transport)是一个基于客户端/服务器端(C/S)架构发布的/订阅模式的消息传输协议。该写哟具有轻巧、开放、简单、规范和易于实现的特点,适合于资源受限设备,属于物联网的标准传输协议之一。

MQTT协议由IBM于1999年发布,目前MQTT协议已经发展到v5.x,ESP-IDF支持v3.1.1。MQTT v5.x与v3,x差异较大,而且不是互相兼容的。目前市面上大部分云平台还是以v3.x为主,因此本文重点介绍MQTT v3.x。

MQTT协议运行于TCP协议之上,具有如下特点:

  • 使用发布/订阅消息模式,提供了一对多的消息分发模式和应用之间的解耦。
  • 消息传输时不需要知道负载内容。
  • 提供三种等级的服务质量(QoS)来保证数据的传输。
  • 传输消耗很小,可最大限度地减少网络流量。
  • 支持遗嘱消息,在连接异常断开时,能通知到相关各方。

三、MQTT协议原理

MQTT协议是基于客户端与服务器架构进行通信的。在MQTT协议中,有三类角色发布者(Publisher)订阅者(Subscriber)代理服务器(Broker)

发布者和订阅者都属于客户端,并且客户端既可以是消息的发布者、也可以是消息的订阅者;代理服务器是服务器端。

MQTT协议的架构如下图所示:

1. 客户端

通常指使用MQTT程序的设备,可以是发布者(Publisher)和订阅者(Subscriber),一般可将智能手机和被控设备视为客户端。客户端总是通过网络连接到服务器端的,可以实现以下功能:

  • 将应用消息发布给其它相关的客户端。
  • 通过订阅,以请求接收相关的应用消息。
  • 通过取消订阅,以移除接收应用消息的请求。
  • 断开和服务器端的连接。

MQTT客户端可以向服务端发布信息,也可以从服务端收取信息。我们把客户端发送信息的行为成为发布信息;而客户端要想从服务端收取信息,则首先要向服务端订阅信息。

2. 服务器端

通常指代理服务器(Broker),作为发送消息的客户端和请求订阅的客户端之间的中介。一般可将云平台和云服务器视为服务器端。服务器端可以实现以下功能:

  • 接收来自客户端的网络连接。
  • 接收客户端发布的应用消息。
  • 处理客户端的订阅和取消订阅请求。
  • 将应用消息转发给符合条件的客户端。

MQTT服务端其实就是一台服务器。它是MQTT信息传输的枢纽,负责将MQTT客户端发送来的信息传递给MQTT客户端。MQTT服务端还负责管理MQTT客户端。确保客户端之间的通讯顺畅,保证MQTT消息得以正确接收和准确投递。

3. 订阅(Subscribe)

订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量(QoS)等级。订阅与单个会话(Session)关联,会话可以包含多个订阅,会话的每一个订阅都有一个不同的主题过滤器。

4. 主题(Topic)

主题是附加在应用消息上的一个标签,服务器端在已知该标签的情况下,向订阅了该标签的客户端发送该应用消息的副本。

5. 主题过滤器(Topic Filter)

订阅中包含的一个表达式,用于表示相关的一个或多个主题。主题过滤器可以使用通配符,用于代替单个或多个字符。

6. 会话(Session)

客户端和服务器之间的状态交互,一些会话的持续时长与网络连接一样。客户端与服务器从建立连接到断开连接之间的状态交互称为会话。

7. 订阅与发布模式

订阅与发布模式是MQTT协议的灵魂。订阅者和发布者不需要关心对端的IP地址和端口号,也不需要直接和对端相连,它们甚至不知道对端是否存在。订阅者和发布者之间由代理服务器维系两者的消息交换,代理服务器过滤所有发布者发布的消息,然后分发给合适的订阅者

发布者和订阅者都需要关心消息的主题。例如,智能手机想查看智能灯A的状态,则流程如下:

1)智能手机可以作为订阅者向代理服务器订阅主题为A/light_state的订阅消息;

2)智能灯设备A可以作为发布者,当智能灯的状态发生变化时,就会发布主题为A/light_state的状态消息给代理服务器;

3)代理服务器过滤订阅了主题A/light_state的订阅者,将状态消息发布给智能手机。这样智能手机就能查询到智能灯A的状态了。

更多内容请看下回。

这篇关于ESP32-C3模组上跑通MQTT(2)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962127

相关文章

springboot整合mqtt的步骤示例详解

《springboot整合mqtt的步骤示例详解》MQTT(MessageQueuingTelemetryTransport)是一种轻量级的消息传输协议,适用于物联网设备之间的通信,本文介绍Sprin... 目录1、引入依赖包2、yml配置3、创建配置4、自定义注解6、使用示例使用场景:mqtt可用于消息发

Java对接MQTT协议的完整实现示例代码

《Java对接MQTT协议的完整实现示例代码》MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛,:本文主要介绍Ja... 目录前言前置依赖1. MQTT配置类代码解析1.1 MQTT客户端工厂1.2 MQTT消息订阅适配器1.

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

摄像头模组介绍和技术指标

1 手机摄像头概述 1.1 手机摄像头概述  手机的数码相机功能指的是手机是否可以通过内置或是外接的数码相机进行拍摄静态图片或短片拍摄,作为手机的一项新的附加功能,手机的数码相机功能得到了迅速的发展。 手机摄像头分为内置与外置,内置摄像头是指摄像头在手机内部,更方便。外置手机通过数据线或者手机下部接口与数码相机相连,来完成数码相机的一切拍摄功能。 外置数码相机的优点在于可以减轻手机的重