概述
前言
搞智能家居就不得不说到网络通信,因为我们需要通过各种终端去控制我们的智能家居设备,所以网络通信这方面是必备的.而在市面上比较流行的网络通讯协议就是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服务器.其实也比较简单.就说到了,如果有任何问题,欢迎在评论区留言评论.欢迎指导批评.谢谢大家了.
最后
以上就是痴情芝麻为你收集整理的从头开始做一个智能家居设备:MQTT协议及使用的全部内容,希望文章能够帮你解决从头开始做一个智能家居设备:MQTT协议及使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复