目录
前言
本文介绍的是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 |
//"topic"改为以上阿里云图片的主题
///sys/a14a96A90ss/${deviceName}/thing/service/property/set
//${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度。