技术分享物联网与android

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

2019-08-20  本文已影响0人  神经骚栋

前言


搞智能家居就不得不说到网络通信,因为我们需要通过各种终端去控制我们的智能家居设备,所以网络通信这方面是必备的.而在市面上比较流行的网络通讯协议就是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,扯了这么多.我们来看一下如何进行基本的配置吧.

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

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

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

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

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

结语


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

上一篇 下一篇

猜你喜欢

热点阅读