查看: 7879|回复: 5
打印 上一主题 下一主题

【物联网学习系列分享】之MQTT协议介绍

[复制链接]
  • TA的每日心情
    擦汗
    2019-8-26 18:20
  • 签到天数: 306 天

    [LV.8]以坛为家I

    跳转到指定楼层
    楼主
    发表于 2017-6-29 11:47 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 michael_llh 于 2017-6-29 11:49 编辑

    ? ?? ???本次我们将介绍另外一个物联网两种常用到的协议,MQTT,这个协议的全称是Message Queuing Telemetry Transport,消息队列遥测传输,是由IBM提出来的。这里我们在说一些协议是什么东西吧,该怎么去理解它,其实就是在数字的时代里,信息是由0、1构成的,那么对于一个字符假设我们说是a,那么怎么用0、1去表示,这其中就有很大的问题,所以我们需要通过某一定定义,比如说用0101010这样的一串字符就表示说是a这个字符,那么这就是一个规定制定的过程,这样可以引出我们字符编码的概念,通过定义某一种01串的顺序来表示某一个字符,然后大家都认可这样的规定,在计算机和显示制作上自然而然就可以达到统一,并正确显示我们想要的内容。那么协议是对于通信而言的,也就是说通信中的01串的规定就叫做协议,那么我们网络中的01顺序规定也是属于通信相关的,也叫作协议。

    ? ?? ? 那么现在我们具体看一下什么叫做MQTT。

    ? ?? ? 首先我们需要了解,MQTT提出的背景,在什么情况下我们适合用这个,而且我们为什么在现在物联网中很多用到了MQTT,这个是我们需要探索的点,这样了解了协议的背景才能够具体去使用它。

    ? ?? ? MQTT他不是一种实时通信的手段,和我们常用的QQ、微信不同,这两个聊天工具是一种实时聊天,什么叫实时,就是两者之前不存在时间差,你发一个消息,然后我立马就能够收到这个消息,瞬时的一个特性,但是对于MQTT,它是一个什么样的特点呢,我们大家都知道在微信中我们有用到公众号,那么这个公众号它是需要我们先去关注这个公众号,然后公众号比如说每天一更,或者是每周一更,这样我们就可以在某个时间节点上收到公众号推送的消息,那对于MQTT就是类似这样的过程。

    ? ?? ? 那么为什么说MQTT是非常适用于物联网中的呢?比如说我们举个例子来说明,我们在房间里头自动控制空调的开关来调整温度维持在人体最合适的温度内,那么该如何设计,第一我们肯定需要一个温度计,然后需要将温度计的数据传输到处理单元,处理单元根据温度的高低进行调整空调的开关和温度。那么温度计传输数据是怎样的,实时传输吗,我们不需要这样的数据,对于温度而言,它的变化并不是突变的,而是一个渐变的过程,实时数据对我们的参考意义不大,所以我们可以采取一段时间内获取一次温度数据,而在这个场景下我们就可以使用MQTT,处理单元像温度采集单元去订阅这个温度数据,当温度采集单元的时间到了,或者是满足其他条件的情况下,那么就像处理单元去推送这个数据即可,这样就很符合MQTT的协议方式。当然在很多场景下都和MQTT这种实现方式是很吻合的,所以MQTT就变得流行起来。

    ? ?? ? MQTT的协议实现是比较复杂的,包括他的格式规范都是比较复杂的,不想我们之前所提到的HTTP协议我们相对可以讲清楚一点,但是大家也不要误以为HTTP比较简单,介绍HTTP协议的书籍也是厚厚的一大本都讲不完。这些人类在探索中逐渐积累下来的东西都相对比较复杂,不是那么容易去理解。

    ? ?? ? 那么我们下面简单的通过几张图来帮助大家更好的理解MQTT,只能说是大概进行一些基本概念的梳理,不能够做到很深入的剖析,如果要深入的了解这个协议还是需要通过官网文档进行查阅。

    ? ?? ? 我们还是以上面提到的例子做为图例,我们有三个客户端,每个客户端扮演不同的角色,比如说Client A是温度的提供者,Client B可能就是空调,Client C可能就是温度的显示单元。那么Broker就是处理单元,也就是我们后面会一直提到的服务器方。

    ? ?? ?
    ? ?? ? 那么当Client A发布温度消息之后,Broker就会在某种条件下想Client B和Client C推送温度信息,那么这两个客户端就可以获得温度信息,从而做出相应的动作,空调可以控制温度的高低,而温度显示单元则显示温度。

    ? ?? ?
    ? ?? ? 相信通过这两张图片大家能够比较清楚的理解MQTT的一个工作方式,当然这里我们省略了很多细节,所以大家如果需要深入理解的话还是要看官方文档,MQTT是有自己的官网,上面也有详细的Documention,但是都是英文的,也有国内的人翻译的版本,需要深入了解的大家就自行深入啦。


    打赏作者鼓励一下!
  • TA的每日心情
    无聊
    2017-6-21 12:26
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    沙发
    发表于 2017-7-8 18:35 | 只看该作者
    最近也在学习这个
  • TA的每日心情
    擦汗
    2019-8-26 18:20
  • 签到天数: 306 天

    [LV.8]以坛为家I

    板凳
    ?楼主| 发表于 2017-7-12 22:43 | 只看该作者
    琛琛 发表于 2017-7-8 18:35
    最近也在学习这个

    恩,可以交流,有什么错误也欢迎帮忙指出!
    打赏作者鼓励一下!

    该用户从未签到

    地板
    发表于 2017-11-16 20:41 来自手机 | 只看该作者
    请问 假如clientA和clientB 都是显示设备 并且都需要来修改温度设定值 client C 是空调,根据设定温度来调节室温。那么

    该用户从未签到

    5#
    发表于 2017-11-16 20:44 来自手机 | 只看该作者
    请问 假如clientA和clientB 都是显示设备 并且都需要来修改温度设定值 client C 是空调,根据设定温度来调节室温。那么A 和B发布同一个主题 会不会产生错误?

    该用户从未签到

    6#
    发表于 2019-9-27 17:48 | 只看该作者
    DKid 发表于 2017-11-16 20:44
    请问 假如clientA和clientB 都是显示设备 并且都需要来修改温度设定值 client C 是空调,根据设定温度来调 ...

    应该会有管理者机制,我认为可能跟系统里的“锁”的概念类似。
    您需要登录后才可以回帖 登录 | 立即注册 ?

    本版积分规则

    热门推荐

    关于温湿度传感器在LCD显示上的问题
    关于温湿度传感器在LCD显
    我建立了一个程序,想要将dht11传感器得到的数据显示在LCD1602上,但是LCD显的都是乱
    【原创】全球最小口袋3D打印机mini one直播教程贴
    【原创】全球最小口袋3D打
    最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 搞了半天,终于能正常打印,
    【Arduino】108种传感器模块系列实验(74)--- 4位LED数码管模块
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    (开源)ESP8266改装小风扇,app远程控制+天猫精灵控制
    (开源)ESP8266改装小风
    材料准备 [*]USB风扇一个 [*]ESP8266一块 [*]3.3继电器一块 拆解风扇 第一次,没有
    基于机器视觉的智能分拣机械臂
    基于机器视觉的智能分拣机
    本作品是一个基于机器视觉的智能机械臂操作平台,其采用atmega32单片机作为主控制系统
    Copyright ???2015-2016??Arduino中文社区??Powered by?Discuz! ??( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表