0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MQTT介绍

苏州格拉尼 来源:jf_84050716 作者:jf_84050716 2025-07-14 09:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、什么是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服务器属于资源管理器算子部分,归属于资源管理器通用工具

wKgZPGhyj6aAXZ7AAAB73B1gxXY219.jpg

wKgZO2hyj6eAfq2lAABYaTlJtdA364.jpg

wKgZPGhyj6eAXHsmAAAQ6e7h2Po102.jpg

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

操作示例

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

wKgZO2hyj6eAP0JHAAAWmHU-Abs599.jpg

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

wKgZPGhyj6iAGxqcAABPJgLeBGU039.jpg

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

wKgZO2hyj6iAZPEUAAAUTmvt5Os502.jpg

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

wKgZPGhyj6iADFReAAAXTEvUFGM727.jpg

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

wKgZO2hyj6iAReYOAAAphbxFZMk165.jpg

步骤六、点击连接

wKgZPGhyj6mAUZm8AAAtz5yb75w426.jpg

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

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

wKgZO2hyj6mABxEHAAIlo25zuds854.jpg

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

wKgZPGhyj6qAenQZAAGaXqvvpXU307.jpg

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

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

wKgZO2hyj6qAFAgxAARc_oL9bog970.jpg

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

wKgZPGhyj6uAOUVmAAA6erkvmw0150.jpg

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

wKgZO2hyj6uABwyKAACTIkSCI08034.jpg

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

MQTT客户端

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

wKgZPGhyj6uAOg8oAABiESmzl0o998.jpg

wKgZO2hyj6yAbABuAABu-s0bR60414.jpg

wKgZPGhyj6yAM5CMAAAPckqeths355.jpg

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

操作示例

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

wKgZO2hyj6yAM8sFAAAM4BKge5I581.jpg

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

wKgZPGhyj62ARKkIAAATQ209q24074.jpg

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

wKgZO2hyj62AEeH0AAARvLpHnH8616.jpg

步骤四、点击连接按钮

wKgZPGhyj66AFg3tAAAUMvbdbnA382.jpg

wKgZO2hyj66ARN-aAABfKCMiWfU587.jpg


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

步骤五、点击断开按钮

wKgZPGhyj6-AEAYmAAAT41wqT58132.jpg

wKgZO2hyj6-AcDzGAAA35FBGadM929.jpg

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

步骤六、订阅主题

wKgZPGhyj6-AaDmoAAIZMmUYeDY771.jpg

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

wKgZO2hyj7CAVe4CAAIHAG6utRQ677.jpg

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

步骤七、发布主题消息

wKgZPGhyj7CAfTx6AAAsScy37sI914.jpg

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

wKgZO2hyj7GAH5mzAACTE3NMmQs603.jpg

MQTT发送文本

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

wKgZPGhyj7GAQeDdAACJmhFx-uw625.jpg

wKgZO2hyj7KAS-afAABmbMzeTaU869.jpg

wKgZPGhyj7KAHlrPAAAQXxMVxSg239.jpg

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

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

操作示例

wKgZO2hyj7OAYk9FAAAwvtO0bNk426.jpg

创建服务器调试工具。

wKgZPGhyj7OAMczzAAB4m_nJUUQ275.jpg

GS MQTT客户端连接该服务器

wKgZO2hyj7OATcrsAAEQ0C9rG7A870.jpg

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

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

wKgZPGhyj7SABFxJAAAh0TXI2t4561.jpg

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

wKgZO2hyj7SAKmCPAAARUltLvP0371.jpg

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

wKgZPGhyj7WAPjd2AAARo3BEkk0619.jpg

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

步骤五、点击执行按钮

wKgZPGhyj7WAPjd2AAARo3BEkk0619.jpg

wKgZO2hyj7WAdOxpAADAZwvZO5I556.jpg

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

wKgZPGhyj7WAAX-gAACi6j0uEtM824.jpg

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

wKgZO2hyj7aAO4hUAAA0Pg4P1aI613.jpg

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

步骤六、使用引用方式

wKgZPGhyj7aAO_SYAABXvkrq570530.jpg

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

步骤七、引用主题方式

wKgZPGhyj7aAfIsZAACiv6SOpuw337.jpg

步骤八、引用消息方式

wKgZO2hyj7eARSg0AAAkRI0WdTw248.jpg

wKgZPGhyj7eAVplRAALiZaOC1rQ362.jpg

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

MQTT接收文本

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

wKgZO2hyj7iAe-ErAACLSPVv50Q002.jpg

wKgZPGhyj7iAaF0fAABQ-o5v4ko550.jpg

wKgZO2hyj7iAMKC3AAAYjGZMky4457.jpg

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

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

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

操作示例

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

wKgZPGhyj7mAEKb-AAPidRfShuc458.jpg

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

wKgZO2hyj7mASjrXAAAiRh-juHw955.jpg

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

wKgZPGhyj7qADtSbAAAM_PUV5Hw642.jpg

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

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

wKgZO2hyj7qATrvZAAAUDt38AyI732.jpg

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

wKgZPGhyj7uAD-zAAAGDJSkhuqo883.jpg

3000毫秒内未接收到文本

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

wKgZO2hyj7uAB4z5AAIsDPkiRoQ848.jpg

wKgZPGhyj7uAA06JAAJb5wDGBck579.jpg

主动执行接收

wKgZO2hyj7yAKWd9AAIQ5ds5gy0483.jpg

wKgZPGhyj7yAZBHIAAKNrIoDWpA552.jpg

被动接收

wKgZO2hyj72Ae3STAACkdqrcZLY299.jpg

被动接收

MQTT关闭

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

wKgZPGhyj72AcsdsAAB9XQpuA3g997.jpg

wKgZO2hyj76AaYxiAABBQ9t7s-Y376.jpg

wKgZPGhyj76ARvDMAAANReqLggA691.jpg

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

操作示例

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

wKgZO2hyj7-AWAVrAAAN1w9FrYI995.jpg

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

wKgZPGhyj7-AJIxdAAAkw0yEV7Y954.jpg

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

wKgZO2hyj8CAHYILAAAPA4mtp9Q651.jpg

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

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

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

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

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

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2939

    文章

    47324

    浏览量

    407936
  • MQTT
    +关注

    关注

    5

    文章

    721

    浏览量

    24786
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MQTT网关支持5G通信吗

    MQTT网关可以支持5G通信 ,且在实际应用中,5G与MQTT协议的结合为物联网领域带来了显著优势,以下为具体分析: 一、5G与MQTT协议的结合优势 高速数据传输 :5G网络提供了极高的数据传输
    的头像 发表于 12-08 11:13 24次阅读

    ESP32-C3 mqtt操作实践

    。 2.环境搭建 主要是在Ubuntu20.04上进行开发,首先需要安装相关的开发环境,这一部分已经在前面的文章中介绍过了,现在主要介绍下面的步骤。 首先搭建mosquitto的mqtt服务器。下面用
    发表于 10-31 06:52

    使用paho-mqtt里例程连接服务器失败怎么解决?

    【rt-thread】【paho-mqtt】最近由于学习需要,了解了关于rt-thread软件包paho-mqtt的使用,但是使用官方例程时,出现连接不上服务器的情况。具体报错如下: msh
    发表于 09-18 06:38

    MQTT_协议中文资料

    电子发烧友网站提供《MQTT_协议中文资料.pdf》资料免费下载
    发表于 09-02 16:19 0次下载

    物联网MQTT网关是什么

    物联网MQTT网关是一种采用MQTT物联网协议的智能设备或软件组件,其核心功能是连接不同通信协议的物联网设备与消息代理服务器,实现设备间的数据交换与集中管理,同时支持边缘计算、安全防护和协议转换
    的头像 发表于 08-29 15:24 656次阅读

    GraniStudio :MQTT 协议的深度剖析

    在工业物联网(IIoT)的通信协议体系中,MQTT(Message Queuing Telemetry Transport)凭借其轻量级、发布 - 订阅模式和低带宽占用等特性,成为连接边缘设备与云端
    的头像 发表于 08-04 09:48 810次阅读
    GraniStudio :<b class='flag-5'>MQTT</b> 协议的深度剖析

    MQTT网关具备边缘计算功能吗?有什么功能?

    现代MQTT网关通常具备边缘计算功能,尤其是为适应物联网(IoT)场景中低延迟、高可靠、带宽优化等需求而设计的新一代网关。传统MQTT网关的核心功能是协议转换(如将Modbus、ZigBee等设备
    的头像 发表于 07-15 15:01 579次阅读
    <b class='flag-5'>MQTT</b>网关具备边缘计算功能吗?有什么功能?

    精通 MQTT:消息队列遥测传输指南!

    引言MQTT(消息队列遥测传输)是一种轻量级消息协议,专为低带宽、高延迟和不可靠的网络环境设计。它广泛应用于物联网(IoT)应用、消息系统以及实时数据通信领域。本指南深入探讨了MQTT的工作原理
    的头像 发表于 06-16 16:56 830次阅读
    精通 <b class='flag-5'>MQTT</b>:消息队列遥测传输指南!

    MQTT 回调处理程序中遇到了随机 MQTT 断开连接的问题,怎么解决?

    MCU:CYW55913。 MQTT Broker 端点:Amazon AWS 云。 保持活动超时:60 秒 ping 响应超时:5 秒 我们在 MQTT 回调处理程序中遇到了随机 MQTT
    发表于 06-05 07:14

    如何在MQTT中发布和订阅实体

    MQTT中发布和订阅实体(主题)是MQTT通信的核心操作,下面将详细介绍其原理、步骤以及示例代码,帮助你全面理解这一过程。 一、MQTT发布与订阅的基本概念 发布(Publish):
    的头像 发表于 05-20 17:21 1018次阅读

    MQTT为何成为物联网协议

    的优势,以下为你详细介绍: 轻量级特性,适配资源受限设备 协议头开销小 :MQTT协议头非常简洁,相比其他协议,它在数据传输时添加的额外信息极少。例如,在一个简单的物联网设备向服务器发送数据的场景中,使用MQTT协议传输一条包含
    的头像 发表于 05-20 09:54 605次阅读

    MQTT物联网平台有哪些?有哪些功能?

    MQTT(Message Queuing Telemetry Transport)是一种基于客户端-服务器架构的发布/订阅模式的消息传输协议,它广泛应用于机器与机器的通信(M2M)以及物联网环境
    的头像 发表于 03-15 14:23 1222次阅读
    <b class='flag-5'>MQTT</b>物联网平台有哪些?有哪些功能?

    MQTT测试程序上机实验

    mqtt_test、paho.mqtt.c.tar.bz2放到Ubuntu上同一个目录下。
    的头像 发表于 02-11 13:35 1088次阅读
    <b class='flag-5'>MQTT</b>测试程序上机实验

    基于MQTT协议的车云通信设计

    随着智能汽车的发展,车云通信的功能场景及数据量也逐渐增多,具有轻量化、可靠性等特点的MQTT协议成为很多OEM车云通信协议的选择。本文主要介绍。 什么是MQTTMQTT(Messa
    的头像 发表于 01-08 10:24 1721次阅读
    基于<b class='flag-5'>MQTT</b>协议的车云通信设计

    百问MQTT协议分析 - MQTT简述及协议报文格式组成

    16.1 mqtt协议介绍 16.1.1 概述 ​MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好
    发表于 12-13 09:29