通信是物联网(IoT)应用中不可或缺的一部分,而针对不同的应用场景,通信需求也不尽相同,从中也能捕捉到这些场景对网络环境的特殊要求。在如今的工业4.0时代下,工厂生产线设备需要实时响应中央控制器的命令,这就促使该应用场景对超低网络延迟有着更高的要求。另一方面,土壤状况检测远程传感器一般都是由电池供电,但由于传感器在较长时间内都处于待机状态,为了减少能耗延长使用周期,传感器仅在传送数据包时才允许被唤醒。
如今,蜂窝网络、无线连接技术(比如Wi-Fi和蓝牙)、有线以太网,以及卫星等通信技术广泛应用于各类IoT设备中,但通信协议则是所有IoT技术栈的关键构成,唯有通过特定的通信协议,IoT设备才能进行数据传输与交换。
为了满足当下IoT应用的多样化需求,市面上开放了包括CoAP、XMPP和DDS在内的多种协议,可供各个应用场景按需选择。其中,消息队列遥测传输(MQTT)及其衍生协议MQTT-SN正广泛应用在日益普遍的低功耗广域(LPWA)网络中。
MQTT协议
作为一种轻量级协议,MQTT拥有简单紧凑的架构和较小的代码占用空间,适用于低成本、低功耗的IoT微控制设备。MQTT可在TCP/IP协议上兼容运行,专攻延迟较高、质量不佳的网络环境。该协议适用于具有以下通信需求的应用:使用极小带宽无线网络通信低功耗必要时保证高可靠性对处理和内存资源的需求很低
MQTT在IoT多种应用中都备受青睐,如智能表计、资产追踪工具和工业设备的互联传感器。凭借对有限带宽的高效利用,因此MQTT非常适用于网络成本高、功耗大的应用场景,例如远程传感器阵列就需要在现场自主运行数年且期间无需维修。MQTT是多个客户端通过一个中央服务器传递信息的多对多协议,能高效地将信息分发给一个或多个订阅者,加之其代码占用空间小,便使得MQTT成为移动应用通信的理想之选。
MQTT功能概述
MQTT基于发布和订阅模型,而非“客户端-服务器”模型,它具有两个功能实体——MQTT服务器和MQTT客户端。IoT网络上的任何“事物”,无论是硬件设备还是软件程序,都可以视为MQTT的客户端。所有的客户端并非直接向彼此发布或订阅消息,而是向MQTT服务器所管理的“主题”来发布或订阅消息。“主题”可理解为电子邮件的收件箱;客户端向主题发布消息,订阅该主题的其他客户端都将收到该消息。
MQTT服务器负责接收所有已发布的消息,并需要确保将其传输到所有订阅的客户端。消息根据多个商定的QoS级别进行发布(见下文)。服务器还将对网络上的所有IoT设备进行验证,进而管理连接、会话和订阅。
图1:什么是MQTT
MQTT-SN
MQTT-SN是MQTT的优化版本,专为需要提高数据传输效率和功耗效率的大规模无线传感器网络而设计。MQTT-SN主要通过缩短主题ID的长度来提升数据传输效率。这些经过缩短处理的ID会编程到客户端和服务器中,从而减少信息传递数量。
MQTT-SN中的“链路保持机制”允许设备进入睡眠模式,并在被唤醒时才可检索任何排队消息。
MQTT核心概念
除了服务器和客户端实体,MQTT和MQTT-SN运行还涉及到如下核心概念:
1.MQTT主题(MQTTTopics)
主题是MQTT实现对带宽高效利用的基础,它具有多级结构,如图2所示。MQTT客户端只会订阅其所