胆囊息肉

首页 » 常识 » 诊断 » 物联网协议MQTT
TUhjnbcbe - 2024/10/9 8:59:00

为什么使用MQTT协议?

MQTT(英语全称,MessageQueueTelemetryTransport),中文翻译过来就是遥测传输协议:其主要提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),属于物联网(InternetofThing)的一个传输协议。设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:

MQTT协议的优势是可以支持所有平台,它几乎可以把所有的联网物品和互联网连接起来。特别适合于网络代价昂贵,带宽低、不可靠的环境。能在处理器和内存资源有限的嵌入式设备中运行。

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

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

提供LastWill和Testament特性通知有关各方客户端异常中断的机制。

对消息中间件,估计大家不得不关心的就是消息的可靠性,也就是消息的发布服务质量,可喜的是,MQTT支持三种消息发布服务质量(QoS):

“至多一次”(QoS==0),消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

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

“只有一次”(QoS==2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。

支持一对多的消息订阅

MQTT协议,支持一对多的基于消息主题(Topic)的消息订阅,也就是一个MQTT的客户端,发送一条特定主题的消息,

能同时支持多个订阅者同时订阅。

下图是MQTT的发布/订阅消息模式(如下图)

MQTT客户端的语言支持

目前市面上的主流语言都支持。

Java

Javascript

C/C++

Python

Ruby

Objective-C

简单示例

MQTT协议主要是根据以下情况设计的:

M2M(MachinetoMachine),机器或设备间端到端通信,比如传感器之间的数据通讯。设备(Machine)中,例如传感器,硬件能力很弱,协议要考虑尽量小的资源消耗,比如计算能力和存储等。

根据MQTT的基础了解后并结合简单的架构,在这里做一个简单的示例图,可以更直观的理解MQTT协议的通信模型。MQTTBroker就选择EMQ作为示范。比如有1个温度传感器(1个Machine),1个移动设备,1个电脑,一个服务器(3个Machine),都可以得到或者显示温度传感器的温度值,需要先通过MQTT

协议subscribe(订阅)一个比如叫temperature的topic(主题)如下图:

图中移动设备,服务器,电脑需要先通过EMQsubscribe一个叫temperature的topic,当温度传感器publish温度数据,三个设备就可以收到了。

科丽图智慧清洁物联网云平台,就是使用了MQTT协议搭建的洗地车智慧清洁设备管理系统,实现了对设备的位置定位、监测设备的实时运行数据、实时控制设备等,可以提供碳刷故障、电池寿命期限、电池低压充电语音播报提醒、租赁到期等故障信息报警以及显示设备的每天工作记录信息提示等业内最新的人工智能技术。通过物联网,让每台清洁设备都成为一个信息终端。

1
查看完整版本: 物联网协议MQTT