首页 > 其他分享 >MQTT 是什么以及它的工作原理

MQTT 是什么以及它的工作原理

时间:2024-09-13 10:20:15浏览次数:11  
标签:订阅 主题 发布 工作 MQTT 消息 原理 设备

平时学习MQTT或调试设备,推荐一款MQTT工具: MQTT Assistant

MQTT 是什么以及它的工作原理 #

本文介绍了 MQTT 协议。MQTT 代表消息队列遥测传输(Message Queuing Telemetry Transport),是一种适用于物联网设备之间通信的简单消息传递协议。

什么是 MQTT? #

MQTT 代表消息队列遥测传输。MQTT 是一种简单的消息传递协议,专为带宽受限的设备而设计。因此,它是在多个 IoT 设备之间交换数据的完美解决方案。

MQTT 通信作为发布和订阅系统工作。设备发布有关特定主题的消息。订阅该主题的所有设备都会收到该消息。

其主要应用包括发送消息来控制输出、从传感器节点读取和发布数据等等。

MQTT 基本概念 #

在 MQTT 中,您需要了解一些基本概念:

  • 发布/订阅
  • 消息
  • 主题
  • 代理

发布/订阅 #

第一个概念是发布和订阅系统。在发布和订阅系统中,设备可以发布关于某个主题的消息,也可以订阅某个特定主题以接收消息

  • 例如,设备 1 发布某个主题。
  • 设备 2 订阅了设备 1 发布内容的同一主题。
  • 因此,设备 2 接收该消息。

消息 #

消息是您想要在设备之间交换的信息。例如,它可以是命令之类的消息,也可以是传感器读数之类的数据。

主题 #

另一个重要概念是主题。主题是您注册对传入消息的兴趣的方式,或指定要发布消息的位置的方式。

主题用正斜杠分隔的字符串表示。每个正斜杠表示一个主题级别。以下是为您家庭办公室中的灯创建主题的示例:

注意:主题区分大小写,这使得这两个主题有所不同:

如果您想使用 MQTT 打开家庭办公室的灯,您可以想象以下场景:

  1. 设备在 home/office/lamp 主题上发布“开”和“关”消息。
  2. 您有一个控制灯的设备(可以是 ESP32、ESP8266 或任何其他电路板或设备)。控制灯的 ESP32 订阅了同一主题:home/office/lamp。
  3. 因此,当在该主题上发布新消息时,ESP32 会收到“开”或“关”消息并打开或关闭灯。

发布消息的设备可以是 ESP32、ESP8266 或支持 MQTT 的家庭自动化控制器平台,例如 Node-RED、Home Assistant、Domoticz 或 OpenHAB。

代理(Broker) #

最后,另一个重要概念是代理。

MQTT 代理负责接收所有消息、过滤消息、决定谁对它们感兴趣,然后将消息发布给所有订阅的客户端。

您可以使用多种代理。在家庭自动化项目中,我们使用安装在 Raspberry Pi 上的 Mosquitto 代理(Eclipse Mosquitto)。您也可以在 PC 上安装 Mosquitto 代理(这不如使用 Raspberry Pi 板那么方便,因为您必须让计算机始终保持运行才能保持设备之间的 MQTT 连接)。

在本地网络上的 Raspberry Pi 上安装 Mosquitto 代理后,您可以在连接到同一网络的 IoT 设备之间交换数据。

您还可以在云中运行 Mosquitto MQTT 代理。在云中运行 MQTT Mosquitto 代理后,您可以使用不同的网络从任何地方连接多个 IoT 设备,只要它们有互联网连接即可。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:介绍 | 博客

标签:订阅,主题,发布,工作,MQTT,消息,原理,设备
From: https://blog.csdn.net/qq_32779119/article/details/142203252

相关文章

  • 【计算机组成原理】详细解读带符号整数在计算机中的运算
    有符号整数的运算导读一、补码的优势二、补码的加法运算结语导读大家好,很高兴又和大家见面啦!!!经过前面的介绍,我们已经初步认识了有符号整数的三种表示形式:原码——用机器数的最高位表示符号,其余位表示数值。符号位为0,表示正数符号位为1,表示负数......
  • 一文带你看懂状态管理库Redux原理
    Redux目录1.对Redux的理解,主要解决什么问题2.Redux原理及工作流程3.Redux中异步的请求怎么处理4.Redux怎么实现属性传递,介绍下原理5.Redux中间件是什么?接受几个参数?柯里化函数两端的参数具体是什么?6.Redux请求中间件如何处理并发7.Redux状态管理器和变量......
  • SpringSecurity原理解析(二):认证流程
    1、SpringSecurity认证流程包含哪几个子流程?   1)账号验证   2)密码验证   3)记住我—>Cookie记录   4)登录成功—>页面跳转2、UsernamePasswordAuthenticationFilter   在SpringSecurity中处理认证逻辑是在UsernamePasswordAuthenticationFilter这个过......
  • SpringSecurity原理解析(二):认证流程
    1、SpringSecurity认证流程包含哪几个子流程?   1)账号验证   2)密码验证   3)记住我—>Cookie记录   4)登录成功—>页面跳转2、UsernamePasswordAuthenticationFilter   在SpringSecurity中处理认证逻辑是在UsernamePasswordAuthenticationFilter这个过......
  • LinkedHashMap原理详解—从LRU缓存机制说起
    写在前面从一道Leetcode题目说起首先,来看一下Leetcode里面的一道经典题目:146.LRU缓存机制,题目描述如下:请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(int......
  • 实际工作中使用Git
    在实际的工作开发中,面向的是团队协作的开发环境,跟自己独立开发还是有很大的不同的,接下来主要介绍在实际的工作中怎么使用git来进行协作开发1.git迭代开发流程介绍各个企业的迭代开发流程可能不一致,但大体上是类似的。首先是主干分支main,main分支应该是这里面最全的代码分支,......
  • Git开发工作流
    1.git基础首先在当前目录下使用gitinit初始化当前仓库gitclone目标git仓库的ssh地址将远程仓库所有文件克隆到本地gitlog/*commit21e227b2a8e7049322c72030e1da307cea542c7e(HEAD->main,origin/main,origin/HEAD)Author:halfmelon<113506319+halfrmon@use......
  • MQTT 协议概述
    目录一、概述二、协议模型1、组成部分2、客户端3、服务器三、MATT通信过程1、连接服务器2、订阅主题3、发布消息4、取消订阅5、断开连接四、MQTT数据包结构1、MQTT固定头2、MQTT可变头3.Payload消息体五、示例演示一、概述MQTT(MessageQueuingTelemetryTr......
  • 图像处理-边缘检测算法的原理和实现
    概述边缘检测是图像处理中的一项重要任务,其原理是基于图像的梯度计算。梯度是函数的变化速率,图像中的边缘意味着像素灰度值的快速变化。常用的边缘检测算法有Sobel算子、Prewitt算子、Laplacian算子、Canny算子等。Sobel算子(滤波器)Sobel滤波器通过使用两个3x3卷积核(也称为掩......
  • 深入剖析 USB 转串口的工作原理与实际应用
    在现代电子设备和计算机硬件的交互中,USB转串口技术扮演着至关重要的角色。它不仅提供了一种便捷的连接方式,还极大地扩展了设备的通信能力。本文将深入剖析USB转串口的工作原理及其在实际应用中的重要性。工作原理USB转串口设备的核心是一个集成电路,它负责将USB接口的信号转换为串行......