MQTT是什么?

  • 内容
  • 评论
  • 相关

本文将介绍消息传递协议 MQTT,以及MQTT的主要优点和它的工作方式。MQTT的全称是 Message Queuing Telemetry Transport,即消息队列遥测传输。 MQTT是一种基于 TCP/IP internet协议工作的遵循ISO标准的消息传输协议,主要用于在不可靠的网络上连接传感器。

MQTT的发展

Andy Stanford-Clark和Arlen Nipper早在1999年就创立了该协议。现在,他们正在开发一个通过不可靠的卫星网络监控远程石油管道的系统,因此,需要一个低功耗、易于实现且非常可靠的消息传递系统。自从MQTT开发创建以来,它已经成为许多物联网系统中使用的关键的消息传输协议,成为了家庭自动化或远程气象站的理想选择。

MQTT的主要优势

效益性

MQTT消息具有较小的带宽,设计用在低功耗系统上时,使得它成为采用电池供电传感器的理想选择。使用MQTT作为消息传递协议可以延长项目的电池寿命。

易于实现

在远程传感器系统上实现MQTT消息非常简单。由于大多数复杂的工作都是在中央服务器上实现的,所以远程系统可以在其他地方利用它的资源。

可靠性

MQTT用于任务关键型传感器系统,其中任何发送的消息都必须得到确认和接收。MQTT允许您通过声明消息的服务质量级别来定义消息的重要性。在项目中使用MQTT可以让您放心地接收所有重要消息。

通用性

该协议允许发送的消息包括数字、单词、甚至是可扩展标记语言(XML)或JavaScript对象(JSON)中的任何类型的文本数据。

MQTT是如何工作的

MQTT是基于发布和订阅的原则工作的,它由两部分组成:代理程序和客户端。

MQTT组成
MQTT组成

任何MQTT系统的中心都是一个称为代理的应用程序,它可以接收和传输MQTT消息。当代理程序从客户端接收到消息时,它可以将消息专题发送到订阅该消息的任何其他客户端。一个常用的MQTT代理程序是 Mosquitto,它可用于许多平台,如Windows、Linux 或者 Raspberry Pi,它甚至还有一个任何人都可以使用的在线代理

MQTT系统的第二个组件是客户机,它连接到代理程序,可以发布或订阅MQTT消息。对于基于esp8266的项目,通常都会把 PubSubClient 用作MQTT客户机的基础程序。

MQTT消息按专题分类,专题是编码到每个消息中的字符串。客户端订阅专题,当代理机接收到消息时,它将把消息发送给订阅该专题的任意客户端。MQTT专题具有类似于文件系统的结构,并使用 “/ ” 作为分隔符。例如:

  • home/kitchen/light
  • home/lounge/lamp
  • home/lounge/light

通配符(#)可用于订阅某个级别上的所有消息。例如,一个订阅了home/lounge/#的客户将同时收到home/lounge/lamp和home/lounge/light消息。订阅了home/#的客户端将接收上述所有订阅。

MQTT提供了更简单的消息传递系统

MQTT可以为制造商提供功能强大、易于实现和可靠的消息传递系统。对于任何需要在设备之间进行通信的项目(如家庭监控系统)来说,它都是理想的选择,并且可以很容易地在后期将其他传感器合并到一起。例如,把 ESP8266 作为客户机,把安装了 Mosquitto 的树莓派作为代理,以此组成的MQTT系统。