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如何运作:

  1. 转到cloudmqtt并注册一个帐户。

  2. 然后按“+创建新实例”绿色按钮以获取cloudMqtt提供的基于MQTT的mosquito云代理的实例。

  1. 只需编写代理实例名称,例如:“My_MQTT_Broker_Instance”并按“创建新实例”
  2. 我之前创建了一个代理实例,并将其命名为“try”,但在您的帐户中,您将只找到您创建的实例。 按其名称查看详细信息。
  3. 在这里,您可以找到任何设备连接到您的代理所需的身份验证详细信息。 我们只对前4个参数感兴趣。
  4. cloudMqtt提供了一个非常棒的功能,即WebSocket UI,允许您在此代理中监视,发布和订阅。

    现在您有一个免费的经纪人,您可以将任何设备连接到它。

此外,让我们通过将您的智能手机用作连接到经纪人的设备来练习。 因此,请确保您的手机已通过wifi或数据连接到互联网。

CloudMQTT 教程

我将使用应用程序将手机连接到CloudMQTT代理。

有许多应用程序用于将智能手机连接到代理并使用它来发布和订阅主题。 我选择了一个漂亮,简单易用的产品。 它被称为“IoT MQTT Panel Pro”。

此外,它还有许多UI组件可用作订阅和发布主题的可视指示器。

你可以从这里下载Android版本。

步骤:

  1. 下载后,打开应用程序。

  2. 然后按“+”按钮输入代理验证数据。

  3. 按如下方式输入代理数据“这些数据当然与您的数据不同”。

    你必须输入密码,大写或小写字母不一样。

  4. 然后在“设备列表”上按“+”按钮并添加将连接到此代理的设备。 我们称之为“家”。 然后按“创建”按钮。

  5. 您将看到刚刚制作的经纪人已准备好,按下它。

  6. 让我们添加一些按钮来使用它来可视化发布和一个可视化订阅的栏。 按“添加面板”按钮。

  7. 您将看到许多按钮和图形的列表。 让我们选择第二个元素,即“开关”,用作负责发布的事件。

  8. 然后用Panel名称填写字段,填写“switch”的主题,当开关打开时要发送的消息“在此处调用Payload on”以及当开关关闭时要发送的消息“在这里调用 有效负载“

  9. 完成后,按“创建”。

  10. 现在,按“+”按钮添加订户。 让我们选择“Gauge”。

  11. 然后填写面板名称,该仪表将显示其消息的主题以及仪表的最小值,最大值。

  12. 按“创建”按钮。

  13. 然后按右上角的箭头图标将此设备连接到代理。

  14. 由于连接成功,图标将以橙色显示,表示设备现已连接到代理。

运行

现在,让我们回到浏览器中的WebSocket UI并监视正在发生的事情。

当您按下开关使其打开时,设备将发布一条消息,该消息在“切换器”主题上“打开”。 您将在WebSocket UI中清楚地看到它。

当您在主题“传感器”上从WebSocket UI发布消息“20”或任何其他号码时,设备订户“gauge”将获得此消息并将值更新为该号码。

此外,您必须像此图像一样绘制您的物联网结构。 这样可以让您轻松了解项目元素以及每个元素与其他元素的通信方式。

演示

毕竟,您刚刚使用MQTT协议和连接设备完成了您的第一个物联网项目!

Youtu Demo

如果初次使用MQTT,该文章适合你跨入MQTT的大门,理论加实践,So, Easy!

原文链接

[ 物联网篇 ] - MQTT协议是如何工作的 ?相关推荐

  1. 物联网之MQTT协议详解基础篇(一)—— MQTT介绍

    MQTT: The Standard for IoT Messaging 开场白 大概是这么个背景 比如小米智能家居目前是这么个流程: 物联网设备通过家里的wifi连接到外网服务器 在外网通过米家ap ...

  2. 基于阿里云物联网平台MQTT协议实现云端和mqttfx通讯

    本项目的目的,借助阿里云物联网平台实现ESP8266(IDE:Arduino)与小程序(作为客户端)的互相通信,并通过小程序控制以及获取esp8266上的灯状态. 准备材料以及要使用的IDE 阿里云账 ...

  3. 物联网通信协议——MQTT协议

    MQTT协议概念 MQTT(Message Queuing Telemetry Transport, 消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的" ...

  4. 智联物联分享之物联网协议MQTT简述,MQTT协议特点

    接触过物联网设备的朋友们对于MQTT应该都不陌生吧,那MQTT是什么呢?智联物联小编为大家分享下MQTT的简述与特点. MQTT(Message Queuing Telemetry Transport ...

  5. mqtt协议调用示例(包括MQTT一键启动服务+测试工具 MQTTFX云盘下载),对捷顺门禁温感一体机进行人员信息下发

    hello, 大家好 我是一只不是在戏精,就是在戏精路上的极品二哈 新年上班第一天,给大家贡献一篇 MQTT 协议使用示例文章 也是本汪自己的一篇实用笔记 本汪先总的说下: MQTT协议进行数据交互, ...

  6. 一文读懂物联网 MQTT 协议之基础特性篇

    一.前言 上个月有个读者问我物联网 MQTT 协议实战相关的问题,我说后面会搞,没想到不知不觉一个月了,太忙了,再怎么忙答应的事情还是要给读者一个交代,所以就有了此文. 二.MQTT 协议概要 2.1 ...

  7. 中国移动物联网开放平台OneNET学习笔记(1)——设备接入(MQTT协议)OneNET Studio篇

    一.平台简介 中国移动物联网开放平台(OneNET) 是中移物联网有限公司基于物联网技术和产业特点打造的开放平台和生态环境,适配各种网络环境和协议类型,支持各类传感器和智能硬件的快速接入和大数据服务, ...

  8. 一文读懂物联网 MQTT 协议之实战篇

    一.前言 上一篇我们介绍了 MQTT 协议格式以及相关的特性:一文读懂物联网 MQTT 协议之基础特性篇,这一篇我们就来实战一番,理论得与实践结合,方能吃透 MQTT. 我的那个读者还提到了讲一下 M ...

  9. Esp8266 进阶之路29【高级篇】百万条消息免费之乐鑫esp8266使用TCP直连模式MQTT协议接入阿里云物联网平台,支持私家服务器对接,支持阿里云规则引擎。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

最新文章

  1. 【五线谱】音高表示 ( 低音谱号 | C1 36 音符音高表示 | C2 48 音符音高表示 | C3 60 音符音高表示 )
  2. CVPR 2020最新热点:物体位姿估计
  3. 在UE4中创建受《羞辱》启发的环境
  4. 新手程序员如何让他快速成长?一名老程序员,谈谈对程序员的培养
  5. java主程序怎样调用子程序_存过和函数以及在Java程序中的调用
  6. 浅谈Vue之双向绑定
  7. Python_套接字、IPv4和简单的客户端/服务器编程
  8. oracle 创建SDO_Geometry表
  9. 如何提高 Rust 程序的性能?
  10. Vue使用nextTick的原因和作用
  11. ios睡眠分析 卧床 睡眠_使用Swift在HealthKit中进行睡眠分析
  12. lozi混沌映射吸引子,使用python的matplotlib绘制,可以放大和缩小
  13. 智能智慧型停车场管理系统解决方案
  14. Hyperledger Fabric 链码生命周期
  15. lan的以太网标准_并非所有以太网电缆都是平等的:通过升级,您可以获得更快的LAN速度...
  16. 也谈企业文化—执行力
  17. java左手画圆右手画方_左手画圆,右手画方,有两个截然不同的说法,你知道吗?...
  18. node.js邮箱验证码
  19. 京东管培生 群面记录
  20. 微信公众平台营销策略相关分析

热门文章

  1. C++ typeid 不同类型打印 name
  2. 给我深爱着的人,祝你中秋快乐……
  3. 6. 数值微积分与方程求解
  4. 118358-38-6,Fmoc-L-Ser(β-D-Glc(Ac)4)-OH,葡萄糖丝氨酸的纯度以及结构式介绍
  5. 电脑这个设置不关闭千兆网还不如百兆网!
  6. 万兆网和千兆网ubuntu环境下的配置
  7. 利用客服消息和模板消息实现微信群发(突破群发接口的上限)
  8. Centos安装Nginx并使用acme脚本配置SSL证书
  9. Python实例5:身体质量指数BMI问题分析
  10. Java学习笔记(二十一)