ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)

本文介绍了如何通过烧录MQTT固件和使用AT指令,使ESP8266连接到阿里云。首先在ESP8266上烧录固件,然后在阿里云创建MQTT客户端,接着利用AT指令进行WiFi连接和云端交互,包括订阅和发布主题消息,实现物联网设备的远程控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录


前言

本文介绍的是ESP8266通过烧录AT固件与使用AT指令连接阿里云,对比使用Arduino IDE编写的代码进行上云,AT指令上云是相对来说容易许多的,但是它没有使用Arduino编写的来的灵活与多功能性。如果在使用时,只是需要使用ESP8266来连接STM32去上云,就算是达到目的了,那使用AT指令的优势就凸显出来了。如果需要ESP8266有其他功能,而需要使用Arduino上云的小伙伴,可以看这篇文章【智能家居远程控制系统】ESP8266连接阿里云(四)


提示:以下是本篇文章正文内容,下面案例可供参考

一、ESP8266烧录MQTT固件

可以通过安信可的官网找对应的固件与烧录工具进行烧录,需要对应的固件和工具也可以私我或者评论我。

(1)连接ESP8266 

(2)打开烧录工具

(3)选择对应的烧录文件

 

 (4)选择对应COM口与波特率115200,写入烧写区域,点击“START”

二、阿里云创建MQTT客户端

此创建与激活设备步骤具体可以看此文章【智能家居远程控制系统】ESP8266连接阿里云(一),里面有十分详细的讲解。

三、AT指令连接阿里云

1.打开串口调试助手,选择对应的COM口,波特率115200

本文使用的是安信可的串口调试助手,可以从官网上进行下载此工具,在我给的资料中也有。

2.AT指令控制ESP8266

(1)发送AT,验证AT固件是否烧录成功

 

(2)连接WIFI  

AT+CWMODE=1设置station模式,可以连接热点
AT+CWJAP="wifi","password"连接热点

(3)连接阿里云(重)

AT指令如下: 

AT+MQTTUSERCFG=0,1,"client_id","username","password",0,0,""

//client_id先不写,username和password使用填生成的参数

配置 MQTT 用户属性

AT+MQTTLONGCLIENTID=0,"ClientId"

//ClientId填生成的参数,注意要在每个逗号前加分隔符"\"

设置 MQTT 客户端 ID

AT+MQTTCONN=0,"连接域名",1883,1

//连接域名填上面生成的,注意要去掉端口号1883,因为后面已经设置了

连接 MQTT Broker

示例如下: 

AT+MQTTUSERCFG=0,1,"","AT_1&a14a9A9ss","A35D9C91E1631A3CEA501FEB12AC4",0,0,""

AT+MQTTCLIENTID=0,"111|securmode=3\,sinmthod=hmacsha1|"

AT+MQTTCONN=0,"a14a969s.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1

更加具体的参数含义可参考安信可官网文档

我们在发送AT指令时使用的client_id,username,passward都在我们的阿里云配置工具中生成

(4)查询是否连接成功

AT指令如下: 

AT+MQTTCONN?查询 ESP8266设备已连接的 MQTT broker

显示状态“在线”,对比MQTT连接参数中的mqttHostUrl与串口返回的参数是否相同

 (5)订阅主题(物模型通信) 

需要提前创建物模型,具体创建步骤,可观看【智能家居远程控制系统】ESP8266连接阿里云(二)

 

 AT指令如下:

AT+MQTTSUB=0,"topic",1订阅指定 MQTT topic 
  1. //"topic"改为以上阿里云图片的主题

  2. ///sys/a14a96A90ss/${deviceName}/thing/service/property/set

  3. //${deviceName}用我们新建设备时候的name

 示例如下:

AT+MQTTSUB=0,"/sys/a14a96A90ss/AT_1/thing/service/property/set",1

(6)接收阿里云下发物模型消息

我们使用阿里云的在线调试。将物模型数据“温度”调节为10摄氏度

 (7)串口接收物模型数据

可以看到我们的串口接收到阿里云下发的物模型数据,阿里云平台上的数据也改变了 

(8)发布主题消息(物模型数据)  

 AT指令如下:

AT+MQTTPUB=0,"topic","data",1,0通过 topic 发布 MQTT消息

1.//"topic"选择复制的/sys/a14a96A90ss/${deviceName}/thing/event/property/post
2.//${deviceName}填对应的deviceName
3.//"data"采用json数据格式,{\"params\":{\"temperature\":20}},其中temperature为属性的标识符

示例如下:

AT+MQTTPUB=0,"/sys/a14a96A90ss/AT_1/thing/event/property/post","{\"params\":{\"temperature\":33}}",0,0

(9)查询阿里云物模型数据  

可以看到我们的阿里云物模型数据“温度”已经被我们使用AT指令修改成了33度。 

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值