物联网、智能家居、工业自动化或者设备联网的时候,你一定会经常看到一个词MQTT,很多初学者第一次看到这个名字时都会产生疑问。
MQTT是什么?MQTT是软件吗?MQTT是服务器吗?
MQTT和PLC有什么关系?MQTT到底是什么?简单来说MQTT是一种设备之间传递消息的通信协议。
就像人与人交流需要语言一样:中国人说中文、英国人说英语、德国人说德语。
而设备之间交流也需要一种共同语言,MQTT就是其中一种“设备语言”
它规定了:消息如何发送、消息如何接收、如何确认消息是否收到、如何保持连接只要设备都遵守MQTT协议,它们就可以互相通信。

为什么需要MQTT?
假设你家里安装了:温度传感器、湿度传感器、智能灯、手机APP等等。如果没有统一的通信方式,每个设备都要单独和其它设备建立连接。温度传感器 ←→ 手机温度传感器 ←→ 智能灯湿度传感器 ←→ 手机湿度传感器 ←→ 智能灯设备越来越多后,连接关系会变得非常复杂。于是MQTT提出了一种新的思路,所有设备都不要直接通信。统一找一个“中间人,温度传感器      │      ▼    中间人      ▲      │    手机APP这个中间人就是MQTT服务器(Broker)
MQTT服务器是什么?MQTT服务器也叫MQTT Broker(消息代理服务器)它就像一个大型快递中心。
例如:你想给朋友寄快递。
正常情况你 → 快递公司 → 朋友你不会亲自把包裹送到朋友家。而是交给快递公司,快递公司负责:收件、分类、转运、派送。

MQTT服务器也是一样,设备不直接把数据发送给其它设备,而是设备 → MQTT服务器 → 其它设备服务器负责转发消息
MQTT是如何工作的?MQTT采用一种特殊模式:发布(Publish)/订阅(Subscribe)模式。
听起来复杂,其实很简单,
假设有一个温度传感器。它每秒钟测量一次温度:25℃26℃25℃27℃它想把温度数据发送出去。于是它把数据发送到MQTT服务器:温度传感器 →  Publish → MQTT服务器这叫发布(Publish)
与此同时,手机APP对温度数据感兴趣,
于是告诉服务器:我要接收温度数据这叫订阅(Subscribe)。
然后服务器自动转发:温度传感器      │ Publish      ▼ MQTT服务器      │      ▼ 手机APP手机立刻收到数据。
什么是Topic(主题)?MQTT中有一个非常重要的概念:Topic(主题)你可以把它理解成:消息分类目录。例如home/├── temperature├── humidity└── light温度数据发送到:home/temperature湿度数据发送到:home/humidity如果手机只想看温度。那么只订阅home/temperature即可。这样服务器就知道哪些消息应该发给哪些设备。设备上云

总结MQTT是一种让设备互相交流的通信协议,而MQTT服务器则像一个消息中转站。设备把消息发送给服务器,服务器再把消息转发给需要接收这些消息的设备。正因为这种设计,MQTT能够轻松连接成千上万台设备,因此成为当今物联网领域最重要、最流行的通信协议之一  

更多推荐