新建项目


  • 新建目录:
  1. mkdir rgblight
  2. cd rgblight
  • 在项目下安装 aliyun-iot-device-sdk 和 pigpio npm 模块:
  1. 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 文件,内容如下(需要修改代码中的设备激活凭证):

  1. const aliyunIot = require('aliyun-iot-device-sdk');
  2. const Gpio = require('pigpio').Gpio;
  3. // 创建设备实例
  4. const device = aliyunIot.device({
  5. // 激活凭证 这里替换成你自己上一步申请到的激活凭证
  6. productKey: '<productKey>',
  7. deviceName: '<deviceName>',
  8. deviceSecret: '<deviceSecret>',
  9. });
  10. // Rgb 彩灯对象
  11. const RgbLight = {
  12. LightSwitch: 0,
  13. RGBColor: {
  14. Red: 255,
  15. Green: 255,
  16. Blue: 255,
  17. },
  18. ledR: new Gpio(14, {
  19. mode: Gpio.OUTPUT,
  20. pullUpDown: Gpio.PUD_DOWN,
  21. }),
  22. ledG: new Gpio(15, {
  23. mode: Gpio.OUTPUT,
  24. pullUpDown: Gpio.PUD_DOWN,
  25. }),
  26. ledB: new Gpio(18, {
  27. mode: Gpio.OUTPUT,
  28. pullUpDown: Gpio.PUD_DOWN,
  29. }),
  30. turnOff: () => {
  31. RgbLight.ledR.digitalWrite(0);
  32. RgbLight.ledG.digitalWrite(0);
  33. RgbLight.ledB.digitalWrite(0);
  34. RgbLight.LightSwitch = 0;
  35. },
  36. update: () => {
  37. RgbLight.ledR.pwmWrite(RgbLight.RGBColor.Red);
  38. RgbLight.ledG.pwmWrite(RgbLight.RGBColor.Green);
  39. RgbLight.ledB.pwmWrite(RgbLight.RGBColor.Blue);
  40. RgbLight.LightSwitch = 1;
  41. },
  42. toggle: () => {
  43. if (RgbLight.LightSwitch === 1) {
  44. return RgbLight.turnOff();
  45. }
  46. RgbLight.update();
  47. },
  48. };
  49. device.on('connect', () => {
  50. console.log('connect successfully');
  51. // 监听云端消息
  52. device.serve('property/set', params => {
  53. console.log('receieve params:', params);
  54. if (params.LightSwitch === 0) {
  55. RgbLight.turnOff();
  56. } else {
  57. RgbLight.RGBColor = params.RGBColor || RgbLight.RGBColor;
  58. RgbLight.LightSwitch = params.LightSwitch || RgbLight.LightSwitch;
  59. RgbLight.update();
  60. }
  61. const props = {
  62. LightSwitch: RgbLight.LightSwitch,
  63. RGBColor: RgbLight.RGBColor,
  64. };
  65. console.log('post props:', props);
  66. device.postProps(props, err => {
  67. if (err) {
  68. return console.log('post error:', err);
  69. }
  70. console.log('post successfully!');
  71. });
  72. });
  73. });

运行调试


在项目目录下:
node index.js
看到“connect successfully”表示设备成功连接到了云端。

代码开发 - 图1
选择调试设备,进行调试。
代码开发 - 图2
树莓派开发板上的 RGB 小灯模块的颜色变成了紫色,说明数据下发成功。

另外可在日志服务中查看上行下行消息。