车联网场景中的 MQTT 协议应用
基本概念解释
MQTT 解释
MQTT(Message Queuing Telemetry Transport)是一种轻量级、基于 TCP/IP 协议栈构建的异步通信,和发布-订阅模式的消息传输协议。适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。MQTT 已逐渐成为物联网(IoT)领域最热门的协议,也是国内外各大物联网平台最主流的传输协议,阿里云物联网平台很多设备都是通过 MQTT 接入。
车联网定义
车联网是指车辆与周围环境中的一切物体(包括其他车辆、道路基础设施、行人、交通管理系统等)之间的互联互通系统。Vehicle-to-Everything (V2X)是车联网中的一个重要概念,旨在通过交互式通信和数据共享,提高交通安全性、流量效率和驾驶体验。简单来说,V2X 技术主要基于车载通信设备和传感器,通过通信技术将车辆与周围环境中的其他实体连接起来。车辆通过传感器(如雷达、摄像头、激光雷达等)采集实时数据,如车速、位置、方向、加速度等,并通过通信设备将这些数据传输到周围的实体。而运行于其中的通信协议就成为车联网系统建设的关键和核心。
车联网作为一个高速发展中的物联网平台,现在很多车辆已经具备基础的车联网功能,能够实现 T-Box 远程升级(OTA)与部分信号的传输。随着 5G 时代的到来与通信技术不断进步,车联网将会以非常快的速度进入每一台车。
阿里云物联网平台对车联网的支持
全球亿级连接高并发架构:依靠全球 2800+加速节点和亿级连接架构,车辆可根据实时位置就近接入,助力客户轻松应对全球各地百万级车辆并发稳定在线的问题。
多种车辆接入协议灵活选择:尊享型实例的云网关提供了如 GB/T 32960、JT/T 808 等车联网领域国标/行标的接入能力,并支持 MQTT 3.1.1/5.0 协议的绝大部分特性。
车辆双向认证保障数据安全:尊享型实例的云网关支持车辆和平台间使用 X.509 证书双向认证,打通了阿里云数字证书产品的 PCA 服务,可直接选择证书进行配置,同时支持第三方证书导入认证。
阿里云物联网平台下车联网的系统架构
阿里云车联网系统架构通过设备端、云平台、通信模块、数据存储、数据分析与处理、业务应用和安全认证与权限控制等组成部分,实现了从设备到云端的全链路的车联网服务。该架构可以支持大规模的车辆连接和数据处理,提供高效、安全和智能的车联网解决方案。
设备端:车载设备、传感器和智能终端等,用于采集车辆和环境数据,并通过通信模块将数据发送到云平台。
云平台:阿里云提供的云计算平台,承载车联网系统的核心功能。云平台提供设备管理、数据存储、数据分析、业务逻辑处理、安全认证等服务。
通信模块:位于设备端和云平台之间,负责设备与云平台之间的数据传输和通信。通信模块可以使用不同的通信协议,如 MQTT、HTTPS 等。
数据存储:云平台提供的高可靠、可扩展的数据存储服务,用于存储车辆和环境数据。阿里云提供的存储服务包括云数据库(RDS)、对象存储(OSS)等。
数据分析与处理:云平台通过大数据分析和人工智能技术,对车辆和环境数据进行实时和离线分析,提取有价值的信息和洞察,并支持业务逻辑的处理。
业务应用:基于云平台和数据分析结果,开发应用程序和服务,如车辆远程监控、诊断、驾驶行为分析、智能导航、车辆共享等。
安全认证与权限控制:云平台提供身份认证和权限控制服务,确保只有授权的用户或设备可以访问车联网系统,并对数据进行安全的传输和存储。
车联网系统一般包含几个重要部分。其中,主机主要用于影音娱乐,以及车辆信息显示;汽车 T-Box 主要用于和后台系统/手机 APP 互联通信,实现后台系统/手机 APP 的车辆信息显示与控制。
车联网中对 MQTT 的使用
MQTT 在车联网应用中的业务场景
车辆实时监控:通过使用 MQTT 协议,车辆可以实时将其位置、速度、状态等信息发布到一个或多个监控中心。监控中心可以订阅这些信息并进行实时监控和分析,以提供实时的车辆位置跟踪和监控。
车辆远程控制:通过使用 MQTT 协议,车辆可以接收来自远程控制中心的指令,并执行相应的操作,如开关车门、启动引擎、调整车辆参数等。这样可以实现远程监控和控制车辆的功能。
车辆数据采集与共享:通过使用 MQTT 协议,车辆可以将其传感器和系统收集到的数据发布到一个或多个数据中心。数据中心可以订阅这些数据,并进行分析和共享,以支持车辆管理、故障诊断、预测维护等功能。
车辆交互和通信:通过使用 MQTT 协议,车辆可以与其他车辆、交通设施和智能交通系统进行实时交互和通信。例如,车辆可以发布其位置和行驶意图,以提供给其他车辆和交通设施,从而实现车辆之间的协同行驶和交通流优化。
车联网体系中的车辆、手机 APP 端、路侧等设备端连接到车载设备 T-Box, 通过 MQTT 接入,实现对千万量级的以上终端的并发接入能力。
MQTT 在车联网应用中的优势
低能耗:车联网设备通常需要长时间运行,并且能耗要求较低。根据 MQTT 消息格式,消息头部最小只需要占用 2 个字节,达到带宽消耗最小化。
开放性:目前市场上已经有了大量成熟的软件库与硬件模组,可以极大减少开发的成本,降低接入难度。
可靠性:根据 QoS 传输质量等级,确保对有效性要求高的数据不会丢失,且有效性要求低的数据不占资源。
异步通信:MQTT 支持异步通信,可以在车联网应用中实现实时的消息传递。这对于需要及时响应的车联网应用来说非常重要。
灵活性:根据主题名称/过滤规则,可以自由设计主题 Topic,应用于大量的车联网业务场景。
实时性:MQTT 的会话保持和在线状态感知功能,可以提高车辆在离线状态下的消息完整性。
安全性:MQTT 可以通过加密和身份验证等机制来确保消息的安全传输。这对于车联网应用来说非常重要,保护车辆和用户的数据安全。
相比于其他 HTTPS/TCP 等私有协议,MQTT 具有开放性,多平台使用等优点,适用于多种业务场景,且不受资源限制,能随意扩展以处理海量数据。因此 MQTT 协议顺理成章地成为最适合车联网领域的主流协议。
MQTT 消息主题 Topic 设计
MQTT 主题 Topic 定义
MQTT 协议根据主题来转发消息。MQTT 的主题是不要预先创建的,发布者发送消息到某个主题、或者订阅者订阅某个主题的时候,Broker 就会自动创建这个主题。
主题 Topic 通配符:
正斜杠(“/”U+002F)用于分隔主题树中的每个级别,并为主题名称提供层次结构,类似于 URL 路径。
数字符号 ('#' U+0023) 是一个通配符,可匹配主题中任意数量的级别。多级通配符代表父级和任意数量的子级。
加号 ('+' U+002B) 是仅匹配一个主题级别的通配符。
主题 Topic 规则:
所有主题名称和主题过滤器的长度必须至少为一个字符
主题名称和主题过滤器区分大小写
主题名称和主题过滤器可以包含空格字符
前导或尾随“/”创建不同的主题名称或主题过滤器
仅包含“/”字符的主题名称或主题过滤器有效
主题名称和主题过滤器不得包含空字符 (Unicode U+0000) [Unicode]
主题名称和主题过滤器是 UTF-8 编码的字符串;它们不得编码超过 65,535 字节。
除了 UTF-8 编码字符串的总长度所施加的限制之外,主题名称或主题过滤器中的级别数没有限制。
车联网场景中对 MQTT 主题设计的应用
主动上报车辆数据:设备端 T-Box 通过控制器传感器等收集车辆运行数据及车况数据,例如车况运行数据、电池状态数据、车舱环境数据等,以指定频率将数据发送到平台端。此类数据可以按照上报数据的车型、车架号、业务数据类型等多个层级进行设计。
示例:/sys/product/{产品 KEY}/device/{设备 ID}/uplink/battery
请求上报车辆数据:当云平台需要获取车辆的最新状态数据时,例如位置信息等,可以主动下发命令到车辆端,要求上报数据。此类场景一般可以按照车架号、业务类型等层级进行主题设计。
示例:/req/product/{产品 KEY}/device/{设备 ID}/report/location
指令下发到车辆:用户可以在手机 App 中操作各种远程控制功能,例如远程启动、远程开车门、远程闪灯鸣笛等。该功能是车辆是车联网业务中最常见、最典型的业务场景。该业务场景下,由手机 App 发送控制命令至云平台,平台应用通过 MQTT 将命令下发至车辆,车辆端执行命令成功后,可选择异步发送执行结果到平台。
示例:/ord/product/{产品 KEY}/device/{设备 ID}/lockAllDoors
请求下发平台数据:车辆配置数据,如数据采集规则、安全访问规则,会根据实际路况或位置的不同做到动态变化的,在软件定义汽车-SDV 的背景下更是如此。所以车辆侧可主动请求平台匹配最新的配置信息,以保证车辆侧和平台侧的配置信息一致。
示例:/req/tsp/notify/product/{产品 KEY}/device/{设备 ID}/roadSecurity
MQTT 数据传输质量
MQTT QoS 定义
MQTT 提供了三种服务质量(QoS),在不同网络环境下保证消息的可靠性。
QoS 0:消息最多传送一次。MQTT Broker 发送出一条消息后,无需关心客户端是否接收到。如果当前客户端丢失该消息,也不做任何处理。
QoS 1:消息至少传送一次。包含简单的重发机制,若发送方认为消息未被成功发送或接受,会执行重发操作。但这种模式只能保证消息成功到达,但无法保证消息重复到达。
QoS 2:消息只传送一次。该模式设计了复杂的重发和重复消息发现机制,保证消息能成功到达对方,并且严格控制只到达一次。
注意点 1:QoS 级别越高,虽然可以增加消息可靠性,但设计的消息交互模式就越复杂,同时也使资源消耗和消息时延大幅增加。所以 QoS 等级并非最高最优。平台和终端可以根据自己的网络级别和业务场景来选择合适的 QoS。
注意点 2:MQTT 发布与订阅操作中的 QoS 是分开设置的,若双方设置的 QoS 等级不一致,则会下向兼容发生消费降级。发布时的 QoS 等级表示消息发送到 MQTT Broker 时使用的 QoS 等级,订阅时的 QoS 等级表示 MQTT Broker 向自己发送消息时使用的最大 QoS 等级。
车联网场景中选择 MQTT QoS 建议方案
QoS 0:可以接受消息偶尔丢失的场景。
该业务场景为非必须,如音乐播放,天气预报,等与娱乐相关的多媒体服务数据。即使偶尔有丢失也不影响业务使用。
QoS 1:消息最少发送一次,保证消息不丢失,但可能会重复。
该业务使用于车联网大部分场景,对消息实时性要求高,且对资源性能也有要求,如控制车辆命令,车辆行驶中的数据上报、以及交通安全管控类数据,和道路安全相关的数据下发。但也不接受占用大量的系统资源做消息去重。
QoS 2:消息不可丢失,且不可重复,对数据完整性与及时性要求较高的场景。
该业务场景在车联网使用中并不多见,只能是具体情况具体分析。
写在最后
从国家政策层面来看,2015 年起就开始布局智慧交通,自 2020 年以来,有关智能网联汽车的政策更是密集推出。按照当前的政策指引,预计在 2025 年,我国将会实现有条件的自动驾驶智能汽车规模化生产,在 2035 年基本实现交通强国的战略目标。同时,有关智能汽车和车联网的相关技术标准体系也在不断完善的过程中。
作为一个发展了二十多年的标准消息传输协议,MQTT 的重要性正在持续增长。随着物联网在各行业被越来越广泛地应用,MQTT 协议也在不断发展以应对新的挑战,满足更低延迟的连接、更便捷的 MQTT 服务部署、复杂场景或大规模物联网应用下灵活管理以及智能设备接入的需求。OASIS 现在已经发布了官方的 MQTT v5.0 标准, 这对于已经为物联网(IoT)所用的消息传输协议来说,这是一个改进和功能的巨大飞跃。作为庞大物联网的神经系统,在 2023 年及更远的未来,MQTT 必将在车联网等关键领域中发挥重要作用。
评论