当前位置: 首页 > news >正文

物联网IoT系列之MQTT协议基础知识

文章目录

    • 物联网IoT系列之MQTT协议基础知识
      • 物联网IoT是什么?
      • 什么是MQTT?
      • 为什么说MQTT是适用于物联网的协议?
      • MQTT工作原理
        • 核心组件
        • 核心机制
      • MQTT工作流程
        • 1. 建立连接
        • 2. 发布和订阅
        • 3. 消息确认
        • 4. 断开连接
      • MQTT工作流程图
      • MQTT在物联网中的应用

物联网IoT系列之MQTT协议基础知识

物联网IoT是什么?

物联网(Internet of Things,简称IoT)是一个由互联网、传统电信网、传感器网络等组成的庞大网络,它通过嵌入式传感器、设备和软件,将物理世界中的物体连接起来,实现物与物、物与人、物与网络之间的智能化交互。简单来说,物联网就是让“万物互联”,让设备能够自主地感知、传输和处理数据,从而为人类生活和工业生产带来更高的效率和便利。

什么是MQTT?

MQTT(Message Quelemetry Transport)是一种轻量级的、基于发布订阅模式的网络传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网环境中应用广泛,能够实现传感器、执行器和其他设备之间的高效通信。

为什么说MQTT是适用于物联网的协议?

  • 轻量级设计:MQTT协议头部最小仅2字节,网络传输开销极小,适合在窄带网络(如NB-IoT)中使用。
  • 低功耗:使用异步传输机制和较小的数据包传输,使得设备在通信过程中的能耗更低。
  • 高可靠性:提供3种QoS级别(0/1/2),确保消息必达。
  • 灵活扩展:通过主题(Topic)和通配符机制,设备可以灵活订阅和发布消息,支持大规模设备接入。
  • 适应不稳定网络:心跳机制和会话恢复功能,确保设备在断网后能够快速恢复连接并获取未读消息。

MQTT工作原理

核心组件
  • 发布者(Publisher):将消息发布到指定的主题(Topic),例如温度传感器、智能开关等。
  • 消息代理(Broker):作为中间节点,负责接收发布者的消息并转发给订阅者,例如EMQX、Mosquitto、AWS IoT等。
  • 订阅者(Subscriber):订阅特定Topic的消息,例如手机App、云端控制台等。
核心机制
  • Topic通配符
    • 示例:home/floor1/#,订阅floor1下所有子主题的消息。
  • QoS机制
    • QoS是MQTT中用于控制信息传输质量的机制,MQTT定义了三种不同的QoS等级:QoS 0、QoS 1和QoS 2。
QoS等级传输过程适用场景
0最多发送一次(无需确认)实时性高但允许丢失数据的场景
1至少一次(Broker确认)设备控制指令
2精确一次(四次握手确保唯一性)支付、安全告警

MQTT工作流程

1. 建立连接

客户端向Broker发送CONNECT报文,包含客户端ID、用户名和密码等认证信息。Broker验证后返回CONNACK报文,表示连接成功。

2. 发布和订阅
  • 发布:发布者将消息通过PUBLISH报文发送到Broker指定的主题(Topic),Broker根据订阅关系将消息发送给指定的订阅者。
  • 订阅:订阅者发送SUBSCRIBE报文,指定要订阅的主题(Topic)和QoS级别。
3. 消息确认

根据QoS级别,消息可能需要确认:

  • QoS 0:消息“最多发送一次”,无需确认。
  • QoS 1:消息“至少发送一次”,需要确认。
  • QoS 2:消息“仅发送一次”,需要复杂的确认流程。
4. 断开连接

客户端发送DISCONNECT报文,通知Broker主动断开连接。

MQTT工作流程图

以下是文字描述的流程图结构:

客户端|v
[建立连接] -> [发送CONNECT报文] -> [接收CONNACK报文]|v
[发布消息] -> [发送PUBLISH报文] -> [Broker转发消息]|v
[订阅消息] -> [发送SUBSCRIBE报文] -> [接收消息]|v
[消息确认] -> [根据QoS级别确认消息]|v
[断开连接] -> [发送DISCONNECT报文]

MQTT工作流程图:
在这里插入图片描述

MQTT在物联网中的应用

MQTT广泛应用于设备监控、车联网、智能家居等领域。例如:

  • 工业设备监控:通过MQTT实现设备状态的实时传输。
  • 智慧城市:用于环境传感器实时传输温度、湿度等数据。
  • 智能家居:通过MQTT连接智能设备,实现远程控制和自动化管理。

相关文章:

物联网IoT系列之MQTT协议基础知识

文章目录 物联网IoT系列之MQTT协议基础知识物联网IoT是什么?什么是MQTT?为什么说MQTT是适用于物联网的协议?MQTT工作原理核心组件核心机制 MQTT工作流程1. 建立连接2. 发布和订阅3. 消息确认4. 断开连接 MQTT工作流程图MQTT在物联网中的应用 …...

【大学生体质】智能 AI 旅游推荐平台(Vue+SpringBoot3)-完整部署教程

智能 AI 旅游推荐平台开源文档 项目前端地址 ☀️项目介绍 智能 AI 旅游推荐平台(Intelligent AI Travel Recommendation Platform)是一个利用 AI 模型和数据分析为用户提供个性化旅游路线推荐、景点评分、旅游攻略分享等功能的综合性系统。该系统融合…...

【Node.js入门笔记1---初始Node.js)】

Node.js入门笔记1 初始Node.js1.Node.js简介2.Node.js中js的运行环境3.Node.js 可以做什么4.Node.js 怎么学 初始Node.js 1.Node.js简介 Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,用于在服务器端运行 JavaScript 代码。它让开发者可以用 Java…...

自学Java-JavaSE基础加强(多线程)

自学Java-JavaSE基础加强(多线程) 一、创建线程1、方式一:继承Thread类小结 2、方式二:实现Runnable接口小结 3、方式三:实现Callable接口4、小结 二、线程的常用方法三、线程安全1、认识线程安全2、模拟线程安全问题3…...

数字后端培训实战项目六大典型后端实现案例

Q1:请教一个问题,cts.sdc和func.sdc在innovus用如何切换?在flow哪一步切换输入cts.sdc?哪一步切换到func.sdc,具体如何操作? 这个学员其实就是在问使用分段长clock tree时具体的flow流程是怎么样的?针对时…...

安卓免费多功能工具:一站式解决 PDF 阅读、编辑、转换等需求

软件介绍 今天要给大家介绍一款功能强大的PDF处理软件——PDFgear Android版。它是专为安卓设备打造的,完全免费,无需破解和激活就能使用。 此前,我们分享过它的桌面端,收获了大家的一致好评。今天要着重介绍的手机APP版本&…...

diffuser库使用本地模型生成图像

实验目的 使用diffuser库生成图像的文章是很多的,使用方法也并不复杂,安装库后调用现成的模型和接口即可,但是因为网络原因,模型下载总会遇到问题,对于使用服务器的研究者来说,挂梯子并不可行,…...

递归—基础算法

#基线条件和递归条件 #每个递归函数都有两部分:基线条件和递归条件。递归条件指的是函数调用自己,而基线条件则指的是函数不再调用自己,从而避免形成无限循环。 #栈:栈是一种数据结构,它是一种线性数据结构&#xff0c…...

全面复习回顾——C++语法篇2

23、字符串相加 string s3;s3s1s2;cout<<s3; 24、结构体基本操作 struct student {// write your code here......string name;int age;double height0.0; };int main() {// write your code here......student s;cin>>s.name;cin>>s.age;cin>>s.hei…...

探秘基带算法:从原理到5G时代的通信变革【十】基带算法应用与对比

文章目录 三、算法在现代通信系统中的应用3.1 5G 通信中的应用3.1.1 信道编码与调制解调3.1.2 大规模 MIMO 技术3.1.3 案例分析&#xff1a;5G 基站与终端实现 3.2 卫星通信中的应用3.2.1 抗干扰与纠错编码3.2.2 信号处理与调制解调3.2.3 案例分析&#xff1a;卫星通信系统实例…...

Linux | Vim 鼠标不能右键粘贴、跨系统复制粘贴

注&#xff1a;本文为 “ Vim 中鼠标右键粘贴、跨系统复制粘贴问题解决方案” 相关文章合辑。 未整理去重。 Linux 入门&#xff1a;vim 鼠标不能右键粘贴、跨系统复制粘贴 foryouslgme 发布时间 2016 - 09 - 28 10:24:16 Vim 基础 命令模式&#xff08;command - mode&…...

无人机遥控器扩频技术解析!

一、扩频技术基本原理 扩频技术&#xff08;Spread Spectrum, SS&#xff09;通过将信号的频谱扩展至远大于原始带宽进行传输&#xff0c;提升抗干扰性、隐蔽性和多用户能力。其核心原理包括&#xff1a; 直接序列扩频&#xff08;DSSS&#xff09; 利用高速伪随机码&#x…...

Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践

在开发 Spring Boot 构建的 RESTful API 项目时&#xff0c;负载均衡和反向代理是提升性能与可用性的关键环节。HAProxy 和 Nginx 作为两种流行的工具&#xff0c;经常被用于流量分发&#xff0c;但它们各有侧重。究竟哪一个更适合你的 Spring Boot API 项目&#xff1f;本文将…...

OpenBMC:BmcWeb构造connect对象

OpenBMC:BmcWeb server.run-CSDN博客 server在接收了tcp连接请求后,会构造一个ConnectionType对象,然后通过post调度,运行该对象的start函数 1.ConnectionType类型 其实也就是using ConnectionType = Connection<Adaptor, Handler>;类型 由于ConnectionType实例化于…...

ORB-SLAM2源码学习(六):相机跟踪(局部地图跟踪和关键帧创建)

目录 1.局部地图跟踪 1.1 更新局部关键帧UpdateLocalKeyFrames 1.2 更新局部地图点&#xff08;来自局部关键帧&#xff09;UpdateLocalPoints() 1.3 投影匹配 2. 对比四种跟踪方式以及使用的投影匹配 3.关键帧创建 3.1 判断是否需要创建新关键帧: NeedNewKeyFrame() 3…...

WordPress使用(3)

前面文章讲述了如何利用docker进行wordpress系统的安装及相关设置&#xff0c;本文将介绍如何进行站点数据和数据库数据的备份。 1. 备份数据库 # 进入mysql容器内部 docker exec -it mysqlwp bash# 使用mysqldump 命令导出数据库 mysqldump -u root -p wordpress > wordp…...

Docker基础篇——什么是Docker与Docker的仓库、镜像、容器三大概念

大家好我是木木&#xff0c;在当今快速发展的云计算与云原生时代&#xff0c;容器化技术蓬勃兴起&#xff0c;Docker 作为实现容器化的主流工具之一&#xff0c;为开发者和运维人员带来了极大的便捷 。下面我们一起了解下什么是Docker与与Docker的仓库、镜像、容器三大概念。 …...

Gitlab配置personal access token

1.点击左上角个人账号 -> Preferences 2. 点击左边栏 Access Tokens 3. 点击Add new token &#xff0c;输入token名称&#xff0c;勾选权限&#xff08;注意截至日期 “Expiration date” 可不填&#xff09; 4. 创建成功后&#xff0c;显示token信息&#xff0c;复制到本地…...

使用STM32CubeMX实现LED灯每秒闪烁一次(STM32G070CBT6单片机)

1.打开STM32CubeMX&#xff0c;点击File->New Project&#xff0c;新建一个新工程。 2.搜索芯片型号&#xff0c;选择正确的芯片封装规格&#xff0c;准备对芯片的引脚进行配置。 进行上面的操作后&#xff0c;跳转到如下的页面。 3.选择要配置的引脚进行配置。此处我的LED是…...

django中路由配置规则的详细说明

在 Django 中,路由配置是将 URL 映射到视图函数或类视图的关键步骤,它决定了用户请求的 URL 会触发哪个视图进行处理。以下将详细介绍 Django 中路由配置的规则、高级使用方法以及多个应用配置的规则。 基本路由配置规则 1. 项目级路由配置 在 Django 项目中,根路由配置文…...

告别答辩夜战!Paperxie AI PPT:10 分钟把论文变「导师满分」学术演示稿

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 又到毕业季&#xff0c;当实验室的灯光熬到凌晨&#xff0c;当电脑里的论文终稿定格在最后一页&#xff0c;无数毕业生却陷入…...

SmolVLA部署案例:树莓派5+USB GPU加速器运行SmolVLA轻量版可行性探索

SmolVLA部署案例&#xff1a;树莓派5USB GPU加速器运行SmolVLA轻量版可行性探索 1. 引言 你有没有想过&#xff0c;让一个巴掌大的树莓派也能跑起来一个能“看懂”世界、听懂指令、并控制机器人动作的AI模型&#xff1f;这听起来像是科幻电影里的场景&#xff0c;但今天我们要…...

告别乱码!ESP32-S3+LVGL 9.2.2驱动ILI9488显示中文的保姆级教程(附完整代码)

ESP32-S3LVGL 9.2.2中文显示实战&#xff1a;从乱码到完美呈现的终极指南 当你在ESP32-S3上成功驱动了ILI9488显示屏&#xff0c;LVGL的基础例程也跑起来了&#xff0c;却发现中文显示全是方块或乱码时&#xff0c;这种挫败感我深有体会。中文显示问题一直是嵌入式GUI开发中的…...

MediaPipeUnityPlugin技术解构与实战指南:Unity AI视觉开发进阶之路

MediaPipeUnityPlugin技术解构与实战指南&#xff1a;Unity AI视觉开发进阶之路 【免费下载链接】MediaPipeUnityPlugin Unity plugin to run MediaPipe 项目地址: https://gitcode.com/gh_mirrors/me/MediaPipeUnityPlugin 问题发现&#xff1a;Unity AI视觉开发的现实…...

Ollama GUI架构解析:现代本地LLM交互界面的技术实现与隐私优先设计

Ollama GUI架构解析&#xff1a;现代本地LLM交互界面的技术实现与隐私优先设计 【免费下载链接】ollama-gui 项目地址: https://gitcode.com/gh_mirrors/ol/ollama-gui 在人工智能技术快速发展的今天&#xff0c;本地化部署的大语言模型&#xff08;LLM&#xff09;成为…...

从手机照片同步到数据去重:用C++ STL set/map搞定‘两个数组交集’背后的真实业务逻辑

从手机照片同步到数据去重&#xff1a;用C STL set/map搞定‘两个数组交集’背后的真实业务逻辑 每次换新手机时&#xff0c;最头疼的莫过于照片和联系人的迁移——那些重复的截图、相似的风景照、多年前的证件照&#xff0c;究竟该如何高效筛选&#xff1f;这背后隐藏的正是计…...

【TC3xx芯片】Endinit机制实战:从解锁到上锁的完整代码解析

1. TC3xx芯片Endinit机制的核心作用 在嵌入式系统开发中&#xff0c;寄存器保护是确保系统稳定性的关键机制。TC3xx系列芯片采用的Endinit&#xff08;End of initialization&#xff09;保护方案&#xff0c;就像给重要寄存器装了一把智能密码锁。想象一下&#xff0c;你家的保…...

MinerU 2.5-1.2B新手教程:无需深度学习基础,快速上手PDF提取

MinerU 2.5-1.2B新手教程&#xff1a;无需深度学习基础&#xff0c;快速上手PDF提取 1. 引言&#xff1a;为什么选择MinerU&#xff1f; PDF文档是我们日常工作和学习中常见的文件格式&#xff0c;但要从PDF中提取内容却常常让人头疼。特别是遇到学术论文、技术报告这类包含复…...

TinyXML2性能优化终极指南:10个技巧让XML处理速度飙升

TinyXML2性能优化终极指南&#xff1a;10个技巧让XML处理速度飙升 【免费下载链接】tinyxml2 TinyXML2 is a simple, small, efficient, C XML parser that can be easily integrated into other programs. 项目地址: https://gitcode.com/gh_mirrors/ti/tinyxml2 TinyX…...

DriverStore Explorer完全指南:免费Windows驱动管理终极教程

DriverStore Explorer完全指南&#xff1a;免费Windows驱动管理终极教程 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer是一款功能强大的Windows驱动程序管…...