物联网全栈教程-从云端到设备(四)

请下载今天的附件,因为有表格,所以比论坛上的内容更详细。

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

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

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

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

本学习手册根据MQTT V3.1.1 版本编写

官方手册下载地址:http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.doc

下面章节大部分内容均参考此官方手册。

2、MQTT 通信协议需要有三个角色参与

这段文字参考百度云计算的帮助文档:

https://cloud.baidu.com/doc/IOT/MQTTProtocol.html#.E0.F6.0C.38.86.9F.BE.F8.FD.AC.D9.00.29.12.24.B6

MQTT协议提到的一个名词“主题”,类似于文件夹的名字一样。比如小王是电脑的主人,他的电脑上面有a,b两个文件夹,小刘每次存储的文件喜欢放到a文件夹,小宋每次存储的文件喜欢放到b文件夹。那么当小林想看小刘的文件时,只需要看a文件夹就可以了。上述的“a”文件夹的名称,在MQTT协议里面称作主题 。


左图诠释了MQTT协议里的三个角色:发布者客户端(负责发送消息),代理服务器(负责接收和分发消息),订阅者客户端(负责接收消息)。

在MQTT协议里,“主题”就是一个文件夹,发布的消息可以送到一个“主题”里面,订阅者也可以从“主题”里面读取到消息。

代理服务器在国内有百度的 IoT Hub ,也有阿里云的IoTHub,还有很多其他品牌的服务器。

发布者客户端和订阅者客户端既可以是同一台设备,也可以是不同的设备,只要这台设备可以通过服务器的认证,并且遵循MQTT协议,就可以发布或者订阅消息。本学习手册的重要内容就是两个客户端如何与服务器“交流”。

3、MQTT 通信协议和大数据

(1)       小刘采集的信号是温度信息,他每间隔1分钟就上传一次温度信息到服务器,同时他发送的主题是 a 。

(2)       服务器接收到小刘的温度信息后,会查找当前都有哪些订阅者想看主题是 a 的信息。

(3)       小林订阅了主题是 a 的内容,只要小刘发送一次信息,小林就可以立马接收到对应的信息。

(4)       小刘和小林都需要事先通过账号密码的方式连接到服务器。小刘就像在野外工作的工作人员辛苦采集信号,而小林就像在办公室的老板千里之外洞察前线的一手信息。

(5)       如果有1000个小林这样的角色不停地给服务器发送温度数据。我们都知道服务器有数据保存和数据处理的能力,这时候就可以结合机器学习的相关知识去处理和分析这些数据,从而为人类的决策提供参考。

4、在MQTT 通信协议里,字符串需要遵守UTF-8 编码规范

在MQTT通信协议里,数据传送是以Bit(位)为单位的,和我们常见的TTL串口类似不过他们本质上不是一个东西。MQTT协议约定:数据传送时,高字节在前,同时,每个字节里面的最高位先传输。

5、MQTT 一帧消息包含的内容

MQTT 的一帧典型的消息最多由三部分组成:

固定头(所有的消息必须包含)  +  可变头(有些没有)有效内容(有些没有)

MQTT协议约定,根据不同的功能实现,固定头是必须要的,其他两部分内容可有可无(比如心跳包的发送和接收只要固定头即可,而从机发送的链接请求则包含了三个部分)。

6、后面还有内容,我做成了PDF了,里面有表格啥的,论坛上编辑不方便,你下载查看吧。里面详细讲解了组合一帧报文的过程。附件中还有一个是MQTT协议的中文手册,更权威。


猜你喜欢

转载自blog.csdn.net/jixin_lee/article/details/80286353
今日推荐