MQTT是一个物联网传输协议,专门针对物联网开发的轻量级传输协议。 (需要一个中间件)
基于客户端-服务器的 轻量级的 消息发布\订阅的传输协议,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。
工作在TCP/IP协议上,对 低功耗广域网络(即低带宽,延迟高,网络不佳) 做了特殊优化,可使用极小带宽 无线网络 通信低功耗 必要时保证高可靠性
主流的MQTT是基于TCP连接进行数据推送到,但是同样有基于UDP的版本,叫做MQTT-SN。
使其能够适应各种物联网应用场景。拥有各个平台和设备上的客户端,已经形成初步的生态系统
协议原理
实现MQTT协议需要客户端和服务端通讯完成
分为 topic和 payload
topic (主题信息) 可以理解为 邮件发送指定的接收人,订阅者订阅后会接收到主题的推送
payload (载荷信息) 可以理解为 邮件发送指定的内容
网络传输与应用消息
MQTT会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。
当应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题名(Topic)相关连。
优点
1 MQTT更加简单
使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,相对于其他协议,开发更简单
2 MQTT网络更加稳定
工作在TCP/IP协议上,由TCP/IP协议提供稳定的网络连接
3 轻量级
小型传输,开销很小(固定长度的头部式2字节),协议交换最小化,以降低网络流量,适合低带宽,数据量较小的应用
4 易于实现
MQTT协议的服务端程序已经非常成熟,PHP,JAVA,Python,C,C#都可以向MQTT发送相关信息
5 开放性
源代码开放,都可以用,也进一步推动了MQTT的发展,百度云、阿里云、中国移动onenet等几乎所有的开放性物联网平台都支持MQTT。
总结
MQTT是一种简单、稳定、开放、轻量级易于实现的消息协议,在物联网的应用下的信息采集,工业控制,智能家居等方面具有广泛的适用性;
特点
使用 发布 / 订阅 的订阅消息模式,提供一对多的消息发布解除应用程序耦合(如下图)(一服务端 多客户端(无论硬件或软件))
对负载内容屏蔽的消息传输
使用TCP/IP提供网络连接
有三种消息发布服务质量:
- 有三种消息发布服务质量:
- “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
- “至少一次”,确保消息到达,但消息重复可能会发生。
- “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
- 小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
- 使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。
以 u-blox 物联网通信即服务产品组合为例(下图),u-blox MQTT Anywhere、MQTT Here 和 MQTT Now三款产品基于可扩展的高性能MQTT服务器与数据流管理器,彼此相辅相成且互为补充,能有效帮助您缩短产品开发周期,简化物联网设备与企业间的数据通信。
支持MQTT协议的产品:
E810系列:
E810-DTU(1RS1E)、
E810-DTU(RS232)-V2.0、
E810-DTU(RS485)-V2.0、
E810-DTU-V2.0、
E810-TTL-ETH02;
E840系列:
E840-TTL-4G05、
E840-DTU(4G-05)、
E840-TTL-4G04、
E840-DTU(4G-04)、
E840-TTL-4G02、
E840-DTU(4G-02);
其他型号:
EA01-S、E103-W02、E103-W02DTU。