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.发布内容:

严格版本:

cs 复制代码
{
    "id": "123",
    "version": "1.0",
    "params": {
        "temp": {
            "value": 12.5
        }
    }
}

随意版本:

cs 复制代码
{"id":"123","params":{"temp":{"value":2.5}}}

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

相关推荐
SUNNYSPY0011 小时前
120R016-ASEMI解锁电力电子的效率革命
单片机
芯希望1 小时前
芯伯乐XOPA340/XOPA2340/XOPA4340系列11MHz低噪声CMOS运放,高性能与低功耗的理想平衡
单片机·嵌入式硬件·dc-dc·工业控制·国产替代·电源管理·xblw芯伯乐
LCMICRO-133108477461 小时前
长芯微LCMDC8588完全P2P替代ADS8588,是一款16位、8通道同步采样的逐次逼近型(SAR)模数转换器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模数转换器
LONGZETECH1 小时前
教育数字化转型|汽车专业仿真教学体系搭建实操指南(含避坑+案例+FAQ)
大数据·人工智能·物联网·自动驾驶·汽车·汽车仿真教学软件·汽车教学软件
SKYLAB012 小时前
WKV553-A 高速率 Wi-Fi6+BLE 5.2 双模模组,高性价比物联网串口透传控制方案
物联网
VBsemi-专注于MOSFET研发定制2 小时前
面向车载冰箱高效可靠需求的功率器件选型策略与器件适配手册
单片机
进击的小头2 小时前
第17篇:嵌入式通用串行外设:UART_SPI_I2C接口原理与外设扩展应用
单片机·嵌入式硬件
聊点儿技术2 小时前
物联网设备IP归属地查询实操指南
物联网·tcp/ip·ip·ip归属地查询·ip地址查询·查ip归属地
LCG元2 小时前
STM32实战:基于FreeRTOS的LVGL嵌入式GUI移植(智能手表界面)
stm32·嵌入式硬件·智能手表
振浩微433射频芯片3 小时前
低功耗无线遥控新选择:深度解析VI520R ASK/OOK接收芯片与433MHz方案优势
网络·单片机·嵌入式硬件·物联网·智能家居