物联网协议之:大话MQTT

一.MQTT协议

1.1 MQTT协议简介

MQTT协议(消息队列遥测传输协议)是ISO基于订阅/发布的消息协议,它承载与TCP/IP协议族之上,是为网络状态不好或硬件资源匮乏的嵌入式设备设计的物联网消息协议。基于订阅/发布的机制,需要一个中间角色就是Broker(服务器)。
MQTT运用于物联网领域,传感器与服务器的通信,信息的收集有一定的优势,适合工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。另外MQTT协议开源、代码量小,移植性好,能集成到Linux、Window、Mac系统中去。

1.2 MQTT实现方式

## MQTT协议特点:

 1.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
 2.对负载内容屏蔽的消息传输;
 3.使用TCP/IP提供网络连接;
 4.有三种消息发布服务质量:
    "至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重    复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
	“至少一次”,确保消息到达,但消息重复可能会发生。
	“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。
 5.小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量;这就是为什么在介绍里说它非常适合物联网领域,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。
  ## MQTT实现方式:
  实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。
  MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收消息内容(payload);
  ![MQTT数据交互]()
  MQTT服务器的主要工作是数据分发,没有数据保存功能
  MQTT让逻辑变得更清晰,需要什么订阅什么,可以订阅自己发布的主题,服务器就是回发测试。

MQTT服务器搭建

目前主流的Broker有以下3个:
1.Mosquitto:https://mosquitto.org/
2.VerneMQ:https://vernemq.com/
3.EMQTT:http://emqtt.io/此处,我们使用搭建EMQTT。

EMQTT服务器下载地址 https://www.emqx.io/cn/ EMQTT安装:(我下载的是EMQTT服务器下载镜像
如下是安装过程的官方步骤:
安装过程指南 https://docs.emqx.io/broker/v3/cn/install.html
Window cmd命令行进入Emqtt安装路径,然后emqx start启动Emqtt服务
mqtt 物联网架构_mqtt 物联网架构
测试EMQTT服务器
首先开启mqtt.fx(mqtt client),下面是mqtt client下载网址:
mqtt.fx下载镜像 http://mqttfx.bceapp.com/
mqtt 物联网架构_服务器_02
打开浏览器->输入http://127.0.0.1:18083->用户名:admin->密码:public->进入如下界面
mqtt 物联网架构_嵌入式_03
上图可以看到连接的mqtt客户端,可以测试订阅/发布功能了。大功告成,累死了奖励自己一个大大的鸡腿。加油奋斗吧,少年。