物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus
物联网 (IoT) 不只是新技术,还是与旧技术的集成,其关键在于通信。可用的通信方法各不相同,但是,各种不同的协议在将海量“事物”连接到互联网时发挥着重要的作用。
本文介绍了两种物联网补充协议:用于短距离设备连接的本地协议 Modbus 以及支持物联网进行全局通信的可扩展互联网协议“消息队列遥测传输 (MQTT)”。
Modbus 是一个串行通信协议,首次出现于 1979 年,是连接行业设备实际使用的标准协议。 MQTT 早在 20 年前便已出现,但是将这两个协议结合在一起使用,能够为深度嵌入式设备提供物联网的规模和连接性。
图 1. 物联网 (IoT) 网关作为物联网通信的支持解决方案 我们来看一下 Modbus 和 MQTT,以了解其区别以及如何在物联网中互相补充。
1、Modbus
自 1979 年首次出现至今,Modbus 已经演变为一套全面的支持多种物理链接的协议集(如 RS-485)。Modbus 的核心是一个串行通信协议,采用主从模式。主机向从机发送请求,从机予以回复。 在标准 Modbus 网络中,有一台主机以及最多 247 台从机(但是,如果采用 2 字节寻址,则可显著提高这一界限)。
借助 RS-485,主从机之间的通信发生在指示功能码的帧中。该功能码可识别要操作的功能,如读取独立输入;读取先进先出队列;或执行诊断函数。然后,从机根据收到的功能码进行响应,该响应较为简单,由一组字节指示。因此,从机可以是智能设备,也可以是只有一个传感器的简单设备。
从该描述中,您可以看到 Modbus 协议非常简单,但是其作为协议的开放性使其成为整个行业或 SCADA 系统的实际通信协议。
2、消息队列遥测传输
MQTT 是一个开放的轻量级机器对机器协议,专为物联网交互设计。 MQTT 网络包含一个 MQTT 经纪人 (broker),负责协调 MQTT 代理之间的交互。 代理是发布器,负责发布供用户使用的信息(参见图 2)。
图 2. 消息队列遥测传输网络中的作用因素
MQTT 的要求非常少,因为它专为资源有限的嵌入式设备设计。 除了占地空间少之外,MQTT 还可提供出色的通信高效性(即使通过低带宽网络进行通信)和非常少的开销(较之 HTTP 等协议)。 在 3G 网络中,MQTT 的吞吐量速度是使用 HTTP 的表述性状态转移 (REST) 的 93 倍。
MQTT 可使用最少的方法指示要在特定主题上实施的操作,进而实施发布/订阅模式。 代理先连接到经纪人,然后再发布或订阅主题。 完成后,代理将从经纪人上断开连接。 MQTT 方法定义:
连接 - 建立与 MQTT 经纪人之间的连接。
断开连接 - 断开与 MQTT 经纪人之间的连接。
发布 - 在 MQTT 经纪人上发布主题。
订阅 - 从 MQTT 经纪人上订阅主题。
退订 - 从 MQTT 经纪人上退订主题。
图 3 展示了发布者与订阅者使用 MQTT 经纪人进行的简单交互。 如图所示,信息创建者 (producer) 连接至 MQTT 经纪人。 同样,信息消费者 (consumer) 连接至 MQTT 经纪人。 消费者订阅主题(此处定义为 /home/alarms/1/status)。 本示例主题可识别主页上针对区域 1 的警报系统的状态变化。 当创建者有信息要分享时,它会向经纪人发布一条消息,然后经纪人将会将信息分享给所有订阅该主题的用户。
图 3. 消息队列遥测传输代理之间的简单交互
请注意此处分享的主题结构。 它与文件系统层次结构相似,这可简化主题的结构。 这种资源层次形式也常见于协议架构中,如 REST。
MQTT 甚至允许使用通配符的形式,以简化订阅流程。 如果用户想要获取所有警报的状态,则可直接订阅 /home/alarms/+/status,该主题可通知用户所有的警报状态变化。 整个子树还可使用主题 /home/# 进行订阅,该主题可以订阅 /home 下的所有事件。
2.1服务质量
MQTT 允许定义服务质量 (QoS)。 MQTT 中有三个等级的 QoS:
QoS 0。 该等级表示“最多一次”交付(最佳状况)。 消息不会得到确认,因而,这是一种一劳永与的方法。
QoS 1。 该等级表示“至少一次”交付。 用户可能不止一次获得消息,但是允许收到的人确认已经收到。
QoS 2。 最慢但是最有保障的服务质量等级即为等级 2。 QoS 2 表示“只有一次”,并包含四个阶段的交付握手。该等级最慢,但是最安全。
您选择的 QoS 等级将取决于数据及其交付的重要性。
2.2 消息队列遥测传输经纪人
随着越来越多的物联网采用 MQTT 作为支持协议,您将会发现许多开源应用和产品中出现了 MQTT。 英特尔® 物联网网关解决方案则是其中一款采用 MQTT 的全面物联网解决方案。
该系列产品支持传感器、设备和云之间安全交互。 这些预验证的应用就绪型平台支持出色的可管理性、安全性和多种连接选项,如 ZigBee*、蜂窝网络、蓝牙*、USB、Wi-Fi*,当然还有 MQTT 和 Modbus 等协议。
英特尔根据市场需求提供了三个版本的英特尔® 物联网网关,分别包含不同的输入/输出选项,并针对工业和能源、交通运输以及综合产业等不同领域。 虽有不同之处,但它们无一例外都包括通用的可管理性和供应、数据和端点安全性以及运行时环境。 它们分别运行在安全且稳定的 Wind River* Linux* 上。
英特尔® 物联网网关的主要优势是 McAfee® 嵌入式控制安全技术。 McAfee® 嵌入式控制可根据策略处理设备变化,同时能够追踪所有变化,提供完整的可视性和可说明性,以便进行持续的审计跟踪。
总结
MQTT 和 Modbus 能够互相补充提高物联网的性能。 使用 Modbus 作为本地接口来管理设备,使用 MQTT 作为全局协议来扩展设备的范围,二者都起到了重要的作用。 英特尔® 物联网网关可为现在以及未来构建物联网提供一个简单、安全的方式。
物联网学习笔记三:物联网网关协议比较:MQTT 和 Modbus的更多相关文章
- angular学习笔记(三十一)-$location(2)
之前已经介绍了$location服务的基本用法:angular学习笔记(三十一)-$location(1). 这篇是上一篇的进阶,介绍$location的配置,兼容各版本浏览器,等. *注意,这里介绍 ...
- angular学习笔记(三十一)-$location(1)
本篇介绍angular中的$location服务的基本用法,下一篇介绍它的复杂的用法. $location服务的主要作用是用于获取当前url以及改变当前的url,并且存入历史记录. 一. 获取url的 ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
- java之jvm学习笔记三(Class文件检验器)
java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Java IO学习笔记三
Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...
- NumPy学习笔记 三 股票价格
NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...
随机推荐
- 【转】Pandas学习笔记(六)合并 merge
Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...
- 编译出现 WARNING: 'aclocal-1.15' is missing on your system.问题解决
1. ubuntu14.04 出现这个问题,需要手动安装 Automake-1.15 2. 下载地址: http://ftp.gnu.org/gnu/automake/ http://ftp.gnu. ...
- 第07节-开源蓝牙协议BTStack框架代码阅读(下)
上篇博客中已经对BTStack框架进行了较为详细的说明,本篇博客将进一步总结一下(由韦大仙笔记所得). 可以从5个方面来理解BTStack的框架: 1.硬件操作:hci_transport_t BTS ...
- 201671030129 周婷 实验十四 团队项目评审&课程学习总结
项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 团队项目评审&课程学习总结 课程学习目标 (1)完成项目验收(2)反思总结课程学习内容 1.对<实验一 软件工程准备&g ...
- python移动目录下所有子目录文件到新的总目录
python移动目录下所有子目录文件到新的总目录 import os import shutil def file(p): p=p z=os.listdir(p) for i ...
- Python前言之Pycharm常用快捷键
pycharm常用快捷键 ctrl+a 全选 ctrl+c 复制(默认复制整行) ctrl+v 粘贴 ctrl+x 剪切(默认复制整行) ctrl+f 搜索 ctrl+z 撤销 ctrl+shift+ ...
- 第05组 Beta冲刺(2/4)
第05组 Beta冲刺(2/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪 ...
- 网络协议 5 - ICMP 与 Ping
日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 ping 命 ...
- NDCG、AUC介绍
https://blog.csdn.net/u014313009/article/details/38944687 SIGIR的一篇推荐算法论文中提到用NDCG和AUC作为比较效果的指标,之前没了解过 ...
- Docker ubuntn 使用apt-get update报错
在docker 容器中执行apt-get update有时候会报错,当然造成错误的原因有很多情况,具体情况具体分析, APT Hash sum mismatch错误的常见解决方法总结这篇博客写的不错, ...