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 唯一,防止连接互踢
合理规划主题命名,避免混乱
连接长时间保持,不必频繁重连
消息机制更灵活,低功耗设备友好
更适合物联网中“一对多”或“多对多”的场景

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值