MQTT协议研究

MQTT协议是轻量级的以太网数据交换协议,在物联网中应用越来越广泛,本文简要介绍MQTT协议的相关知识点。

1. MQTT协议简介:

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。

2. MQTT协议特点:

     1.使用的发布/订阅消息模式,提供了一对多消息分发。

     2.对传输消息有三种服务质量(QoS): 

     最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络即:<=1

     至多一次,这一级别会确保消息到达,但消息可能会重复。即:>=1

     只有一次,确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别

3.通知机制,异常中断时通知传输双方

3. MQTT协议原理:

4. MQTT协议实现

1.实现MQTT协议需要:客户端和服务器端

2.MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

3.MQTT传输的消息分为:主题(Topic)和负载(payload)两部分

1.Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)

2.payload,可以理解为消息的内容,是指订阅者具体要使用的内容

5.MQTT客户端:

 一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。

客户端可以:

1.发布其他客户端可能会订阅的信息

2.订阅其它客户端发布的消息

3.退订或删除应用程序的消息

4.断开与服务器连接

6.MQTT服务器:
MQTT服务器被称为“消息代理”(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间。

代理服务器可以:

1.接受来自客户的网络连接

2.接受客户发布的应用信息

3.处理来自客户端的订阅和退订请求

4.向订阅的客户转发应用程序消息

7.MQTT协议的订阅、主题、会话:

订阅(Subscription)

订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器。

会话(Session)

每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。

主题名(Topic Name)

连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。

主题筛选器(Topic Filter)

一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。

负载(Payload)

消息订阅者所具体接收的内容

8.MQTT协议中的方法:
MQTT协议中定义了一些方法(也被称为动作), 来于表示对确定资源进行操作。 这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。

  Connect,等待与服务器建立连接

  Disconnect,等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话

  Subscribe,等待完成订阅

  UnSubscribe,等待服务器取消客户端的一个或多个topics订阅

  Publish,MQTT客户端发送消息请求,发送完成后返回应用程序线程

  9.MQTT协议demo(以下代码基于C++):

   

随着家电设备的智能化,家电设备能够通过传感器感知周边环境,能够提供更加优良的用户体验。与此同时,随着互联网的浪潮以及智能手机性能以及体验的不断发展,智能手机已成成为人们连接网络的主流终端。而物联网的不断发展,家电设备可以接入到网络,这样智能手机可以随时通过网络查看设备状态、发送控制命令。目前市场上的手机控软件都是和智能设备一对一绑定,若有多个设备就需要多个手机应用软件进行管理。若能设计一种能够整合不同设备信息,并由一款应用软件进行统一管理的系统,将极大提高用户的使用体验,使得智能家居越来越普遍。 在这种需求的驱动下,本文设计并实现了一套基于 MQTT 推送协议的通用智能家居管理系统,解决硬件设备和信息上的异构性,提供一款可以显示并控制多种设备的手机应用软件。该系统包括基于树莓派系统的网关、基于 Openwrt 系统的系统服务端和iOS 智能手机作为控制端,整合多种家电设备的控制于一体,提供通用化的管理系统平台。 本系统通过在系统服务端与家电设备之间添加网关设备以连接不同通信方式的家电设备,将设备信息规格化通过 Wifi 通信上传到系统服务端,以此解决硬件上的异构性。在信息整合上采用元编程的方式解决信息上的异构性,对设备和设备属性进行分类抽象,极大提高了系统整合不同设备以及设备属性上的扩展性。同时抽象化的设备和设备属性显为手机端界面示的统一化提供了数据基础,能够将数据直接映射iOS系统 UIKit 的显示控件上,让手机端在界面设计时,可以通过预先设定映射匹配方式,快速添加新设备新属性,无需再通过代码添加。通过这种在硬件以及信息管理上的通用方案,本系统能够建立起一个可以适用于大部分家电管理的平台。在信息共享以及传输上,本系统采用 MQTT 推送协议作为通信方式,由于本系统多数设备都属于嵌入式设备,设备的计算资源十分有限,而 MQTT 推送协议对系统 CPU 以及内存资源的低占用率正适用于本系统。 最后本文对系统的各个模块特别是手机端模块进行了黑盒测试,验证系统的可行性以及可靠性。同时,也对采用 MQTT 推送协议的通信方案和采用 HTTP 长连接方案进行性能上的测试和对比,包括内存占用、CPU 占用率和能耗等三个方面。结果显示MQTT 推送协议方案在三个方面都占有优势,达到了设计要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值