新建项目
- 新建目录:
mkdir rgblightcd rgblight
- 在项目下安装 aliyun-iot-device-sdk 和 pigpio npm 模块:
npm install --save aliyun-iot-device-sdk pigpio
aliyun-iot-device-sdk 文档:https://www.npmjs.com/package/aliyun-iot-device-sdk
pigpio 文档: https://www.npmjs.com/package/pigpio
设备编码
创建 index.js 文件,内容如下(需要修改代码中的设备激活凭证):
const aliyunIot = require('aliyun-iot-device-sdk');const Gpio = require('pigpio').Gpio;// 创建设备实例const device = aliyunIot.device({// 激活凭证 这里替换成你自己上一步申请到的激活凭证productKey: '<productKey>',deviceName: '<deviceName>',deviceSecret: '<deviceSecret>',});// Rgb 彩灯对象const RgbLight = {LightSwitch: 0,RGBColor: {Red: 255,Green: 255,Blue: 255,},ledR: new Gpio(14, {mode: Gpio.OUTPUT,pullUpDown: Gpio.PUD_DOWN,}),ledG: new Gpio(15, {mode: Gpio.OUTPUT,pullUpDown: Gpio.PUD_DOWN,}),ledB: new Gpio(18, {mode: Gpio.OUTPUT,pullUpDown: Gpio.PUD_DOWN,}),turnOff: () => {RgbLight.ledR.digitalWrite(0);RgbLight.ledG.digitalWrite(0);RgbLight.ledB.digitalWrite(0);RgbLight.LightSwitch = 0;},update: () => {RgbLight.ledR.pwmWrite(RgbLight.RGBColor.Red);RgbLight.ledG.pwmWrite(RgbLight.RGBColor.Green);RgbLight.ledB.pwmWrite(RgbLight.RGBColor.Blue);RgbLight.LightSwitch = 1;},toggle: () => {if (RgbLight.LightSwitch === 1) {return RgbLight.turnOff();}RgbLight.update();},};device.on('connect', () => {console.log('connect successfully');// 监听云端消息device.serve('property/set', params => {console.log('receieve params:', params);if (params.LightSwitch === 0) {RgbLight.turnOff();} else {RgbLight.RGBColor = params.RGBColor || RgbLight.RGBColor;RgbLight.LightSwitch = params.LightSwitch || RgbLight.LightSwitch;RgbLight.update();}const props = {LightSwitch: RgbLight.LightSwitch,RGBColor: RgbLight.RGBColor,};console.log('post props:', props);device.postProps(props, err => {if (err) {return console.log('post error:', err);}console.log('post successfully!');});});});
运行调试
在项目目录下:node index.js
看到“connect successfully”表示设备成功连接到了云端。

选择调试设备,进行调试。
树莓派开发板上的 RGB 小灯模块的颜色变成了紫色,说明数据下发成功。
另外可在日志服务中查看上行下行消息。
