一文读懂MQTT各参数定义(非ChatGPT生成版)
文章目录
- 前言
- 主流使用MQTT协议的云平台
- 连接参数
- 连接参数详解
- 1.服务器地址(Server Address)
- 2.端口(Port)
- 3.客户端标识符(Client Identifier)
- 4.用户名和密码(Username and Password)
- 5.清理会话标志(Clean Session Flag)
- 6.遗嘱消息(Will Message)
- 7.保持活动(Keep Alive)
- 小结
- 设备数据传输
- 1.发布者(Publisher)
- 2.订阅者(Subscriber)
- 3.主题(Topic)
- 4.订阅发布时的其它参数
- 服务质量等级(QoS)
- 保留标志(Retained Flag)
- 总结
前言
什么是MQTT,什么情况下使用MQTT
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传递协议,设计用于在各种设备之间进行可靠的、实时的、双向的通信。
MQTT 是一种灵活、轻量级、可靠的通信协议,适用于各种需要可靠消息传递的物联网和传感器网络应用。它在节约网络带宽、降低能耗、实现快速响应等方面具有重要作用。
物联网终端相较于手机和电脑拥有不需要大数据交互,需要与服务器长时间连接并时刻待机的特点。因此,通信协议需要具有在连接时最大程度地减少数据收发,以保持在线的能力。MQTT协议正是为这种特殊环境而设计的。
主流使用MQTT协议的云平台
目前哪里平台使用MQTT
目前市场上主流的服务器,95%以上的都是基于MQTT协议开发的。其中包括阿里云物联网平台、腾讯云物联网、亚马逊物联网,中移物联的ONENET。其中在上面衍生出来的产品,如阿里去的飞雁平台,腾讯连连等产品,本质就是在MQTT的方式上增加了配网交互以及对应APP与设备的绑定关系,或者是数据库存分析等功能,万变不离其中。
连接参数
MQTT连接主要参数
- 服务器地址(Server Address)
- 端口(Port)
- 客户端标识符(Client Identifier)
- 用户名和密码(Username and Password)
- 清理会话标志(Clean Session Flag)
- 遗嘱消息(Will Message)
- 保持活动(Keep Alive)
连接参数详解
各个参数的详细解读
1.服务器地址(Server Address)
指定要连接的 MQTT 服务器的主机名或 IP 地址。各平台对应的服务器主机名一般是以域名方式出现,并通过二级三级四级域名的衍生来指向你最近的服务器IP地址。
如阿里云物联网平台,你对应创建的ProductKey为a1gQZGKSSHz,则域名为:
a1gQZGKSSHz.iot-as-mqtt.cn-shanghai.aliyuncs.com
主域名:aliyuncs.com
二级域名:cn-shanghai,表示华东2上海的服务器
三级域名:iot-as-mqtt,表示物联网平台
四级域名:a1gQZGKSSHz,指向物联网平台创建的产品类别
单一应用中设备的服务器地址一定是唯一的。
2.端口(Port)
指定 MQTT 服务器监听的端口号。由于MQTT服务器是基于TCP协议上开发的,所以默认情况下,MQTT 使用的是 TCP 端口1883。而 MQTT通过TLS加密传输时使用的是 TCP 端口8883。
使用SSL连接方式,可以使MQTT的数据传输更加的安全,但同时也增加了设备内存和存储的消耗。
3.客户端标识符(Client Identifier)
客户端标识符(Client Identifier):用于识别连接到 MQTT 服务器的客户端。每个客户端在连接一个目标服务器里都必须具有唯一的标识符,以便服务器可以区分它们。
客户端标识符在同一个服务器中,如同公民的身份证一样,必须是唯一的。如果两台设备都使用相同的客户端标识符,则会造成之后上线的设备连接服务器后,服务器将主动断开前一台设备的连接。
4.用户名和密码(Username and Password)
某些 MQTT 服务器可能需要验证用户身份。如果需要身份验证,则需要提供有效的用户名和密码。如阿里云物联网平台,则是通过三元素的加密计算得出的用户名和密码。
用户名和密码对于设备来说一定是唯一的,如果一台设备带着用户名和密码连接一个没有加密的MQTT服务器,通常情况下是可以连接成功的。
5.清理会话标志(Clean Session Flag)
清理会话标志(Clean Session Flag):当建立 MQTT 连接时,可以设置该标志来指示服务器如何处理之前的会话状态。如果设置了“清理会话”标志,服务器将删除之前保存的该客户端的订阅、QoS 消息等信息。
当未设置清除会话标志,设备连接上MQTT服务器时,服务器将会把之前订阅号上未发送成功的数据发送给设备,这也是可以实现用户离线接收到发送数据的方式。
6.遗嘱消息(Will Message)
遗嘱消息(Will Message):可以设置一个遗嘱消息,以便在客户端异常断开连接后,自动向服务器发送一条消息。遗嘱消息可以包含任何有效的 MQTT 消息,可以用于通知其他客户端或进行清理操作。
遗嘱消息由遗嘱主题和遗嘱消息内容两部分组成。如果其它的设备端定于此设备的遗嘱主题时,该设备掉线后,则MQTT服务器将会向其它订阅遗嘱主题的设备发送遗嘱消息内容。但是很可惜,目前很多物联网平台是不支持遗嘱消息功能的,如阿里云物联网平台,腾讯云物联网等。
7.保持活动(Keep Alive)
指定客户端与服务器之间的心跳间隔时间(以秒为单位)。客户端会定期向服务器发送心跳包以保持连接的活跃状态。这里需要注意的是,则Keep Alive设置成0时,服务器将不再判断设备的心跳包。
Keep Alive的时间一般为30秒至7200秒之间,由设备端在连接服务器时将Keep Alive参数通知服务器。而设备应该在每次Keep Alive时间到来前,发送一个心跳包至服务器,以通知服务器设备连接的正常。当服务器在Keep Alive时间的1.5倍以上时间未收到设备心跳包时,则认为设备已经掉线了。此时服务器将会向设备设置的遗嘱消息主题发送遗嘱消息内容。
例如:
设备通知MQTT服务器KeepAlive的时间值为60秒,则设备必须在90秒内向服务器发送心跳包或者进行一次数据通信,否则服务器认为设备掉线。并关闭对应的MQTT TCP连接信息。
小结
通过以上7个参数的正确设置,就可以将设备连接到MQTT的服务器。
设备数据传输
MQTT服务器中设备间通信方式
在 MQTT 中,发布者(Publisher)和订阅者(Subscriber)通过使用主题(Topic)来进行消息的发布和订阅。
1.发布者(Publisher)
发布者是产生消息并将其发送到 MQTT 服务器的应用程序或设备。发布者将消息发布到一个或多个主题上。主题是消息的命名空间,用于标识消息的不同类型或分类。发布者可以选择性地选择一个或多个主题来发布消息。
2.订阅者(Subscriber)
订阅者是通过 MQTT 客户端订阅一个或多个主题的应用程序或设备。订阅者接收并处理订阅的主题上发布的消息。订阅者可以选择性地订阅一个或多个感兴趣的主题。
3.主题(Topic)
主题是 MQTT 中用于消息过滤和路由的重要概念。发布者在发布消息时将其关联到一个或多个主题上,订阅者可以通过订阅相应的主题来接收与之关联的消息。主题是通过由层级结构的多个标识符组成的字符串来表示,通常使用斜杠(/)进行分隔。例如,“home/living-room/temperature” 是一个示例主题。
我们以博客这种通俗易懂的方式来解读,则发送者就是博客编写内容的人,而订阅者就是阅读博客内容的人。当撰写者在csdn的物联网专栏下写了一条文件名为《一文读懂MQTT各参数定义》时,则发布者的发布主题就是:/www.csdn.net/物联网专栏/《一文读懂MQTT各参数定义》,消息内容则为文章内容。而订阅者只要订阅了主题:/www.csdn.net/物联网专栏/《一文读懂MQTT各参数定义》就能看到文章的内容。当然,订阅者也可以在www.csdn.net或者在物联网专栏中都可以找到文章,这就是主题中组的概念。
4.订阅发布时的其它参数
服务质量等级(QoS)
MQTT定义了三个服务质量等级,分别是0、1和2,其具体含义为:
- QoS0:最多发一次,不保证可靠性;
- QoS1:至少发一次,确保消息至少被接收一次,但可能会重复接收;
- QoS2:只发一次,确保消息被接收且仅被接收一次。
保留标志(Retained Flag)
当发布一个新的主题时,可以设置该主题的保留标志为true或false来指示是否需要将该主题保留。如果保留标志为true,则该主题的最新消息将会一直被保留下来,直到新的消息发布到该主题上。
总结
通过指定这些参数,MQTT消息发送者可以控制消息发布的范围和可靠性,并确保消息的正确传递和可订阅性。
相关文章:
一文读懂MQTT各参数定义(非ChatGPT生成版)
文章目录 前言主流使用MQTT协议的云平台连接参数连接参数详解1.服务器地址(Server Address)2.端口(Port)3.客户端标识符(Client Identifier)4.用户名和密码(Username and Password)5…...
redis-lua脚本-无参-比较2个数值
以下是演变的过程: eval " return haha " 0 eval " local res haha; return res; " 0 eval " local value1 redis.call(get,value1); local value2 redis.call(get,value2);return value1; " 0 eval " return 1 < 2;…...
Lesson5-1:OpenCV视频操作---视频读写
学习目标 掌握读取视频文件,显示视频,保存视频文件的方法 1 从文件中读取视频并播放 在OpenCV中我们要获取一个视频,需要创建一个VideoCapture对象,指定你要读取的视频文件: 创建读取视频的对象 cap cv.VideoCapt…...
Lesson5-2:OpenCV视频操作---视频追踪
学习目标 理解meanshift的原理知道camshift算法能够使用meanshift和Camshift进行目标追踪 1.meanshift 1.1原理 m e a n s h i f t meanshift meanshift算法的原理很简单。假设你有一堆点集,还有一个小的窗口,这个窗口可能是圆形的,现在你可…...
1778_树莓派系统安装
全部学习汇总: GitHub - GreyZhang/little_bits_of_raspberry_pi: my hacking trip about raspberry pi. 一段视频学习教程的总结,对我来说基本上用处不大。因为我自己的树莓派简简单单安装完就开机成功了,而且实现了很多视频中介绍的功能。 …...
关闭jenkins插件提醒信息
jenkins提醒信息和安全警告可以帮助我们了解插件或者jenkins的更新情况,但是有些插件是已经不维护了,提醒却一直存在,看着糟心,就像下面的提示 1、关闭插件提醒 找到如下位置:系统管理-系统配置-管理监控配置 打开管…...
JixiPix Artista Impresso Pro for mac(油画滤镜效果软件)
JixiPix Artista Impresso pro Mac是一款专业的图像编辑软件,专为Mac用户设计。它提供了各种高质量的图像编辑工具,可以帮助您创建令人惊叹的图像。该软件具有直观的用户界面,使您可以轻松地浏览和使用各种工具。 它还支持多种文件格式&…...
机器学习之 Jupyter Notebook 使用
🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…...
Unity引擎修改模型顶点色的工具
大家好,我是阿赵。 之前分享过怎样通过MaxScript在3DsMax里面修改模型的顶点色。不过由于很多时候顶点色的编辑需要根据在游戏引擎里面的实际情况和shader的情况来动态调整,所以如果能在引擎里面直接修改模型的顶点色,将会方便很多。于是…...
linux安装minio以及springboot整合使用
文章目录 1.linux安装minio2.springboot整合minio使用 1.linux安装minio 1.新建文件夹 mkdir /home/minio # 数据文件夹 mkdir /home/minio/data # 创建日志文件夹 mkdir /home/minio/log2.进入文件夹 cd /home/minio3.下载minio,链接可从官网获取 wget https://…...
javaee 事务 事务的特性 事务的并发问题 事务的隔离级别
什么是事务(Transaction) 是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。通过事务,sql 能将逻辑相关的一组操作绑定在一起,以便服务器 保持数据的完整性。事务…...
Matlab怎么引入外部的latex包?Matlab怎么使用特殊字符?
Matlab怎么引入外部的latex包?Matlab怎么使用特殊字符? Matlab怎么使用特殊字符?一种是使用latex方式,Matlab支持基本的Latex字符【这里】,但一些字符需要依赖外部的包,例如“𝔼”,需…...
day-07 I/O复用(select)
一.I/O复用 (一)基于I/O复用的服务器端 1.多进程服务器 每次服务都需要创建一个进程,需要大量的运算和内存空间 2.复用 只需创建一个进程。 3.复用技术在服务器端的应用 (二)select函数实现服务器端 (…...
Glide的使用及源码分析
前言 依赖 implementation com.github.bumptech.glide:glide:4.16.0 github: GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling 基本使用 //加载url Glide.with(this) .load(url) .placeholder(R.drawable.placehol…...
外贸爬虫系统
全球智能搜索 全球智能搜索 支持全球所有国家搜索引擎,及社交平台,精准定位优质的外贸客户,免翻墙 全球任意国家地区实时采集 搜索引擎全网邮箱电话采集 社交平台一键查看采集(Facebook,Twitter,Linkedin等) 职位…...
CentOS 8 安装 Code Igniter 4
在安装好LNMP运行环境基础上,将codeigniter4文件夹移动到/var/nginx/html根目录下,浏览器地址栏输入IP/codeigniter/pulbic 一直提示: Cache unable to write to "/var/nginx/html/codeigniter/writable/cache/". 找了好久&…...
.net framework 提示安装了 但是删除面板看不到
如果你在计算机上安装了.NET Framework,但在“控制面板”中找不到.NET Framework的相关条目,可能是因为.NET Framework的某些组件或特定版本未在“程序和功能”(或旧版本的Windows中称为“程序和功能”)列表中列出。这可能是正常情…...
flask-smorest 库
flask-smorest 简介 flask-smorest: 基于Flask/Marshmallow的REST API框架 flask-smorest 是一个用于创建于数据库无关的REST API的架库。 它使用Flask作为Web服务器,并使用marsmallow对数据进行序列化和反序列化。(类似于drf) 快速入门 flask-smorest对代码应…...
android WindowManager的简单使用
<?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"><uses-permission android:name"android.permis…...
Spark_Spark比mapreduce快的原因
Spark 为什么比 mapreduce 快? 最重要的3点, 数据缓存 : 中间结果可以缓存在内存中复用 资源管理 :executor task 管理,不同stage的task可以运行在同一个executor上 任务调度 : dag 对比多阶段mr 1.任务模型的优化(DAG图对比…...
DanKoe 视频笔记:致富之路:三个关键决策
在本节课中,我们将要学习决定个人能否实现财富积累的三个核心决策。这些决策并非关于具体的赚钱技巧,而是关于如何从根本上重塑你的思维方式和行为模式,为创造财富铺平道路。 概述 许多人渴望财富,但往往不得其法。真正的致富之…...
像素剧本圣殿详细步骤:Qwen2.5-14B-Instruct模型服务健康检查与自动扩缩容配置
像素剧本圣殿详细步骤:Qwen2.5-14B-Instruct模型服务健康检查与自动扩缩容配置 1. 项目概述 像素剧本圣殿(Pixel Script Temple)是基于Qwen2.5-14B-Instruct大模型深度微调的专业剧本创作工具。该系统采用复古未来像素风格UI设计࿰…...
技术赋能B端拓客:号码核验行业的迭代与价值升级,氪迹科技法人股东号码核验筛选,阶梯式价格
2026年,B端市场竞争日趋激烈,拓客逻辑已从“规模扩张”转向“价值深耕”,“精准、高效、低成本”成为所有拓客团队的核心追求。号码核验作为B端拓客的前置基础性环节,其服务质量直接决定线索价值、人力效能与投入回报比࿰…...
2026届必备的五大AI辅助写作方案推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在人工智能技术参与进来之后,学术论文写作在效率方面有了明显的大幅提升…...
极验点选验证码识别避坑指南:如何应对验证码图片更新带来的挑战
极验点选验证码动态对抗实战:从数据迭代到模型优化的全链路解决方案 当你的验证码识别模型突然失效时,第一反应是什么?上个月刚跑通的极验点选验证码识别系统,在验证码图片更新后准确率从92%暴跌至17%,这是我们团队最近…...
SSD用久了为啥会变慢?深入NAND Flash的‘写放大’与‘磨损均衡’,教你看懂SMART数据避坑
SSD性能下降的真相:从写放大到磨损均衡的深度解析 你是否遇到过这样的困扰——新买的SSD速度飞快,但用了一段时间后,系统响应明显变慢,开机时间延长,文件传输速度大不如前?这种现象并非偶然,而是…...
万象视界灵坛实操案例:博物馆数字藏品图像‘青铜器’‘唐三彩’‘水墨画’三级语义识别
万象视界灵坛实操案例:博物馆数字藏品图像青铜器唐三彩水墨画三级语义识别 1. 项目背景与价值 在博物馆数字化进程中,如何准确识别和分类各类文物图像是一个重要课题。传统基于标签的分类系统往往难以捕捉文物深层的艺术风格和文化内涵。 万象视界灵坛…...
ComfyUI-Custom-Scripts:20+实用功能全面解析与安装指南
ComfyUI-Custom-Scripts:20实用功能全面解析与安装指南 【免费下载链接】ComfyUI-Custom-Scripts Enhancements & experiments for ComfyUI, mostly focusing on UI features 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Custom-Scripts Comfy…...
8-BIT扩散模型前沿:像素极光引擎v1.0.0核心模块源码结构导读
8-BIT扩散模型前沿:像素极光引擎v1.0.0核心模块源码结构导读 1. 像素极光引擎概述 像素极光引擎(Pixel Aurora Engine)是一款基于扩散模型技术打造的8-BIT风格图像生成工具。它采用复古像素游戏风格的交互界面,将现代AI技术与经典游戏美学完美融合。 …...
C++笔记 继承关系中构造和析构顺序(面向对象)
在C面向对象编程中,继承是实现代码复用和类层次设计的核心特性。当存在基类与派生类的继承关系时,构造函数和析构函数的调用顺序有严格的规则——这不仅是面试高频考点,更是避免内存泄漏、保证对象正确初始化/清理的关键。核心结论先明确&…...
