chenyc
2025-12-09 545c24c6a711d71b65f3d4e8122fee3837fb1edc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const aliyunIot = require('../../');
const createTestDevices = require('./createTestDevice');
 
const gateway = aliyunIot.gateway({
  productKey: '<productKey>',
  deviceName: '<deviceName>',
  deviceSecret: '<deviceSecret>',
});
 
gateway.on('connect', () => {
  console.log('connect succesfully!');
  createTestDevices().forEach(deviceConfig => {
    // 添加子设备到拓扑
    gateway.addTopo(deviceConfig, (err, result) => {
      if (!err) {
        console.log(err, result);
        // 子设备上线
        gateway.login(deviceConfig, (err, result) => {
          console.log(err, result);
          setInterval(() => {
            console.log('开始上报');
            // 子设备属性数据上报
            gateway.postSubDeivceProps(
              deviceConfig,
              {
                LightStatus: Math.ceil(Math.random() * 32)
              },
              (err, result) => {
                console.log(err, result);
                console.log('子设备属性上报完成!');
                // 子设备事件上报
                gateway.postSubDeviceEvent(
                  deviceConfig,
                  'TestEvent', // 自定义一个告警事件
                  {},
                  (err, result) => {
                    console.log(err, result);
                    console.log('子设备事件上报完成!');
                  }
                );
              }
            );
            const unsub = gateway.subTopicAndOnMessage(
              '/sys/+/+/thing/service/#',
              (err, topic, message) => {
                console.log('收到 topic', err, topic, message);
                // 取消监听
                unsub();
              }
            );
          }, 30000);
        });
      }
    });
 
    setTimeout(() => {
      // 获取拓扑关系
      gateway.getTopo(deviceConfig, (err, result) => {
        console.log(err, result);
        // 子设备下线
        // gateway.logout(deviceConfig, (err, result) => {
        //   console.log(err, result);
        //   // 移除拓扑关系
        //   gateway.deleteTopo(deviceConfig, (err, result) => {
        //     console.log(err, result);
        //   });
        // });
      });
    }, 2000);
  });
});