news 2026/2/9 3:49:47

MQTT介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MQTT介绍

一、什么是MQTT
物联网(IoT)发展迅猛,传感器、网关、云平台之间如何高效通信成了核心问题。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的消息传输协议,近年来被广泛应用于智能家居、工业控制、车联网等场景。
MQTT 是一种基于发布/订阅(Pub/Sub)模式的轻量级消息协议,设计初衷是为低带宽、不稳定网络环境下的设备通信而生。它更像是广播电台:你订阅频道,谁在频道里发布了消息你就能收到,中间由一个叫做 Broker 的中间人来转发消息。

二、MQTT 的三大角色
Broker(消息代理)
Broker 就是 MQTT 网络的大脑。客户端不互相通信,所有消息都通过 Broker 中转。主流 Broker 有
Mosquitto(轻量、适合嵌入式开发)
EMQX(高性能、支持百万连接)
HiveMQ、RabbitMQ(企业级)
Publisher(发布者)
发布消息的人,比如你家的温湿度传感器,每隔 5 秒发布一次环境数据。
Subscriber(订阅者)
对某类消息感兴趣的接收者,比如你手机里的 APP 订阅了“家里客厅/温度”,只要 Broker 收到这个主题的消息,就会推送给你。

三、核心机制-主题、保留消息
主题(Topic)
MQTT 的消息没有标题,靠的是主题(Topic)分类。
保留消息(Retained Message)
比如你家的空调状态是“开启”,订阅者上线时希望立刻知道当前状态,可以发布一条“保留消息”,Broker 会记住它,并在有人订阅时立刻推送。

四、GraniStudio是否支持MQTT

GraniStudio平台是苏州格拉尼视觉科技有限公司推出的对标Labview的零代码工控开发平台,该平台支持MQTT服务器,客户端,发送文本,接收文本和关闭MQTT通信。这几个工具算子的介绍如下:
MQTT服务器

MQTT服务器属于资源管理器算子部分,归属于资源管理器通用工具

通过主界面可配置IP地址和端口号.然后选配高级设置是否启用密码功能,连接时是否需要验证账号密码,并在列表中支持显示客户端连接列表和主题列表,消息列表方便用户调试使用。

操作示例

步骤一、创建IP地址和端口号,一定要注意IP格式如:127.0.0.1 默认端口号:1883

步骤二、如输入IP地址格式不正确将出现弹窗提示。

步骤三、如需要客户端连接时需要输入正确的账号和密码,就需要开启高级设置,设置连接验证,用户名和密码。

步骤四、设置完毕后点击开启服务即可。

步骤五、打开MQTT客户端测试工具。注意客户端IP为自动分配

步骤六、点击连接

连接不成功原因是因为服务器那边开启了连接验证,所以需要输入正确的验证信息才能连接成功。

步骤七、服务器列表中已显示该客户端的连接

步骤八、再次开启客户端连接该服务器

列表中已显示两个客户端的连接,

步骤九、客户端1订阅主题,客户端2发布主题

步骤十、客户端1显示客户端2发布主题。

从上图可看出 MQTT服务器是一个代理服务,不同客户端之间的通信。

一个客户端可订阅多个主题,。

MQTT客户端

MQTT客户端属于资源管理器算子部分,归属于资源管理器通用工具

算子内部自动分配客户端ID,通过主界面输入MQTT服务器IP地址和端口号可连接MQTT服务器,然后选配高级设置是否启用密码功能,连接时是否需要验证账号密码,并支持显示接收消息列表,通过界面可订阅主题和发布主题,实现与MQTT服务器与MQTT其他客户端的通信。

操作示例

步骤一、打开客户端算子后将默认配分客户端ID,无法修改

步骤二、配置IP和端口号,IP格式:127.0.0.1 端口号:1883 默认端口号:1883

步骤三、是否开启高级设置,开启高级设置需输入用户名和密码,,未开启将无需输入, 默认未开启。如果服务器开启用户名验证将开启。

步骤四、点击连接按钮

即可在连接列表中显示该客户端连接信息

步骤五、点击断开按钮

点击断开连接后服务器列表那会刷新,当前客户端处于未连接状态

步骤六、订阅主题

服务器将显示客户端订阅列表。
使用客户端2发布该主题

客户端2发布主题并附加消息Test

步骤七、发布主题消息

客户端2订阅T1主题, 客户端1发布主题T1

MQTT发送文本

MQTT发送文本属于主任务设计器算子部分,归属于主任务设计器通用工具

算子内部无需连接操作,通过引用依赖引用MQTT客户端对象即可,实现代理客户端对象发布主题消息功能,通过界面配置可配置主题,可引用主题和手动输入主题,也可引用消息和手动输入消息两种方式。

需要发送消息必须有主题,需要发布主题必须消息,如用户输入主题当前客户端未发布将自动发布该主题消息。

操作示例

创建服务器调试工具。

GS MQTT客户端连接该服务器

创建两个客户端,模拟两个客户端之间通信

步骤一、引用MQTT 客户端 对象

步骤二、使用自定义主题方式,输入文本 R1

步骤三、使用自定义消息方式,输入消息 Test

步骤四、注意事项主题和消息两者均不可为空。

步骤五、点击执行按钮

服务器已接收到MQTT客户端发布主题和消息

客户端2订阅R1主题,与 GS MQTT客户端建立连接

订阅主题成功, 将刚GS MQTT客户端发布主题和消息发送至该客户端中

步骤六、使用引用方式

使用局部变量定义两个变量,一个主题一个消息变量 均是GString类型

步骤七、引用主题方式

步骤八、引用消息方式

因为客户端2订阅R1主题,发送文本发送的主题为R1 消息为GRaniTest。正常发送主题消息

MQTT接收文本

MQTT接收文本属于主任务设计器算子部分,归属于主任务设计器通用工具

算子内部无需连接操作,通过引用依赖引用MQTT服务器或客户端对象即可,实现代理接收MQTT服务器或客户端消息功能,通过界面选配项可配置接收超时功能,如在设置时长内未接收文本消息将视为超时,如未打开超时功能将默认持续不断等待接收,直到接收到文本即可。

时长单位设置以毫秒为单位。

接收到文本将设置为本算子输出项,输出结果字符串类型未字符串类型,字节类型未Byte字节类型。

操作示例

步骤一、订阅客户端主题 T1

步骤二、接收文本选择引用对象

步骤三、是否打开高级设置,默认 未打开

未打开高级设置将一直等待文本接收

步骤四、是否打开高级设置,打开超时设置需要设置一个时长,如在规定时间内为未接收到文本消息,则视为超时,否则将接收文本显示到输出界面

打开高级设置将在规定时间段内接收文本

3000毫秒内未接收到文本

步骤五、主动和被动触发,当引用一个MQTT通信对象时,内部已为此通信建立起一个接收事件,如果用户点击执行按钮为主动触发等待接收功能,如果是程序在流程中正常执行到此处为被动触发等待接收功能,一般主动触发适用于调试阶段的使用,被动出发适用于在自动流程中接收信号的使用。

主动执行接收

被动接收

被动接收

MQTT关闭

MQTT关闭属于主任务设计器算子部分,归属于主任务设计器通用工具

MQTT关闭算子将代理MQTT服务器或客户端关闭通信功能,可通过引用依赖配置MQTT服务器或客户端,如内部引用MQTT服务器将停止监听,禁止发送消息和客户端的连接.如为MQTT客户端将停止需MQTT服务器的连接,停止发送消息。

操作示例

步骤一、使用拖拉拽方式在主任务设计器工具箱中将关闭MQTT通信算子创建在画布中。

步骤二、选择引用依赖框配置一个MQTT类相关算子如:GMQTT服务器,GMQTT客户端。暂时支持类型(GMQTTClient,GMQTTServer)),两种数据类型。

步骤三、算子执行成功,可继续使用初始化算子再次初始化方可继续使用标刻功能。

五、为什么选择GraniStudio MQTT通信协议?

保持 ClientID 唯一,防止连接互踢

合理规划主题命名,避免混乱

连接长时间保持,不必频繁重连

消息机制更灵活,低功耗设备友好

更适合物联网中“一对多”或“多对多”的场景

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 14:14:44

Epic Games免费游戏自动获取工具:零基础到精通的完整实践指南

想要轻松获取Epic Games每周的免费游戏,却不想手动操作?Epic Games免费游戏自动获取工具正是为你量身打造的解决方案!这款开源工具能够自动登录Epic Games Store,发现可领取的免费游戏,并为你生成预填好的结账链接。无…

作者头像 李华
网站建设 2026/2/6 8:52:56

5个实战技巧:用HunyuanVideo轻松制作艺术风格视频

在当今视频内容爆炸的时代,如何让你的视频在众多内容中脱颖而出?艺术风格化处理成为了创作者的新宠。腾讯开源的HunyuanVideo作为拥有130亿参数的大型视频生成模型,为普通用户提供了专业级的视频风格迁移能力。本文将为你揭秘如何用最简单的方…

作者头像 李华
网站建设 2026/2/7 19:22:21

5分钟搞定Linux调度器:从CPU争抢到公平分配的实战指南

5分钟搞定Linux调度器:从CPU争抢到公平分配的实战指南 【免费下载链接】linux Linux kernel source tree 项目地址: https://gitcode.com/GitHub_Trending/li/linux 你是不是经常遇到这种情况:服务器明明CPU使用率不高,但关键业务却响…

作者头像 李华
网站建设 2026/2/7 21:29:27

Atmosphere-NX固件兼容适配全攻略:从系统更新到稳定运行

当你的Switch系统升级到最新版本后,Atmosphere固件为何突然无法启动?兼容性适配过程中有哪些关键技术难题需要攻克?本文将以问题诊断、解决方案、实践验证的三段式结构,深度解析Atmosphere-NX固件兼容适配的核心技术原理与实操要点…

作者头像 李华
网站建设 2026/2/4 8:00:57

Magicodes.IE终极数据导出方案:10分钟快速上手

Magicodes.IE终极数据导出方案:10分钟快速上手 【免费下载链接】Magicodes.IE 项目地址: https://gitcode.com/gh_mirrors/mag/Magicodes.IE 还在为复杂的数据导入导出需求而头疼吗?每天面对Excel、PDF、Word等不同格式的数据处理,是…

作者头像 李华
网站建设 2026/2/5 13:47:31

5分钟掌握Material-intro:打造专业级应用引导页体验

5分钟掌握Material-intro:打造专业级应用引导页体验 【免费下载链接】material-intro A simple material design app intro with cool animations and a fluent API. 项目地址: https://gitcode.com/gh_mirrors/ma/material-intro 在移动应用竞争日益激烈的今…

作者头像 李华