参考 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...-CSDN博客
文中提到的 AliyunIoTSDK 这个 Arduino 库,可以在 Arduino 库商店里搜索到(搜索 AliyunIoTSDK)
AliyunIoTSDK可以帮助你快速连接阿里云 IoT 平台,通过和阿里云物联网开发平台配合,可快速实现各种硬件应用,包括了很上层的封装,无需自己解析数据体,绑定事件即可,在ESP8266平台充分测试(NodeMCU 1.0)
AliyunIoTSDK库,除了上面在Arduino库商店里直接搜索外,还可以手动把 github 上的项目 clone 下来,放到 Arduino 的 library 库下。
github 地址:https://github.com/xinyu198736/arduino-aliyun-iot-sdk
拷贝上面网址上的测试代码:Usage使用示例
随意命名文件名,保存代码文件:
设备管理器中查看当前ESP8266 WiFi所占用的串口号:
Arduino中选择对应的串口号:
填写三元组和WiFi信息:
上海的服务器不用改 #define REGION_ID "cn-shanghai"
点击“√”对号对工程进行编译:
编译后出错:
添加:ArduinoJson库
再次编译仍旧报错:
错误信息如下所示:
-
Arduino:1.8.8 (Windows 10), 开发板:"WeMos D1 R1, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), v2 Lower Memory, Disabled, None, Only Sketch, 115200"
-
构建选项已变更,全部重新构建
-
C:\Users\juban\Documents\Arduino\libraries\AliyunIoTSDK\src\AliyunIoTSDK.cpp:3:26: fatal error: PubSubClient.h: No such file or directory
-
#include <PubSubClient.h>
-
^
-
compilation terminated.
-
exit status 1
-
为开发板 WeMos D1 R1 编译时出错。
-
在文件 -> 首选项开启
-
“编译过程中显示详细输出”选项
-
这份报告会包含更多信息。
因为AliyunIoTSDK库,底层连接依据 PubSubClient 库,所以继续安装:PubSubClient库。
缺少:SHA256库,继续安装:SHA256库
“AWS-SDK-ESP8266”库。
再次编译,成功。
编译并下载程序,上传固件至mini D1 WiFi模块。
上传成功之后显示如下:
arduino上阿里云所需要用到的四个库文件。PubSubClient,ArduinoJson,AliyunIoTSDK,Crypto(SHA256)。
PubSubClient.h,是发布/订阅功能的头文件;
SHA256.h,是加密功能的头文件(Crypto里面已有包含这个了);
ArduinoJson.h,是支持Json数据格式的头文件;
AliyunIoTSDK.h,是阿里云SDK的头文件。
打开Arduino软件,工具-->串口监视器,可以查看模块打印输出的信息:
这个串口号换了,不是上面的COM7了,因为我更换了USB口,所以串口号变化了。
下面是在PubSubClient.h文件中关于错误类型的定义:
报错MQTT Connect err : -2,说明MQTT没有连接。
解决方法是更改PubSubClient.h文件中的两个宏MQTT_MAX_PACKET_SIZE和MQTT_KEEPALIVE,将其改大点,比如改成1024和60。
修改后,重新下载程序,然后看到可以正常上传数据了。
登录生活物联网平台--阿里云
未下载程序时,设备未激活
下载程序后,刷新一下,可以看到设备在线了。
打开监控运维—日志服务
点击查看详情
{"id":"123","version":"1.0","method":"thing.event.property.post","params":{"LightLuminance":100}}
为开发板向阿里云发送的一条数据
通过arduino的setup函数中的该函数