一、前言

本篇文章通过发送AT指令,与云平台建立通讯:

1.创建云平台

2.烧录AT固件

3.MQTT订阅(本篇)

4.单片机代码编写

5.微信小程序(下载微信开发者工具即可使用)

二、AT指令集介绍


AT指令是一种文本序列,用于控制调制解调器、手机等通讯设备。“AT"代表"Attention”,其后跟随的文字指定要执行的命令。在ESP8266等模块中,AT指令用于设定模块参数、控制网络连接和其他功能。

以下是一些常用的AT指令示例:

AT:检测通信模块与控制端之间的连接。
AT+RST:重置模块。
AT+CWMODE:设置Wi-Fi工作模式(例如Station模式、AP模式)。
AT+CWJAP:连接Wi-Fi网络。
AT指令集的优势在于其简单性,使得开发者能够不必深入微控制器的复杂编程,就能够快速实现无线通信的基本功能。

AT指令的解释及其用途:


官方AT指令地址:ESP-AT用户指南
https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/AT_Command_Set/MQTT_AT_Commands.html#cmd-mqttpubraw
很多AT指令后面都带有一些数字参数,可以通过上方文档了解每个参数的意义

1.AT+MQTTUSERCFG=0,1,"CSDN","YqRZ5hrM6p","version=2018-10-31&res=products%2FYqRZ5hrM6p%2Fdevices%2FCSDN&et=2028715245&method=md5&sign=G4I0xqIYmYUtCdTTo2t%2FqQ%3D%3D",0,0,""

意义:这个指令用于配置MQTT客户端的用户参数。参数0指的是客户端ID,1为MQTT版本,"CSDN"是设备名称,"YqRZ5hrM6p"为产品ID,后面一长串是Token,最后的两个0表示是否清理会话和是否启用遗嘱消息。
作用:设置了客户端的认证信息和其他MQTT连接选项,这对于与MQTT代理进行通信是必要的。


2.AT+MQTTCONN=0,"mqtts.heclouds.com",1883,1

意义:此指令用于发起到MQTT服务器的连接。参数0是客户端ID,"mqtts.heclouds.com"是MQTT服务器地址,1883是服务器端口号,最后的1表示启用清理会话。
作用:根据提供的服务器详情和客户端配置信息,指令会尝试建立MQTT连接。


3.AT+MQTTSUB=0,"$sys/YqRZ5hrM6p/CSDN/thing/property/post/reply",0

意义:指令用于订阅MQTT主题。0是客户端ID,"$sys/YqRZ5hrM6p/CSDN/thing/property/post/reply"是MQTT主题,最后的0是请求的服务质量(QoS)等级。
作用:向MQTT服务器表明客户端想要接收与该主题相关的消息。


4.AT+MQTTPUB=0,"$sys/YqRZ5hrM6p/CSDN/thing/property/post","{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":23.6\}}}",0,0

意义:通过此指令将消息发布到MQTT主题。0是客户端ID,"$sys/YqRZ5hrM6p/CSDN/thing/property/post"是要发布消息的主题。紧接着的是要发布的消息内容,0,0分别表示消息的QoS等级和是否保留消息。
作用:发送一条消息到MQTT服务器,服务器则将该消息转发给订阅了对应主题的所有客户端

5.AT+MQTTSUB=0,"$sys/YqRZ5hrM6p/CSDN/thing/property/set",0

意义:该指令用于指示ESP8266模块订阅一个指定的MQTT主题,"$sys/YqRZ5hrM6p/CSDN/thing/property/set"。
作用:使ESP8266模块能够监听并接收到任何发送到这个主题的消息,通常这些消息是针对设备设置或控制指令。

开始用AT指令连接MQTT

记得将下面的内容更改自己的信息

按顺序从1到11上传即可,每次成功即返回“OK”; 

 收到最后一条需要回应的数据:

AT+MQTTPUB=0,"$sys/7M6S32xnSS/20010712/thing/property/set_reply","{\"id\":\"4\"\,\"code\": 200\,\"msg\":\"success\"}",0,0

7M6S32xnSS:设备ID

20010712:设备名称

4:ID(要与下发的ID相同)

注:如果第11条回应了“OK”,但是没有回应蓝框部分,这时候你就要注意了,因为他对后面没有任何影响(桀桀桀桀桀),只要发完第11条,平台下发了蓝框上面那一部分和“OK”就行。

OneNET数据下发

①:点击运维监控

②:点击API调试

③:物模型使用:设置设备属性

④:填入参数

⑤:这里是接收到的数据

⑥:回应数据:产品id和设备名称需要更改为自己的,以及里面回应的id需要和接收到的id一致

重点:先点击一次执行,然后看串口打印助手上面的ID:

此条消息是需要在约定时间内回复的,格式为,其中设备ID和设备名称改为自己的,id需要与下发的消息ID一致,提前放在待发送区,然后再次点击执行,在执行有灰色变为蓝色(执行右边圆圈结束)之前,发送这条数据:

AT+MQTTPUB=0,"$sys/7M6S32xnSS/20010712/thing/property/set_reply","{\"id\":\"28\"\,\"code\": 200\,\"msg\":\"success\"}",0,0

⑦:如果回应成功后,这个页面会显示code:0

成功之后在这个界面可以看到自己上传的23.6

每次下发这个指令,修改后面的数值,云平台的数据就会变化。

AT+MQTTPUB=0,"$sys/7M6S32xnSS/20010712/thing/property/post","{\"id\":\"123\"\,\"params\":{\"temp\":{\"value\":23.6\}}}",0,0

三、MQTT.fx使用教程

这个软件主要是测试上传和下发的数据是否有问题:

1.创建工程

2.订阅

在订阅栏输入以下网址:

$sys/7M6S32xnSS/20010712/thing/property/set                        订阅

$sys/产品ID/设备名称/thing/property/set

如果你的ESP8266已经连接上云平台这个就会失败;

3.发布

图中2目标设备:

$sys/7M6S32xnSS/20010712/thing/property/post                                              发布

$sys/产品ID/设备名称/thing/property/post

图中3.发布内容:

严格版本:

{"id": "123","version": "1.0","params": {"temp": {"value": 12.5}}
}

随意版本:

{"id":"123","params":{"temp":{"value":2.5}}}

发布之后,你在软件的订阅端也是能够看到的:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/94429.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94429.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94429.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Ozone 2.0.0集群部署

单机部署参考:Apache Ozone 介绍与部署使用(最新版2.0.0)-CSDN博客 安装部署 官方参考:Documentation for Apache Ozone 准备环境 环境准备参考:Linux环境下Hadoop3.4.0集群部署-CSDN博客 1->4-b 参考:Apache Ozone 介绍与部…

【计算机网络 | 第9篇】信道的极限容量

文章目录探秘信道的极限容量:从奈氏准则到香农定理一、信道极限容量的基本概念🤔二、奈氏准则:无噪声情况下的码元速率限制🐦‍🔥(一)带宽与信号传输的关系(二)码间串扰问…

深入理解Linux iptables防火墙:从核心概念到实战应用

一、概述:什么是iptables? 在Linux系统中,网络安全防护的核心工具之一便是iptables。它绝非一个简单的命令,而是一个功能强大的用户态工具,与Linux内核中的netfilter框架协同工作,共同构建了Linux的防火墙体…

WebRTC音频QoS方法一.1(NetEQ之音频网络延时DelayManager计算补充)

一、整体简介 NetEQ计算的网络延时,直接影响变速算法的决策。在变速算法里面启动关键的作用。 网络延时计算需要考虑两种情况: 1、单纯抖动的网络延时计算,在UnderrunOptimizer类中实现; 2、在丢包乱序场景下的网络延时计算。…

实时操作系统FreeRTOS移植到STM32VGT6

一、前言 下载平台:STM32F407VGT6 代码使用平台:VSCode 编译器:arm-none-aebi-gcc 程序下载工具:STlink 批处理工具:make 移植的FreeRTOS版本:V11.2.0 其实此方法并不局限在arm-none-aebi-gcc中,此方法对于Keil5也是可以使用的, 只不过复制的一些文件不同…

从线到机:AI 与多模态交互如何重塑 B 端与 App 界面设计

当下,界面设计已经不再是单纯的“画屏幕”。AI 的快速发展让我们不得不重新审视:交互和视觉究竟会走向什么样的未来?无论是移动端 App,还是复杂的 B 端产品,设计的核心都在于让界面更懂用户。本文尝试从三个角度切入&a…

【智能化解决方案】大模型智能推荐选型系统方案设计

大模型智能推荐选型系统方案设计0 背景1 问题分析与定义2 模型假设与简化3 核心模型构建3.1 决策变量与参数定义3.2 目标函数3.3 约束条件4 模型求解与验证4.1 求解策略4.2 验证方法4.3 模型迭代优化5 方案实施与系统设计5.1 系统架构设计5.2 工作流程5.3 关键算法实现5.4 时序…

【Java基础】HashMap、HashTable与HashSet:区别、联系与实践指南

Java中HashMap、HashTable与HashSet的深度解析:区别、联系与实践指南 引言 在Java集合框架中,HashMap、HashTable与HashSet是最常用的哈希型数据结构。它们因高效的查找、插入与删除性能(平均时间复杂度O(1)),广泛应用…

互联网大厂Java面试实战:核心技术栈与场景化提问解析(含Spring Boot、微服务、测试框架等)

互联网大厂Java面试实战:核心技术栈与场景化提问解析 本文通过模拟面试官与求职者谢飞机的对话,深入探讨互联网大厂Java开发的核心技术栈面试问题,涵盖Java SE、Spring生态、微服务、大数据等多个领域,结合音视频、电商、AIGC等业…

人工智能-python-深度学习-参数初始化与损失函数

文章目录参数初始化与损失函数一、参数初始化1. 固定值初始化1.1 全零初始化1.2 全1初始化1.3 任意常数初始化2. 随机初始化2.1 均匀分布初始化2.2 正态分布初始化3. Xavier初始化4. He初始化5. 总结二、损失函数1. 线性回归损失函数1.1 MAE(Mean Absolute Error&am…

Android Glide常见问题解决方案:从图片加载到内存优化

全面总结Glide使用中的典型问题与解决方案,助力提升应用性能与用户体验作为Android开发中最流行的图片加载库之一,Glide以其简单易用的API和强大的功能深受开发者喜爱。然而,在实际使用过程中,我们往往会遇到各种问题,…

linux系统ollama监听0.0.0.0:11434示例

docker应用如dify访问本地主机部署的ollama,base_url不管配"http://localhost:11434",还是"http://host_ip:11434"都会报错。这是因为1)docker容器访问http://localhost:11434,其实访问的是docker容器自身的服…

Java微服务AI集成指南:LangChain4j vs SpringAI

今天想再完善一下做的微服务项目,想着再接入一个人工客服,于是学习了一下langchan4j的内容,未完一、技术定位辨析:LangChain4j vs Spring AI vs OpenAIOpenAI:AI模型提供商 提供大语言模型API(如GPT-4o&…

华为光学设计面试题

16. 题目:设计一个用于机器视觉检测的光学系统时,如何保证在高速运动下成像的清晰度和稳定性?(出处:华为智能制造光学检测项目组招聘面试题)17. 题目:请说明在光学系统设计中,如何权衡景深和分辨率的关系&a…

vue3和react的异同点

这是一个前端领域非常核心的话题。Vue 3 和 React 都是极其优秀的现代前端框架,它们在理念和实现上既有相似之处,也有显著区别。 下面我将从多个维度详细对比它们的异同点。核心哲学与设计理念特性Vue 3React设计理念渐进式框架与 “救世主”声明式 UI 库…

assetbuddle hash 比对

1.测试 :当在预设上的数据有修改时,生成的ab也会有修改,具体到某个ab的.manifest里会有相应的变化,AssetFileHash 会修改 如图所示: ManifestFileVersion: 0 CRC: 2818930197 Hashes: AssetFileHash: serializedVersio…

Spring Boot `@Configuration` 与 `@Component` 笔记

Spring Boot Configuration 与 Component 笔记 1️⃣ 基本概念注解作用是否有代理适用场景Component标记普通组件,将类交给 Spring 容器管理❌ 没有 CGLIB 代理普通 Bean,工具类、过滤器、监听器等Configuration标记配置类,用来声明 Bean✅ 有…

二、JVM 入门——(三)栈

栈的定义 栈也是一块区域,用来存放数据的。栈也叫栈内存,主管Java程序的运行。 栈是私有的,是在线程创建时创建,所以它的生命期是跟随线程的生命期,线程结束栈内存也就释放。 因此对于栈来说不存在垃圾回收问题&…

深度学习入门第一课——神经网络实现手写数字识别

昨天我们讲了深度学习的大致框架,下面我们用深度学习网络来实现一个小项目——手写数字识别。完整代码import torch from torch import nn from torch.utils.data import DataLoader from torchvision import datasets from torchvision.transforms import ToTensor…

Vue中的scoped属性

理解&#xff1a; 在 .vue 文件中&#xff0c;scoped 是 <style> 标签的一个属性&#xff0c;作用是让样式只作用于当前组件&#xff0c;避免样式污染其他组件 scoped 让样式只在自己的组件内生效&#xff0c;不会影响到其他组件的同名元素 举例 没有 scoped 的情况&…