MQTT协议介绍与应用

这篇具有很好参考价值的文章主要介绍了MQTT协议介绍与应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。

MQTT协议是当今世界上最受欢迎的物联网协议。它已广泛应用于车联网、智能家居、即时聊天应用和工业互联网等领域。目前通过MQTT协议连接的设备已经过亿,这些都得益于MQTT 协议为设备提供了稳定、可靠、易用的通信基础。本篇将从最基础的知识开始,向您讲解MQTT协议的应用。通过本篇的学习,您将学会MQTT协议开发物联网项目。

目录

一、介绍

MQTT历史

MQTT版本

二、特性

三、应用

 MQTT服务器

客户端软件MQTT.fx

在MQTT.fx中接入巴法云


一、介绍

MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。

——MQTT协议规范中文版

以上MQTT(消息队列遥测传输)协议规范中的介绍很好地描述了MQTT的全部含义。它是一种很轻的通讯协议。与HTTP之类的协议相比,MQTT在通过网络传输数据时表现出众。该协议的另一个重要特点是易于在客户端实现。因此,MQTT成为了当今世界上最受欢迎的物联网协议。它已广泛应用于车联网、智能家居、即时聊天应用和工业互联网等领域。目前通过MQTT协议连接的设备已经过亿,这些都得益于MQTT 协议为设备提供了稳定、可靠、易用的通信基础。

MQTT历史

MQTT协议最初版本是在1999年建立的。该协议的发明人是的Andy Stanford-Clark和Arlen Nipper。

MQTT协议介绍与应用

 

MQTT协议发明人之一Andy-Stanford-Clark

MQTT协议介绍与应用

MQTT协议发明人之一Arlen Nipper

他们当时正在开发一个利用卫星通讯监控输油管道的项目。为了实现这个项目要求,他们需要开发一种用于嵌入式设备的通讯协议,这种通讯协议必须满足以下条件:

  • 易于实现
  • 数据传输的服务质量可控
  • 占用带宽小
  • 传输数据内容不可预知
  • 设备连接状态可知

从以上几点不难看出,MQTT 从诞生之初就是专为低带宽、高延迟或不可靠的网络而设计的。虽然历经几十年的更新和变化,以上这些特点仍然是MQTT协议的核心特点。但是与最初不同的是,MQTT协议已经从嵌入式系统应用拓展到开放的物联网(IoT)领域。

OASIS标准

MQTT协议介绍与应用OASIS(结构化信息标准促进组织)

 

2014年10月29日,MQTT成为OASIS(结构化信息标准促进组织)正式批准的通讯标准。OASIS是一个推进电子商务标准的发展、融合与采纳的非盈利性国际化组织。相比其他组织,OASIS形成了Web服务标准的同时也提出了安全的电子商务标准,同时在针对公众领域和特定应用市场的标准化方面也付出很多的努力。自1993年成立开始,OASIS已经发展成为了由来自100多个国家的600多家组织、企业。简言之,由众多业内专家组成的OASIS愿意为MQTT背书,组件该协议在物联网领域的重要性。

MQTT版本

目前MQTT主流版本有两个,分别是MQTT3.1.1和MQTT5。MQTT3.1.1是在2014年10月发布的,而MQTT5是在2019年3月发布的。由于MQTT3.1.1与MQTT5的时间相差了将近五年,且MQTT5的发布时间距今不久,因此在本文书写时(2020年10月),MQTT3.1.1仍然主流版本。

MQTT5是在MQTT3.1.1的基础上进行了升级。因此MQTT5是完全兼容MQTT3.1.1的。而MQTT5是在MQTT3.1.1的基础上添加了更多的功能补充完善MQTT协议。

MQTT5与MQTT3.1.1的关系

本教程将会重点针对MQTT3.1.1进行介绍,这么做有几点原因:

  1. MQTT3.1.1是MQTT5的基础,因此掌握了MQTT3.1.1后可以通过进一步学习掌握MQTT5的使用。
  2. 当前多种流行编程语言的MQTT客户端库仍然只支持MQTT3.1.1,而不支持MQTT5。
  3. 目前物联网环境中的大量设备仍然使用MQTT3.1.1协议而不支持MQTT5协议。

基于以上几点原因,本教程将以MQTT3.1.1作为重点讲解。毕竟掌握了MQTT3.1.1,对于学习MQTT5是没有任何浪费的。学会MQTT3.1.1后,如果想要使用MQTT5。那么无需重新学习MQTT5,而只要利用MQTT3.1.1的基础再学习MQTT5的新功能就可以了

MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。官网链接

MQTT是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件,以解决当前繁重的资料传输协议,如:HTTP。

MQTT作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

 

MQTT协议介绍与应用

 

二、特性

使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。

对负载内容屏蔽的消息传输。

使用TCP/IP提供网络连接。

有三种消息发布服务质量:

“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。

“至少一次”,确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。

小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。

使用Last Will和Testament特性通知有关各方客户端异常中断的机制。

Last Will:即遗言机制,用于通知同一主题下的其他设备发送遗言的设备已经断开了连接。

Testament:遗嘱机制,功能类似于Last Will。

实现方式

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。

其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:

Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);

payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

客户端可以建立与服务器的连接,订阅主题、接受消息、发布消息等

服务器可以是一个应用程序或一台设备。用于接受来自客户端的网络连接,接受发布的消息、转发订阅相关主题的客户端的消息等

三、应用

应用首先需要 MQTT服务器,其次需要客户端

然后要客户端跟服务器进行连接

连接之后就可以 订阅主题 收到该主题发布的信息 ,向特定主题发布信息

 MQTT服务器

这边我们的服务器选择巴法云,官方链接

MQTT协议介绍与应用

 注册后登录

MQTT协议介绍与应用

 点击MQTT设备云

MQTT协议介绍与应用

 新建主题(主题名只可由字母和数字组成)

客户端软件MQTT.fx

Windows下载地址

MQTT协议介绍与应用

选择最新版本下载

选择32位或者64位下载,这里我下载64位版本的:

MQTT协议介绍与应用

 安装好后主界面:

MQTT协议介绍与应用

通用设置界面 MQTT协议介绍与应用

 用户信息设置

MQTT协议介绍与应用

 安全证书设置

MQTT协议介绍与应用

 网络代理设置

MQTT协议介绍与应用

 遗嘱设置

MQTT协议介绍与应用

在MQTT.fx中接入巴法云

点击设置

MQTT协议介绍与应用

 点击加号新建MQTT协议介绍与应用

命名配置文件名称、输入服务器ip/域名:bemfa.com、输入服务器端口:9501、输入客户端ID(即巴法云中的私钥),保存即可

MQTT协议介绍与应用

 

点击connect连接服务器,输入主题,点击Subscribe订阅,即可查看接收到的消息

 MQTT协议介绍与应用文章来源地址https://www.toymoban.com/news/detail-415697.html

到了这里,关于MQTT协议介绍与应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年最新的OneNet版本使用介绍(MQTT协议)

    OneNet在2023年4月23日,对NB-IoT套件、MQTT套件、和物生活平台进行融合升级,升级后的新版OneNET物联网开放平台将通过统一的入口。 之前写的教程里都是以原旧版本的MQTT套件为主,现在升级新版本之后,之前的教程截图就不适用了。很多小伙伴不知道新版本的OneNet如何使用,当

    2024年02月06日
    浏览(42)
  • 基于OpenWrt使用MQTT物联网协议详解和应用

    大家好,这篇文章给大家介绍MQTT协议以及如何在OpenWrt系统中使用MQTT客户端和开发,并给出相关实例代码。 MQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,设计用于在低带宽和不稳定的网络环境中传输消息。它最初由IBM开发,用于连接远程设备和传感器到网络,

    2024年02月02日
    浏览(60)
  • 网络通信协议-HTTP、WebSocket、MQTT的比较与应用

    在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTP (超文本传输协议) HTTP  是最常见的协议之一

    2024年02月05日
    浏览(61)
  • MQTT协议在物联网环境中的应用及代码实现解析(一)

        MQTT协议全称是Message Queuing Telemetry Transport,翻译过来就是消息队列遥测传输协议,它是物联网常用的应用层协议,运行在TCP/IP中的应用层中,依赖TCP协议,因此它具有非常高的可靠性,同时它是基于TCP协议的客户端-服务器模型发布/订阅主题消息的轻量级协议,也是我们

    2024年02月16日
    浏览(61)
  • RTK 定位回传数据转内网(局域网)mqtt协议--- 格林恩德 CR102 RTK 针对无人机巡检应用

      先简单介绍一下CR102 格林RTK高精度设备,CR102接收机,集成高精度模组与4G, WIFI/蓝牙通信模组;双天线定位定向, 同时内置惯导, 输出加速度和姿态信息。支持4G/WIFI/蓝牙无线传输、 LAN网口传输;对外采用双12芯LEMO接口, 输出多样化数据:定位定向数据、 惯导数据、

    2024年02月08日
    浏览(130)
  • Modbus TCP/BACnet IP/MQTT物联网网关IOT-810介绍及其典型应用

    伴随着计算机技术以及互联网的发展,物联网这个概念已经逐渐进入我们的日常生活,例如智能泊车,智能家居,智能照明,智能楼宇等。智能楼宇是将传统的楼宇自控系统与物联网技术相融合,把系统中常见的传感器、设备、嵌入式计算机接入到网络,在云端统一进行管理

    2024年02月17日
    浏览(61)
  • 【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)

    MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,其最初由IBM开发,现已成为OASIS标准。MQTT协议常用于物联网领域,特别是在传输 低带宽、高延迟、不稳定网络 条件下的数据,例如传感器数据和遥测数据等。 MQTT协议的优点: 轻量级:

    2023年04月12日
    浏览(90)
  • 【基础】MQTT -- MQTT 协议详解

    本文内容针对 MQTT 3.1.1 版本,从连接、发布与订阅等方面对协议内容进行介绍。 MQTT 基础内容可以参看文章:【基础】MQTT – MQTT 协议基础 客户端 Client 在进行消息的订阅与发布之前,需要与 Broker 服务器进行连接: Client 向 Broker 发送 CONNECT 数据包; Broker 接收到 CONNECT 数据包

    2024年02月09日
    浏览(49)
  • MQTT(3):MQTT协议原理

    官方文档中对于MQTT协议包的结构有着具体的说明:http://mqtt.org/documentation 在MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下: (1)固定头(Fixed header)。存在于所有MQTT数据包中,表示数据包类

    2024年02月06日
    浏览(34)
  • 计算机网络 - 应用层http协议 - http报文格式介绍(1)

    本篇认识和理解应用层中的http协议,了解抓包工具并进行使用,认识请求报文与响应报文,了解报文中基本键值对意思例如:Set-Cookie, 状态码等,如有错误,请在评论区指正,让我们一起交流,共同进步! 本文开始 ① 根据输入的url,在域名系统DNS中进行解析获取对应的服务

    2024年02月12日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包