[网络篇]ESP8266-SDK教程(七)之物联网标配MQTT初相识

恭祝各位猪年大吉,今天是大年初一,放假回家四五天了,讲真的搁家比上班还累。。。今夜得闲觉得不能把时间浪费掉,得活跃活跃脑袋瓜,这几天在家喝酒喝的感觉都变笨了。

闲话少说,还是进入正题吧,对于MQTT可以这么说吧,但凡你对物联网有所了解相信你肯定没有没听过MQTT这几个字,但是未必有过深入的了解,那么我们在本片文章中一起来回顾一下。

不知道各位去学习新知识的时候是怎么开始的,我个人是比较喜好先去官方了解一下,如果没有官网我会尝试先看一下百科,然后再就是博客园中大神写的文章,个人感觉官网是最官方的,因为百科词条跟博文可能不会跟官网的信息实时同步,所以我们先去官网看一下,戳卡片,官网并没有太多内容,但已经把我们想要了解的都写出来了,大家可以先看一下:

MQTT​mqtt.org

MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks. The design principles are to minimise network bandwidth and device resource requirements whilst also attempting to ensure reliability and some degree of assurance of delivery. These principles also turn out to make the protocol ideal of the emerging “machine-to-machine” (M2M) or “Internet of Things” world of connected devices, and for mobile applications where bandwidth and battery power are at a premium.

上面这段英文就是对MQTT最好的介绍,如果还觉得长,那我们可以从这简短的文字中提取出有用的关键字:

  • protocol
  • machine-to-machine(M2M)
  • Internet of Things(IoT)

可以看出这是一个通讯协议,主要应用M2M和IoT领域,所以如果你从事物联网相关的行业,对这个协议就要有所了解了,这是目前个人感觉智能设备(手机、智能音响)与智能终端设备(灯、加湿器、窗帘等)之间交互比较好用的协议,是对硬件和网络都要求不高的通讯协议,就目前而言这也是业内大多数大厂也在使用的通讯协议,所以对其了解与熟练使用也是很有必要的。

MQTT最早由IBM发布,目前作为一个Eclipse Paho开源项目,由Eclipse团队维护,最新版本是5.0,我们先看一下几个版本的各种语言支持情况:

image

这里只列举了三个版本,主要原因是3.1.1是MQTT的第一个OASIS标准版本,3.1版本应该是目前使用最广泛的版本,5.0版本是最新版本:

MQTT and MQTT-SN software​www.eclipse.org

特性:

MQTT是客户端服务器发布/订阅消息传输协议。它重量轻,开放,简单,易于实现。这些特性使其非常适合在许多情况下使用,包括受限制的环境,例如机器到机器(M2M)和物联网(IoT)环境中的通信,其中需要小的代码占用空间和/或网络带宽非常宝贵。

  • 该协议通过TCP / IP或其他提供有序,无损,双向连接的网络协议运行。
  • 使用发布/订阅消息模式,该模式提供一对多消息分发和应用程序的分离。
  • 与有效负载内容无关的消息传输。

消息传递的三种服务质量:

  • “最多一次”,根据操作环境的最佳努力传递消息。可能会发生消息丢失。例如,该水平可以用于环境传感器数据,其中如果某个读数丢失无关紧要,因为下一个读数将很快发布。
  • “至少一次”,确保消息到达但可能发生重复。
  • “完全一次”,确保消息准确到达一次。例如,此级别可用于计费系统,其中重复或丢失的消息可能导致应用不正确的费用。

网络开销小和断线机制:

  • 最小化传输开销和协议交换,以减少网络流量。
  • 发生异常断线时通知相关方的机制。

更多相关内容可以戳下面卡片:

MQTT Version 5.0​docs.oasis-open.org

关于MQTT的一些基础知识我们就先了解到这里,可能没有接触过的同学对这个协议还是有一点迷茫,对两个设备之间如果建立起通信是有点比较好奇的,我简单一说可能你就懂了,在这个通信协议中必不可少的一个环节就是有一台消息服务器,前面特性当中也有说:MQTT是客户端服务器发布/订阅消息传输协议。其实两台设备之间的消息都是经由消息服务器转发的,前面特性中也说过:该协议通过TCP / IP或其他提供有序,无损,双向连接的网络协议运行。所以MQTT是在TCP/IP协议之上的,所以两个设备如果没在一个局域网中是很难建立起TCP连接的,所以消息服务器就显得很重要了,整个通讯架构简图如下:

image

设备1想跟设备2打个招呼:hi,这条消息是需要经由消息服务器转发的,因为从整个网络来看,消息服务器是可以部署在公网当中的,也就是有唯一的IP地址,但是两个设备基本是不太可能有固定IP的,但是MQTT是在TCP协议之上的,这也就意味着我们必须要有某一个固定的IP去监听消息,所以这条消息就在消息服务器监听到后会转发给设备2,那么到这里你可能又会想问,消息服务器为什么会知道要转发给设备2呢?其实,这里说转发给某一个设备是不对的,因为MQTT采用的是主题机制,这里我们可以先将主题理解成为每一条消息所跟的一个属性,这个属性会决定到哪些设备可以接收到,哪些设备接收不到消息,比如下图:

image

其中设备1以主题:/topic1,发送了一条消息:hi,由于这个主题只被设备2订阅了,所以只有设备2接收到了该消息,但是设备2以主题:/topic2,发送了一条消息:hello world,由于这个主题被设备1和设备3同时订阅了,所以,这条消息会被设备1跟设备3都接收到,这就是主题在这里面起的作用,后面我们会在代码中更加具体的了解什么是主题,这里只是以一种比较抽象的说法让大家先了解一下。

关于MQTT的一些基础知识先写到这,主要是先对其有一定了解,后面预计还会有两篇,一篇是如何在电脑(ubuntu)上搭建环境本机测试,另一篇是如何在ESP8266上利用MQTT,实现手机点灯?

夜深了,抓住了大年初一的尾巴,最后祝大家:猪年行大运,诸事大吉!
QQ交流群:592587184

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...
    杰伦哎呦哎呦阅读 2,431评论 0 5
  • 网络编程 1. 概论 建立连接:通过IP或者域名来连接两台设备,通过端口号找到对应的通信程序 通信协议:要传输的数...
    陵无山阅读 3,898评论 0 12
  • 晴江秋望 唐崔季卿 八月长江万里晴,...
    13摄氏度阅读 72评论 0 0