首页

介绍,工作,优势,在物联网中的实现

物联网在过去十年左右的大部分时间里都是一个热门话题。它是一个由许多设备组成的网络,这些设备可以相互通信并控制许多事情。通信部分是MQTT发挥作用的地方。它有助于以发布-订阅模式在“物联网”设备之间发送/接收消息。但是MQTT是什么?它是如何工作的?为什么我们在物联网项目中使用MQTT ?我们将在本指南中得到关于MQTT的所有这些问题的答案。

在我们继续讨论之前,需要注意的是,本指南只是MQTT背后的理论,而不是实际实现。如果您感兴趣,我们可以制作一些涉及MQTT的物联网项目,其中包括如何设置MQTT。

MQTT是什么?

物联网是计算设备、传感器、执行器、无线通信和通信协议的简单组合。物联网的目标是将一组设备(称为“物”)连接到互联网上,并在它们之间交换数据。

现在想象一下,我们用一堆连接到互联网的设备建立了一个物联网系统,想要“近乎实时”地发送和接收数据。我们可以使用基于HTTP的服务器-客户端风格的通信系统。但是如果我告诉您有一个专门为这类需求设计的协议呢?它被称为MQTT。

MQTT是消息队列遥测传输的缩写。它是一个轻量级的消息传递协议,工作在TCP/IP之上的发布-订阅模型(类似于HTTP的服务器-客户端模型,但略有不同)上。

当我们说“轻量级”时,我们指的是比HTTP更小的代码占用,也需要更少的网络带宽。

IBM最初将MQTT开发为一种简单可靠的机器到机器(M2M)通信协议。但多年来,它慢慢成为嵌入式系统,特别是物联网项目不可或缺的一部分。

下面是MQTT的一些重要特性:

  • 它使用发布-订阅模型进行一对多通信。
  • 一个非常轻量级的协议,具有很小的代码占用。传输消息和协议交换的开销很小。
  • 这是一种不需要知道消息的实际内容就能工作的消息传递协议。
  • MQTT支持面向事件的消息传递,并提供异步、双向和低延迟的消息传递。
  • 它支持“总是连接”和“有时连接”的设备。
  • MQTT的响应性是“接近实时的”消息传递。
  • 即使在缓慢、不可靠或脆弱的网络上也可以发布数据。
  • 它提供数据安全和隐私。这一点非常重要,因为数据是通过互联网传输的。
  • 适用于电池供电和低功率设备。

MQTT客户端代理和其他重要术语

为了理解它的工作原理,我们需要首先熟悉与MQTT相关的一些重要术语。

应用程序消息

这是MQTT协议在网络中携带的实际数据(有一些开销)。开销可以是主题名称(稍后详细介绍)、QoS(服务质量)信息等。

MQTT客户端和代理

我们前面说过MQTT协议类似于HTTP的服务器-客户端模型。这是事实,但有一些注意事项。首先,我们要看看客户的情况。MQTT客户机是运行MQTT库并通过internet连接到服务器(准确地说是代理)的设备(或程序)。

如果客户端希望将应用程序消息发送给另一个客户端,它不会直接执行,而是将其发送给Broker, Broker然后检查消息的真实性并将其发送给适当的客户端。

MQTT Broker是一种设备(或程序),充当发布关于主题的消息的客户机和订阅该主题的客户机之间的中间设备。

除了对客户端进行身份验证之外,代理还负责管理订阅、会话和连接。MQTT客户端和代理可以是微型微控制器、树莓派、ESP8266、ESP32甚至是大型服务器的任何东西。

主题

我们前面提到了“主题”,但是MQTT中的主题到底是什么呢?Topic是与消息相关联的标签,通常是整个应用程序消息的一部分。每个订阅者客户机必须订阅主题,当且仅当客户机有匹配的订阅时,代理从发布者客户机发送消息。

例如,如果有一个名为“天气”的主题,当客户端发布带有该主题的消息时,所有订阅了该主题的客户端都将收到该消息。

可以有多个级别的主题,每个级别的主题用正斜杠分隔。此外,主题是区分大小写的。

订阅

它是客户端对特定主题甚至QoS的安排。客户端必须订阅主题才能接收关于该主题的消息。所有订阅都对一个会话有效。

主题过滤

客户端可以使用主题筛选器同时订阅多个主题。它可以包含通配符,如' + '和' # '。

会话

会话表示客户端(发布者或订阅者)和代理之间的成功交互。

控制封包

它是14个控制包中的一个信息包。PUBLISH也是一个控制包,负责发布应用程序消息。

发布-订阅

至此,您可能对MQTT的发布-订阅模型有了一个清晰的概念。在这种情况下,客户机不直接发送消息。客户机将关于主题的消息“发布”到代理。如果任何客户端“订阅”了该主题,那么它才会收到该消息。

MQTT是如何运作的吗?

现在让我们看看MQTT实际上是如何工作的。它是一种工作在TCP/IP之上的客户端-服务器消息传输协议。在常规的客户机-服务器模型中,通信仅限于客户机和服务器,其中客户机发起通信,服务器(本质上存储数据)用数据进行响应。

但物联网(和其他类似应用)的要求是,数据必须在多个设备之间传输,可以是单向、双向或一对多。

这就是MQTT的发布-订阅模型派上用场的地方。在这个模型中,客户端不直接将数据发送给其他客户端,而是希望就某个特定主题发送数据的客户端将消息“发布”给代理。

如果有客户端“订阅”了该主题,那么代理将把消息发送给所有这些客户端。在这里,代理充当中介而不是主要数据提供者(这是常规客户机-服务器模型中服务器的工作)。

此模型中没有地址。所有的交流都是基于主题。客户机发布关于主题的消息,如果订阅了该主题,则客户机接收该消息。Broker负责订阅主题。

如果发布者由于网络问题或任何其他原因无法发送消息,它可以向订阅客户端发送“最后的遗嘱消息”,说明这是最后的消息。如果代理和发布者之间的连接失败,那么代理将向所有订阅者发送最后一条消息。

MQTT在家庭自动化和物联网项目中的重要性

正如我们前面提到的,IBM最初开发MQTT是作为石油和天然气行业中用于机对机(M2M)通信的轻量级消息传递协议。由于它的小代码大小和可靠性,即使在薄弱的网络,它慢慢成为物联网项目不可或缺的一部分。

  • 容易实现:MQTT非常容易实现。与HTTP相比,它的代码大小非常小。这意味着内存需求和网络需求都非常适中。对于树莓派、ESP32等设备,开始使用MQTT也很简单。
  • 多种沟通方式:MQTT使用发布-订阅通信模型,其中发布者发布关于主题的消息,如果订阅者订阅了该消息,那么它将接收该消息。没有直接的客户端到客户端通信,所有数据都通过代理流动。您可以实现一对一、双向以及一对多的沟通方式。
  • QoS:MQTT的服务质量(Quality of Service)或QoS确保代理一旦收到消息,即使网络出现问题,也会将消息传输到适当的客户机。
  • 容易扩展:小型物联网实现的好处是,您可以通过添加更多的设备轻松扩展操作。MQTT协议可以很容易地适应这种伸缩性,因为不需要存储地址或名称,而且一切都以主题发布和主题订阅的方式工作。

MQTT的优点

除了物联网项目,MQTT还可以用于其他几个领域,如:SCADA(监控和数据采集)系统、POS(销售点)机器、交通监控、家庭自动化等。以下是MQTT的优点。

  • 简单的沟通
  • 能非常有效地传输信息吗
  • 更少的代码开销和更小的代码大小
  • 较少的网络带宽要求
  • 发现设备/服务非常容易,出错的几率更小
  • 您可以在不干扰网络的情况下方便地修改系统
  • 在发布-订阅模型中,没有即时传递消息的轮询
  • 您可以轻松地扩展系统,以包含其他设备
  • 完全适用于远程监控、传感和控制
  • 是否有很好的安全措施来保护数据

结论

这是MQTT入门指南中的内容。这是一个非常有趣的话题,特别是如果您正在从事物联网项目或家庭自动化系统(或其他类似的应用程序)。如果你喜欢DIY项目,那么你可以使用树莓派,Arduino, Beaglebone Black, ESP8266, ESP32或其他类似的板与互联网连接,使用MQTT进行通信(从传感器发送数据或控制电机)。

我们学习了什么是MQTT、它是如何工作的、它的基本结构和元素以及术语。我们还看到了该协议的一些优点。如果您感兴趣,我们可以通过做更多关于这个主题的项目来更深入地研究MQTT的世界。

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map