系列文章目录
文章目录
前言
提示:案例演示及代码讲解请翻阅上面的系列文章
本文主要介绍 MQTT 相关概念以及 MQTT Broker 服务器的搭建步骤。
一、MQTT 通信协议简介
1.1 MQTT 是什么
MQTT 协议全称为消息队列遥测传输(Message Queuing Telemetry Transport)协议,该协议构建于 TCP/IP 协议之上,是一种基于发布/订阅(Publish/Subscribe)模式的“轻量级”通讯协议。MQTT协议最初是由IBM在1999年发布的,并已成为ISO标准(ISO/IEC PRF 20922)。
1.2 MQTT 的通信模式
在 MQTT 通信过程中有三种身份,分别是发布者(Publisher)、代理(Broker)、和订阅者(Subscriber),而MQTT传输的消息分为主题(topic)和负载(payload)两部分。
1.3 MQTT 的特点
MQTT 是轻量、简单、开放和易于实现的,同时作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT 最大优点在于可以以极少的代码量和有限的带宽,为连接远程设备提供实时可靠的消息服务。
特点 | 描述 |
---|---|
轻量可靠 | MQTT 的报文格式精简、紧凑,可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。 |
通讯解耦 | 发布/订阅的模式实现了发布者与订阅者的解耦,即发布者与订阅者无需直接建立连接,亦无需同时在线,实现了异步通讯。 |
为物联网而生 | 提供心跳机制、遗嘱消息、QoS 质量等级 + 离线消息、主题和安全管理等全面的物联网应用特性。 |
完善的生态 | 覆盖范围广,已成为众多云厂商物联网平台的标准通信协议。 |
1.4 MQTT 的应用场景
MQTT 作为一种低开销,低带宽占用的即时通讯协议,可以极少的代码和带宽为联网设备提供实时可靠的消息服务,适用于硬件资源有限的设备及带宽有限的网络环境。
常见的应用场景如下:
(1) 物联网 M2M 通信,物联网大数据采集。
(2) 移动即时消息及消息推送。
(3) 智能硬件、智能家居、智能电器。
(4) 车联网通信,电动车站桩采集。
(5) 智慧城市、远程医疗、远程教育。
(6) 电力能源、石油能源。
二、MQTT Broker(消息代理服务器)搭建
MQTT 的代理服务器有很多,常见的比如有 Mosquitto、EMQX以及各种 MQTT 服务器代理平台,本文只介绍 Mosquitto 和 EMQX。
2.1 Mosquitto简述
Mosquitto 是一个开源的 MQTT 消息代理(服务器)软件,由 MQTT 协议创始人之一的 Andy Stanford-Clark 开发。它提供轻量级的、支持可发布/可订阅的消息推送模式,使得设备对设备之间的短消息通信变得简单。
Mosquitto 的开源性质意味着它可以被广泛地应用于各种项目,并且由于其轻量级和高效率的特性,它成为了许多物联网项目和应用的理想选择。此外,由于其开源特性,开发者可以根据自己的需求对 Mosquitto 进行定制和扩展,以满足特定的应用需求。
也就是说,Mosquitto 这个软件已经把 MQTT 协议封装好了,我们只需要简单地调用它提供的接口就能使用 MQTT 进行通信了。另一方面我们还可以使用它来作为MQTT 服务器使用
2.2 Mosquitto安装部署
在嵌入式系统上使用 Mosquitto 建议直接源码安装,最新的源码可从这里下载mosquitto源码下载地址,而在ubuntu上我们可以直接使用包管理器apt下载安装作为调试使用,以下是在ubuntu上安装mosquitto的步骤:
1. 安装mosquitto服务器
sudo apt-get install mosquitto
该命令只会安装mosquitto服务器,并不包含客户端工具。
2. 安装mosquitto客户端工具
sudo apt-get install mosquitto_clients
该指令会安装mosquitto的命令行客户端工具,主要是mosquitto_pub和mosquitto_sub。这两个工具分别用于发布和订阅MQTT消息。如果你已经安装了mosquitto服务器并希望使用命令行工具来测试或管理MQTT消息,那么你需要安装这个包。
3. 安装mosquitto头文件
sudo apt-get install libmosquitto-dev
4.启动或重启mosquitto服务器
sudo systemctl start mosquitto 或者 sudo systemctl res