一、ESP8266烧录MQTT固件
二、阿里云创建MQTT客户端
三、AT指令连接阿里云
本文介绍的是ESP8266通过烧录AT固件与使用AT指令连接阿里云,对比使用Arduino IDE编写的代码进行上云,AT指令上云是相对来说容易许多的,但是它没有使用Arduino编写的来的灵活与多功能性。如果在使用时,只是需要使用ESP8266来连接STM32去上云,就算是达到目的了,那使用AT指令的优势就凸显出来了。如果需要ESP8266有其他功能,而需要使用Arduino上云的小伙伴,可以看这篇文章【智能家居远程控制系统】ESP8266连接阿里云(四)
提示:以下是本篇文章正文内容,下面案例可供参考
可以通过安信可的官网找对应的固件与烧录工具进行烧录,需要对应的固件和工具也可以私我或者评论我。
此创建与激活设备步骤具体可以看此文章【智能家居远程控制系统】ESP8266连接阿里云(一),里面有十分详细的讲解。
本文使用的是安信可的串口调试助手,可以从官网上进行下载此工具,在我给的资料中也有。
AT+CWMODE=1 | 设置station模式,可以连接热点 |
AT+CWJAP="wifi","password" | 连接热点 |
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都在我们的阿里云配置工具中生成
AT指令如下:
AT+MQTTCONN? | 查询 ESP8266设备已连接的 MQTT broker |
显示状态“在线”,对比MQTT连接参数中的mqttHostUrl与串口返回的参数是否相同
需要提前创建物模型,具体创建步骤,可观看【智能家居远程控制系统】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
我们使用阿里云的在线调试。将物模型数据“温度”调节为10摄氏度
可以看到我们的串口接收到阿里云下发的物模型数据,阿里云平台上的数据也改变了
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
可以看到我们的阿里云物模型数据“温度”已经被我们使用AT指令修改成了33度。