ESP8266/esp32接入阿里云物联网平台点灯控制类案例
创始人
2024-01-12 22:51:15

ESP8266/esp32接入阿里云物联网平台点灯控制类案例


  • 📌阿里云物联网云平台介绍:https://help.aliyun.com/product/30520.html

🎋需要自己在阿里云物联网云平台注册自己的账户,这里不做介绍了。

🌻阿里云物联网云平台创建设备过程

  • 🌼选择设备类型-选择入墙开关
    在这里插入图片描述

📢入墙开关最多能同时接入9路开关按键控制
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 🛠找到设备栏,添加设备
    在这里插入图片描述
    在这里插入图片描述

  • 📝配置界面
    在这里插入图片描述

  • 🎈创建成功,并点击前往管理
    在这里插入图片描述
    在这里插入图片描述

  • 🔖将设备三元组填写到代码中
    在这里插入图片描述
    在这里插入图片描述

  • 📍所属地区(REGION_ID)一般都是华东地区,地址填写:cn-shanghai
    在这里插入图片描述

  • ⌛上传代码后,打开串口监视器
    在这里插入图片描述

🎉如果接入成功,设备将自动激活。

  • ⛳进入设备在线调试,选择好控制指令,(在线调试页面只支持一路开关控制),点击设置即可将开关类的值发送到设备端并让ESP8266执行动作。
    在这里插入图片描述
  • 🌿在线调试和串口信息输出
    在这里插入图片描述

📗代码上传后报MQTT Connect err:2处理方法

找到安装的PubSubClient.h库所在文件夹位置:C:\Users\Administrator\Documents\Arduino\libraries\PubSubClient\src\PubSubClient.h

 MQTT_MAX_PACKET_SIZE,将256修改为1024,再找到MQTT_KEEPALIVE,将15修改为60。

在这里插入图片描述

📓代码依赖库

🔨所需库均可在Arduino IDE管理库(Ctrl + Shift + I)页面搜索并下载到。

  • AliyunIoTSDK -点击这里会自动打开管理库页面: http://librarymanager/All#AliyunIoTSDK
  • Ticker -点击这里会自动打开管理库页面: http://librarymanager/All#Ticker
  • PubSubClient -点击这里会自动打开管理库页面: http://librarymanager/All#PubSubClient
  • Crypto -点击这里会自动打开管理库页面: http://librarymanager/All#Crypto
  • ArduinoJson -点击这里会自动打开管理库页面: http://librarymanager/All#ArduinoJson

📚实例代码

/** * 报错:MQTT Connect err:2处理方法* 修改库文件:C:\Users\Administrator\Documents\Arduino\libraries\PubSubClient\src\PubSubClient.h* * 找到: MQTT_MAX_PACKET_SIZE,将256修改为1024,再找到MQTT_KEEPALIVE,将15修改为60。* *//** 所需库* AliyunIoTSDK -点击这里会自动打开管理库页面: http://librarymanager/All#AliyunIoTSDK* Ticker -点击这里会自动打开管理库页面: http://librarymanager/All#Ticker* PubSubClient -点击这里会自动打开管理库页面: http://librarymanager/All#PubSubClient* Crypto -点击这里会自动打开管理库页面: http://librarymanager/All#Crypto* ArduinoJson -点击这里会自动打开管理库页面: http://librarymanager/All#ArduinoJson* */
#ifdef ESP8266
#include 
#elif  ESP32
#include  // esp32开发板自带库
#endif
#include  //引入阿里云 IoT SDK
#include         //定时操作
//设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY     "a1ebNdJFkLq"//替换自己的PRODUCT_KEY
#define DEVICE_NAME     "test01"//替换自己的DEVICE_NAME
#define DEVICE_SECRET   "bd2aeba7fd133436155ba85030c1c363"//替换自己的DEVICE_SECRET
#define REGION_ID       "cn-shanghai"//默认cn-shanghai#define WIFI_SSID       "MERCURY_D268G"//替换自己的WIFI
#define WIFI_PASSWD     "pba5ayzk"//替换自己的WIFI
#define LED_BUILTIN  (2)
#define led2  (23)
#define led3   (22)
static WiFiClient espClient;
int Data = 0;             //定义要上传的数据
int count = 0;            //定义一个计数值Ticker ticker;              //建立Ticker用于实现定时功能void setup()
{Serial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);pinMode(led2, OUTPUT);pinMode(led3, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);digitalWrite(led2, HIGH);digitalWrite(led3, HIGH);wifiInit(WIFI_SSID, WIFI_PASSWD); //连接到wifiticker.attach(1,myfunction);      //相当于定时器中断函数,一秒执行一次myfunction这个函数//初始化 iot,需传入 wifi 的 client,和设备产品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
/*在阿里云物联网平台,添加标准品类-选择"入墙开关",最多能同时接入9路开关按键控制*///绑定一个设备属性回调,当远程修改此属性,会触发LED函数AliyunIoTSDK::bindData("PowerSwitch_1", LED);//绑定一个设备属性回调,当远程修改此属性,会触发LED函数AliyunIoTSDK::bindData("PowerSwitch_2", LED2);//绑定一个设备属性回调,当远程修改此属性,会触发LED函数AliyunIoTSDK::bindData("PowerSwitch_3", LED3);
}void loop()
{AliyunIoTSDK::loop();//必要函数/**每隔5秒上传一次数据**/if(count >= 5){count = 0;AliyunIoTSDK::send("Data", Data); //发送数据} 
}//wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{WiFi.mode(WIFI_STA);WiFi.begin(ssid, passphrase);while (WiFi.status() != WL_CONNECTED){delay(1000);Serial.println("WiFi not Connect");}Serial.println("Connected to AP");
}//开关1的属性修改的回调函数
void LED(JsonVariant L)//固定格式,修改参数l
{int LED = L["PowerSwitch_1"];//参数l  LED == 0 ? digitalWrite(LED_BUILTIN, HIGH) : digitalWrite(LED_BUILTIN, LOW);Serial.printf("收到的LED是:"); Serial.println(LED);
}
//开关2的属性修改的回调函数
void LED2(JsonVariant L)//固定格式,修改参数l
{int LED = L["PowerSwitch_2"];//参数l  LED == 0 ? digitalWrite(led2, HIGH) : digitalWrite(led2, LOW);Serial.printf("收到的LED2是:"); Serial.println(LED);
}
//开关3的属性修改的回调函数
void LED3(JsonVariant L)//固定格式,修改参数l
{int LED = L["PowerSwitch_3"];//参数l  LED == 0 ? digitalWrite(led3, HIGH) : digitalWrite(led3, LOW);Serial.printf("收到的LED3是:"); Serial.println(LED);
}
void myfunction(){Data ++;count ++;if(Data >= 50)Data = 0;}/** esp8266编译信息* 使用 1.0  版本的库 ESP8266WiFi 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\ESP8266WiFi 
使用 0.3  版本的库 AliyunIoTSDK 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\AliyunIoTSDK 
使用 6.19.4  版本的库 ArduinoJson 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\ArduinoJson 
使用 1.0  版本的库 Ticker 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.0.2\libraries\Ticker 
使用 2.8  版本的库 PubSubClient 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\PubSubClient 
使用 0.4.0  版本的库 Crypto 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Crypto 
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.0.4-gcc10.3-1757bed/bin/xtensa-lx106-elf-size" -A "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\arduino_build_760762/esp8266.ino.elf"
项目使用了 288249 字节,占用了 (27%) 程序存储空间。最大为 1044464 字节。
全局变量使用了30924字节,(37%)的动态内存,余留50996字节局部变量。最大为81920字节。*//** esp32编译信息* 使用 2.0.0  版本的库 WiFi 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFi 
使用 0.3  版本的库 AliyunIoTSDK 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\AliyunIoTSDK 
使用 6.19.4  版本的库 ArduinoJson 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\ArduinoJson 
使用 2.0.0  版本的库 Ticker 在文件夹: C:\Users\Administrator\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\Ticker 
使用 2.8  版本的库 PubSubClient 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\PubSubClient 
使用 0.4.0  版本的库 Crypto 在文件夹: C:\Users\Administrator\Documents\Arduino\libraries\Crypto 
"C:\\Users\\Administrator\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\gcc8_4_0-esp-2021r2-patch3/bin/xtensa-esp32-elf-size" -A "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\arduino_build_806781/esp8266.ino.elf"
项目使用了 707617 字节,占用了 (21%) 程序存储空间。最大为 3342336 字节。
全局变量使用了39384字节,(12%)的动态内存,余留288296字节局部变量。最大为327680字节。* */

相关内容

热门资讯

demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...