4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)
MQTT协议概述
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消息给感兴趣的客户端。
MQTT协议特点
MQTT协议具有以下主要特点:
- 轻量级:MQTT协议的实现非常轻巧,占用资源少,非常适合于资源受限的设备,如传感器、嵌入式设备等。
- 低带宽需求:MQTT协议的设计考虑到了带宽的高效利用,其报头非常小,这使得它能够在低带宽环境下有效工作。
- 可靠的消息传递:MQTT提供了三种服务质量等级(QoS),允许发布者和订阅者之间选择合适的服务质量级别。
- 支持多种传输层:虽然MQTT最初是基于TCP/IP设计的,但它也支持使用WebSockets和其他传输协议,以便更好地集成到现代Web应用中。
- 安全性:MQTT支持TLS加密通信,保证了数据的安全性,并可以通过认证机制增强安全性。
MQTT协议的基本概念
MQTT协议的核心概念包括客户端、服务器(Broker)、主题和消息。
- 客户端(Client):任何连接到Broker的应用程序都可以被称为客户端。客户端可以订阅感兴趣的主题,接收其他客户端发布的消息,也可以发布消息。
- 服务器(Broker):MQTT服务器或Broker是消息的中心节点,它接受客户端的连接请求,存储订阅关系,并将消息从发布者路由到订阅者。
- 主题(Topic):主题是一个字符串,用于标识消息的类别或目的。客户端订阅主题后,可以接收到发布到该主题的所有消息。
- 消息(Message):消息是由客户端发布的一组数据,它包含两部分:主题名和消息体。
MQTT协议的工作流程
MQTT的工作流程如下:
- 连接:客户端向Broker发送连接请求,包含客户端ID、用户名、密码等信息。
- 订阅:一旦连接成功,客户端可以订阅一个或多个主题。
- 发布:客户端可以向特定主题发布消息。
- 接收:如果客户端订阅了一个主题,则它可以接收该主题下的消息。
- 断开连接:当客户端完成所有操作后,可以断开与Broker的连接。
MQTT协议的应用场景
由于其轻量级特性和高效的消息传递能力,MQTT协议广泛应用于物联网(IoT)领域,特别是在智能家居、工业自动化、远程监控等领域。此外,随着移动互联网的发展,MQTT也被用于移动应用程序中的实时数据更新和推送服务。
【1】MQTT服务器地址信息
IP地址:117.78.5.125
端口号:1883
ClientId 64000697352830580e48df07_dev1_0_0_2023030206
Username 64000697352830580e48df07_dev1
Password a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449
订阅主题:$oc/devices/64000697352830580e48df07_dev1/sys/messages/down
发布主题:$oc/devices/64000697352830580e48df07_dev1/sys/properties/report
发布的消息:{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}
【2】ESP8266-WIFI连接
要通过ESP8266模块使用AT指令来连接MQTT服务器,订阅特定的主题,并发布消息,可以按照以下步骤操作。
请注意,这里提供的AT命令序列是基于ESP8266模块支持的MQTT功能。
下面是一个示例流程:
-
初始化ESP8266
AT+RST
重启模块AT
测试模块是否响应AT+CIPMUX=1
设置多连接模式(可选)AT+CIPRXGET=1,100
设置接收数据的方式(可选)
-
设置Wi-Fi连接
AT+CWMODE=3
设置为Station+AP模式(通常只需要Station模式即可,即设置为1)AT+CWJAP="yourSSID","yourPassword"
连接到Wi-Fi网络
-
配置MQTT客户端
AT+CIPMQTTCFG="117.78.5.125",1883,"64000697352830580e48df07_dev1_0_0_2023030206","64000697352830580e48df07_dev1","","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449",0,0,60
配置MQTT客户端参数,包括服务器地址、端口、客户端ID、用户名、密码等
-
连接MQTT服务器
AT+CIPMQTTC=1
连接到MQTT服务器
-
订阅主题
AT+CIPMQTTSUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down",2
订阅指定的主题
-
发布消息
AT+CIPMQTTPUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",2,0,0,"{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}"
发布消息到指定主题
-
断开MQTT连接
AT+CIPMQTTDISC=0
断开与MQTT服务器的连接
-
关闭TCP/IP连接
AT+CIPCLOSE
关闭当前的TCP/IP连接
注意,在使用中,需要将"yourSSID"和"yourPassword"替换为实际使用的Wi-Fi网络的SSID和密码。
【3】NBIOT-BC26
使用NBIoT-BC26模块连接MQTT服务器的过程与使用ESP8266类似,但是命令集有所不同。
以下是使用NBIoT-BC26模块通过AT指令连接MQTT服务器、订阅主题以及发布消息的示例流程:
-
初始化模块
AT
检查模块是否在线ATE0
关闭回显AT+CFUN=1
启用射频功能AT+CGATT=1
附着到网络
-
设置网络参数
AT+CNOPS=0
设置网络操作模式AT+CGDCONT=1,"IP","your_apn"
设置PDP上下文,使用您的运营商提供的APN
-
激活PDP上下文
AT+CGACT=1,1
激活PDP上下文
-
配置MQTT客户端
AT+QMTOPEN=0,"tcp","117.78.5.125",1883
打开一个TCP连接到MQTT服务器
-
建立MQTT连接
- 使用
AT+QMTCONN
命令进行连接,此命令会发送MQTT CONNECT包给服务器。 AT+QMTCONN=0,"64000697352830580e48df07_dev1_0_0_2023030206",60,0,1,0,"64000697352830580e48df07_dev1","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449"
连接MQTT服务器,参数包括客户端ID,保持活动时间,Clean Session标志,Will标志,Will QoS,Will保留位,用户名和密码。
- 使用
-
订阅主题
AT+QMTSUB=0,2,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down"
订阅主题
-
发布消息
AT+QMTPUB=0,1,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",0,0,0,512
开始发送消息{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}
发送的消息内容
-
断开MQTT连接
AT+QMTDISC=0
断开MQTT连接
-
关闭TCP连接
AT+QMTCLS=0
关闭TCP连接
-
去激活PDP上下文
AT+CGACT=1,0
去激活PDP上下文
上述命令序列是基于NBIoT-BC26模块的MQTT功能。
【4】EC20-4G模块
对于EC20模块(通常是4G LTE模块),连接MQTT服务器、订阅主题和发布消息的AT指令会有所不同。
以下是使用EC20模块通过AT指令完成这些操作的流程:
- 初始化EC20模块
AT
检查EC20是否正常工作。
- 设置工作模式为数据模式(如果尚未设置)
AT+QCFG="nwscanmode",0,1
设置网络扫描模式为自动。
- 连接到移动网络
AT+QNWINFO
检查网络连接状态。
- 设置MQTT服务器的IP地址和端口
AT+QMTOPEN=0,"117.78.5.125",1883
连接到MQTT服务器的指定IP和端口。
- 登录MQTT服务器
AT+QMTCONN=0,"64000697352830580e48df07_dev1","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449",0,0
使用客户端ID、用户名和密码连接MQTT服务器。
- 订阅MQTT主题
AT+QMTSUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down",1
订阅指定的MQTT主题。
- 发布消息到MQTT主题
AT+QMTPUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",0,0,{"services":[{"service_id":"stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}
向指定的MQTT主题发布消息。
- 断开MQTT连接
AT+QMTDISC=0
断开与MQTT服务器的连接。
- 关闭EC20模块(如果需要)
AT+QPOWD=1
关闭EC20模块或使其进入省电模式。
- 检查状态(可选)
AT+QMTSTAT=0
检查MQTT连接状态。
请注意:
AT+QMTOPEN
、AT+QMTCONN
、AT+QMTSUB
和AT+QMTPUB
命令中的第一个参数0
是连接的会话编号。可以根据需要调整它。- 发布的消息格式要符合MQTT协议的要求,可能需要根据具体的EC20模块固件版本调整。
- 确保你已经在模块中设置了正确的APN,并成功连接到移动网络。
相关文章:

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)
MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构&…...
spring数据校验Validation
文章目录 需要的依赖创建校验对象Validator 需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>创建校验对象Validator 测试的实体类 //创建…...

Uniapp基于uni拦截器+Promise的请求函数封装
最近在学Uniapp,到封装请求的时候本来还想用axios,但是看到一些教学视频有更简单的方法, 基于uni的拦截器和Promise封装的请求函数 但是他们是用TS写的,还没学到TS,我就把JS写了,最终也是请求成功 // src/…...

【工具】使用 Jackson 实现优雅的 JSON 格式化输出
说明 在 Java 开发中,我们经常需要处理 JSON 数据。无论是从服务器端返回的数据,还是本地存储的数据,JSON 格式都因其轻量级和易于解析的特点而被广泛使用。当我们需要查看或调试 JSON 数据时,优雅、格式化的输出将大大提高我们的…...

ApacheKafka中的设计
文章目录 1、介绍1_Kafka&MQ场景2_Kafka 架构剖析3_分区&日志4_生产者&消费者组5_核心概念总结6_顺写&mmap7_Kafka的数据存储形式 2、Kafka的数据同步机制1_高水位(High Watermark)2_LEO3_高水位更新机制4_副本同步机制解析5_消息丢失问…...
.NET 自定义过滤器 - ActionFilterAttribute
这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误&#…...

VMware Fusion Pro 13 for Mac虚拟机软件
Mac分享吧 文章目录 效果一、下载软件二、开始安装安装完成!!! 效果 一、下载软件 下载软件 地址:www.macfxb.cn 二、开始安装 安装完成!!!...

HarmonyOS应用开发环境搭建
本文主要讲述的是HarmonyOS应用开发环境的搭建,HUAWEI DevEco Studio是基于IntelliJ IDEA Community开源版本打造,为运行在HarmonyOS系统上的应用和服务提供一站式的开发平台。具体下载链接DevEco Studio 一、下载 DevEco Studio 只需要下载对应的版本&…...

YOLOv8改进实战 | 注意力篇 | 引入ICCV2023顶会LSKNet:大选择性卷积注意力模块LSKA,助力小目标检测
YOLOv8专栏导航:点击此处跳转 前言 YOLOv8 是由 YOLOv5 的发布者 Ultralytics 发布的最新版本的 YOLO。它可用于对象检测、分割、分类任务以及大型数据集的学习,并且可以在包括 CPU 和 GPU 在内的各种硬件上执行。 YOLOv8 是一种尖端的、最先进的 (SOTA) 模型,它建立在以前…...

00Mac安装playwright
文章目录 前言一、执行以下命令安装二、安装如果报错zsh: command not found: pip三、安装浏览器驱动 前言 现在常用的三个自动化测试(或者爬虫)库,是Selenium、Puppeteer、Playwright。Playwright是未来趋势,主要学习Playwright…...

materail3 CircularProgressIndicator和LinearProgressIndicator有难看的白块和断点
看看,就是这个垃圾效果: 圆圈的进度条有断点,不连接; 横线进度条,有尾部亮色,进度处又有分割。 它的原出处在这里:https://m3.material.io/components/progress-indicators/overview࿰…...

菜鸟入门Docker
初始Docker Docker的概念 Docker的用途 DOcke的安装 Docker架构 配置Docker镜像加速器 Docker常用命令 Docker服务相关的命令。 Docker镜像相关的命令 Docker容器相关的命令 容器的数据卷 数据卷的概念和作用 配置数据卷 Docker应用部署 Docker部署mysql Docker…...

什么是单片机?为什么要学习单片机?
实现目标 1、熟悉单片机定义、特点、应用场景、发展历史等; 2、理解为什么要学习单片机?怎样学习单片机? 一、单片机是什么? 1、定义 单片机是集成在一块(单)芯片上的微型计算机。平时我们把 MCU&#x…...
电子发射与气体导电
物理电磁学练习题:电子发射与气体导电 说明: 以下题目考察对电子发射和气体导电基本概念的理解和应用。 1. 解释以下概念: (a) 热电子发射 (b) 光电效应 © 逸出功 (d) 等离子体 2. 比较并对比热电子发射和光电效应的异同。 …...

【数据库】MySQL表的Updata(更新)和Delete(删除)操作
目录 1.Update 案例1:将孙悟空同学的数学成绩变更为 80 分 案例2:将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分 案例3:将总成绩倒数前三的 3 位同学的数学成绩加上 30 分 案例4:将所有同学的语文成绩…...
Unity Adressables 使用说明(六)加载(Load) Addressable Assets
【概述】Load Addressable Assets Addressables类提供了加载 Addressable assets 的方法。你可以一次加载一个资源或批量加载资源。为了识别要加载的资源,你需要向加载方法传递一个键或键列表。键可以是以下对象之一: Address:包含你分配给…...

视频监控系统布局策略:EasyCVR视频汇聚平台构建高效、全面的安全防线
随着科技的飞速发展,视频监控系统已成为现代社会安全防范的重要组成部分,广泛应用于公共场所、企业园区、住宅小区等各个领域。一个科学合理的视频监控系统布局与选型策略,不仅能够显著提升安全监控的效率和效果,还能在关键时刻提…...

Spark的Web界面
http://localhost:4040/jobs/ 在顶部导航栏上,可以点击以下选项来查看不同类型的Spark应用信息: Jobs - 此视图将列出所有已提交的作业,并提供每个作业的详细信息,如作业ID、名称、开始时间、结束时间等。Stages - 此视图可以查…...
语言中的内联
爸爸为了培养孩子的独立能力,会把任务交给孩子并观察孩子做的结果。但有的时候,妈妈看到孩子因为完不成而伤心难过时,会毫不犹豫二话不说帮孩子的事情做掉。这也是内联。 内联和宏 C/C宏可以提供内联同样的作用,没有额外函数调用…...

fail to install hcmon driver问题解决
对我搜集到的解决办法进行总结: 没有删除“C:\Windows\System32\drivers”)下的 hcmon.sys 驱动文件,删除后重启后安装修改了注册表默认下载位置,使用winR输入regedit,将 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion这个路径下的都改为C…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用
中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...