0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过使用MQTTSpy“监听” MQTT主题来设置IoT MQTT Broker并验证其是否正常工作

454398 来源:网络整理 作者:网络整理 2019-12-12 10:28 次阅读

步骤1:在Raspberry Pi上安装Mosquitto MQTT Broker

我们将使用Eclipse的Mosquitto MQTT Broker免费提供,并在Linux下运行。可以使用基于PC的MQTT Broker,但是我特别想使用Raspberry Pi,因为它们价格便宜,体积很小,并且在处理能力方面非常强大,最好还是随手携带它们。我使用的是B + Pi。

序言

我假设您已按照我之前的名为“ IoT”的Instructable中的步骤进行操作-物联网:家庭自动化。第1部分:物联网,简介”,并且已经设置好Raspberry Pi,可以开始使用。

您需要做的就是将主机名从“ MYHOSTNAME”更改为“ MQTTSVR”。您可以使用PuTTY连接到Pi,然后从命令行输入;

sudo raspi-config

选择(9)高级选项,然后选择(A2)主机名。

输入“ MQTTSVR”并保存更改。退出,然后选择重新启动Pi

。您现在可以使用新的主机名‘MQTTSVR.local’将PuTTY重新连接到该Pi。 创建一个名为‘MQTTSvr’的PuTTY保存的会话,稍后会派上用场。

安装

安装过程如下;

通过PuTTY连接到新的MQTT服务器,并记住从该Instructable中复制并粘贴到PuTTY中,以避免必须手动键入任何命令。

确保您位于主目录中。如果您是您,将看到以下提示

pi @ MQTTSVR :〜$

如果没有看到此提示输入

cd〜

现在完成以下命令;

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key

然后;

sudo apt-key add mosquitto-repo.gpg.key

现在使此存储库可用于apt;

cd/etc/apt/sources.list.d/

在使用Raspberry Pi Jessie Debian映像时,请输入以下内容;

sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list

现在输入执行命令,这可能需要一些时间才能完成。对任何问题也回答是(Y);

sudo apt-get更新

sudo apt-get升级 》

要完成安装过程,请输入以下内容,对任何问题回答是(Y);

sudo apt-get install mosquitto

让Pi做它的事情并完成,在出现命令提示符的地方。

pi @ MQTTSVR:/etc/apt/sources .list.d $

就是这样。 Mosquitto现在已经安装为服务,并且会在您启动Raspberry Pi时自动启动。

现在我们需要测试它的工作能力。

注意:在从MQTT Broker断电之前,请输入以下命令并等待Pi关闭。

立即sudo关闭

提示

如果要快速连接到Raspberry Pi服务器使用PuTTY,而不必每次都输入用户名和密码。假设您已经按照步骤7,“第1部分:物联网,自动化”中的说明创建了一个名为“ MQTTSvr”的已保存会话,并且您的MQTTSVR用户名和密码与给出的示例相同,则执行以下操作。

查找安装PuTTY并执行以下操作;

为其创建快捷方式。

右键单击快捷方式

选择“快捷方式”选项卡

在名为“目标:”的文本框中,在文本“之后输入以下内容。 。. putty.exe“

-加载MQTTSvr -l pi -pw覆盆子

因此,在我的情况下,我安装了“ C: Program Files (x86) PuTTY”文本将读取;

“ C: Program Files(x86) PuTTY putty.exe” -load MQTTSvr -l pi -pw raspberry

现在删除此简短内容

步骤2:MQTT主题

现在是快速讨论MQTT主题的好时机。

什么是主题?

主题是由UTF-8(Unicode转换格式8位)字符组成的字符串,是发布者发送给代理以转发给任何订阅者的数据。简而言之,它是一个基本的文本字符串。

它们是如何构造的?

主题分为一个或多个主题每级至少要有1个字符。这些级别由斜杠‘/’分隔,并且可以包含‘’ (空格)。 例如(不包括引号);

“此/is/a/six/level/带有空格的示例”

尽管可以说不是很有用主题,希望能解决这一问题。主题区分大小写,因此;

‘测试/主题’

不同于;

‘测试/主题’

这是一个主题

“ x”

‘’(空格)和‘/’

创建主题不需要任何特殊操作,订阅或发布操作这个给你。

就是这样。

构造主题是否有特殊格式或最佳做法?

《简短的答案是“否”,围绕如何组成它们有很多看法(我将在后面的Instructable中介绍该主题)。但是,在创建主题时,您需要考虑以下内容;

请保持简短。它们是通过网络发送的,需要由某些设备/代理/服务器进行解析(读取),因此,越长越复杂,它们就越难以解码。

在可以的地方使用有意义的名称。它使调试更加容易。作为人类,它的键入要简单得多,或者比“ Wcp10X!3wdrka2 ”阅读“ sensor1 ”。

使它们对您有意义。我所看到的示例往往像一种地址,例如;

“我的房子/一楼/卧室/天花板/天花板”

这假设一个固定位置的IoT设备,并且在大多数情况下都是如此,尽管在考虑移动或可重新部署的IoT设备(例如温度湿度传感器或可切换扩展插座)时,这种命名法会失败。如果您决定将可切换的扩展插座从客厅移到卧室以更换发生故障的设备,则需要对IoT设备进行重新编程,以使其与新位置保持一致。

对于我的系列在基于IoT的家庭自动化上,我将使用仅涉及设备的主题,例如;

‘/EthernetDevice/Led1Command’

‘/WiFiDevice/Temp1Status’

这是因为我最终想要使用MySQL数据库来保存配置和IoT设备信息

哦,还有最后一件事,通常惯例是不要在第一个主题之前加上‘/’,但是您可以看到我我忽略了这一点。 :-)

是否有捷径?

是的,MQTT提供了称为“通配符”的主题。这些是订阅者可以放入订阅主题中以减少订阅许多项目的特殊字符。通配符有两种类型:“ +” (称为“单级” )和“#” (用于“多级”) 即可。上面的图片提供了这两个示例。

一词注意。如果您使用‘#’多级通配符,并且系统中有很多IoT设备,那么请准备好接收大量消息!

是否有特殊主题?

是的,保留以‘$’开头的主题用于MQTT Broker的内部统计。在撰写此Instructable时,没有明确的官方标准化,经纪人必须发布这些主题。但是,对于这种类型的信息,通常使用‘$ SYS/’作为前缀。 mosquitto MQTT Broker符合此‘$ SYS/broker/#’。 (有关完整的详细信息,请参见Linux mosquitto手册页。即 man mosquitto )

因此,如果您想查看所有mosquitto MQTT Broker统计信息,则需要为MQTTSpy订阅以下内容(有关更多详细信息,请参见后续步骤);

‘$ SYS/broker/#’

步骤3:设置测试环境

序言

要测试我们的新MQTT Broker,我们将首先安装一个客户端,该客户端可以订阅并发布Raspberry Pi上的给定主题。然后,我们将通过PC上名为MQTTSpy的工具监视此交换(就像上面的第一张图片一样)。

为什么要测试安装?从长远来看,它可以为您节省很多时间。为了正确地建立一个强大的家庭自动化系统,您开始依赖该系统,并且在整个过程中要向其中添加许多有用的IoT客户端,您需要确保链中的所有链接都可以正常工作,您会发现新的IoT设备存在问题,您可以快速排除尽可能多的系统,并在实际问题上将其归零。

安装发布/订阅客户端(Raspberry Pi)

从PuTTY窗口中,在MQTT Broker上输入以下命令。确保您位于主目录中;

pi @ MQTTSVR:〜$

(如果未输入);

cd〜

;其次;

sudo apt-get install mosquitto-clients

安装MQTTSpy(PC)

为了成功运行MQTTSpy,您将需要在PC上安装的Java Runtime Engine(JRE)大于版本8。

要检查已安装的JRE版本,请运行“ dos in a box”(即“ dos in a box”)命令,即命令行窗口(如上图)。

从“开始”按钮,进入带有灰色文本“搜索程序和文件”的搜索框

cmd

,然后按Enter。框中将出现一个dos,您需要在其中输入内容;

java -version

它将返回“ java版本“ WXYZZ””以及其他“ guff”(如上图)或错误。如果您的版本大于版本8(实际上是1.8.y.zz),则需要遵循以下说明;

转到此Oracle下载网页。

https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

选择“接受许可协议”单选按钮,下载并安装“ Java SE运行时环境8u92” ‘,jre-8u92-windows-x64.exe(如上图所示)。

好,现在转到下面给出的MQTTSpy下载页面;

https://github .com/kamilfb/mqtt-spy/wiki/Downloads

选择并下载mqtt-spy jar文件(如上图)。在撰写本文时,最新的版本是0.5.0。

将“ mqtt-spy-0.5.0-jar-with-dependancies.jar”文件保存到任何目录。

要运行该软件,您可以双击它。如果这样做不起作用,则可以在保存jar文件的目录中从命令行输入以下内容。

java -jar mqtt-spy-0.5.0-jar-with-另外,您可以将RunMQTTSpy.bat文件(如下所示)解压缩并拖放到同一目录中,然后双击该文件每次运行MQTTSpy。

好,您现在已经安装了所有测试软件,让我们对其进行配置并运行测试。

提示

要在特定目录中打开命令提示符,请执行以下操作;

打开Windows资源管理器

导航至感兴趣的目录

按住“ Alt”和“ Shift”键

右键单击感兴趣的目录

从下拉菜单中选择“打开”命令窗口”

第4步:配置MQTTSpy并测试您的MQTT Broker

开箱即用, MQTTSpy所需的最低配置如下;

连接t o您的MQTT经纪人

订阅给定主题

(可选),发布到给定主题

此处上面的视频显示了如何连接到我们的mosquitto MQTT Broker’MQTTSVR‘并添加通配符以查看所有测试主题并测试MQTT Broker。运行顺序如下;

打开两个自动登录PuTTY会话

通过双击“ RunMQTTSpy.bat”文件启动MQTTSpy(我已经完成了视频(如果您是第一次使用MQTTSpy,那么您可以看到初始配置)

创建标准配置

创建新的MQTT Broker连接,我们将连接到我们的Broker

输入Broker详细信息’MQTTSVR.local‘并为其提供客户端ID’Win 71‘

然后连接到Broker’Open connection‘并保存此新设置,因此我们以后可以使用。

选择此“代理”选项卡,该选项卡已显示为“ GREEN”,表明它已连接到MQTTSVR

订阅所有测试主题(使用多级通配符)

’/test/#‘

在PuTTY会话窗口中,订阅测试主题(无通配符)。

mosquitto_sub -t“/test/Topic”

在另一个PuTTY会话窗口中,将消息发布到测试主题。

mosquitto_pub -t“/test/Topic” -m“ Hello World”

您现在将看到此Hello World消息到达我们的两个客户订户(PuTTY和MQTTSpy)

现在,为了证明我们可以从不在MQTT Broker上的客户端发布消息,我们将测试主题复制到MQTTSpy的发布框中,然后发送消息’SteveQuinn‘发送给MQTT代理

您现在可以看到此消息同时到达PuTTY订阅的客户端和MQTTSpy客户端(此处MQTTSpy已成为订户和发布者)。

最后,我们从控制面板关闭与MQTT Broker的连接,并退出MQTTSpy。

接着关闭两个PuTTY会话。记住在退出前使用 ^ C (Ctrl C)退出订阅。

好,所以现在我们完成了MQTT经纪人测试员。这会给我们带来什么?

如果我们在家庭自动化设置方面遇到任何问题,我们现在可以快速运行MQTTSpy,并检查Broker是否健康或任何已发布的消息“格式错误”。甚至可以发布消息,这意味着我们可以测试我们创建的任何IoT设备。

步骤5:有IOS MQTT客户端

尽管在上面给出的示例中,我使用基于PC的软件来平等地进行测试,但是仍然可以使用智能手机应用。

上面的图片是一个名为“ MQTTool”的iOS应用程序。尽管功能不如MQTTSpy丰富,但它易于使用,并允许您进行一些基本的测试。

步骤6:不要遗漏Android用户

在Play商店中,我可以看到很多免费的应用程序,我尝试了很多,但发现上图所示的应用程序是其中最好的“ MQTT信息中心”。尽管您不需要输入IP地址而不是主机名“ MQTTSVR.local”,但它确实具有发布到主题的更好方法,可让您创建文本框,开关,滑块等。

我包括了Pi的屏幕截图,其中详细说明了如何获取Pi的IP地址。为此,请通过腻子连接并输入;

ifconfig

Pi会以上面的屏幕截图做出响应,我突出显示了您需要输入MQTT仪表板的IP地址。我假设您正在通过以太网连接到网络。如果您已通过WiFi连接,请阅读“ eth0 ”

的“ wlan0 ”。步骤7:那么下一步是什么?

在接下来的三个Instructable中,我们将为您的Int ra net创建三个简单的IoT设备,它们基于ESP8266-01和带以太网屏蔽的Arduino ATMega2560。首先,我们将重新审查以改进设计并扩展其使用范围,以展示制造自己的物联网设备的容易程度。

步骤8:使用的参考

我使用了以下参考文献来将该Instructable放在一起;

MQTT官方站点;

http://mqtt.org

MQTTSpy主页;

http://kamilfb.github.io/mqtt-spy/

MQTTSpy下载,入门指南并进一步阅读;

https://github.com/kamilfb/mqtt-spy/wiki/Downloads

https://github.com/kamilfb/mqtt-间谍/维基/GettingStarted

https://github.com/kamilfb/mqtt-spy/wiki/ScriptingPublications

https://github.com/kamilfb/mqtt-spy/维基/配置

http://www.hivemq.com/blog/mqtt-toolbox-mqtt-spy-advanced

http://www.hivemq.com/blog/mqtt-essentials-part-3-client-broker-connection-建立

MQTT客户端的好地方;

http://www.hivemq。 COM/博客/七最佳MQTT客户端工具

MQ TT间谍高级用法

http://www.hivemq.com/blog/mqtt-toolbox-mqtt-spy-advanced

Mosquitto Eclipse主页

http://projects.eclipse.org/projects/technology.mosquitto

Mosquitto MQTT Broker详细信息,下载,安装过程等;

http://mosquitto.org/2013/01/mosquitto-debian-repository/

好的背景材料

http://www.hivemq .com/blog/mqtt-essentials/

主题命名约定最佳实践的良好来源

http://www.hivemq.com/blog/mqtt-essentials-part-5-mqtt-topics-best-practices

https://openhardwarecoza.wordpress.com/2015/03/29/openhab-mqtt-arduino-and-esp8266-part -2-publish-subscribe-command-state-and-wtfs/

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IOT
    IOT
    +关注

    关注

    185

    文章

    3980

    浏览量

    193141
  • 树莓派
    +关注

    关注

    113

    文章

    1635

    浏览量

    104678
收藏 人收藏

    评论

    相关推荐

    【飞腾派4G版免费试用】如何在飞腾开发板上安装EMQX MQTT服务器

    Websocket,验证 MQTT 服务器是否已部署成功。 连接至 MQTT 服务器 如下图,该工具已根据访问地址自动填充了主机名,我们直接点击连接按钮 如下图,提示连接成功。 订阅
    发表于 12-26 11:16

    MQTT和Modbus的物联网网关协议区别分析

    MQTT 是一个开放的轻量级机器对机器协议,专为物联网交互设计。MQTT 网络包含一个 MQTT 经纪人 (broker),负责协调 MQTT
    发表于 11-27 10:58 343次阅读
    <b class='flag-5'>MQTT</b>和Modbus的物联网网关协议区别分析

    MQTT是什么 MQTT特点

    MQTT 是 Message Queuing Telemetry Transport 的缩写,是一种轻量级的、基于发布/订阅模式的物联网通信协议。 它具有以下特点: •简单易用:MQTT 的协议规范
    的头像 发表于 11-09 15:20 1186次阅读

    MQTT协议是什么?工业级路由器网关中的MQTT协议

    什么是MQTTMQTT作为一种工具,可以在各种规模的部署中连接多种类型的IoT设备。它最初始于1999年,用于石油和天然气管道通过远程卫星进行通信。
    的头像 发表于 11-08 13:53 686次阅读
    <b class='flag-5'>MQTT</b>协议是什么?工业级路由器网关中的<b class='flag-5'>MQTT</b>协议

    将youyeetoo X1部署成mqtt Broker实战开发

    风火轮X86主板youyeetoo X1这个小巧的板子,正合我意,可以部署一个MQTT Broker在家里,然后实现智能家居的场景,让家里的设备能够实现互联。
    的头像 发表于 10-15 10:15 530次阅读
    将youyeetoo X1部署成<b class='flag-5'>mqtt</b> <b class='flag-5'>Broker</b>实战开发

    MQTT协议采集网关可自定义格式

    取出设备地址、寄存器地址和数据等内容;最后,将这些内容通过MQTT协议发布到指定的主题上,以便远程客户端可以订阅获取数据。 对于TCP转MQTT
    发表于 10-09 19:33

    使用mosquitto搭建mqtt broker

    Eclipse Mosquitto是一个开源(EPL/EDL许可)消息代理(broker),它实现了MQTT协议版本5.0、3.1.1和3.1。Mosquito重量轻,适用于从低功耗单板计算机到完整服务器的所有设备。
    的头像 发表于 09-28 15:37 1384次阅读
    使用mosquitto搭建<b class='flag-5'>mqtt</b> <b class='flag-5'>broker</b>

    在ESP32-C3模块上使用MQTT进行通信

    wifi的连接信息。 而Example Configuration则是配置mqtt的服务器地址。 该地址前面记得加上mqtt://这样才能正常的解析,地址为刚才搭建好的
    发表于 08-16 07:28

    MQTT中服务端和客户端

    服务器(broker),它是 MQTT 信息传输的枢纽,负责将 MQTT 客户端发送来的信息传递给 MQTT 客户端;MQTT 服务端还负责
    的头像 发表于 07-30 14:55 1564次阅读

    使用RIOT/Google IoT/MQTT的环境站

    电子发烧友网站提供《使用RIOT/Google IoT/MQTT的环境站.zip》资料免费下载
    发表于 06-30 10:12 0次下载
    使用RIOT/Google <b class='flag-5'>IoT</b>/<b class='flag-5'>MQTT</b>的环境站

    如何在menuconfig中为rtos mqtt示例设置代理url?

    components/mqtt/esp-mqtt/mqtt_client.c 中的代码,但我不想通过硬编码来处理它。我需要为Linux 盒子?
    发表于 06-08 06:00

    是否有关于Atmega和esp-link之间MQTT通信的十六进制字节顺序的教程?

    我有一个项目使用 Atmega328 控制地板采暖系统的各个加热电路,该项目已经运行了好几年。他由带有 esp-link v3.0.14 通过 UART 连接的 ESP8266 支持,我用它传输
    发表于 05-25 07:58

    如何使用ESP8266和MQTT消息进行WIFI颜色检测?

    频率解码,而 MQTT工作就像一个魅力。 协议很简单。MQTT 消息发送到主题“AcquireColor”。通过收听有关颜色百分比的
    发表于 05-24 08:52

    求分享SoftAP上的独立MQTT代理?

    任何人都可以给我一个例子或者只是一个工作流+库实现这个: 我想要一个 ESP8266 上的独立 MQTT 代理。ESP8266 还必须有一个 SoftAP,以便其他 MQTT 客户端
    发表于 04-28 07:40

    MQTT如何退出重新连接循环?

    ;Attempting MQTT broker connection...\"); /*#endif*/ /* 尝试连接 */ if (mqttClient.connect
    发表于 04-28 06:40