MQTT协议入门指导
MQTT协议
MQTT
本文带你认识MQTT是什么,手把手教会你如何来搭建MQTT使用环境,如何进行消息收发。
一 什么是MQTT
简单通俗理解MQTT就是一种基于发布订阅模式的应用层的网络协议。
在上世纪 90 年代末由 IBM 的 Andy Stanford-Clark 博士和 Arcom(现 Eurotech)的 Arlen Nipper 开发了MQTT,用于通过卫星网络监测石油管道。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),是一种为资源有限的设备和低带宽、高延迟的网络设计的轻量级消息传输协议。它特别适用于需要较小代码占用空间或网络带宽有限的远程连接。
MQTT 是基于二进制消息的发布/订阅编程模式的消息协议,如今已经成为 OASIS 规范,由于规范很简单,非常适合需要低功耗和网络带宽有限的 IoT 场景。
最初的 MQTT 3.1 版本非常轻量级和易于实现,适用于各种物联网设备。
MQTT 3.1.1 于 2014 年发布,是一个 OASIS 标准,其中包括一些微调,增强了其清晰性和互操作性。
它能够在资源有限的网络上高效地传输消息,因此在物联网应用中广受欢迎。
然而,随着物联网行业的发展,应用的需求也在不断变化。
为了适应这些新的需求,在 2019 年发布了 MQTT 5,是该协议的最新版本,相比之前的版本有了很多改进。
新增功能包括:原因代码、会话过期间隔、主题别名、用户属性、订阅选项、请求/响应功能和共享订阅等。
二 试一试MQTT
我们选择使用EMQX来试试,协议版本就选择新的V5.0。
EMQ(杭州映云科技有限公司)是一家开源物联网数据基础设施软件供应商,交付全球领先的开源云原生 MQTT 消息服务器和流处理数据库,为企业云边端的海量物联网数据提供高可靠、高性能的实时连接、移动、处理与集成,助力构建「面向未来」的物联网平台与应用。
EMQ 公司成立于 2017 年,总部位于杭州,海外研发中心设在斯德哥尔摩,分支机构与团队遍布全球 4 个国家 10 余个城市。旗舰产品 EMQX 拥有来自 50 多个国家的 20,000 多家企业用户,连接全球超过 1 亿台物联网设备,服务企业数字化、实时化、智能化转型。
介绍这么多是因为它的官网提供了很多学习资料大家可以前往学习。
MQTT 协议入门:基础知识和快速教程 | EMQ (emqx.com)
下面我们就开始来使用MQTT
2.1 服务器安装-Windows
2.1.1 文件下载
2.1.2 文件解压
磁盘根目录下,创建文件夹EMQX。
2.1.3 安装启动
使用PowerShell打开,定位路径
H:\EMQX\bin
执行启动命令 ./emqx start
2.1.4 服务重启
./emqx stop
./emqx start
注意:如果IP地址变更了,账号信息需要重新设置
2.1.5 管理页面
通过浏览器访问 http://localhost:18083/
localhost可以替换为实际的IP地址
输入默认的账号为 admin 密码 public
进入MQTT服务器后台管理页面。
根据提示,修改密码为
2.1.6 添加用户
进入管理页面,选择 客户端认证 认证方式选择 Password-Based 即使用客户端用户名、Client ID 和 密码进行认证,如下图示
选择内置数据库
配置参数,账号类型选择 username 密码加密方式选中 sha256 加盐方式选中 suffx 如下图所示
创建认证后,点击用户管理,进入用户管理界面,添加两个用户,都是超级用户
mqtt1 ***
mqtt2 ***
2.2 客户端安装-Windows
MQTTX 是由 EMQ 开发的一款开源跨平台 MQTT 5.0 桌面客户端,它兼容 macOS,Linux 以及 Windows 系统。
MQTTX 的用户界面 UI
采用聊天式设计,使得操作逻辑更加简明直观。它支持用户快速创建和保存多个 MQTT 连接,便于测试 MQTT/MQTTS
连接,以及 MQTT
消息的订阅和发布。
主要功能
- 采用聊天界面设计,使得操作更加简单明了
- 跨平台兼容,支持在 Windows,macOS,Linux 系统上运行
- 100% 兼容 MQTT v5.0,v3.1.1 和 v3.1 协议
- 订阅的 MQTT 主题支持自定义颜色标签
- 支持单向和双向 SSL 认证,同时支持 CA 和自签名证书
- 支持通过 WebSocket 连接 MQTT 服务器
- 支持 Hex, Base64, JSON, Plaintext 等 Payload 格式转换
- 自定义脚本支持模拟 MQTT 发布/订阅测试
- 提供完整的日志记录功能
- 多语言支持:简体中文、英语、日语、土耳其语及匈牙利语 🇨🇳 🇯🇵 🇺🇸 🇹🇷 🇭🇺
- 自由切换 Light、Dark、Night 三种主题模式
2.2.1文件下载
https://www.emqx.com/zh/products/mqttx
2.2.2安装启用
2.2.3 测试使用
打开两个MQTT X 客户端,点击新建连接
2.2.3.1 新建连接
2.2.3.2 发布主题
MQTT 主题是用来标识和分类消息的字符串,用于消息的发布和订阅。主题可以按照需求进行规划,但有一些通用的规则和约定可以帮助设计有意义的主题。
以下是一些常见的 MQTT 主题规划原则:
用途区分:可以根据消息的用途或功能来划分主题。例如,可以使用 home/livingRoom/lights 作为控制客厅灯光的主题,或使用 sensors/temperature 作为温度传感器数据的主题。
层次结构:MQTT 主题支持多级层次结构,使用斜杠(/)来分隔层级。这使得主题可以更具层次关系地组织。例如,可以使用 sensors/temperature/livingRoom 和 sensors/temperature/bedroom 来区分不同房间的温度传感器。
通配符:MQTT 支持两种通配符:
单层通配符(+):用于匹配单个层级的任意值。例如,sensors/+/temperature 可以匹配 sensors/livingRoom/temperature 和 sensors/bedroom/temperature。
多层通配符(#):用于匹配多个层级的任意值。例如,sensors/temperature/# 可以匹配 sensors/temperature、sensors/temperature/livingRoom 和 sensors/temperature/bedroom/indoor。
保持简洁和可读性:尽量使用简洁而具有描述性的主题名称,以便易于理解和管理。
根据应用程序需求进行设计:根据你的应用程序的需求和逻辑来设计主题,以便实现所需的消息发布和订阅行为。
请注意,主题规划是根据具体应用需求和数据模型来设计的。可以根据自己的实际情况来灵活定义主题结构。
2.2.3.3 订阅设置
1号用户订阅2号用户的主题,2号用户订阅1号用户的主题
2.2.3.4 发送测试
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!