1.使用MQTT协议模拟向设备推送消息

在测试推送数据之前,我们需要了解一下基本流程。我们和设备实际上都是客户端,而EMQX就像是一个消息中转站。它负责根据不同的主题(topic)来决定将消息推送到哪个设备。简单来说,EMQX就相当于快递小哥,根据不同的地址(主题)将快送到指定位置

这里我们会使用到 MQTTX 这款工具 ,专为帮助开发者和测试人员简化 MQTT 消息协议的调试和开发而设计。它支持跨平台使用,并提供了一个图形用户界面(GUI),使得用户能够轻松地连接到 MQTT 代理(Broker)、发布和订阅消息、调试设备通信等。

MQTTX下载地址: MQTTX 下载

快速建立连接

在设置好 MQTT Broker 后,打开主程序页面,点击左侧菜单栏的+按钮。如果页面为空,您也可以直接点击右侧的新建连接按钮来快速设定新的客户端连接。

客户端连接信息

在创建页面,需要设定或填写连接客户端的相关信息。

  1. Broker 信息
    Client ID、Host和Port已经默认填写在Broker信息栏中,您可以根据实际的Broker信息自行修改。点击Client ID右侧的刷新按钮,可以迅速生成新的Client ID。
    选择框位于Host前面,用以选择该连接的协议,支持mqtt://,ws://。如果使用SSL/TLS连接,需要修改为mqtts://,wss://。
    注意:当协议更改时,需要修改连接的端口。

  2. 用户认证信息
    如果您的 Broker 开启了用户认证,您可以在配置项中填写Username和Password信息。

  3. SSL/TLS
    如果需要开启SSL/TLS认证,在配置中开启SSL/TLS,并提供CA signed server或Self signed中的一种方式。
    若选择Self signed,需要进行证书配置。点击最右侧的文件夹按钮,选择您已经生成好的各项证书。若是单向连接,只需选择您的CA File。若是双向认证,还需要选择配置Client Certificate File和Client key file。开启Strict validate Certificate选项后,将启用更完整的证书验证连接。此选项建议在需要测试正式环境时启用。


    关于使用 SSL 安全开关:
    SSL 安全开关是您 MQTT 配置中的一个选项,用于确定是否在建立连接时验证服务端证书链和地址名称。当将该开关设置为关闭时,将不会进行验证,即允许连接到未经验证的服务器。
    SSL 安全开关的使用场景:
    1. 开发环境:在开发环境中,为了方便测试和调试,可以关闭 SSL 安全开关,允许连接到未经验证的服务器。
    2. 内部网络:在受信任的内部网络环境中,如果没有外部访问风险,可以考虑关闭 SSL 安全开关,简化证书管理和验证过程。

  1. 需要注意的是,关闭 SSL 安全开关会降低连接的安全性。在生产环境或与外部网络通信时,建议打开 SSL 安全开关,确保通信的安全性和数据保护。
  2. 高级配置
    在高级配置中,可以设置连接超时时长、KeepAlive、Clean Session、自动重连、MQTT 版本等。
  3. MQTT 5.0
    在高级配置中,您可以选择 MQTT 的协议版本,支持 MQTT v3.1.1 和 MQTT v5.0。默认版本为 v3.1.1。如果选择了 v5.0,还可以配置Session Expiry Interval、Receive Maximum和Topic Alias Maximum(可选)。

  4. 遗嘱消息
    在高级配置下方的配置卡片中,您可以配置遗嘱消息。Last-Will-QoS和Last-Will-Retain的值默认为 0 和False。当您输入Last-Will-Topic和Last-Will-Payload后,即可完成遗嘱消息的配置。


    完成配置后,点击右上角的Connect按钮就可以快速创建一个连接并连接至 MQTT Broker。

消息的发布与订阅

主界面

连接成功后,即可进入连接的主界面。点击顶部连接名称旁的折叠按钮,可以查看并修改该连接的基本信息。在断开连接的情况下,修改这些常用配置项需要重新连接后才能生效。每次连接成功后,面板都会自动折叠。断开连接时,您也可以点击右边的配置按钮进行更多连接配置的修改。

添加订阅

点击左下角的New Subscription按钮,可以快速添加一个 Topic。每个Topic可以用一种颜色进行标记,颜色可以随机生成或通过颜色选择器进行选择。添加完成后,点击订阅列表中的已订阅 Topic,可以实现消息过滤。此时消息视图中只会显示当前主题的消息内容,再次点击即可取消过滤。

在添加Topic时,可以给每个 Topic 设置一个别名。别名是可选项。设置别名并完成订阅

后,订阅列表中的Topic将以别名显示。鼠标悬浮在Topic项上时,提示框将同时显示出该Topic的原值。这在需要监控查看的多个Topic过长,难以辨别Topic具体含义时,有很大帮助。

在 Topic 输入框中输入多个 Topic,使用逗号(,)进行分割,点击确认订阅成功后,订阅列表中会包含多个 Topic。对于使用客户端层别名功能,也可以同时对多个 Topic 进行设置,同样使用逗号分隔(,)。

订阅的主题支持编辑/禁用/启用。右键点击已经订阅过的 Topic 列表项,在右键菜单中我们可以快速选择编辑、禁用或启用等操作。当订阅的 Topic 过多时,如果并非所有的 Topic 消息都需要接收,您可以使用禁用功能避免再次订阅相同的 Topic。需要重新接收该 Topic 的消息时,只需再次启用即可。

消息发送与接收

Topic订阅成功后,就可以来测试消息的收发了。在页面右下角填入刚才所订阅的Topic信息,可选择 QoS 和Retain的值,输入payload后,点击最右侧的发送按钮,就向刚才订阅的Topic发送了一条消息。发送成功后,您也可以立即接收到刚才所发送的消息。注意,消息框内,右侧是发送的消息,左侧是接收到的消息。对于 macOS 用户,您可以使用command + enter快捷键,其它用户可以使用control + enter快捷键来快速发送消息。

消息栏的payload选项,支持将消息快速转化为Base64、Hex、JSON和Plaintext四种格式。

至此,您就完成了一条MQTT消息的测试。

相关新闻

古建筑目标检测数据集 | 古建筑识别 目标检测 文物保护 YOLO格式 9213期

古建筑目标检测数据集 | 古建筑识别 目标检测 文物保护 YOLO格式 9213期

古建筑目标检测数据集 | 古建筑识别 目标检测 文物保护 YOLO格式 9213期 数据集概述 本数据集专注于古建筑整体结构及组件的视觉检测与识别,服务于古建筑保护、文物数字化建档及建筑遗产研究。数据涵盖五类古建筑相关目标,适配古建巡检、古建筑普查及自…

2026/10/20 2:22:27 阅读更多 →
〖实战〗跨境物流系统:小包与快递件的分轨路由、清关状态机、加盟代理打单与司机调派的全链路设计

〖实战〗跨境物流系统:小包与快递件的分轨路由、清关状态机、加盟代理打单与司机调派的全链路设计

一、痛点场景:跨境链路一长,每个环节都在“等”做过国内快递系统的人,第一次接跨境需求时,最容易低估的不是某个单点技术,而是链路的长度和主体的数量。一票从深圳发往洛杉矶的跨境小包,中间至少经过&#…

2026/10/20 2:22:27 阅读更多 →
Java动态数组(一)

Java动态数组(一)

Java动态数组(一)前提概要创建动态数组泛型基本数据类型的封装类常用操作方法与静态数组的方法对比下期预告前提概要 在《C 语言实现数组动态扩容》一文中,我们已经介绍了 C 语言中数组动态扩容的实现方式。实际上,在 Java 中同样…

2026/10/20 2:22:27 阅读更多 →

最新新闻

基于YOLO的安全帽佩戴检测系统:从数据训练到部署联动全流程实践

基于YOLO的安全帽佩戴检测系统:从数据训练到部署联动全流程实践

很多工地早已装上了高清摄像头,但安全员盯着十六路监控画面,眼睛撑不过半小时,注意力一散,没戴安全帽的违规行为就从屏幕里“溜”过去了。我见过不止一次,事故回溯调监控时,画面里清清楚楚有人没戴帽子在作…

2026/10/20 2:58:48 阅读更多 →
五大经典排序算法:复杂度、稳定性与实战对比

五大经典排序算法:复杂度、稳定性与实战对比

如果你去翻任何一门语言的排序源码,会发现插入排序和堆排序的内核都被塞进了标准库的某个角落。五大经典排序算法——插入、希尔、冒泡、选择、堆排序,听起来像是教科书留给大学生的作业,但我实际遇到的很多场景里,它们仍然以各种…

2026/10/20 2:58:48 阅读更多 →
VS Code + Linux + C++开发环境配置指南:从编译器到调试器的完整方案

VS Code + Linux + C++开发环境配置指南:从编译器到调试器的完整方案

最近在Linux上搭C开发环境,身边好几个朋友都问我要配置方案。说实话,网上类似的教程一抓一大把,但大多数只告诉你"装这个插件、点那个按钮",从来不解释为什么这么配、配置失败时该去哪里找问题。这篇文章我想把我自己的…

2026/10/20 2:58:48 阅读更多 →
Open vSwitch 内核 datapath actions 执行流程深度解析

Open vSwitch 内核 datapath actions 执行流程深度解析

写这篇之前,我先说说踩坑背景。有次某 SDN 项目里控制器下发的流表明明没问题,但流量就是不通,tcpdump 抓包能看到包进了宿主机,却死活找不到从 OVS 出去的痕迹。最后一条条删内核 datapath 里的 flow,才意识到是 acti…

2026/10/20 2:58:48 阅读更多 →
OVS datapath actions执行流程详解:从内核源码到性能调优

OVS datapath actions执行流程详解:从内核源码到性能调优

先说一个我前阵子实际遇到的问题。某次排查一个bond口上的流量分流不均,流表里明明配了group,但实际转发效果和预期差了很多。一开始怀疑是hash算法的问题,翻来覆去看用户态流表,后来直接把内核datapath路径上的action执行流程从头…

2026/10/20 2:58:48 阅读更多 →
3、内存 - 计算机品牌排行榜

3、内存 - 计算机品牌排行榜

基于2026年全球DRAM原厂产能、消费级内存模组市场占有率及用户综合口碑,当前电脑内存品牌排行榜如下,‌金士顿以全球领先的市占率稳居第一‌,一线电竞品牌在超频性能上表现突出,国产高性价比品牌近年市场份额增长迅猛。 1. 金士顿…

2026/10/20 2:57:47 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →