1.vscode 创建.js项目 ,导入如下代码 注意你要下载 rhea 和crypto这两个库
const container = require('rhea');
const crypto = require('crypto');
//创建Connection。
var connection = container.connect({
//接入域名,请参见AMQP客户端接入说明文档。
'host': '${YourHost}',
'port': 5671,
'transport':'tls',
'reconnect':true,
'idle_time_out':60000,
//userName组装方法,请参见AMQP客户端接入说明文档。
'username':'${YourClientId}|authMode=aksign,signMethod=hmacsha1,timestamp=1573489088171,authId=${YourAccessKeyId},iotInstanceId=${YourIotInstanceId},consumerGroupId=${YourConsumerGroupId}|',
//计算签名,password组装方法,请参见AMQP客户端接入说明文档。
'password': hmacSha1('${YourAccessKeySecret}', 'authId=${YourAccessKeyId}×tamp=1573489088171'),
});
//创建Receiver Link。
var receiver = connection.open_receiver();
//接收云端推送消息的回调函数。
container.on('message', function (context) {
var msg = context.message;
var messageId = msg.message_id;
var topic = msg.application_properties.topic;
var content = Buffer.from(msg.body.content).toString();
// 输出内容。
console.log(content);
//发送ACK,注意不要在回调函数有耗时逻辑。
context.delivery.accept();
});
//计算password签名。
function hmacSha1(key, context) {
return Buffer.from(crypto.createHmac('sha1', key).update(context).digest())
.toString('base64');
}
2.根据阿里云官方文档修改这部分内容,填写自己的信息 官方文档连接: Node.js SDK接入示例 (aliyun.com)
3.Arduino上 编写如下代码
// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <WiFi.h>
static WiFiClient espClient;
// 引入阿里云 IoT SDK
#include <AliyunIoTSDK.h>
// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "xxx"
#define DEVICE_NAME "Device_D"
#define DEVICE_SECRET "xxxxxxxxxxxxxx"
#define REGION_ID "cn-shanghai"
// 设置 wifi 信息
#define WIFI_SSID "xxxxx"
#define WIFI_PASSWD "xxxxx"
#define BUZZER_PIN 13 //定义蜂鸣器引脚为13
void setup()
{
Serial.begin(115200);
// 初始化 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("RunningState", powerCallback);
// 发送一个数据到云平台,LightLuminance 是在设备产品中定义的物联网模型的 id
pinMode(BUZZER_PIN, OUTPUT); //将蜂鸣器引脚设为输出
digitalWrite(BUZZER_PIN, HIGH); //初始化为高电平,使蜂鸣器停止响
}
void loop()
{
AliyunIoTSDK::loop();
// AliyunIoTSDK::send("RunningState", 100);
delay(1000);
}
// 初始化 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["RunningState"];
// 启动设备
if(PowerSwitch==999){
digitalWrite(BUZZER_PIN, LOW); //将蜂鸣器引脚设为低电平,使蜂鸣器响起
delay(500); //等待500毫秒
digitalWrite(BUZZER_PIN, HIGH); //将蜂鸣器引脚设为高电平,使蜂鸣器停止响
delay(500); //等待500毫秒
}
Serial.println(PowerSwitch);
}
蜂鸣器插13号引脚
注意这部分填写你自己的信息,PRODUCT_KEY这些东西阿里云上的,你刚刚也填过
然后上传
4. 然后打开串口工具 按esp32左边的EN重启 注意打开手机热点 iPhone用户要开启 最大兼容性
5.vscod这边 node test2.js
成功的话出现如下信息
同时阿里云上面的实例也会显示在线了文章来源:https://www.toymoban.com/news/detail-520022.html
文章来源地址https://www.toymoban.com/news/detail-520022.html
到了这里,关于esp32 +阿里云+Arduino 实现上传和下发信息实例 示例:通过PC端wifi通信实现用阿里云SetDeviceProperty API 控制蜂鸣器响的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!