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

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

3天内不再提示

MQTT通信协议和工具包简介

jf_NKOETB7n 来源:LabVIEW的编程之道 2023-11-28 09:24 次阅读

一、MQTT通信协议和工具包简介

1、MQTT通信等定义:

消息队列遥测传输( 英语:Message Queuing Telemetry Transport , MQTT )是 ISO 标准 (ISO/IEC PRF 20922) 下基于 发布(Publish)/订阅(Subscribe) 范式的消息协议,可 视为“资 料 传递 的 桥梁” 。----摘录维基百科

2、MQTT通讯示意图

673eae68-8d7a-11ee-939d-92fbcf53809c.png

上图是MQTT的实际使用案例

将上图简化后的系统结构图如下图:

67589e72-8d7a-11ee-939d-92fbcf53809c.png

3、MQTT系统组成

系统包含两个部分:

客户端(Client):需要发布或订阅消息的终端,可以是智能终端,传感器,或者是数据库,主要功能如下:

(1)发布其他客户端需要订阅的信息

(2)订阅其它客户端发布的消息;

(3)退订或删除应用程序的消息;

(4)断开与服务器连接。

服务器:(Server/Broker):专门用于进行设备注册和消息转发,称为"消息代理"(Broker),具体有如下功能:

(1)接受来自客户的网络连接;

(2)接受客户发布的应用信息;

(3)处理来自客户端的订阅和退订请求;

(4)向订阅的客户转发应用程序消息。

4、MQTT通信方式:

Client之间的通讯可以是一对一,一对N,也可以是N对一。

二、MQTT通信范例

1、MQTT通讯底层方式

范例提供了2种通讯方式,TCP/IP和websocket,底层都是TCP/IP,不过websocket是对TCP/IP的封装。

2、MQTT所需工具包

具体安装包如下图,在VIPM里面安装相应的工具包和附加工具包,共享的代码也包含离线安装包。

679cdf56-8d7a-11ee-939d-92fbcf53809c.png

上面工具包里包含了Client和Broker,通过依赖注入的形式,改变通信类型,提供的范例是TCP/IP和websocket两套通信模式。

67ad271c-8d7a-11ee-939d-92fbcf53809c.png

其中还可以使用通用的mqtt 调试软件mosquito调试TCP/IP,但是这个不能调试websocket客户端。打开命令为 mosquito -d -v.这个调试工具在代码的共享,也可到网上下载。

67bdd904-8d7a-11ee-939d-92fbcf53809c.png

三、MQTT通信范例

1、软件扩展

为了监听底层通信报文,在项目中创建了两个类TCP Pro和WebSocket Pro分别继承Connect Tcp和WebSocketsConnect,分别添加一个Name属性并重写Read incoming Bytes和Write Incoming Biytes,使用了我上一章介绍的工具,Consol FGV对实时报文进行监控。

67e1bf36-8d7a-11ee-939d-92fbcf53809c.png

重写读者类,监听报文

67f84eea-8d7a-11ee-939d-92fbcf53809c.png

680d4d22-8d7a-11ee-939d-92fbcf53809c.png

重写后通信接口UML关系图:

6821711c-8d7a-11ee-939d-92fbcf53809c.png

2、为客户端添加自动断开后自动停止事件,这里将库里的私有方法设置成公共方法,然后使用Close Seccion事件来自动停止,如果不想改变工具包,可以删除相应的代码不影响整体功能。

将私有文件夹设置乘公共文件夹

682f0c46-8d7a-11ee-939d-92fbcf53809c.png

3、TCP MQTT范例演示

注意先启动服务器再启动客户端

启动Broker

68414b9a-8d7a-11ee-939d-92fbcf53809c.png

启动Clent1

6857dcac-8d7a-11ee-939d-92fbcf53809c.png

启动Clent2

68846632-8d7a-11ee-939d-92fbcf53809c.png

服务端可以看到已经启动了两个客户端。

68988b80-8d7a-11ee-939d-92fbcf53809c.png

发布V1消息,订阅消息V2

68b219d8-8d7a-11ee-939d-92fbcf53809c.png

发布V2消息,订阅消息V1

68d09de0-8d7a-11ee-939d-92fbcf53809c.png

同时订阅V1,V2两个消息

68ec551c-8d7a-11ee-939d-92fbcf53809c.png

可以自行尝试下取消订阅相关消息

4、websocket MQTT范例演示

注意先启动服务器再启动客户端

启动client1

6905f760-8d7a-11ee-939d-92fbcf53809c.png

启动client2

692462b8-8d7a-11ee-939d-92fbcf53809c.png

websocketBroker

693c662e-8d7a-11ee-939d-92fbcf53809c.png

​可以尝试订阅和取消订阅相关消息

5、练习:

是否可以使用这个工具包,开发一个建议的局域网聊天软件,这样可以更好的学习这个工具包的用法:)。

四、MQTT通讯原理简介

1、MQTT启动和连接

6965b6a0-8d7a-11ee-939d-92fbcf53809c.png

1.1、首先启动服务器,服务器启动后会启动一个异步线程监听是否有客户端连接到服务器端口

1.2、启动客户端,链接到服务器后向服务发送链接信息,服务端检测服务信息正确后返回连接信息,如果不正确就会断开连接。

1.3、客户端长期没有给服务发数据时需要向服务器发送心跳消息,如果不发送超时,服务器会断开客户端。

LabVIEW的范例中的服务器没有这个功能,mosquito服务器有这个功能,需要了解的读者可以自行尝试

2、MQTT通信方式

697c3934-8d7a-11ee-939d-92fbcf53809c.png

1.1、客户端需要某个主题A消息时向服务器订阅主题A,当客户端0向服务器发送主题A时,订阅了主题A的客户端都会收到客户端0的主题,没有订阅的客户端不会收到主题A。

1.2、当某个客户端不需要主题A时可取消订阅主题A。

五、需要安装的软件、工具包和库

1、LabVIEW2015中文版

2、mqtt工具包集合

3、mosquitto服务器安装包

审核编辑:汤梓红

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

    关注

    2526

    文章

    48110

    浏览量

    740114
  • 通信协议
    +关注

    关注

    28

    文章

    739

    浏览量

    39749
  • 客户端
    +关注

    关注

    1

    文章

    282

    浏览量

    16340
  • MQTT
    +关注

    关注

    5

    文章

    538

    浏览量

    21978

原文标题:LabVIEW的编程之道-MQTT工具包使用详解

文章出处:【微信号:LabVIEW的编程之道,微信公众号:LabVIEW的编程之道】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通信协议解读:CoAP/LWM2M协议和MQTT协议

    本文将分别解读CoAP/LWM2M协议和MQTT协议,希望能帮助您了解这些协议,并选择最适合您的设备的通信协议
    的头像 发表于 12-04 14:09 1.2w次阅读
    <b class='flag-5'>通信协议</b>解读:CoAP/LWM2M<b class='flag-5'>协议和</b><b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    RK3568-MQTT通信协议案例

    RK3568-MQTT通信协议案例
    的头像 发表于 01-19 15:31 1131次阅读
    RK3568-<b class='flag-5'>MQTT</b><b class='flag-5'>通信协议</b>案例

    TLT507-MQTT通信协议案例

    TLT507-MQTT通信协议案例
    的头像 发表于 01-26 10:06 391次阅读
    TLT507-<b class='flag-5'>MQTT</b><b class='flag-5'>通信协议</b>案例

    促进ARM嵌入式发展的工具包简介

    促进ARM嵌入式发展的工具包简介
    发表于 07-31 21:55

    TCP通信协议-Labview上位机

    现在用单片机进行信息采集,通过GPRS模块上传到PC,用Labview做上位机,TCP通信协议,想请教一下,TCP通信协议和Modbus TCP通信协议有什么不同?
    发表于 12-10 08:58

    哪位大神用过labview的MQTT工具包,想连接onenet平台。

    安装了MQTT工具包不会用,有没有大神指点一下
    发表于 05-27 15:10

    全志科技T3开发板(4核ARM Cortex-A7)——MQTT通信协议案例

    本文主要介绍基于T3处理器的MQTT通信协议开发案例,讲解内容主要包括了MQTT通信协议简介、概述、应用场景以及Mosquitto
    发表于 06-09 14:55

    全志T3+Logos FPGA开发板——MQTT通信协议案例

    、FPGA、ROM、RAM、电源、晶振、连接器等所有器件均采用国产工业级方案,国产化率100%。给大家详细讲解嵌入式行业中,常使用到的MQTT通信协议案例,分别涵盖了MQTT通信协议
    发表于 03-31 15:35

    mqtt-v3.1.1版协议

    mqtt-v3.1.1版协议,英文版,时间2014.10.29,物联网通信协议MQTT
    发表于 10-29 11:22 0次下载

    工业控制系统中的通信协议和关键组件

    了解用于工业控制应用的器件。本视频通篇详细介绍工业控制系统中的通信协议和关键组件,并提供应用示例。
    的头像 发表于 05-30 10:10 1435次阅读
    工业控制系统中的<b class='flag-5'>通信协议和</b>关键组件

    【理论】通信的硬件层协议和软件层协议

    众所周知通信协议就是一种数据传输的协议规范,从软硬件层面可以分为硬件层通信协议和软件层通信协议,本文通过对通信的硬件层
    发表于 12-05 15:51 8次下载
    【理论】<b class='flag-5'>通信</b>的硬件层<b class='flag-5'>协议和</b>软件层<b class='flag-5'>协议</b>

    MODBUS通信协议学习(一):协议简介

    目录前言MODBUS协议简介MODBUS通信格式信息帧格式前言近期需要制作一个MODBUS/RTU转MODBUS/TCP 的网关。首先需要了解一下MODBUS通信协议。这篇文章在学习过
    发表于 01-14 13:24 21次下载
    MODBUS<b class='flag-5'>通信协议</b>学习(一):<b class='flag-5'>协议</b><b class='flag-5'>简介</b>

    S7通信协议介绍 s7协议和profinet协议区别

    S7协议和Profinet协议都是工业自动化领域中常用的通信协议,其中S7协议是传统的工控领域常用的通信协议,而Profinet是近年来出现
    发表于 05-08 16:19 1.9w次阅读

    全志T3开发板 ARM CortexA7——MQTT通信协议

    本文主要介绍基于T3处理器的MQTT通信协议开发案例,讲解内容主要包括了MQTT通信协议简介、概述、应用场景以及Mosquitto
    发表于 06-09 14:50 6次下载

    mqtt协议和tcp协议区别

    低带宽和高延迟的网络环境,尤其在物联网环境中表现优秀。而TCP协议是面向连接的、可靠的、基于字节流的传输层通信协议,主要用于互联网和局域网中的数据传输。 2. 连接方式:MQTT协议
    的头像 发表于 04-01 09:15 228次阅读