MQTT 移植STM32+GPRS(串口透传)(一)

# 硬件智能之 MQTT协议介绍与移植笔记(一)

##MQTT是什么?
MQTT(MessageQueuing Telemetry Transport Protocol)即全称消息队列遥感传输协议,它是由IBM公司推出的一种基于轻量级代理的发布/订阅模式的消息传输协议,运行在TCP协议之上,为其提供了有序、可靠、双向连接的网络连接保证。设计将被应用于资源紧缺的嵌入式系统或网络带宽非常受限制的环境中,主要针对领域有遥感勘测、智能家居、能源监测和医疗应用程序,因为IBM的力推将来很有可能成为物联网的标准。(物联网自行搜索吧,出场频率太高了)。
##协议特点
(1)消息模型
MQTT是一种基于代理的发布/订阅的消息协议。提供一对多的消息分发,可以解除应用程序耦合。简单说就是一个发布者可以有多个订阅者,当发布者发生变化时,他会将消息一一通知给所有的订阅者。类似于你关注了某个明星,当她发生点什么时,关注的粉丝都会收到消息。
(2)主题名称(Topic name)
主题名称是用来标识已经发布消息的信息的渠道。订阅者用它来确定想要收到的信息,每次发布时都要设定它,协议本身不支持模糊匹配,必须有明确的主题。
(3)消息类型
MQTT中一共定义13种消息类型,如下图所示(图片来源于网络)。使用时可以必须根据收到信息的返回值判断是否类型一致,否则健壮性不好也是对MQTT协议制定者的不尊重(源码中为了校验数据的正确性,IBM的工程师们无所不用其极)。
! [ddsfsds](http://omp77n3im.bkt.clouddn.com/MQTT_package_type.png)

##补充一点
在MQTT协议中有三种角色:服务器、发布者客户端以及订阅者客户端(当有多进程/线程的时候,既可以发布也可以接收嘛这样才方便),本次的移植中我们是裸机系统,所以后面会供上我们的处理方法。好了,接着说。

发布者和订阅者互不干扰,就是说发布者或者订阅者可以不知道对方是否存在,客户端只是向服务器申请发布或者订阅消息,服务器可以对发布者提供的消息进行存储,然后将这些数据发给需要的订阅者那里去。也就是发布者和订阅者没必要同时连接,发布接收消息是异步的。
下一篇中针对具体移植mqtt前概念性理论。
######说明:在sectong公司期间的周末休息时间所整理。



你可能感兴趣的:(stm32)