在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信
🌐 在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信
随着物联网(IoT)技术的发展,设备间的高效通信变得尤为重要。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的消息传输协议,因其低带宽、低功耗和高可靠性,广泛应用于各类物联网场景。华为云物联网平台(IoTDA)提供了对 MQTT 协议的全面支持,使得设备接入、数据传输和远程控制变得更加便捷。
📘 什么是 MQTT 协议?
MQTT 是一种基于客户端-服务器架构的消息发布/订阅协议,专为低带宽、高延迟或不可靠网络环境中的设备通信设计。它采用轻量级的消息格式和高效的通信机制,适用于智能家居、工业监控、车联网等场景。
🔧 MQTT 的核心特性
- 发布/订阅模式:客户端通过订阅特定的主题(Topic)接收消息,发布者将消息发布到相应的主题上,消息代理负责将消息转发给所有订阅该主题的客户端。
- 服务质量(QoS):提供三种服务质量等级,确保消息传递的可靠性:
- QoS 0:最多一次传送,消息可能丢失或重复。
- QoS 1:至少一次传送,确保消息至少到达一次。
- QoS 2:仅一次传送,确保消息只到达一次。
- 持久会话:客户端与服务器之间的会话状态可以持久化,即使客户端断开连接,服务器仍会保存会话信息,待客户端重新连接时恢复。
- 遗嘱消息:客户端可以在连接时设置遗嘱消息,当客户端异常断开连接时,服务器会将该消息发布到指定的主题,通知其他客户端。
- 保留消息:发布者可以将消息标记为保留消息,服务器会保存该消息的最后一条,并在有新客户端订阅该主题时立即发送给它。
🏗️ 华为云 IoTDA 与 MQTT 的结合
华为云物联网平台(IoTDA)支持 MQTT 协议,提供设备接入、数据流转、规则引擎、远程控制等功能。在 IoTDA 中,设备通过 MQTT 协议与平台进行通信,实现数据的上报和命令的下发。 (在线开发MQTT协议的模拟智慧路灯_设备接入IoTDA - 华为云)
🚀 快速上手:在华为云平台上使用 MQTT 协议
1. 创建产品和设备
- 登录华为云管理控制台,进入物联网平台(IoTDA)。
- 在左侧导航栏选择“产品管理”,点击“创建产品”,填写产品名称、协议类型(选择 MQTT)、数据格式(选择 JSON)等信息,点击“确定”。
- 在“设备管理”中,点击“注册设备”,填写设备名称、设备类型、产品等信息,点击“确定”。 (使用MQTT.fx调测_设备接入IoTDA - 华为云)
2. 获取接入信息
- 在物联网平台中,选择已创建的实例,点击“接入信息”,记录下域名和端口。
- 使用设备的 ID 和密钥生成连接信息(ClientId、Username、Password)。 (使用MQTT.fx调测_设备接入IoTDA - 华为云, 设备接入边缘节点(MQTT) - 华为云)
3. 使用 MQTT.fx 工具调试
- 下载并安装 MQTT.fx 工具。
- 打开 MQTT.fx,点击“设置”,填写以下信息:
- Broker Address:填写域名。
- Broker Port:填写端口。
- Client ID:填写设备的 ClientId。
- Username:填写设备的 ID。
- Password:填写设备的密钥。
- 点击“连接”,如果连接成功,状态栏会显示“已连接”。 (使用MQTT.fx调测_设备接入IoTDA - 华为云)
4. 发布和订阅消息
- 发布消息:在 MQTT.fx 中,选择“发布”标签,填写主题(如:
$oc/devices/{deviceId}/sys/properties/report
)和消息内容(如:{"lum": 300}
),点击“发布”。 - 订阅消息:在 MQTT.fx 中,选择“订阅”标签,填写主题(如:
$oc/devices/{deviceId}/sys/commands
),点击“订阅”。 (设备接入边缘节点(MQTT) - 华为云)
🧪 实战案例:模拟智慧路灯
为了更好地理解 MQTT 协议在华为云平台上的应用,您可以参考华为云提供的最佳实践——在线开发 MQTT 协议的模拟智慧路灯。该案例通过设备模拟器替代真实的设备,带您快速体验设备上报数据到物联网平台和远程下发控制命令到设备的全过程。 (在线开发MQTT协议的模拟智慧路灯_设备接入IoTDA - 华为云)
📚 学习资源与支持
- 华为云官方文档:提供详细的 MQTT 协议接入指南和示例代码。
- 华为云开发者社区:与其他开发者交流经验,获取技术支持。
- EMQ 官方文档:深入了解 MQTT 协议的原理和应用。
✅ 总结
MQTT 协议因其轻量级、可靠性和实时性,成为物联网设备通信的首选协议。华为云物联网平台(IoTDA)提供了对 MQTT 协议的全面支持,使得设备接入、数据传输和远程控制变得更加便捷。通过本文的介绍,您可以快速上手,在华为云平台上构建高效可靠的物联网通信系统。
相关文章:
在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信
🌐 在华为云平台上使用 MQTT 协议:构建高效可靠的物联网通信 随着物联网(IoT)技术的发展,设备间的高效通信变得尤为重要。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的消息传输…...
基于STM32的物流搬运机器人
功能:智能循迹、定距夹取、颜色切换、自动跟随、自动避障、声音夹取、蓝牙遥控、手柄遥控、颜色识别夹取、循迹避障、循迹定距…… 包含内容:完整源码、使用手册、原理图、视频演示、PPT、论文参考、其余资料 资料只私聊...
H.264/AVC标准主流开源编解码器编译说明
An artisan must first sharpen his tools if he is to do his work well. 工欲善其事,必先利其器. 前言 想研究和学习H.264/AVC视频编解码标准的入门的伙伴们,不论是学术研究还是工程应用都离不开对源码的分析,因此首要工作是对各类编解码器进行编译,本文针对主流的一些符…...
Xilinx FPGA支持的FLASH型号汇总
以博主这些年的FPGA开发使用经验来看,FPGA开发的主流还是以Xilinx FPGA为主,贸易战关税战打了这么多年,我们做研发的也不可避免的要涉及一些国产替代的工作;这里把Xilinx FPGA官方支持的各类(国产和非国产)…...
【C++ 类和数据抽象】消息处理示例(1):从设计模式到实战应用
目录 一、数据抽象概述 二、消息处理的核心概念 2.1 什么是消息处理? 2.2 消息处理的核心目标 三、基于设计模式的消息处理实现 3.1 观察者模式(Observer Pattern) 3.2 命令模式(Command Pattern) 四、实战场景…...
LiveCharts.WPF图表模块封装
WPF LiveCharts.WPF 封装实现 下面是一个完整的 WPF LiveCharts.WPF 封装实现,提供了常用图表的简单使用方式,并支持数据绑定和更新。 一、LiveCharts.WPF 封装类 1. 图表基类 (ChartBase.cs) using LiveCharts; using LiveCharts.Wpf; using System.Collections.Generic;…...
微信小程序,基于uni-app的轮播图制作,轮播图本地文件图片预览
完整代码 <template><swiper class"banner" indicator-dots circular :autoplay"false"><swiper-item v-for "item in picture" :key"item.id"><view><image tap"onPreviewImage(item.img)" :…...
【QQmusic】复习笔记第四章分点讲解
4.1 音乐加载 功能概述 该部分实现了从本地磁盘加载音乐文件到程序中,并在界面上显示的功能。通过QFileDialog类创建文件选择对话框,用户可选择多个音乐文件,程序筛选出有效音频文件后,交由MusicList类管理,并更新到…...
设置右键打开VSCode
在日常的开发工作中,VSCode 是一款非常受欢迎的代码编辑器。为了更加便捷地使用它,我们可以将 VSCode 添加到右键菜单中,这样只需右键点击文件或文件夹,就能快速用 VSCode 打开,极大地提高工作效率。下面我就来介绍一下…...
数据结构和算法(八)--2-3查找树
目录 一、平衡树 1、2-3查找树 1.1、定义 1.2、查找 1.3、插入 1.3.1、向2-结点中插入新键 1.3.2、向一棵只含有一个3-结点的树中插入新键 1.3.3、向一个父结点为2-结点的3-结点中插入新键 1.3.4、向一个父结点为3-结点的3-结点中插入新键 1.3.5、分解根结点 1.4、2…...
JSAPI2.4——正则表达式
一、语法 const str 一二三四五六七八九十 //判断内容 const reg /二/ //判断条件 console.log(reg.test(str)); //检查 二、test与exec方法的区别 test方法:用于判断是否符合规则的字符串,返回值是布尔值 exec方法&…...
FPGA 100G UDP纯逻辑协议栈
随着器件等级的升高,高速serdes的线速率也随之提高,RFSOC 4x最大可支持100G,主流方案为RDMA方案,该方案相对比较复杂,除了需要负责逻辑端的开发,还需操作系统中开发RDMA的驱动,对于对丢包不那么…...
分享一个可以批量巡检GET和POST接口的Shell脚本
一、场景痛点与需求分析 在分布式系统架构中,服务接口的可用性和稳定性直接影响业务连续性。当面临以下场景时,需批量巡检GET和POST接口: 上线验证:新版本发布后批量验证核心接口 故障恢复:异常数据修复后的批量重试…...
机器学习之一:机械式学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...
区分PROJECT_SOURCE_DIR, CMAKE_SOURCE_DIR,CMAKE_CURRENT_SOURCE_DIR
目录 示例工程 PROJECT_SOURCE_DIR的行为 CMAKE_SOURCE_DIR的行为 CMAKE_CURRENT_SOURCE_DIR 示例工程 根目录 |-----CMakeLists.txt |-----sub1 |--------CMakeLists.txt |-----sub2 |--------CMakeLists.txt 根目录下的CMakeList.txt: project(main)message("main …...
Python循环结构深度解析与高效应用实践
引言:循环结构在编程中的核心地位 循环结构作为程序设计的三大基本结构之一,在Python中通过while和for-in两种循环机制实现迭代操作。本文将从底层原理到高级应用,全面剖析Python循环机制的使用技巧与优化策略,助您掌握高效迭代的…...
25【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(二)
上一篇关于属性表自动编号的文章因为涉及到代码(【干货】在Arcgis中根据字段属性重新排序并自动编号的方法(一)),担心大家有些东西确实不熟悉,今天就更新一篇不需要代码也能达到这个目的的方法。主要的思路…...
SinSR模型剪枝实验报告
SinSR模型剪枝实验报告 实验概述 我成功地对SinSR模型进行了L1范式剪枝,剪枝比例为50%。通过分析剪枝前后的模型参数和性能,我们得出了以下结论。 剪枝实现方法 创建专用的main_prune.py脚本,用于剪枝训练。创建quick_prune.py脚本&#…...
IT社团分析预测项目(pandas、numpy、sklearn)
IT社团人数的增长陷入迟滞,同时不同目标任务和不同经营模式的社团更是层出不穷。在面临内忧外患的情况下,本社团希望结合社团行业现状,分析同学和出勤的数据,挖据数据中的信息,通过对人数流失进行预测寻找到相应的对策…...
C语言中位段的应用
一,位段的主要应用场景 硬件寄存器操作 嵌入式开发中,硬件寄存器通常以位为单位控制设备状态。位段可直接映射到寄存器,简化位操作: typedef struct {unsigned int enable : 1; // 使能位unsigned int mode : 3; // 模式选择&…...
【Linux网络#1】:网络基础知识
1、网络发展 在计算机发展历程中,经历过下面四个阶段: 1.独立模式 独立模式:计算机之间相互独立,每台计算机做自己的事情,彼此之间没有直接信息传递。如果两台计算机需要通信就需要将当前计算机的数据通过某种方式拷贝…...
基于物联网的园林防火监测系统
标题:基于物联网的园林防火监测系统 内容:1.摘要 随着全球气候变化和人类活动影响,园林火灾发生频率呈上升趋势,给生态环境和人类生命财产造成巨大损失。为有效预防和应对园林火灾,本文提出基于物联网的园林防火监测系统。该系统综合运用传感…...
华为云loT物联网介绍与使用
🌐 华为云 IoT 物联网平台详解:构建万物互联的智能底座 随着万物互联时代的到来,物联网(IoT)已成为推动数字化转型的关键技术之一。华为云 IoT 平台(IoT Device Access)作为华为云的核心服务之…...
Redis 数据类型全览:特性、场景与操作实例
Redis 是一款开源的内存数据库,支持多种数据类型,以下是对常见 Redis 数据类型的介绍: 1. String(字符串) 描述 字符串是 Redis 里最基础的数据类型,其值可以是简单的字符串、数字,甚至是二进…...
Qt动态库信号崩溃问题解决方案
在Qt中,当动态库向主程序发送信号导致崩溃时,通常涉及线程安全或对象生命周期问题。以下是逐步解决方案: 1. 检查线程上下文 问题:动态库所在的线程与主程序线程不同,跨线程信号未正确处理。解决方案: 显式…...
Go设计模式-观察者模式
简介 在软件开发中,我们常常会遇到这样的场景:一个对象的状态变化需要通知到多个其他对象,让它们做出相应的反应。观察者模式(Observer Pattern)就是解决这类问题的一种设计模式。在 Go 语言中,由于其简洁…...
《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute
目录 一、ICMP回显请求和回显应答 1、ICMP回显请求 2、ICMP回显应答 二、ARP高速缓存 三、IP记录路由选项(Record Route,RR) 1、记录路由选项的工作过程 2、RR 选项的 IP 头部格式 2.1、RR 请求 2.2、RR响应 四、ping 的去返路径 五…...
Unity任务系统笔记
数据结构设计 任务基类包括的字段: string 任务内容; Transform 任务目的地; MyCharacter 任务开启后要更新对话的NPC; MyTalkData 任务开启后相关NPC要说的对话数据; 共同方法:开启任务、完成任务。…...
Three.js + React 实战系列-3D 个人主页:构建 Hero 场景组件(项目核心)✨
在本节中,我们将完成整个 3D 主业项目中最核心的组件 —— Hero.jsx。 这个组件作为首页的主视觉部分,整合了 3D 模型、动画相机、交互按钮与自适应布局,构建出一个立体、酷炫、可交互的主场景。 前置准备: ✅安装依赖ÿ…...
线程池(二):深入剖析synchronized关键字的底层原理
线程池(二):深入剖析synchronized关键字的底层原理 线程池(二):深入剖析synchronized关键字的底层原理一、基本使用1.1 修饰实例方法1.2 修饰静态方法1.3 修饰代码块 二、Monitor2.1 Monitor的概念2.2 Moni…...
网络原理 - 9
目录 数据链路层 以太网 以太网帧格式 MAC 地址 DNS(Domain Name System) 完! 数据链路层 这里的内容也是简单了解,除非是做交换机开发,一般程序员不需要涉及~~ 以太网 ”以太网“不是一种具体的网络…...
springboot入门-业务逻辑核心service层
在 Spring Boot 中,Service 层是业务逻辑的核心,负责协调数据访问层(Repository 或 Mapper)和控制器层(Controller),处理业务规则、事务管理以及数据转换。以下是 Service 层的详细说明、常用注…...
在RHEL 10上安装和配置TFTP服务器(不使用xinetd)
RHEL10已经废弃xinetd,使用下面的方式安装配置TFTP服务器。 1. 安装TFTP服务器和客户端 sudo dnf install tftp-server tftp -y 2. 配置TFTP服务器 创建TFTP根目录并设置权限 sudo mkdir -p /var/lib/tftpboot sudo chmod -R 777 /var/lib/tftpboot sudo chown -R…...
AIGC在游戏开发中的革命:自动化生成3A级游戏内容
一、智能游戏开发架构 1.1 传统开发痛点与AIGC创新 开发环节 传统痛点 AIGC解决方案 角色原画设计 美术资源产能瓶颈 文生图3D模型自动生成 场景搭建 重复劳动占比高 程序化生成风格迁移 NPC行为设计 模式化严重 强化学习驱动智能行为 任务系统 剧情线性缺乏变化 动态剧情生成系…...
ChatGPT、deepseek、豆包、Kimi、通义千问、腾讯元宝、文心一言、智谱清言代码能力对比
均使用测试时的最强模型 均是一次对话,对话内容一样 均开启深度思考 能联网的都联网了,但是作用不大,因为蓝桥杯刚考完,洛谷题目刚上传没多久 问题一测试了两遍 从问题三开始不再测试智谱清言(它思考时间太长了,前两个…...
Linux扩展
目录 扩展 查找如何进行后台运行程序的指令 使用 & 符号 使用 nohup 命令 使用 screen 或 tmux find命令 基本语法 常用选项 grep 命令 基本语法 常用选项 如何使用 vim 直接定位到错误行 1. 使用 :make 和 :copen 2. 使用 :lineno 定位 3. 通过 :grep 或 :…...
Java Hotspot VM researcher
** therefore, careful design and understanding of modules are essential to fully reap the performance benefits. **...
java—基础
目标 ├── 第一阶段:内容清单 │ └── 目标:建立编程思想 ├── 第二阶段:内容清单 │ └── 目标:提升编程能力 └── 第三阶段:内容清单└── 目标:分析需求,代码实现能力以下是根…...
【OpenCV】第二章——图像处理基础
图像处理基础学习笔记 本章节详细介绍了图像处理的基础内容,包括图像的读取、显示、保存,基本属性的查看,图像的变换与操作,以及常用的图像处理方法。 目录 图像的读取与显示图像基本属性图像的灰度化与二值化图像的色彩空间转换…...
在WSL2+Ubuntu22.04中通过conda pack导出一个conda环境包,然后尝试导入该环境包
如何导出一个离线conda环境?有两种方式,一种是导出env.yml即环境配置,一种是通过conda pack导出为一个环境包,前者只是导出配置(包括包名、版本等),而后者是直接将环境中所有的内容打包…...
C++:类和对象(上)---镜中万象:C++类的抽象之境与对象的具体之象
类(Class)是一种用户自定义的数据类型。 文章目录: 前言一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 3.1类是什么? 3.2类的定义 四、类的访问限定符和封装 4.1类的访问限定符 4.2封装 五、类和对象的关系 六、类对…...
碰一碰发视频源码搭建全解析,支持OEM
在数字化交互体验不断升级的背景下,“碰一碰发视频” 功能凭借其便捷性和趣味性,逐渐成为营销推广、社交分享等场景中的热门需求。该功能基于近场通信技术,实现设备间快速的数据传输。本文将详细介绍其源码搭建过程,助力开发者实现…...
搭建spark-local模式
要搭建Spark的local模式,你可以按照以下步骤进行操作(以在Linux系统上安装为例,假设你已经安装了Java环境): 1. 下载Spark安装包:访问Spark官方网站(https://spark.apache.org/downloads.html&a…...
Goland终端PowerShell命令失效
Goland终端Terminal的PowerShell不能使用,明明windows上升级了PowerShell 7设置了配置文件,但是只能在windows终端下使用,goland终端下直接失效报错,安装升级PowerShell请看[博客](Windows11终端升级PowerShell7 - HashFlag - 博客…...
前端节流、防抖函数
节流 什么是节流? 节流就是同一个事件 一秒钟他执行了很多次。但是我不想他执行这么多次,我只想让他执行一次 或者两次。 那该怎么办? why baby why 那我想就是他执行的时候 我就设置一个定时器,如果定时器是空的,等会…...
如何使用WebRTC
WebRTC比较容易使用,只需要很少的步骤,有些消息在浏览器和服务器之间流动,有些则直接在两个浏览器之间流动, 1、建立WebRTC会话 a:建立WebRTC连接需要加入以下几个步骤: 获取本地媒体:getUse…...
在 Vue 3 setup() 函数中使用 TypeScript 处理 null 和 undefined 的最佳实践
在 Vue 3 中使用 setup() 函数和 TypeScript 时,null 和 undefined 是两个需要特别关注的类型。虽然它们看起来都表示“没有值”,但它们在 JavaScript 和 TypeScript 中有着不同的含义和使用场景。如果不小心处理它们,可能会导致潜在的 bug 或…...
【C++11】Lambda表达式
前言 上文我们学习了C11新语法,可变参数模板以及用可变参数模板作为形参的emplace接口。【C11】可变参数模板-CSDN博客 本文我们来学习C11下一个新语法,Lambda表达式。 1.Lambda表达式语法 Lambda表达式本质是一个匿名函数对象,与普通函数不同…...
【落羽的落羽 C++】vector
文章目录 一、vector类介绍二、vector中的常用接口三、迭代器失效问题四、vector的使用实例五、vector模拟实现 一、vector类介绍 vector是STL中的一种容器,本质上是顺序表。它和string类的结构很相似,其也有size、capacity、数组等,不同的是…...
DIFY 浅尝 - Dify + Ollama 抓取BBC新闻
假设你已经按照上篇文章 DIFY 浅尝 - DIFY Ollama 添加模型搭建好了本地环境. 创建一个新的工作流 进入你的本地Dify工作台,选择工作室->创建空白应用 选择工作流,输入应用名称BBC旅游新闻,点击创建 创建一个网页爬虫 配置网页爬虫…...