当前位置: 首页 > news >正文

STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---MQTT篇(三)

 一、前言

本篇文章通过发送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": 12345}}
}

随意版本:

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

http://www.dtcms.com/a/351227.html

相关文章:

  • 【密集目标检测】停车场车辆(车位)识别数据集:12k+图像,yolo标注
  • 从GPT-5发布来分析LLM大模型幻觉收敛(一)
  • 广告网站与Coze智能体集成
  • 节能率的图表组件的选择
  • MT** 时间指标全景图:从可靠性到可维护性的度量体系
  • PEFT 模型解析(59)
  • Linux 详谈库制作与原理
  • python中生成器
  • 解决qt5.9.4和2015配置xilinx上位机报错问题
  • 学习游戏制作记录(保存装备物品技能树和删除存档文件)8.26
  • 【软考论文】论静态测试方法及其应用
  • 系统设计中的幂等性
  • QPSK调制解调通信仿真程序调试与分析
  • UbuntuV24.04安装mpdecimal库(libmpdec),从源码编译
  • 广告推荐模型3:域感知因子分解机(Field-aware Factorization Machine, FFM)
  • 机器人 - 无人机基础(6) - 状态估计(ing)
  • 1 线性模型
  • 支持向量机(SVM)
  • Java 大视界 -- Java 大数据机器学习模型在金融市场波动预测与资产配置动态调整中的应用
  • 网站开发用什么语言好
  • CentOS扩容非LVM分区
  • PortSwigger靶场之Blind SQL injection with out-of-band interaction通关秘籍
  • Redis--2
  • 在 TencentOS 3 上部署 OpenTenBase:从底层原理到生产级实践的深度指南
  • DBeaver下载安装使用
  • 支持向量机(SVM)算法总结
  • 大数据毕业设计选题:基于大数据的用户贷款行为数据分析系统Spark SQL核心技术
  • 迷你版Shell:源码详解与行为解析
  • 【Linux 34】Linux-主从复制
  • 嵌入式学习日记(34)HTTP协议