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

news2025/1/13 11:59:05

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 <ESP8266WiFi.h>
#elif  ESP32
#include <WiFi.h> // esp32开发板自带库
#endif
#include <AliyunIoTSDK.h> //引入阿里云 IoT SDK
#include <Ticker.h>        //定时操作
//设置产品和设备的信息,从阿里云设备信息里查看
#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); //连接到wifi
  ticker.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字节。

 * 
 */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/41.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础入门(持续更新中)

一、发展历程 Python的创始人为荷兰人吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;。1989年圣诞节期间&#xff0c;在阿姆斯特丹&#xff0c;Guido为了打发圣诞节的无趣&#xff0c;决心开发一个新的脚本解释程序&#xff0c;作为ABC语言的一种继承。之所以选中单词P…

CANoe-以太网软硬件网络自动映射的问题

以太网软硬件网络自动映射的问题 当我们设置CANoe以太网模式为Network-based access模式时 我们需要在CANoe硬件里配置segment,具体内容请参考文章《如何配置CANoe Network-based access模式的以太网网络拓扑》 有时我们图省事,配置的segment默认名称是什么,我们也不管,也…

UVM如何处理out-of-order乱序传输

文章目录前言1、基本思路2、支持乱序传输的sequence3、支持乱序传输的Driver总结前言 乱序传输(out-of-order)是指在协议中&#xff0c;后发出去的req&#xff0c;支持先回resp&#xff0c;通常通过ID来保证req和resp之间的关系。很多协议支持乱序传输&#xff0c;例如AXI4。本…

我们简单的new了一个对象,JVM都做了哪些贡献?

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章是关于CAS的介绍以及在我们new对象时&#xff0c;Java虚拟机会为我们做些什么贡献。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适合复…

【C++笔试强训】第九天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6; &…

基于骨骼的动作识别:PoseConv3D

Revisiting Skeleton-based Action Recognition解读摘要1. 简介2. Related Work2.1 基于3D-CNN的rgb视频动作识别2.2 基于GCN的骨骼动作识别2.3 基于CNN的骨骼动作识别3. Framework3.1 Pose Extraction3.2 From 2D Poses to 3D Heatmap Volumes3.3 基于骨骼的动作识别3D-CNN3.3…

智能的逻辑与理性的逻辑是不同的逻辑

1.世界是由事实和价值共同组成的1.1 事实由对象、事态及其联系&#xff08;如语言&#xff09;构成1.2 价值是事实在实践中的作用和效果构成1.3 事实中存在着决定论&#xff0c;价值里包含有自由意志1.3.1 事实反映有无&#xff0c;价值反映好坏1.4 每一个事实都具有变价值&…

8.2 从堆中绕过SafeS.E.H

一、实验环境 操作系统&#xff1a;windows XP SP2&#xff08;关闭DEP&#xff09; 软件版本&#xff1a;VS2008&#xff08;release&#xff09;、原版OD&#xff08;实时调试&#xff09; 二、实验代码 #include <stdafx.h> #include <stdlib.h> #include <…

计算机操作系统引论(操作系统)

目录 一、操作系统的目标 二、操作系统的作用 三、操作系统的基本特性 四、操作系统的主要功能 五、操作系统的结构设计 一、操作系统的目标 操作系统&#xff08;Operating System&#xff0c;OS&#xff09;是计算机硬件的第一层软件&#xff0c;是计算机必备配置的最基…

接口自动化测试(二)—— Postman实现接口测试

其他 接口自动化测试 知识参考&#xff1a;接口自动化测试 目录 一、Postman介绍和安装 1、简介 2、安装 3、安装Postman插件newman 二、Postman基本用法 1、案例一 2、案例二 三、Postman高级用法 1、管理测试用例Collections 1.1、创建 collections 1.2、创建 用…

libusb系列-002-Windows下libusb源码编译

libusb系列-002-Windows下libusb源码编译 文章目录libusb系列-002-Windows下libusb源码编译摘要Windows下编译libusb库下载源码进入msvc目录选择对应的项目工程编译查看编译好的库文件关键字&#xff1a; vs、 编译、 Qt、 libusb、 windows内容背景&#xff1a; 最近项目终于切…

从 0 到 1 落地前端工程化

你将获得 初识&#xff1a;总结前端工程化技能图谱 了解&#xff1a;梳理前端工程化落地流程 掌握&#xff1a;搭建前端工程化基建项目 提高&#xff1a;实战前端工程化解决方案 作者介绍 JowayYoung&#xff0c;资深前端工程师&#xff0c;目前就职于网易互动娱乐事业群&…

建立私人知识网站 cpolar轻松做到1 (部署DokuWiki)

维基百科&#xff08;wiki&#xff09;相信大家都有所耳闻&#xff0c;作为全球最有名的百科知识搜索网站&#xff0c;很多不常见的知识点都能在这上面搜索到&#xff0c;而维基百科能够成功的原因&#xff0c;就是可以编辑的和修订的功能&#xff0c;让维基百科能够收到各领域…

vue学习笔记——简单入门总结(一)

Vue学习笔记 文章目录Vue学习笔记1. 学习vue的准备1.1. vue简介:1.2. vue特点:1.2.1. 组件化&#xff1a;1.2.1. 声明式&#xff1a;1.2. vue的引入1.2.1. 直接引入&#xff1a;1.2.2. 脚手架构建vue项目&#xff1a;1.2.3&#xff1a;vue开发插件安装&#xff1a;2. vue的简单…

apache服务web页面执行shell脚本

首先安装apache服务 yum -y install httpd 如下介绍两种执行的方式 方式一、url直接传参的方式 #cat /var/www/cgi-bin/shell #!/bin/sh printf "Content-Type: text/plain\n\n" your_commands_here传参的动作 http://172.16.61.119:8098/cgi-bin/shell?pwd在…

STM32使用寄存器开发底层驱动学习(USART+DMA)

目录学习资料下载任务USART的DMA功能发送数据DMA非中断模式接收USART数据。DMA中断模式接收USART数据总结学习资料下载 在本文学习中会用到如下的文档资料&#xff0c;没有的朋友先下载。 工程模板 Cortex M3权威指南&#xff08;中文&#xff09; &#xff1a;本文简称为《…

1024程序节|你知道老师上课随机点名是怎么实现的吗

个人主页&#xff1a;天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 目录 前言 随机点名 搭建主体框架 简述 执行代码 添加功能 块级元素随机输出姓名 Math.random() Math.round() 按钮控制开始/结束 onclick() clearInterval() 简述 完整代码 执行结果 片…

I/O复用--浅谈epoll

我们聊了聊select和poll知道&#xff1a; 它们都是采取轮询的方式查找是否有就绪描述符。都有数据结构从用户态拷贝到内核态&#xff0c;内核态拷贝到用户态这个过程。 为了针对许多大量连接&#xff0c;高并发的的场景下大量的资源消耗&#xff0c;效率低的问题&#xff0c;这…

网络安全实战:记一次比较完整的靶机渗透

0x01信息搜集 nmap -sC -sV -p- -A 10.10.10.123 -T4 -oA nmap_friendzone访问80端口的http服务只发现了一个域名。 0x02 DNS区域传输 因为我们前面扫描的时候发现了53端口是开着一个dns服务的&#xff0c;所以尝试使用friendzoneportal.red进行axfr&#xff0c;它的具体含…

《软件测试》实验2:嵌入式软件测试实验报告

文章目录实验目的温度控制器需求文档及测试要求环境搭建实验内容温度采集处理功能测试加热棒输出电压测试散热风扇温度传感器输入接口&#xff08;Senser_JK&#xff09;控制加热棒输出接口&#xff08;Heater_JK&#xff09;控制散热风扇输出接口&#xff08;Fan_JK&#xff0…