MQTT是物联网项目中最常用的协议之一,全称是消息队列遥测传输。
此外,它被设计为轻量级消息传递协议,它使用发布/订阅操作在客户端和服务器之间交换数据。此外,它的小尺寸,低功耗,最小化数据包和易于实现使该协议成为“机器到机器”或“物联网”世界的理想选择。
首先,我将介绍使用MQTT的原因,在实际上如何与现实生活中的IoT示例一起使用。 然后,将通过broker; MQTT的主干和broker使用。
最后,将进入一个动手教程,演示如何使用MQTT协议使用智能手机控制设备或获取数据。
为何选择MQTT?
MQTT具有你在其他协议中难以找到的独特功能,例如:
- 这是一个轻量级的协议。 因此,它易于在软件中实现,并且数据传输速度快。
- 它基于消息传递技术。 当然,你知道您的Messenger / WhatsApp消息传递速度有多快,同样是MQTT协议。
- 最小化数据包。 因此,网络使用率低。
- 低功耗! 因此,它可以节省连接设备的电池电量。
- 实时的! 这就是使其成为物联网应用的理想选择。
MQTT如何工作
与任何其他 Internet 协议一样,MQTT基于客户端和服务器。同样,服务器负责处理客户端在彼此之间接收或发送数据的请求。
MQTT服务器称为代理,客户端只是连接的设备。
所以:
- 当设备(客户端)想要向代理发送数据时,我们将此操作称为“发布”。
- 当设备(客户端)想要从代理接收数据时,我们将此操作称为“订阅”。
此外,这些客户正在发布和订阅主题。 因此,此处的代理是处理对目标主题的发布/订阅操作的代理。
例如:
假设有一个装有温度传感器的设备。 当然,想把它读到的数据发送给代理服务器。 另一方面,电话/桌面应用程序想要获得此温度值。 因此,会发生两件事:
- 设备定义要发布的主题,例如:“temp”。 然后,它发布消息“温度值”。
- 电话/桌面应用程序订阅主题“temp”。 然后,它接收设备已发布的消息,即温度值。
同样,此处的代理角色是将消息“温度值”传递给电话/桌面应用程序。
MQTT组件
这将我们带到MQTT组件,如下所示:
- Broker (代理) 这是处理客户端之间数据传输的服务器。
- Topic(主题) 这是设备想要放入或检索消息的位置。
- Message(消息) 即设备从主题“订阅”或“发布”到主题时发送的数据。
- Publish(发布),是设备将其消息发送给代理的过程。
- Subscibe(订阅) 设备从代理检索消息的位置。
可以连接到代理的设备数量
到代理的连接设备“客户端”的数量取决于代理服务提供商。
事实上,它可以覆盖那些一直在发布和订阅的大量设备。
但令人惊讶的部分不仅是这些连接设备的数量巨大,而且任何设备都可以随时获取任何其他设备的数据。 因此,基于这些快速共享数据的应用程序是无限的。
但是这里有一个问题,如果你使用HTTP协议在设备之间共享这些数据怎么办? 我会说这真是一个坏主意
为什么不用HTTP
HTTP比MQTT更慢,更多开销和耗电协议。 所以,让我们分别进入每一个:
- 较慢:因为它使用更大的数据包与服务器通信。
- 开销:HTTP请求在每个请求时打开和关闭连接,而MQTT保持在线以使通道始终在代理“服务器”和客户端之间打开。
- 功耗:因为它需要更长的时间和更多的数据包,因此它使用了很多功率。
物联网系统组件中的代理
在之前的物联网博客中,我们详细讨论了物联网系统及其4个组件。 如果这是您第一次阅读有关物联网的信息,我建议您仔细阅读。
其中一个组件是物联网平台。 实际上,它负责将设备连接在一起。
尽管如此,物联网平台只是一个基于云的软件,它实现了一个代理服务器和一些带有GUI的软件,允许用户控制和监控他连接的设备。
因此,MQTT代理隐式包含在IoT平台内。
但我们不会在即将推出的物联网博客和教程中使用物联网平台。
那是因为我们只为少量项目连接一些设备。 因此,这里不需要物联网平台。 但是有必要让你对它有一点了解。
使用哪个broker?
有许多代理实现了MQTT协议。 最受欢迎和最常用的是mosquito broker。
Mosquitto 代理
Mosquitto是一个实现MQTT协议的开源消息代理。 它重量轻,适用于从低功耗单板(如Arduino,ESP8266)到完整计算机和服务器的所有设备。
但是,您需要使用实现Mosquitto代理的基于云的服务器,而不是在本地PC上使用Mosquitto。 这是使您的物联网项目可通过互联网控制的必要条件。
基于云的Mosquitto经纪人很多,比如:
- ThingMQ
- ThingStudio
- MQTT.io
- Heroku
- CloudMQTT 我将重点关注本期和即将推出的博客中的最后一篇。
CloudMQTT经纪人
CloudMQTT是最好,最简单的基于云的Mosquitto代理之一。
CloudMQTT有一个免费计划,允许您设置将在其硬件服务器上运行的自己的CloudMQTT代理实例。 因此,您可以拥有一个可以在您的物联网项目中使用的在线经纪人。
它还有一个设计良好的GUI,通过易于使用的WebSocket UI监控发布和订阅过程和主题。
如何使用CloudMqtt
让我们试试CloudMQTT如何运作:
- 转到cloudmqtt并注册一个帐户。
- 然后按“ 创建新实例”绿色按钮以获取cloudMqtt提供的基于MQTT的mosquito云代理的实例。
- 只需编写代理实例名称,例如:“My_MQTT_Broker_Instance”并按“创建新实例”
- 我之前创建了一个代理实例,并将其命名为“try”,但在您的帐户中,您将只找到您创建的实例。 按其名称查看详细信息。
- 在这里,您可以找到任何设备连接到您的代理所需的身份验证详细信息。 我们只对前4个参数感兴趣。
- cloudMqtt提供了一个非常棒的功能,即WebSocket UI,允许您在此代理中监视,发布和订阅。
现在您有一个免费的经纪人,您可以将任何设备连接到它。
此外,让我们通过将您的智能手机用作连接到经纪人的设备来练习。 因此,请确保您的手机已通过wifi或数据连接到互联网。
CloudMQTT 教程
我将使用应用程序将手机连接到CloudMQTT代理。
有许多应用程序用于将智能手机连接到代理并使用它来发布和订阅主题。 我选择了一个漂亮,简单易用的产品。 它被称为“IoT MQTT Panel Pro”。
此外,它还有许多UI组件可用作订阅和发布主题的可视指示器。
你可以从这里下载Android版本。
步骤:
- 下载后,打开应用程序。
- 然后按“ ”按钮输入代理验证数据。
- 按如下方式输入代理数据“这些数据当然与您的数据不同”。
你必须输入密码,大写或小写字母不一样。
- 然后在“设备列表”上按“ ”按钮并添加将连接到此代理的设备。 我们称之为“家”。 然后按“创建”按钮。
- 您将看到刚刚制作的经纪人已准备好,按下它。
- 让我们添加一些按钮来使用它来可视化发布和一个可视化订阅的栏。 按“添加面板”按钮。
- 您将看到许多按钮和图形的列表。 让我们选择第二个元素,即“开关”,用作负责发布的事件。
- 然后用Panel名称填写字段,填写“switch”的主题,当开关打开时要发送的消息“在此处调用Payload on”以及当开关关闭时要发送的消息“在这里调用 有效负载“
- 完成后,按“创建”。
- 现在,按“ ”按钮添加订户。 让我们选择“Gauge”。
- 然后填写面板名称,该仪表将显示其消息的主题以及仪表的最小值,最大值。
- 按“创建”按钮。
- 然后按右上角的箭头图标将此设备连接到代理。
- 由于连接成功,图标将以橙色显示,表示设备现已连接到代理。
运行
现在,让我们回到浏览器中的WebSocket UI并监视正在发生的事情。
当您按下开关使其打开时,设备将发布一条消息,该消息在“切换器”主题上“打开”。 您将在WebSocket UI中清楚地看到它。
当您在主题“传感器”上从WebSocket UI发布消息“20”或任何其他号码时,设备订户“gauge”将获得此消息并将值更新为该号码。
此外,您必须像此图像一样绘制您的物联网结构。 这样可以让您轻松了解项目元素以及每个元素与其他元素的通信方式。
演示
毕竟,您刚刚使用MQTT协议和连接设备完成了您的第一个物联网项目!
Youtu Demo
如果初次使用MQTT,该文章适合你跨入MQTT的大门,理论加实践,So, Easy!
原文链接