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}}}

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

相关推荐
代码总长两年半22 分钟前
STM32物联网项目---ESP8266微信小程序结合OneNET平台MQTT实现STM32单片机远程智能控制---AT固件篇(二)
stm32·单片机·物联网
点灯小铭29 分钟前
基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测
stm32·单片机·嵌入式硬件·毕业设计·课程设计
盖雅工场5 小时前
连锁零售排班难?自动排班系统来解决
大数据·人工智能·物联网·算法·零售
世微 如初9 小时前
内置高压MOS的智能调光方案:AP5126 LED降压恒流驱动芯片
stm32·单片机·嵌入式硬件·led电源驱动·降压恒流ic·多功能·大功率
剑之所向10 小时前
[灵动微电子 霍尔FOC MM32BIN560C]从引脚到应用
单片机·嵌入式硬件
2006yu10 小时前
从零开始学习单片机13
单片机·嵌入式硬件·学习
玩转以太网14 小时前
基于 W55MH32Q-EVB 实现 FatFs 文件系统+FTP 服务器
服务器·单片机·物联网
wiyoo015 小时前
GD32VW553-IOT开发板测评 搭建环境到电灯(Q&A分享)
物联网·gd32
猫猫的小茶馆16 小时前
【STM32】CubeMX(十三):RT-THREAD
stm32·单片机·嵌入式硬件·mcu·mongodb·51单片机·智能硬件