首页 > 编程知识 正文

mqtt协议,MQTT跟485通信协议区别

时间:2023-05-06 14:20:55 阅读:44099 作者:2449

本文前言一、MQTT协议介绍1 .物联网的通信协议:2.MQTT协议特点3. MQTT协议设计规范4.MQTT协议主要特性5.MQTT协议实现方式6.MQTT客户端7.MQTT

前言EMQX官方文档:EMQX官方文档

另一方面,MQTT协议介绍1 .物联网的通信协议:设备和设备之间进行交互这是由协议定义的,这是什么形式的设备、平台设备和人应该进行交互,这个数据应该是什么形式

物联网协议对物联网通信存在一些重要问题,http://www.Sina.com/http://www.Sina.com /

例如,也有设备环境网络特别不稳定的设备所在的环境比较好的地方

因此,一些设备可能会联机或不联机

该设备、机器设备和平台之间的消息交换,由于网络原因,可能接收不到这些数据,也可能接收不到其通信协议,因此必须保证整个该消息数据的发送质量。 也就是说,消息必须位于第一个问题 :

这些物理设备在此设备上安装了芯片传感器,因此这些芯片中嵌入了一些程序。 这些程序在运行中内存不是很大,处理能力不强,芯片上的程序不能特别大

处理数据并不特别复杂,也不能处理大量的数据。 这些问题都是物联网通信协议需要考虑的问题

物联网设备所处的网络环境复杂 :

MQTT是基于Publish/Subscribe模式的物联网通信协议,由于简单易实现、支持QoS、消息小等特点,占物联网协议的一半。

mqtt官网: http://mqtt.org/

mqtt中文网: http://mqtt.p2hp.com/

http://www.Sina.com/http://www.Sina.com /

2.MQTT协议的特点1 .简单

2 .支持消息服务质量,以解决网络环境的复杂性.不可靠导致的消息无法安全可靠地传输的问题

3 .解决了发送消息数据小、占用带宽小、芯片存储器数量小的问题

一旦订阅成功后,客户端发送来数据

MQTT服务端积极向pc端或手机端推送数据

具有较少代码限制的带宽对于向远程一些设备提供实时可靠的消息服务具有较小的性能网络开销

3 .由于MQTT协议设计规范物联网环境非常特殊,MQTT遵循以下设计原则:

)简化,不追加有无可能的功能

)发起/订阅(Pub/Sub )模式有助于在传感器之间传送消息,并通过解耦客户端/服务器模式,从而不需要预先知道对方的存在(ip/port ),也不需要同时工作

)3)允许用户动态创建主题)无需提前创建主题),零运输成本;

)4)最小化传输量,提高传输效率;

)5)考虑低带宽、高延迟、不稳定的网络等因素;

)6)支持连续对话的维持和控制(心率);

)7)了解客户端计算能力可能较低

(8)服务质量提供)服务质量级别: QoS )管理;

)9)灵活,不强制传输数据的类型和格式(指APP应用层业务数据)。

4.MQTT协议的主要特性MQTT协议在低带宽、不可靠网络的远程传感器与控制设备的通信中工作,所设计的协议具有以下主要的几个特性:

(1)开放消息协议很容易实现。

)2)使用发布/订阅消息模型提供一对多的消息发布。第二个问题 :

)3)屏蔽负载(协议持有的APP应用数据)内容的消息传输。

)4)基于TCP/IP网络连接,提供有序、无损、双向连接。

主流MQT基于TCP连接来推送数据,但同样具有称为MQTT-SN的基于UDP的版本。

因为这两个版本基于不同的连接方式,所以优缺点当然也各不相同。

)5)短信服务质量) Q0S )支持,保证传输可靠; 有三种消息传递服务质量:

QoS0:“至多一次”,消息传递完全依赖于底层的TCP/IP网络。 会发生消息丢失或重复。 此级别可用

在以下情况下,环境传感器数据也可以失去一次读取记录。 这是因为最近也有第二次发送。 这种方式主要是普通APP推送,如果你的智能设备在推送消息时没有联网,推送过去没有收到,再次联网也收不到。

QoS1:“至少一次”允许消息到达,但可能会发生消息重复。 支付情况不理想

QoS2:“一次”,确保消息只发送一次。 此级别可用于要求苛刻的计费系统。 在计费系统中,如果消息重复或丢失,就会产生不正确的结果。 这个最

高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
(6)1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量,
这就是为什么在介绍里说它非常适合"在物联网领域,传感器与服务器的通信,信息的收集,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。
(7)在线状态感知:使用Last Will和Testament特性通知有关各方客户端异常中断的机制。
服务端和客户端有心跳感知 服务端实实检测客户端或者设备的状态
Last Wi:即遗言机制,用于通知同一主题下的其他设备,发送遗言的设备已经断开了连接。
当客户端下线 服务端帮客户端执行某一件事情
Testament:遗嘱机制,功能类似于Last Will.

5.MQTT协议实现方式

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:
发布者(Publish)、代理(Broker)(服务器),订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端消息代理是服务器,消息发布者可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(payload)两部分:
(1) Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
(2) payload,可以理解为消息的内容,是指订阅者具体要使用的内容

6.MQTT客户端

一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:
(1)发布其他客户端可能会订阅的信息;
(2)订阅其它客户端发布的消息;
(3)退订或删除应用程序的消息;
(4)断开与服务器连接

7.MQTT服务器端

MQTT服务器以称为"消息代理”(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间,它可以:
(1)接受来自客户的网络连接;
(2)接受客户发布的应用信息;
(3)处理来自客户端的订阅和退订请求;
(4)向订阅的客户转发应用程序消息。

8. 发布/订阅、主题、会话

MQTT 是基于 发布(Publish)/订阅(Subscribe) 模式来进行通信及数据交换的,与 HTTP 的 请求(Request)/应 答(Response) 的模式有本质的不同。
订阅者(Subscriber) 会向 消息服务器(Broker) 订阅一个 主题(Topic) 。成功订阅后,消息服务器会将该主题下的消息转发给所有的订阅者。
主题(Topic)以 ‘/’ 为分隔符区分不同的层级。包含通配符 ‘+’ 或 ‘#’ 的主题又称为 主题过滤器(Topic Filters); 不含通配符的称为 主题名(Topic Names) 例如:

chat/room/1
sensor/10/temperature
sensor/+/temperature
$SYS/broker/metrics/packets/received
$SYS/broker/metrics/#

‘+’: 表示通配一个层级,例如a/+,匹配a/x, a/y
‘#’: 表示通配多个层级,例如a/#,匹配a/x, a/b/c/d
注: ‘+’ 通配一个层级,’#’ 通配多个层级(必须在末尾)。

发布者(Publisher) 只能向 ‘主题名’ 发布消息,订阅者(Subscriber) 则可以通过订阅 ‘主题过滤器’ 来通配多个主题名称。
会话(Session)
每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。

9. MQTT协议中的方法

MQTT协议中定义了一些方法(也被称为动作),来于表示对确定资源所进行操作。这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出。主要方法有:
(1)CONNECT:客户端连接到服务器
(2)CONNACK:连接确认
(3)PUBLISH:发布消息
(4)PUBACK:发布确认
(5)PUBREC:发布的消息已接收
(6)PUBREL:发布的消息已释放
(7)PUBCOMP:发布完成
(8)SUBSCRIBE:订阅请求
(9)SUBACK:订阅确认
(10)UNSUBSCRIBE:取消订阅
(11)UNSUBACK:取消订阅确认
(12)PINGREQ:客户端发送心跳
(13)PINGRESP:服务端心跳响应
(14)DISCONNECT:断开连接
(15)AUTH:认证

10.MQTT协议数据包结构

官方文档中对于MQTT协议包的结构有着具体的说明:http://mqtt.org/documentation

二、EMQX简介

MQTT属于是物联网的通信协议,在MQTT协议中有两大角色:客户端(发布者/订阅者),服务端(Mqtt
broker);针对客户端和服务端需要有遵循该协议的的具体实现,EMQ/甜甜的奇异果就是MQTT Broker的一种实现。
EMQ官网:https://www.emqx.io/cn/
甜甜的奇异果 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT协议的设备, 实现从设备端到服务器端的消息传递,以及从服务器端到设备端的设备控制消息转发。从而实现物联网设备的数据采集,和对设备的操作和控制。

1. 甜甜的奇异果服务端环境搭建与配置 1.1安装

甜甜的奇异果 目前支持的操作系统:
Centos6
Centos7
OpenSUSE tumbleweed
Debian 8
Debian 9
Debian 10
Ubuntu 14.04
Ubuntu 16.04
Ubuntu 18.04
macOS 10.13
macOS 10.14
macOS 10.15
产品部署建议 Linux 服务器,不推荐 Windows 服务器。
安装包下载链接:https://www.emqx.io/cn/downloads#broker
更多安装教程:https://docs.emqx.cn/broker/v4.3/getting-started/install.html

Shell 脚本一键安装 (Linux)

curl https://repos.emqx.io/install_emqx.sh | bash 获取 Docker 镜像 docker pull emqx/emqx:4.3.7 启动 Docker 容器 docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:4.3.7 1.2启动

当 甜甜的奇异果 成功运行在你的本地计算机上且 甜甜的奇异果 Dashboard 被默认启用时,通过访问
http://localhost:18083 来查看Dashboard,默认用户名是 admin ,密码是 public 。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。