Arduino ESP8266使用AliyunIoTSDK.h连接阿里云物联网平台
文章目录
- 1、AliyunIoTSDK简介
- 2、相关库安装
- 3、阿里云创建产品,订阅发布
- 4、对开源的Arduino ESP8266源代码修改
- 5、使用阿里云点亮一个LED灯
- 6、设备向阿里云上传温度数据
- 7、项目源码
1、AliyunIoTSDK简介
AliyunIoTSDK是arduino的一个库,可以在arduino的应用商店中搜索到这个库,当时版本不一定是最新的,而且下载的地址在国外,下载会比较久,有时还不能下载成功,我之前就在下载他的库的时候花费了大量的时间。
我这里提供基于AliyunIoTSDK库的开源项目地址:
https://github.com/xinyu198736/arduino-aliyun-iot-sdk
如果网站无法打开,可以使用我已经下载好的项目包:
链接:https://share.weiyun.com/urYMY5tN 密码:yr6d78
2、相关库安装
Arduino有非常多的已经写好库,我们使用Arduino开发ESP8266的时间只需了解库的使用即可,学过面向对象的语言如java、Python应该能很好的理解。其实,Arduino是基于C++语言开发的。
Arduino需要下载安装ArduinoJson, Crypto, PubSubClient, ESP8266库,这些库文件可以在ArduinoIDE上下载,这里不在展开。
我AliyunIoTSDK使用的是离线的安装方式,可以直接将下载好的项目负责到Arduino的项目文件保存地址。


根据开源项目的安装教程,安装PubSubClient成功后,有一个地方需要修改。

文件的地址同样在Arduino的项目文件夹下



3、阿里云创建产品,订阅发布
需要连接阿里云,首先应该在阿里云物联网平台上创建产品







像上图所示,我们在阿里云物联网平台上创建了一个产品,在产品里定义了一个led开关的功能,接下来我们只需发布上线,设备就可以连接上物联网平台了。
4、对开源的Arduino ESP8266源代码修改
阿里云平台搭建好后,只需将文章开头的AliyunIoTSDK库开源项目的代码复制过来进行一个简单的修改,项目的有详细的使用说明。



这里连接WiFi的时候,我选择的是手机的热点。
之前遇到有人问过我,“明明WiFi的名称和密码都正确,但是ESP8266无法连接WiFi。是什么原因呢?”
这时需要检查一下手机热点信息设置是否正确,WiFi名称需要以中文命名,手机热点AP频段选择2.4GHZ,设备标识默认、隐藏热点关闭。
我把我手机的热点信息附上。

如果是使用路由器无法连接的话,也重新检查一下路由器的设置,多到网上找找教程,我还没有使用路由器连接过WiFi,不管跟手机热点的设置是一样的。
当ESP8266成功连接上WiFi后,我们在阿里云物联网平台上重新刷新一下,便会发现平台提示连接成功。

5、使用阿里云点亮一个LED灯
使用阿里云物联网平台点灯需要在ESP8266绑定一个属性回调,名称要与设备功能一致。
还需要初始化LED,我之前走过一个坑,绑定LED后,没有初始化LED导致一直没有实现这个功能找了很久的bug,这里也将这个问题记录下。
善于运用串口调试可以快速并定位找到这种bug,作为开发者,快速解决bug的能力也是很重要的。我当时解决这个bug的时候就是使用串口调速,我将会把源代码在下面附上。

绑定属性回调后,需要根据需求编写回调的函数,其实,只要将开源项目的电源属性修改的回调函数修改一下即可,我修改后如下:
// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{int PowerSwitch = p["LEDSwitch"];if (PowerSwitch == 1){//开灯Serial.println("LED_ON");digitalWrite(LED_BUILTIN, LOW);}if (PowerSwitch == 0){//关灯Serial.println("LED_OFF");digitalWrite(LED_BUILTIN, HIGH);}
}
下面,我们使用阿里云开始点灯


6、设备向阿里云上传温度数据
我们要上传数据到阿里云,首先阿里云上的设备先要定义好温度这个功能,然后我们修改如下函数即可。

将修改好的程序下载到开发板上,我们就可以在阿里云查看设备上传的数据了。

7、项目源码
// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;// 引入阿里云 IoT SDK
#include <AliyunIoTSDK.h>// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "xxxxxxxxxx"
#define DEVICE_NAME "xxxxxxx"
#define DEVICE_SECRET "xxxxxxx"
#define REGION_ID "cn-shanghai"// 设置 wifi 信息
#define WIFI_SSID "xxxxxxx"
#define WIFI_PASSWD "xxxxxxx"// 温度
float f_temperature = 25.1;void setup()
{Serial.begin(9600);// 初始化 wifiwifiInit(WIFI_SSID, WIFI_PASSWD);// 初始化 iot,需传入 wifi 的 client,和设备产品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);// initialize digital pin LED_BUILTIN as an output.pinMode(LED_BUILTIN, OUTPUT);// 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback// AliyunIoTSDK::bindData("设备功能标识符", powerCallback);AliyunIoTSDK::bindData("LEDSwitch", powerCallback);
}void loop()
{AliyunIoTSDK::loop();//每隔1秒发送一次数据delay(1000);// 发送一个数据到云平台,AliyunIoTSDK::send("设备标识符", 要发送的数据);AliyunIoTSDK::send("temperature", f_temperature);
}// 初始化 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");
}// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{int PowerSwitch = p["LEDSwitch"];if (PowerSwitch == 1){//开灯Serial.println("LED_ON");digitalWrite(LED_BUILTIN, LOW);}if (PowerSwitch == 0){//关灯Serial.println("LED_OFF");digitalWrite(LED_BUILTIN, HIGH);}
}
相关文章:
Arduino ESP8266使用AliyunIoTSDK.h连接阿里云物联网平台
文章目录 1、AliyunIoTSDK简介2、相关库安装3、阿里云创建产品,订阅发布4、对开源的Arduino ESP8266源代码修改5、使用阿里云点亮一个LED灯6、设备向阿里云上传温度数据7、项目源码 1、AliyunIoTSDK简介 AliyunIoTSDK是arduino的一个库,可以在arduino的…...
【车载开发系列】AutoSar中的CANTP
【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP 【车载开发系列】AutoSar中的CANTP一. CANTP相关术语二. CANTP相关概念1)单帧:SF(Single Frame)2)首帧:FF(First Frame)3)连续帧CF(Consecutive F…...
JUL日志
文章目录 JUL日志JUL日志讲解Properties配置文件编写日志配置文件Lombok快速开启日志Mybatis日志系统 JUL日志 如果使用System.out.println来打印信息,项目中存在大量的控制台输出语句,会显得很凌乱,而且日志的粒度是不够细的,假…...
ZZ308 物联网应用与服务赛题第G套
2023年全国职业院校技能大赛 中职组 物联网应用与服务 任 务 书 (G卷) 赛位号:______________ 竞赛须知 一、注意事项 1.检查硬件设备、电脑设备是否正常。检查竞赛所需的各项设备、软件和竞赛材料等; 2.竞赛任务中所使用…...
如何使用 vcpkg 编译Google-V8脚本引擎(ECMA/JavaScript)?
WIN32K下一键杀死所有同名进程命令行:taskkill /F /IM chrome.exe ############################## 1、准备 Visual Studio 2019 2、准备 Visual Studio 2022 3、安装 VC、MSBuild 编译集成环境 4、安装 Python 3.x,早期V8发行版本编译安装 2.x 5、…...
系列二十二、idea Live Templates
一、idea Live Templates 1.1、Java Group 1.1.1、fast fast 快速在类上添加注解Data AllArgsConstructor NoArgsConstructor Accessors(chain true) ToString(callSuper true) 1.1.2、getThreadName getThreadName快速获取当前线程的名字Thread.currentThread().getName…...
电脑本地安装宝塔/docker 安装宝塔
一、先去docker官网(http://docker.com)下载软件并进行安装,网站打不开多试几次或者找梯子。 二、macos系统里按“command 空格”搜索“终端”回车,启动终端程序。 三、执行下面命令,拉取docker镜像。 docker pull pch18/baota:clear pch…...
Java Lambda 表达式笔记
文章目录 Java Lambda 表达式语法Lambda 表达式实例Lambda表达式与函数式接口方法引用处理lambda表达式的接口 Java Lambda 表达式语法Lambda 表达式实例Lambda表达式与函数式接口方法引用处理lambda表达式的接口 Java Lambda 表达式 Lambda 表达式,也可称为闭包. …...
Flutter笔记:状态提升、控制器模式、GetX控制器和服务
Flutter笔记 状态提升、控制器模式、GetX控制器和服务 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/1…...
9.spark自适应查询-AQE之动态调整Join策略
目录 概述动态调整Join策略原理实战 动态优化倾斜的 Join原理实战 概述 broadcast hash join 类似于 Spark 共享变量中的广播变量,Spark join 如果能采取这种策略,那join 的性能是最好的 自适应查询AQE(Adaptive Query Execution) 动态调整Join策略 原…...
CentOs7 NAT模式连接网络
1.配置动态网络 1.1 检查主机网卡配置 检查主机的网络设置 进入控制面板,找到网络共享中心 查看适配器是否都已经开启 1.2 设置虚拟机的网络配置 打开虚拟机网络配置设置,对网卡VMnet8 进行设置 记住网关 全部选择应用,确定 1.3 设置…...
linux安装git
目录 声明 前言 正文 (1)下载git压缩包 (2)git压缩包解压 (3)解压完成后需要进行源码的编译操作 a.首先进去到解压后的文件目录中: b.执行: 编译的过程中可能遇到的问题&am…...
thinkphp6 起步
1、安装 composer create-project topthink/think6.0 tp62、使用多应用模式,你需要安装多应用模式扩展think-multi-app composer require topthink/think-multi-app3、config/app.php中,将 ‘auto_multi_app’ > flase, 改为true; 需要自…...
会员题-力扣408-有效单词缩写
有效单词缩写 字符串可以用 缩写 进行表示,缩写 的方法是将任意数量的 不相邻 的子字符串替换为相应子串的长度。例如,字符串 “substitution” 可以缩写为(不止这几种方法): “s10n” (“s ubstitutio n”) “sub4…...
spring-cloud-stream
系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...
2.0 熟悉CheatEngine修改器
Cheat Engine 一般简称为CE,它是一款功能强大的开源内存修改工具,其主要功能包括、内存扫描、十六进制编辑器、动态调试功能于一体,且该工具自身附带了脚本工具,可以用它很方便的生成自己的脚本窗体,CE工具可以帮助用户…...
微信小程序数据交互和缓存
目录 前言: 数据交互 1. 发起网络请求 2. WebSocket 2.1实时数据库 3. 微信支付 数据缓存 1. 页面级缓存 2. 内存级缓存 3. 数据缓存策略 优化用户体验 总结 前言: 在开发微信小程序时,数据交互和缓存是非常重要的方面。本文将介…...
kubernetes集群编排——k8s认证授权
pod绑定sa [rootk8s2 ~]# kubectl create sa admin [rootk8s2 secret]# vim pod5.yaml apiVersion: v1 kind: Pod metadata:name: mypod spec:serviceAccountName: admincontainers:- name: nginximage: nginxkubectl apply -f pod5.yamlkubectl get pod -o yaml 认证 [rootk8s…...
rabbitmq下载安装教程
1.首先需要下载erlang和rabbitmq安装包: 官网下载比较慢,通过网盘下载: 链接:https://pan.baidu.com/s/1fM2BrJqefyzUDZD4tfZLIg 提取码:5hsu 2.安装,傻瓜式安装就可以,可以自定义自己要安装的目…...
数据分析实战 | SVM算法——病例自动诊断分析
目录 一、数据分析及对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型应用及评价 一、数据分析及对象 CSV文件——“bc_data.csv” 数据集链接:https://download.csdn.net/download/m0_70452407/88…...
FlowState Lab助力游戏开发:实时生成动态地形与天气效果
FlowState Lab助力游戏开发:实时生成动态地形与天气效果 1. 游戏开发的新挑战与机遇 现代游戏开发面临一个核心矛盾:玩家对画面表现力的要求越来越高,而开发团队的时间和资源却总是有限的。传统的地形和天气系统需要美术师手动设计每一个细…...
移动AI部署
移动AI部署:让智能触手可及 在智能手机、无人机、可穿戴设备等移动终端快速普及的今天,人工智能(AI)技术正逐步从云端下沉至边缘设备。移动AI部署将强大的AI能力嵌入便携设备,实现实时响应、隐私保护和离线运行&#…...
2026年最值得玩的狼人杀,经典版口碑拉满
2026年市面上的狼人杀APP琳琅满目,但真正值得长期玩、口碑好的寥寥无几,而狼人杀经典版就是其中的佼佼者!它是2016年底国内第一款狼人杀APP,红色logo、平面卡通画风,玩家俗称“红狼”“口袋狼人杀”,由假面…...
可控性技术人工智能系统人类监督与干预接口设计
可控性技术人工智能系统人类监督与干预接口设计 随着人工智能技术的快速发展,其在医疗、金融、交通等关键领域的应用日益广泛。AI系统的自主决策能力也带来了潜在风险,例如算法偏见、安全漏洞或失控行为。为确保AI系统的可靠性和安全性,可控…...
RexUniNLU开源NLU模型实战:金融研报关系抽取+事件时间线自动生成案例
RexUniNLU开源NLU模型实战:金融研报关系抽取事件时间线自动生成案例 1. 引言:当研报分析遇上智能信息抽取 想象一下这个场景:作为一名金融分析师,你刚收到一份长达50页的行业深度研究报告。你需要从中找出所有提到的公司、它们之…...
Java基础入门:方法详解
Java基础入门:方法详解 前言:掌握了Java变量、运算符、流程控制和数组后,你可能会遇到一个问题——重复编写相同的代码,比如多次计算两个数的和、多次打印数组元素,既繁琐又冗余。而「方法」就是Java中用来实现“代码复…...
SIP协议(四) - 注册流程中的挑战与响应机制详解
1. SIP注册流程中的挑战与响应机制 第一次接触SIP协议时,很多人都会被它的注册流程搞得一头雾水。明明发送了REGISTER请求,服务器却返回401错误,这到底是怎么回事?其实这正是SIP协议中经典的"挑战-响应"鉴权机制在发挥作…...
三极管有源滤波电路真的可以工作吗?
超简单的三极管有源滤波电路 01 【三极管有源滤波】 一、滤波电路 今天看到一个B站视频, 介绍使用三极管进行有源滤波的电路。 这个三极管有源滤波电路, 串联在整流电路的后边, 对输出波纹进行滤波。 那么问题来了, 究竟这个电路…...
clickhouse可以表关联吗
ClickHouse 完全支持表关联(JOIN),但语法和性能特性与传统数据库有所不同。ClickHouse JOIN 类型表格JOIN 类型语法说明INNER JOINSELECT ... FROM a INNER JOIN b ON a.id b.id标准内连接LEFT JOINSELECT ... FROM a LEFT JOIN b ON a.id …...
Linux开发环境配置总结【Ubuntu22 VScode Mobaxterm】
文章目录前言按照名称找这些资源安装ubuntu 22 server的一些注意事项MobaXterm连接虚拟机VSCode相关的环境配置--------会用到的扩展--------VSCode的配置文件--------VSCode中进行编译--------VSCode中进行debug--------VSCode遇到的SSH连接问题(failed to fetch)--------虚拟…...
