嵌入式设备快速上云
更新时间:2018-09-14 20:15:43
嵌入式设备快速上云
本示例旨在为开发者展示如何让设备快速与阿里云端的 LD(Link Develop)平台相连,把设备端属性上报到云端展示,手机APP,或者云端远程更新设备的属性和状态,操控设备。
该示例使用到了开发板 ESP32-devkitC 板上的 LED 灯,因此需要 ESP32-devkitC 开发板:goouuu-esp-32f,当然,也可以使用其他参考板,但 LED 的驱动需要调整。
在LD平台上,创建一个新的产品和调试设备
- 首先在 Link Develop 上创建一个SmartLight 的产品
- 然后,定义产品 SmartLight 的产品设备模型:属性,事件和方法
本示例产品只定义一个属性,即:
LightSwitch:开:1,关:0
- 为该产品生成一个具体设备,设备三元组为:
productKey: "XXX",
deviceName: "XXX",
deviceSecret: "XXXXXXX",
利用嵌入式设备 Javascript 工作台开发应用程序
如何使用工作台请参见快速入门
导入 cloud-clinet 软件模块
导入 rgbled 驱动
编写主程序index.js
//导入上云模块
var cloudClient = require(’cloud-client‘);
//导入参考板上的 RGB LED 驱动
var rbgled = require(’rgbled‘);
//创建一个RGB 实例
var iRGB = new rbgled("rgbled.r", "rgbled.g", "rgbled.b");
var i;
console.log("=================================");
console.log(" 上云测试程序 ");
console.log("=================================");
//开灯
function lightOn() {
console.log("开灯");
//rbgled.set(r,g,b) 设置RGB灯颜色,r=0,g=0,b=0 白色
iRGB.set(0, 0, 0);
//上报板上的灯的状态属性到云端:开灯
cloudClient.postProperty({ LightSwitch: 1 });
}
//关灯
function lightOff() {
console.log("关灯");
//rbgled.set(r,g,b) 设置RGB灯颜色,r=1,g=1,b=1 关闭灯
iRGB.set(1, 1, 1);
//上报板上的灯的状态属性到云端:关闭
cloudClient.postProperty({ LightSwitch: 0 });
}
//启动上云模块
cloudClient.start(
//config配置参数
{
productKey: "XXX",
deviceName: "XXX",
deviceSecret: "xxxxxxxxxxxxxxxxxxxxx"
},
//回调函数cb
function(err, data) {
console.log("onStart");
if (err) {
return;
}
//注册响应云端事件的回调函数
cloudClient.onPropertySet(function(msg) {
//云端下发的设置命令
if (msg.method === "thing.service.property.set") {
if (msg.params.LightSwitch === 1) {
//开灯
lightOn();
} else {
//关灯
lightOff();
}
}
});
}
);
//定时开关灯,10秒
setInterval(function() {
if (i) lightOn();
else lightOff();
i = (i + 1) % 2;
}, 10000);
调试硬件
board.json 配置如下:
{
"rgbled.r": {
"type": "GPIO",
"port": 27,
"dir": 3,
"pull": 1
},
"rgbled.g": {
"type": "GPIO",
"port": 33,
"dir": 3,
"pull": 1
},
"rgbled.b": {
"type": "GPIO",
"port": 32,
"dir": 3,
"pull": 1
}
}