MQTT教程| MQTT体系结构,MQTT协议用例
本MQTT教程涵盖了MQTT体系结构和MQTT协议在不同MQTT用例中的工作操作。关于MQTT协议体系结构的本教程描述了代理和客户端之间的MQTT消息流。
图1描述了MQTT体系结构。如前所述,MQTT是基于代理的协议。在这些终端设备(即客户端)中,通过代理进行通信。代理是一个服务器,可以安装在云中的任何机器上。有不同类型的代理,如HiveMQ, mosquito等。单个客户机和代理还可以相互通信。
由于MQTT运行在TCP/IP层之上,它也是面向连接的协议。客户端在通信之前与代理(即服务器)建立连接。MQTT是一种发布-订阅协议。在这里,客户端和服务器都使用“publish”消息相互发布任何信息(即参数,如温度、湿度、事件(ON/OFF)等)。任何数量的客户端或终端设备都可以通过代理订阅事件。由于这种订阅,当任何事件或参数发生变化时,经纪人将通知订阅的客户有关事件或参数的变化(即温度,湿度等)。
MQTT消息格式
下表提到了客户端和代理之间交换的MQTT协议消息。
MQTT消息 | 描述与流动方向 |
---|---|
连接 | 客户端到服务器(即代理),客户端请求连接到服务器。 |
CONNACK | 服务器到客户端,连接确认 |
发布 | 客户机到服务器或服务器到客户机 发布消息 |
PUBACK | 客户机到服务器或服务器到客户机 公开承认 |
PUBREC | 客户机到服务器或服务器到客户机 发布了 |
PUBREL | 客户机到服务器或服务器到客户机 发布版本 |
PUBCOMP | 客户机到服务器或服务器到客户机 发布完成 |
订阅 | 客户端到服务器 客户端订阅请求 |
SUBACK | 服务器到客户端 订阅确认 |
退订 | 客户端到服务器 退订请求 |
UNSUBACK | 服务器到客户端 退订承认 |
PINGREQ | 客户端到服务器 Ping请求 |
PINGRESP | 服务器到客户端 平响应 |
断开连接 | 客户端到服务器,客户端正在断开连接 |
MQTT协议消息格式
图2描述了MQTT消息格式。它由固定消息头、变量消息头和有效负载组成。大多数消息类型使用前两个字节。很少有消息类型使用变量头和有效负载。
MQTT协议体系结构工作操作
让我们了解MQTT协议体系结构的工作操作。图3描述了客户机和代理之间的MQTT消息流。我们将采用两个MQTT用例来理解MQTT体系结构的工作操作。
MQTT用例#1:代理想要打开或关闭与远程客户端#1连接的灯
➨最初由客户端#1使用CONNECT和CONNACK消息与代理建立连接。
➨下一个代理与客户端#1通信,以打开或关闭与它接口的灯。它使用PUBLISH和PUBREC等消息。
本用例用于Zigbee或LoRaWAN网络中路灯的开/关。这些灯通常与这些无线网络中的终端节点或终端设备连接。一个Zigbee或LoRaWAN网关控制多个终端节点。需要多个这样的网关来覆盖整个城市。
MQTT用例#2:客户机#2或客户机#3希望根据传感器向代理更新温度/湿度状态
➨客户端#2和客户端#3将使用PUBLISH消息向代理发送温度或湿度更新。此信息存储在数据库中,并将发送给所有订阅了这些主题的订阅者(即温度,湿度)。该信息被“推送”到主题的所有订阅客户端。
➨如果客户端#1已经订阅了主题(即温度,湿度),它将使用PUSH操作从代理获取信息。
这个用例用于在有任何更新时自动获取不同类型的传感信息。为此,不同类型的传感器(如湿度传感器、温度传感器等)与终端节点连接。这些终端节点向代理发布(任何事件更新的)信息。代理将更改通知所有已订阅的客户端。网关之间的通信
目前有两种主要的数据交换协议架构,即基于代理的和基于总线的。在本MQTT教程中,我们研究了基于代理的MQTT协议体系结构。无线物联网技术,如zigbee, LoRaWAN使用MQTT进行客户端和路由器之间的通信。AMPQ、CoAP和JMS等协议也使用基于代理的体系结构。DDS、REST和XMPP等协议使用基于总线的体系结构。请参考基于总线的vs基于Broker的架构>>获取更多信息。
MQTT与HTTP、MQTT与DDS、MQTT与REST、MQTT与SMQTT、MQTT与CoAP之间的差异
MQTT vs HTTP >>MQTT vs REST >>MQTT vs DDS >>MQTT vs SMQTT >>MQTT vs CoAP >>
Zigbee和LoRaWAN相关链接
主页LoRa教程LoRa频段LoRa协议栈LoRa MAC层LoRaWAN类罗拉的特性LoRa收发模块什么是zigbeeZigbee网络架构基础Zigbee协议栈Zigbee物理层Zigbee物理层框架Zigbee MAC层帧Zigbee频段无线个域网设备无线个域网的产品
物联网无线技术
➤无线局域网➤线程➤EnOcean➤罗拉➤SIGFOX➤WHDI
➤无线个域网➤6 lowpan➤无线个域网RF4CE➤z - wave➤NFC➤射频识别➤INSTEON
两者有什么区别
OSI层和TCPIP层的区别TCP UDP的区别FTP vs HTTPFTP vs SMTPFTP与TFTPARP vs RARPNAT vs PATRIP vs OSPFSLIP vs PPPIMAP4 vs POP3IPV4 vs IPV6Internet和Intranet的区别