之前一直搞不定阿里云的Tkon令牌
后面看到这个AliyunIoTSDK库,超级简单
一行代码连接阿里云
在Arduino库里安装AliyunIoTSDK就行,前提要安装ArduinoJson,Crypto,PubSubClient库
AliyunIoTSDK介绍:https://github.com/yu-tou/arduino-aliyun-iot-sdk
依赖 PubSubClient ,在使用前,请务必修改 PubSubClient 的连接参数,否则无法使用
PubSubClient 中的 MQTT_MAX_PACKET_SIZE 修改为 1024
PubSubClient 中的 MQTT_KEEPALIVE 修改为 60
修改PubSubClient.h文件,
PubSubClient.h在哪里?
在Arduino项目文件夹里->libraries文件夹,不是Arduino编辑器文件夹
// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;
// 引入阿里云 IoT SDK
#include <AliyunIoTSDK.h>
// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "a1fg***rjd2"
#define DEVICE_NAME "led1"
#define DEVICE_SECRET "858fec6a15572********585fc0277"
#define REGION_ID "cn-shanghai"
// 设置 wifi 信息
#define WIFI_SSID "360wifi"
#define WIFI_PASSWD "11111111"
void setup()
{
Serial.begin(115200);
pinMode(BUILTIN_LED, OUTPUT);// 定义板载LED灯为输出方式
// 初始化 wifi
wifiInit(WIFI_SSID, WIFI_PASSWD);
// 初始化 iot,需传入 wifi 的 client,和设备产品信息
AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
// 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback
// PowerSwitch 是在设备产品中定义的物联网模型的 id
AliyunIoTSDK::bindData("PowerSwitch", powerCallback);
// 发送一个数据到云平台,PowerSwitch 是在设备产品中定义的物联网模型的 id
AliyunIoTSDK::send("PowerSwitch", 0);
}
void loop()
{
AliyunIoTSDK::loop();
}
// 初始化 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["PowerSwitch"];
if (PowerSwitch == 1)
{
// 启动设备
Serial.println("开关=1了");
digitalWrite(BUILTIN_LED, HIGH); // 熄灯
}
if (PowerSwitch == 0)
{
// 启动设备
Serial.println("开关=0了");
digitalWrite(BUILTIN_LED, LOW); // 亮灯
}
}
阿里云设置,
上面的PowerSwitch一定要在产品->功能里有
这个属性是自己加的,
可以在->在线调试里,测试
控制端,diy,新版地址https://studio.iot.aliyun.com/
重点是要绑定好设备,才能控制
样式不用管,只设置交互,设置值容易出错,