醋醋百科网

Good Luck To You!

MQTT介绍(mqtt协议简介)

答复:

  1. 什么是MQTT

物联网(IoT)发展迅猛,传感器、网关、云平台之间如何高效通信成了核心问题。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的消息传输协议,近年来被广泛应用于智能家居、工业控制、车联网等场景。

MQTT 是一种基于发布/订阅(Pub/Sub)模式的轻量级消息协议,设计初衷是为低带宽、不稳定网络环境下的设备通信而生。它更像是广播电台:你订阅频道,谁在频道里发布了消息你就能收到,中间由一个叫做 Broker 的中间人来转发消息。

  1. MQTT 的三大角色

Broker(消息代理)

Broker 就是 MQTT 网络的大脑。客户端不互相通信,所有消息都通过 Broker 中转。主流 Broker 有

Mosquitto(轻量、适合嵌入式开发)

EMQX(高性能、支持百万连接)

HiveMQ、RabbitMQ(企业级)

Publisher(发布者)

发布消息的人,比如你家的温湿度传感器,每隔 5 秒发布一次环境数据。

Subscriber(订阅者)

对某类消息感兴趣的接收者,比如你手机里的 APP 订阅了“家里客厅/温度”,只要 Broker 收到这个主题的消息,就会推送给你。

  1. 核心机制-主题、保留消息

主题(Topic)

MQTT 的消息没有标题,靠的是主题(Topic)分类。

保留消息(Retained Message)

比如你家的空调状态是“开启”,订阅者上线时希望立刻知道当前状态,可以发布一条“保留消息”,Broker 会记住它,并在有人订阅时立刻推送。

  1. GraniStudio是否支持MQTT

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

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

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

操作示例

  1. 创建IP地址和端口号,一定要注意IP格式如:127.0.0.1 默认端口号:1883
  1. 如输入IP地址格式不正确将出现弹窗提示。
  1. 如需要客户端连接时需要输入正确的账号和密码,就需要开启高级设置,设置连接验证,用户名和密码。
  1. 设置完毕后点击开启服务即可。
  1. 打开MQTT客户端测试工具。注意客户端IP为自动分配
  1. 点击连接

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

  1. 服务器列表中已显示该客户端的连接
  1. 再次开启客户端连接该服务器

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

  1. 客户端1订阅主题,客户端2发布主题
  1. 客户端1显示客户端2发布主题。

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

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

MQTT客户端

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

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

操作示例

  1. 打开客户端算子后将默认配分客户端ID,无法修改
  1. 配置IP和端口号,IP格式:127.0.0.1 端口号:1883 默认端口号:1883
  1. 是否开启高级设置,开启高级设置需输入用户名和密码,,未开启将无需输入, 默认未开启。如果服务器开启用户名验证将开启。
  1. 点击连接按钮

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

  1. 点击断开按钮

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

  1. 订阅主题

服务器将显示客户端订阅列表。

使用客户端2发布该主题

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

  1. 发布主题消息

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

MQTT发送文本

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

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

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

操作示例

创建服务器调试工具。

GS MQTT客户端连接该服务器

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

  1. 引用MQTT 客户端 对象
  1. 使用自定义主题方式,输入文本 R1
  1. 使用自定义消息方式,输入消息 Test
  1. 注意事项主题和消息两者均不可为空。
  2. 点击执行按钮

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

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

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

  1. 使用引用方式

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

  1. 引用主题方式
  1. 引用消息方式

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

MQTT接收文本

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

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

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

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

操作示例

  1. 订阅客户端主题 T1
  1. 接收文本选择引用对象
  1. 是否打开高级设置,默认 未打开

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

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

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

3000毫秒内未接收到文本


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

主动执行接收

被动接收

被动接收

MQTT关闭

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

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

操作示例

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

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

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

  1. 为什么选择GraniStudio MQTT通信协议?

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

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

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

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

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

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言