ESP8266使用MQTT协议通过AT指令连接阿里云物联网平台——保姆级教程——有源码(包括发布与订阅和物模型显示)

本文详细介绍了如何在阿里云物联网平台上创建产品和设备,配置ESP8266模块进行固件烧录,并使用AT指令连接WiFi和阿里云平台。通过三元组设置设备连接参数,实现设备的在线状态。同时,讲解了设备如何订阅和发布主题以实现数据的收发,为物联网应用开发提供了基础步骤。
摘要由CSDN通过智能技术生成

阿里云物联网平台创建产品与设备

注册登录阿里云平台并进行实名注册 开通物联网平台
在这里插入图片描述

在这里插入图片描述
进入公共实例
在这里插入图片描述
创建产品

在这里插入图片描述
自定义产品名称与产品种类
在这里插入图片描述
添加设备
在这里插入图片描述
选择产品名称,定义DeviceName(后面要用)
在这里插入图片描述

创建模块打开刚刚创建的产品,进入选择“功能定义”,编辑草稿

在这里插入图片描述
选择添加自定义功能,标识符和数据类型根据自己的数据需求设置,其他的配置根据需求配置,设置完之后点击发布上线即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开刚刚创建产品下的设备 就可以看到物模型
在这里插入图片描述

阿里云三元组配置

利用三元组生成连接域名和用户账号密码,通过这些数据连接到自己的阿里云平台
这里是使用的阿里云物联网平台配置软件,百度网盘链接提取码:zy06

查看设备三元组
在这里插入图片描述
在这里插入图片描述
生成连接数据 点击一键复制,将复制内容粘贴到"阿里云物联网平台配置"里面
在这里插入图片描述

在这里插入图片描述

ESP8266烧录固件

固件下载链接

烧录软件下载链接

也可以到乐鑫的官网下载

esp8266烧录固件时IO0口应该给低电平
在这里插入图片描述

AT指令

1.连接wifi

AT+RST
AT+CWMODE=3
AT+CWJAP="SSID","Password"   //连接wifi

2.
在这里插入图片描述

AT+MQTTUSERCFG=0,1,"NULL","用户名","密码",0,0,""
//这个用户和密码是通过“阿里云物联网平台配置”软件通过设备的三元组配置出来的

3.
在这里插入图片描述

AT+MQTTCLIENTID=0,"110022|securemode=3\,signmethod=hmacsha1\,timestamp=112200|"
//AT+MQTTCLIENTID=O,"Clienld"
//clientld第二个参数注意每个逗号后加分隔符”
//例如:原Clienld: test1|securemode=3,signmethod=hmacsha1,timestamp=10l
//逗号前加\': test1|securemode=3,signmethod=hmacsha1\timestamp=10l

4.
在这里插入图片描述

AT+MQTTCONN=0,"连接域名",1883,1
//AT+MQTTCONN=O,"连接域名",1883,1//回复:
//+MQTTCONNECTED:0,1,"连接域名" ,"1883","",1

截止到这里,esp8266算是连接上了阿里云平台,正常操作的话做完这步设备应该显示在线




订阅主题//从阿里云平台上面获取数据

AT+MQTTSUB=0,"订阅的主题",1
//我的就是:AT+MQTTSUB=0,"/a1B7OcUJHWr/XYX-1/user/TempHumGet",1
//xYx-1替换成你的设备名就好了
回复:
OK

命令中的a1B7OcUJHWr是产品中的ProductKey
在这里插入图片描述

发布Topic//向阿里云平台发送数据

AT+MQTTPUB=O,"发布的主题","内容",1,0
举例:AT+MQTTPUB=0,"/a1B70cUJHWr/XYX-1/user/TempHumPost" ," resply must can",1,0回复:
oK
//发送数据//resply must can表示要发送的数据
AT+MQTTPUB=0,"/a1gLDBkwAmW/esp_8266/user/temp" ,"resply must can",1,0

将发送的数据在物模型上面显示

//将发送的数据在物模型上面显示
//AT+MQTTPUB=O,"topic" ,"AJson格式内容",1,0
AT+MQTTPUB=0,"/sys/a1gLDBkwAmW/名字/thing/fevent/property/post"{\"method\":\"thing.sevice.propert,post\"\,\"id\":\"1231\",\"params\":{\"temp\":5.3}}",1,0

在这里插入图片描述
发送多个数据
在这里插入图片描述

源码连接

要将ESP8266连接阿里云,需要先创建一个阿里云账户并设置IoT平台,然后在IoT平台中创建一个设备和一个Topic,并为设备生成一个身份验证信息(DeviceSecret)。 然后,使用ESP8266开发板和MQTT库(例如PubSubClient)连接阿里云。下面是连接步骤: 1. 在代码中引用MQTT库和WiFi库。 2. 设置WiFi连接参数并连接到WiFi网络。 3. 设置阿里云MQTT服务器地址和端口号。 4. 设置设备ID和DeviceSecret。 5. 连接MQTT服务器并订阅Topic。 6. 在循环中发送和接收MQTT消息。 下面是一些示例代码,你可以根据自己的情况进行修改: ```C++ #include <ESP8266WiFi.h> #include <PubSubClient.h> // WiFi连接参数 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // 阿里云MQTT服务器地址和端口 const char* mqtt_server = "your_server_address"; const int mqtt_port = 1883; // 设备ID和DeviceSecret const char* client_id = "your_device_id"; const char* device_secret = "your_device_secret"; // Topic const char* topic = "/your_topic"; // WiFi客户端 WiFiClient espClient; // MQTT客户端 PubSubClient client(espClient); void setup() { // 启动串口 Serial.begin(115200); // 连接WiFi网络 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("WiFi connected"); // 设置MQTT服务器和端口 client.setServer(mqtt_server, mqtt_port); // 设置MQTT回调函数 client.setCallback(callback); // 连接MQTT服务器 if (!client.connect(client_id, device_secret)) { Serial.println("Failed to connect to MQTT server"); return; } // 订阅Topic client.subscribe(topic); } void loop() { // 发送MQTT消息 client.publish(topic, "Hello from ESP8266"); // 接收MQTT消息 client.loop(); } // MQTT回调函数 void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message received: "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } ``` 在你的阿里云控制台中,你可以查看设备的连接状态和收到的消息。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

活捉一只xiaozhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值