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

目录

一、ESP8266烧录MQTT固件

二、阿里云创建MQTT客户端

三、AT指令连接阿里云


前言

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


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

一、ESP8266烧录MQTT固件

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第1张图片

(1)连接ESP8266 

(2)打开烧录工具

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第2张图片

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第3张图片

 ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第4张图片

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第5张图片

二、阿里云创建MQTT客户端

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第6张图片

三、AT指令连接阿里云

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

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第7张图片

2.AT指令控制ESP8266

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第8张图片

 

(2)连接WIFI  ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第9张图片

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

(3)连接阿里云(重)

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第10张图片

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都在我们的阿里云配置工具中生成

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第11张图片

(4)查询是否连接成功

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第12张图片

AT指令如下: 

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第13张图片

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第14张图片

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

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第15张图片 ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第16张图片

 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摄氏度

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第17张图片

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第18张图片

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

ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第19张图片

(8)发布主题消息(物模型数据)  ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第20张图片

 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)查询阿里云物模型数据  ESP8266连接阿里云,订阅与发布MQTT消息(AT指令)_第21张图片

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

你可能感兴趣的:(ESP8266,阿里云,单片机,嵌入式硬件,mcu,物联网)