从头开始做一个智能家居设备:MQTT协议及使用


前言


搞智能家居就不得不说到网络通信,因为我们需要通过各种终端去控制我们的智能家居设备,所以网络通信这方面是必备的.而在市面上比较流行的网络通讯协议就是MQTT通信协议.今天我们就简单聊聊如何什么叫MQTT协议,以及基于百度云的MQTT协议使用.


MQTT


MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。逻辑图例如下所示.

通俗的来说,MQTT类似于即时通讯的群聊,里面的用户就是每一个终端,当然了,每一个用户在进入群的时候,就相当于订阅了话题(subscribe) . 用户进入的时候就会被设置为是否可以发言,这个过程就是发布过程(push).MQTT的优点就是上面说到的可靠性,这是很难得的优点,因为很多智能设备所处的网络环境并不是十分的稳定.所以使用MQTT协议来解决这一问题.

另外ESP8266的官方Demo已经对MQTT做了很好的封装,所以我们使用MQTT也是非常方便的.只需要在Demo中修改几个参数就可以了.

这里需要单独说一个 MQTT的概念名称,消息质量等级(Qos),在发送消息的时候需要带上消息质量等级信息.下面我们就简单说一下这个Qos的概念以及等级.

等级 特性
Qos0 发送者只发送一次消息,不进行重试,Broker不会返回确认消息。在Qos0情况下,其他设备可能没有接受到消息,不保证消息是否送达
Qos1 发送者最少发送一次消息,确保消息到达Broker,其他设备需要返回确认消息PUBACK。在Qos1情况下,其他设备可能接受到重复消息,保证消息必然送达.
Qos2 Qos2使用两阶段确认来保证消息的不丢失和不重复。在Qos2情况下,Broker肯定会收到消息,且只收到一次, 保证消息必然送达.


百度智能云


百度云的物接入每个月有 1000000 条免费消息.比较适合入门测试使用.而且后面小范围设备的价格也比较合理,像我买了每一个400 W 条数据,一年也就不到一百块钱而已.而且百度云的物接入没有公钥和私钥各种加密,相对于我这样的小白比较简单.OK,扯了这么多.我们来看一下如何进行基本的配置吧.

  • 首先我们先进入百度云物接入的控制台,然后选择附近的地点,南方就选华南的,北方的就选华北即可.紧接着就是开通即可.如下所示.
  • 紧接着,我们就需要创建一个数据类型的项目了.视图如下所示.
  • 这里选择 数据型 的项目,然后填写完项目名称和描述之后就可以点击完成了.这样我们就创建了一个项目了.
  • 创建完成之后返回到项目列表中,这时候需要我们把项目的几个数据保存下来.主要是连接地址.我们后期主要会用到第一个基于TCP的地址.如下所示.(项目已经删除,请自己尝试创建.)
  • 下面我们就要做的就是类似于注册操作了.但是和普通的注册不同的.这里有四个名词,分别是用户,身份,策略,主题.在创建之前,我们先说说这三者都起了怎样的作用.

物接入用户(thing):简称“用户”,在项目中创建的虚拟用户,每个项目下最多可以创建10000个用户。这也是设备登录的直接账号.

物接入身份(principal):简称“身份”,在项目中创建的虚拟设备的身份,每个设备可以绑定一个身份。每个项目下最多可以创建10000个身份。身份在在创建过程中会生成密钥.由于每个账号需要绑定一个身份,这就造成多个用户设备会使用到同一个身份中的密钥.

物接入策略(policy):简称“策略”,策略中定义了关于特定主题的收发权限,每个身份可以绑定一个策略。每个项目下最多可以创建10000个策略。

MQTT主题(topic):简称“主题”,每个策略都需要指定主题及主题对应的权限。该主题应用于MQTT客户端。物接入允许主题中带一个通配符“#”,例如“temperature/#”就是匹配前缀是temperature/的所有topic;单独的“#”表示匹配所有topic。

上面的四个名称概念可以用下面的图例进行表示.多个用户可以绑定一个身份,也就是可以使用同一个密钥.多个身份可以绑定一个策略.也就是省去了每个身份标签都需要重新创建策略的工作量了.同时.每一个策略都可以添加多个话题.

  • 接下来,我们就从创建策略开始.进入项目之后,点击"策略列表".然后点击"创建策略"按钮.
  • 打开创建策略窗口之后,如下所示.我们可以给当前主题设定权限,并且如果想要绑定多个主题,也可以通过"新增主题"按钮添加更多的主题.填写无误之后就点击确定创建即可.
  • 创建完策略之后,我们进入身份列表创建身份.然后点击创建进入创建身份界面.这时候,我们填写完成身份名称之后,选择"密码认证"即可.
  • 在创建身份的过程中.我们选择我们已经创建好的策略.如下所示.
  • 上一步操作完成之后,就会出现登录所需要的密钥,这个密钥一定要保存好,因为后面是不会出现了.如果忘记了,那么就只能重置密钥了.前期测试阶段你忘了还好说,如果设备上线了.密钥已经写死在内存中了,这时候再去修改就会相当的麻烦了.所以这个一定要注意.
  • 创建密钥完成之后,我们就需要创建用户.我们先进入用户列表.然后点击创建进入创建用户界面.根据实际情况填写内容即可.第二步和第三步分别选择身份和策略.在第三步中,如果身份没有绑定策略,那么系统就会提醒我们去创建一个策略.
  • 经过上面的一顿捣鼓之后,我们就拿到了MQTT所有的服务器数据了.如下所示.我们留着备用即可.


结语


下一篇文章我们就会说一下如何使用官方Demo去开发ESP 8266 ,哈,终于要写到了正题了.这篇文章也就是稍微总结一下,可能百度云官网会发生改变.所以可以参考物接入文档 . 当然了,如果自己有服务器,也可以自行百度如何搭建MQTT服务器.其实也比较简单.就说到了,如果有任何问题,欢迎在评论区留言评论.欢迎指导批评.谢谢大家了.


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

推荐阅读更多精彩内容