初识别 MQTT 协议 | 学习笔记

简介: 快速学习 初识别 MQTT 协议

开发者学堂课程【物联网平台开发全栈教程初识别 MQTT 协议学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/562/detail/7692


初识别 MQTT 协议


内容介绍

一、认识 MQTT 通信协议

二、MQTT 是基于发布/订阅的异步协议


一、认识 MQTT 通信协议

1.认识 MQTT 通信协议

1MQTT 通讯协议是定义在 TCP 协议之上的。

2TCP 通讯协议可以理解为接近底层,保障双向通信保障电话接通是 TCP。如果双向通信保证好之后,需要进行更高级的通信,那就是 MQTT

举例:假设有两个人要打电话,TCP 协议就类似于连接两个电话的电话线,电话线可以让他们说的内容方向流动,但是如果后面一个人说的话是英语,前面一个人说的话是中文,那么他们两个交流肯定是无效的。它们的数据传来传去是没有意义的,因为它们互相听不懂对方在说什么。如果电话的两边都说的是中国话,而且他们都说的是普通话,那么它们就可以进行高效的沟通。MQTT 通信协议也可以这样理解,右边说的是 MQTT,左边说的也是 MQTT,那么他们的数据都是可以被相互接受与理解的。所以 MQTT 协议是一个建立在TCP协议之上的更高级的协议。


二、MQTT 是基于发布/订阅的异步协议

1.MQTT 学习手册

2.MQTT 是基于二进制的通信协议

1MQTT 协议是 IOT (Internet of Things)领域的一个主流协议。

2)在物联网的时代,每一个传感器每一-个设备都想接入互联网进行数据交换。MQTT 协议非常适合这样的场合。目前国内的主流 I0T 服务器供应商均提供对 MQTT 协议的解析比如百度云计算,阿里云计算等。MQTT 协议的实现也非常简单,对带宽的要求不高,对网络链接的可靠性要求也不高,而且协议本身制定了一定的机制来处理突发事件。

3MQTT 协议不仅可以在物联网领域发挥重要作用,同时也可以用于多台机器之间的信息交换。比如一个车间里面所有的传感器之间数据的交换。

4MQTT 协议也不仅仅局限于运行在互联网通信上。它是一个通信规则,对通信方式的实现不关心。通常提到物联网指的是通过 TCP/IP 的方式实现了通信,也就是利用互联网实现,因为互联网可以提供一个非常可靠的双向通信。

5MQTT 协议基本框架:

image.png

代理服务器的设备可以连接户外的设备,每一个设备都是和服务器建立了 TCP 通道。通信数据是直接和服务器交互的,不会直接和第三方设备进行交互。在 MQTT 协议里,“主题”就是一个文件夹,发布的消息可以送到一个“主题”里面,订阅者也可以从“主题”里面读取到消息。

举例:比如一个主题是 Baiduf1,还有一个主题是 Baiduf2,那在服务器里面就存在 f1,f2,f3,f4,f5许许多多的文件夹。当一个设备将它的数据存到文件夹里面的时候,他们通信的使命就已将完成了,如果有一个订阅者a向了解发布者客户端的数据是多少,它可以直接打开文件夹去看。

代理服务器在国内有百度的 IoTHub,也有阿里云的 loTHub,还有很多其他品牌的服务器。发布者客户端和订阅者客户端既可以是同一台设备,也可以是不同的设备,只要这台设备可以通过服务器的认证,并且遵循 MQTT 协议,就可以发布或者订阅消息。本学习手册的重要内容就是两个客户端如何与服务器“交流”。通信最根本的就是二进制流,mqtt 里面就是二进制流。协议手册里面会发现 byte 每个字节都进行了定义,通过 mqtt 的方法会认识到每一个字节都是有含义的。比如说 CONNECT,不同的数字代表不同的含义。不同的位也代表不同的意思,

image.png

3.CONNET 报文是如何组合的(都是二进制)

(1)   CONNECT" ,客户端发送给服务器的连接请求。

(2)   当确保网络连通后,客户端首先需要连接到服务器。如果连接成功,服务器需要有一个链接成功的返回。如果连接成功,客户端就不需要再发送链接请求了,只需要发送数据到服务器即可,同时发送必要的心跳包来保持连接。

(3)   验证网络是否连通的方法很简单,只需要发送“Ping 请求”到服务器,如果服务器有响应就证明网络链接是可靠的。发送(16进制格式) C000 , 服务器必须返回(16 进制格式) D000

(4)   “固定头”:第一个字节肯定 是0X10,后续的帧长度要看后面跟随多少信息,待定(0X53) 。“可变头”:协议名(UTF-8 编码) +协议版本1字节+连接的标识符1字节+心跳包时间2字节。

4.MQTT 协议的订阅和发布:

1)订阅:首先会打开小工具去计算一下 MQTT 的账号和密码,然后连接 MQTT,通过 MQTT.fx 这个软件,MQTT.fx 这个软件通过 PC 模拟 MQTT 通信协议。

2)连接完之后,就会订阅主题,然后发送内容出去。

打开小工具计算一下 MQTT 登录的账号和密码,然后登录阿里云,去控制台。

3)再查看一下上次新建的设备。

4)主要是找一下设备的三元组信息,需要对设备进行建全,进行加密。

5)三元组可以理解为账号和密码,通过账号和密码可以计算出让 MQTT 直接使用的账号和密码,计算完之后,再设置里面填写密码和信息。

6Broker Adress 填入对应的域名;Broker port 填入端口,下面的几个参数都可以保持默认不动。

7User Name password 需要把它填写一下,打开物联网温度继电器。

8)点击查看,然后去复制上面的信息。

9)然后就点击计算参数,单片机 SN 随便输入数字

image.png

10)再把内容复制粘贴过去

11)填好了之后,右上角有绿色的就说明连接成功了。

image.png

只要服务器给对应的 Subscribe 发送内容,如果我订阅了,就可以知道是什么内容。

5、发布:

1)比如说有一个属性上报的主题,设备本身想要上报数据,然后就复制一下

2) 上报内容的格式是有约定的,所以要遵守一定的格式。

然后点击 PUblish

运行结果:

image.png

所以设备上报属性是 ok 的。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
5月前
|
传感器 网络协议 Ubuntu
MQTT协议与EMQ
MQTT协议与EMQ
150 0
|
1月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
121 0
|
2月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
75 0
|
2月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
62 0
|
4月前
|
数据采集 监控 物联网
MQTT协议在智能制造中的应用案例与效益分析
【6月更文挑战第8天】MQTT协议在智能制造中的应用案例与效益分析
130 1
|
4月前
|
消息中间件 存储 RocketMQ
消息队列 MQ产品使用合集之Remoting协议是否可以直接和proxy交互的吗
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
4月前
|
消息中间件 Serverless Windows
消息队列 MQ产品使用合集之MQTT协议是否可以应用于社交软件的系统通知场景
阿里云消息队列MQ(Message Queue)是一种高可用、高性能的消息中间件服务,它允许您在分布式应用的不同组件之间异步传递消息,从而实现系统解耦、流量削峰填谷以及提高系统的可扩展性和灵活性。以下是使用阿里云消息队列MQ产品的关键点和最佳实践合集。
|
4月前
|
传感器 物联网
物联网协议概述:MQTT、CoAP 和 HTTP
【6月更文挑战第3天】探索物联网的三大协议——MQTT、CoAP 和 HTTP。MQTT 是高效的消息传递使者,适用于大规模、不稳定网络环境;CoAP 小巧灵活,适合资源有限的设备;HTTP 则是熟悉的网络通信老将。根据不同场景选择合适的协议,让物联网设备有效交流。示例代码展示它们的使用方式。
151 0
|
5月前
|
消息中间件 小程序 网络性能优化
蓝易云 - 直播小程序源码有用的协议知识:MQTT协
在直播小程序源码中,MQTT协议可以用于实现实时消息推送,如弹幕、聊天消息、礼物信息等。通过使用MQTT协议,可以确保消息的实时性和可靠性,从而提高用户体验。
183 0
|
5月前
|
弹性计算 JSON 监控
使用Logtail采集MQTT协议数据
本文主要介绍如何使用Logtail来采集MQTT协议的数据。
135 0
使用Logtail采集MQTT协议数据