IoT物联网平台通信MQTT之Topic定义方式

MQTT系列—(5)MQTT Topic(主题)设计与使用规范 本文系统介绍了MQTT Topic的设计规范与最佳实践。主要内容包括:Topic基础概念(路由地址、保留主题$SYS/)、层级设计规范(3-5层)、命名注意事项(避免空格、特殊字符等)、常见使用场景示例(设备上报、云端控制等)、通配符订阅规则(+/#用法)、安全控制建议(ACL、签名校验)以及最佳实践总结(命名格式、方向分流等)。重点强调了Topic层级语义清晰、安全权限控制和文档化管理的重要性,为物联网消息通信提供标准化参考。 阅读详情
AI摘要

本文详细介绍了物联网平台中基于MQTT协议的Topic和Payload设计,包括自定义Topic的创建、系统预设Topic的功能如设备影子、固件升级、广播和远程配置,以及物模型通信的相关示例。通过实例演示,探讨了如何优化业务流程并提升通信效率。

1.前言

IoT物联网平台大部分基于MQTT协议的Pub/Sub通信,那么topic和payload设计就很重要。
我们可以定义出不同topic来处理不同业务场景,类似web开发中的API设计。

2.自定义Topic类

2.1 默认自定义Topic

当我们创建产品后,系统会自动生成3个自定义topic,方便我们使用。

Topic权限备注
/${ProductKey}/${DeviceName}/user/update发布上报数据
/${ProductKey}/${DeviceName}/user/update/error发布上报错误事件
/${ProductKey}/${DeviceName}/user/get订阅接收云端数据

2.2 自定义Topic

默认topic是一个示范,我们可以根据业务需求,自己定义Topic和Payload,来解决现实中的问题。比如下面的示例:

Topic权限备注
/${ProductKey}/${DeviceName}/user/heart/post发布定期上报数据
/${ProductKey}/${DeviceName}/user/bizdata/post发布业务触发上报
/${ProductKey}/${DeviceName}/user/biz/control订阅接收云端指令
/${ProductKey}/${DeviceName}/user/config/modify订阅接收设备配置变更

对于设备上报数据,我们可以把不同优先级的消息做分类,通过规则引擎流转分流到不同队列,给予不同处理资源,避免重要业务消息延迟过高。
对于云端指令接收,我们也可以区分业务指令和配置指令,给予不同优先级。

3.系统Topic列表

3.1 设备影子 

用于实现设备影子功能,需要使用如下topic

Topic权限备注
/shadow/update/${ProductKey}/${DeviceName}发布更新设备影子 QoS=1
/shadow/get/${ProductKey}/${DeviceName}订阅获取设备影子

设备影子可以实现设备的运行参数的配置更新功能。

3.2 固件升级

Topic权限备注
/ota/device/inform//${ProductKey}/${DeviceName}发布上报当前固件版本
/ota/device/upgrade/${ProductKey}/${DeviceName}订阅接收OTA信息
/ota/device/progress/${ProductKey}/${DeviceName}发布上报OTA进度
/ota/device/request/${ProductKey}/${DeviceName}发布主动请求OTA信息

3.3 广播

Topic权限备注
/broadcast/${YourProductKey}/+订阅接收广播信息

同一产品的设备,可以接收到云端的广播指令,由于IoT平台限制广播最大触达1000个设备。
这里我们可以把设备按规则做分组,不同组设备自动订阅不同group的topic,比如:

  • /broadcast/${YourProductKey}/group/a 
  • /broadcast/${YourProductKey}/group/b

3.4 RRPC通信

使用下面topic,IoT平台实现了基于mqtt协议的云端发起对设备的同步RPC调用

Topic权限备注
/sys/${ProductKey}/${DeviceName}/rrpc/request/+订阅接收RRPC调用
/sys/${ProductKey}/${DeviceName}/rrpc/response/${msgId}发布响应msgId对应RRPC请求

3.5 设备标签

使用设备标签topic可以动态给设备添加运行时标签

Topic权限备注
/sys/${ProductKey}/${DeviceName}/thing/deviceinfo/update发布更新设备标签

3.6 远程配置

Topic权限备注
/sys/${ProductKey}/${DeviceName}/thing/config/get发布主动查询配置信息
/sys/${ProductKey}/${DeviceName}/thing/config/push订阅接收配置信息
/sys/${ProductKey}/${DeviceName}/thing/config/get_reply订阅接收配置信息

4.物模型通信

4.1 物模型JSON数据通信

Topic权限备注
/sys/${ProductKey}/${DeviceName}/thing/event/property/post发布上报属性数据
/sys/${ProductKey}/${DeviceName}/thing/event/property/post_reply订阅接收返回结果
/sys/${ProductKey}/${DeviceName}/thing/event/{identifer}/post发布上报事件数据
/sys/${ProductKey}/${DeviceName}/thing/event/{identifer}/post_reply订阅接收返回结果
/sys/${ProductKey}/${DeviceName}/thing/service/property/set订阅接收属性设置指令
/sys/${ProductKey}/${DeviceName}/thing/service/property/set_reply发布返回处理结果
/sys/${ProductKey}/${DeviceName}/thing/service/{identifer}发布接收服务调用指令
/sys/${ProductKey}/${DeviceName}/thing/service/{identifer}_reply订阅返回服务处理结果

4.2 物模型透传数据通信

Topic权限备注
/sys/${ProductKey}/${DeviceName}/thing/model/up_raw发布上报数据
/sys/${ProductKey}/${DeviceName}/thing/model/down_raw订阅接收云端指令

更多信息参考:

 IoT平台业务Topic设计最佳实践 · 语雀

MQTT-主题(Topic) MQTT-Topic主题详细介绍以及单、多层通配方法使用实践保姆级教程 Demo 阅读详情

相关推荐

SpringBoot2.0_MQTT消息订阅之动态Topic

之前总结过两篇关于MQTT消息发布及消息订阅的文章,很多朋友都觉得不错,不过也有些小疑问,特别是关于mqtt消息订阅的,如何在项目应用中,做到动态添加Topic及监听消息?很多朋友对此都有疑问,却又不知如何下手,网上资料也不多,今天就抽个空,简单做个介绍,给大家做个参考,实际项目还要做优化。对于只要求做消息订阅动态主题的朋友,只需看上半部分就够了;如果有需求,想要将mqtt封装成j...

qq_41018959的博客 1万+

MQTT主题Topic讲解

参考:https://www.cnblogs.com/hayasi/p/7792191.html 如果传统的通信方式是客户端和服务端之间一般就直接传输信息。但是MQTT的通信方式是通过发布/订阅的方式进行的。笔者不知道他是否跟设计模式中的发布订阅模式有没有关系。可是他们思想却有一点相似之处。 客户端知道服务上有很多个主题。就好比如说有很多消息的分类一样子。有社会新闻、体育讲坛等。那么客户端只要...

jacklin_01的博客 4万+

MQTT 主题(Topic)详解

MQTT 主题是构建灵活、可扩展物联网消息系统的基石。通过合理的层级划分和通配符订阅,你可以轻松实现一对多、多对多的通信模式。在设计主题时,务必考虑未来的扩展性、可读性以及与 QoS 的配合,这样才能充分发挥 MQTT 协议的优势。

2303_76230584的博客 655

Mqtt主题那点事(topic)

2、主题(消息路由),子主题,分组订阅(共享订阅) (1) 常见的主题形式以及定义 mqtt 常见的topic 形式举例 chat/room/1 sensor/10/temperature sensor/+/temperature $SYS/broker/metrics/packets/received $SYS/broker/metrics/# $queue/t/1 $share/abc/t/1 定义形式: 可以理解问文件式的分层结构: chat/root/1,主题是以 ”/“ 分割的

zona_wzq的博客 4893

从零搭建物联网平台:产品、物模型、三元组与MQTT设备接入

物联网设备上云的核心,是把物理设备抽象为云端可管理的数字实体。通过 MQTT 这类轻量消息协议建立连接,并借助产品、物模型、三元组与 Topic 等机制完成身份鉴权、能力描述和消息路由,设备即可稳定上报数据并接收指令。其技术价值在于降低硬件与云端耦合,让采集、上报、执行留在设备侧,存储、告警、联动与分析放到云端,适用于智能家居、环境监测、工业采集等场景。围绕物联网平台从实例开通、产品建模、设备接入到消息落库的完整链路,一套最小可用的设备上云方案便能同时接入真实设备与模拟设备。

weixin_34391445的博客 354

【ESP8266】使用MQTT接入阿里云物联网平台

阿里云物联网平台设置: 一、创建设备 1、阿里云物联网平台,进入设备管理,创建产品和设备(新建一个产品和两个设备) 2、记录以下内容(三元组) 二、自定义topic 1、进入产品详情 2、点击“定义topic类”添加topic,产品下面的设备会继承产品定义的topic 三、创建规则 作用:将发送到“数据源 topic ”的消息转发到“目的地 topic ” 数据源:IOT_MQTT topic:/{ProductKey}/IOT_MQ...

丨晋丨 1万+

MQTT Topic通配符

在MQTT世界里,我们使用编程语言对接MQTT,通常需要做2个事情,发布和订阅。一般来说,我们可以当做消息队列来使用,对使用过MQ的同学来说是非常容易上手的。 今天为大家讲一下订阅的topic这块,在物联网实际应用中,通常都会有成千上万的物联网设备,通常订阅设备消息都主题名称:message/设备imei。 这时候程序如何去订阅这些机器呢?难道要去订阅成千上万的topic吗? MQTT给出了解决方案,可以使用Topic通配符去订阅主题。

Java 技术专栏,从入门到精通,熟悉企业级开发 7935

Kafka 系列 —(21)Kafka + MQTT + IoT Core —— 完整 Topic 设计规范(IoT 专用)

本文详细介绍了物联网系统中MQTT和Kafka的Topic设计规范。主要内容包括:1)通用命名规则{system}/{domain}/{entityType}/{entityId}/{messageType};2)MQTT Topic设计规范,区分设备上行和下行通信;3)Kafka Topic分类(原始数据、处理数据、指令等)及分区策略(以DeviceId为Key);4)消息可靠性保障(QoS1、acks=all等);5)多租户支持方案;6)以智能锁为例的完整Topic结构示例。该规范适用于物联网平台架构设

moton2017的博客 1889

物联网MQTT通信------部署Easy IoT、SIoT

在这次的项目开始时,我们使用了ESP32开发板,当然,需要给设备联网,这个在代码中添加,在,需要连接一个可以访问网络的WiFi,只需要提供一个WiFi就可以,形成局域网,手机电脑的WiFi都可以。

weixin_45477686的博客 4659

Mind+掌控板实战:Easy IoT与MQTT的物联网通信实验

本文详细介绍了如何使用Mind+编程环境和掌控板硬件,通过Easy IoT平台实现MQTT物联网通信。从硬件准备、平台配置到代码编写,逐步指导完成设备间消息传递,并分享实用调试技巧与项目扩展思路,助力快速掌握物联网开发核心技能。

weixin_29206669的博客 715

MQTT系列—(25)MQTT 5 Topic Alias 优化策略与带宽节省评估(IoT设备端通信性能优化)

IoT设备高频通信中的MQTT5 TopicAlias优化机制能显著降低传输负载。通过将主题字符串替换为2字节整型ID,在测试中节省70-90%带宽,尤其适用于固定主题的高频场景(如传感器上报)。优化策略包括设备端缓存机制和Broker端映射管理,需注意断线重连时的别名失效问题。建议结合负载压缩技术使用,但对低频或主题频繁变化的场景效果有限。实验验证该机制能有效减少网络延迟和CPU负载。

moton2017的博客 1015

IoT物联网平台通信用Topic梳理

简介:基于设备实践梳理出来的Topic总结 1.前言 IoT物联网平台基于MQTT协议的Pub/Sub通信,那么topic和payload设计就很重要。 我们可以定义出不同topic来处理不同业务场景,类似web开发中的API设计。 2.自定义Topic类 2.1 默认自定义Topic 当我们创建产品后,系统会自动生成3个自定义topic,方便我们使用。 Topic ...

weixin_45806396的博客 2993

地瓜派RDK X5部署YOLOv11n避坑指南:手把手教你解决Softmax算子导致的性能暴跌问题

本文详细介绍了在地瓜派RDK X5开发板上部署YOLOv11n模型时遇到的性能问题及解决方案。通过强制BPU部署Softmax算子,成功将推理速度从7FPS提升至47FPS,并提供了完整的优化流程和技术细节,帮助开发者避免类似性能陷阱。

weixin_42629671的博客 269

自建MQTT迁移IoT物联网平台实战

自建MQTT迁移IoT物联网平台实战 前言 随着业务增长,自建MQTT集群维护成本越来越高,连接稳定性,消息时延不断遇到上层业务挑战,迁移阿里云IoT物联网平台是非常明智的最佳选择。 现有业务背景 企业基于自建MQTT集群的数据交互如下图:设备端publish业务数据到MQTT集群,流转到后端业务服务器处理;业务服务器把指令发布到MQTT集群,触达到设备端。具体业务数据定义如下: 业务场...

2627

Windows 10下Carla 0.9.15安装避坑指南:从下载到运行的全流程解析

本文详细解析了在Windows 10系统上安装和运行Carla 0.9.15自动驾驶仿真平台的全流程。内容涵盖从系统环境准备、资源下载、Python依赖安装,到首次启动验证及常见错误(如DLL缺失、显卡驱动问题)的深度解决方案,旨在帮助用户快速搭建稳定的开发环境,并运行第一个自动驾驶Python脚本。

alice7model的博客 546

UDS 诊断 - CommunicationControl(通信控制)(0x28)服务 诊断

字节参数名称字节值#1CommunicationControl(通信控制)请求SID0x28#2#3communicationType(通信类型)#4nodeIdentificationNumer(节点标识符)(高位字节)controlType 为 0x04 或 0x05 时,使用该参数#5nodeIdentificationNumer(节点标识符)(低位字节)controlType 为 0x04 或 0x05 时,使用该参数。

耳朵东金子千的博客 1821

新兴 IoT 物联网场景中 MQTT 与 TCP 通信协议对比

在IoT 物联网开发中,大多数通信模组都支持TCP、UDP、MQTT、CoAP、HTTP、LwM2M等网络通信协议,其中既有传输层协议,也有应用层的协议,不同协议适用的场景也不同。我们...

6975

HDMI2.1接口保护指南:从浪涌损坏案例看RK3588板子的ESD设计要点

本文深入探讨了HDMI2.1接口在RK3588板子上的ESD防护设计要点,通过真实案例分析了浪涌损坏的原因及解决方案。重点介绍了TMDS信号链路的四级防护体系、TVS管选型误区以及连接器与PCB的协同设计策略,帮助工程师有效避免静电放电导致的HDMI无输出故障。

weixin_29305337的博客 447

单片机与阿里云的mqtt简单通信(塔石nb-iot篇)

这篇文章主要记录了一次单片机通过塔石的模块,实现与阿里云的mqtt通信(仅能简单传递信息,不涉及更深入操作)的过程。其中会包括如,阿里云物联网平台中“产品”与“设备”的创建,塔石nb-iot模块的使用等。

HDUGEEK的博客 6725

24年电赛H题 | 想要小车走直线,正在调角度环,但不知道怎么把角度偏航角偏差转化成电机速度输出?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1316

Matlab之机载雷达系统中的空时自适应处理(STAP)技术(附源码)

在第一个脉冲期间,天线 1 通过天线 N-1 接收的杂波返回与第二个脉冲期间天线 2 通过天线 N 接收的杂波返回相同。该算法可能需要搜索角度和多普勒的所有组合来定位目标,但对于示例,由于确切知道目标的位置,因此可以将处理器定向到该点。然而,接收到的信号不仅包含来自目标的反射回波,还包含来自被照亮地表的回波。然而,由于干扰器的白噪声性质,接收到的干扰信号占据了整个多普勒频段。在以下部分中,您将模拟来自目标、杂波和干扰器的返回,并说明 STAP 技术如何过滤来自接收信号的干扰。假设元件间距是波形波长的一半。

珞瑜的博客 7136

IoT物联网平台通信用Topic梳理——实践类

简介: 基于设备实践梳理出来的Topic总结

AIoT2688的博客 1158

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

MQTT - IOT通讯

基于 Mqtt 封装了 MqttClient 类, 实现 useMqttHook, 极大的减少了 Mqtt 的使用理解负担以及编码数量。

qq_58096041的博客 1458

SAP CAP 编程模型简介

官网 CAP 是用于构建企业级服务和应用程序的语言、库和工具框架。它引导开发人员沿着经过验证的最佳实践和大量现成的解决方案来应对重复性任务的“黄金之路”。 基于 CAP 的项目受益于对领域的主要关注。我们没有深入研究过于技术性的学科,而是专注于在快速变化的云技术世界中加速开发和保护投资。 CAP 框架融合了经过验证和广泛采用的开源和 SAP 技术,如下图所示。 在开源技术之上,CAP主要增加了: 核心数据服务 (CDS) 作为我们用于域模型和服务定义的通用建模语言。 用于 Node.js 和 Ja

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1547

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

自建MQTT迁移IoT物联网平台实战——实践类

随着业务增长,自建MQTT集群维护成本越来越高,连接稳定性,消息时延不断遇到上层业务挑战,迁移阿里云IoT物联网平台是非常明智的最佳选择。

AIoT2688的博客 1359

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: Mavlink协议(第二版)
下一篇: MQTT5协议报文格式
苟先
博客等级 码龄15年 15粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值