iobroker.zigbee 1.8.1 → 1.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.json +37 -0
  3. package/.github/FUNDING.yml +3 -0
  4. package/.github/auto-merge.yml +17 -0
  5. package/.github/dependabot.yml +24 -0
  6. package/.github/stale.yml +13 -0
  7. package/.github/workflows/codeql.yml +41 -0
  8. package/.github/workflows/dependabot-automerge.yml +22 -0
  9. package/.github/workflows/test-and-release.yml +149 -0
  10. package/.releaseconfig.json +3 -0
  11. package/.travis/wiki.sh +28 -0
  12. package/.travis.yml +41 -0
  13. package/README.md +31 -8
  14. package/admin/admin.js +466 -482
  15. package/admin/i18n/de/translations.json +2 -2
  16. package/admin/index_m.html +1 -1
  17. package/admin/tab_m.html +3 -44
  18. package/admin/words.js +2 -2
  19. package/gulpfile.js +464 -0
  20. package/io-package.json +18 -25
  21. package/lib/backup.js +2 -2
  22. package/lib/binding.js +37 -32
  23. package/lib/colors.js +158 -163
  24. package/lib/commands.js +90 -99
  25. package/lib/developer.js +12 -9
  26. package/lib/devices.js +179 -169
  27. package/lib/exclude.js +36 -30
  28. package/lib/exposes.js +139 -163
  29. package/lib/groups.js +83 -81
  30. package/lib/json.js +6 -5
  31. package/lib/networkmap.js +3 -2
  32. package/lib/ota.js +18 -34
  33. package/lib/rgb.js +72 -114
  34. package/lib/seriallist.js +20 -25
  35. package/lib/states.js +526 -511
  36. package/lib/statescontroller.js +183 -206
  37. package/lib/utils.js +23 -24
  38. package/lib/zbBaseExtension.js +4 -4
  39. package/lib/zbDelayedAction.js +13 -5
  40. package/lib/zbDeviceAvailability.js +65 -69
  41. package/lib/zbDeviceConfigure.js +21 -9
  42. package/lib/zbDeviceEvent.js +4 -3
  43. package/lib/zigbeecontroller.js +103 -109
  44. package/main.js +147 -163
  45. package/package.json +15 -29
  46. package/test/integration.js +5 -0
  47. package/test/mocha.custom.opts +2 -0
  48. package/test/mocha.setup.js +14 -0
  49. package/test/package.js +5 -0
  50. package/test/unit.js +5 -0
  51. package/docs/de/img/CC2531.png +0 -0
  52. package/docs/de/img/CC2538_CC2592_PA.PNG +0 -0
  53. package/docs/de/img/CC2591.png +0 -0
  54. package/docs/de/img/boards.jpg +0 -0
  55. package/docs/de/img/cc26x2r.PNG +0 -0
  56. package/docs/de/img/results.jpg +0 -0
  57. package/docs/de/img/sku_429478_2.png +0 -0
  58. package/docs/de/img/sku_429601_2.png +0 -0
  59. package/docs/de/readme.md +0 -27
  60. package/docs/en/img/CC2531.png +0 -0
  61. package/docs/en/img/CC2591.png +0 -0
  62. package/docs/en/img/deconz.png +0 -0
  63. package/docs/en/img/sku_429478_2.png +0 -0
  64. package/docs/en/img/sku_429601_2.png +0 -0
  65. package/docs/en/readme.md +0 -30
  66. package/docs/flashing_via_arduino_(en).md +0 -110
  67. package/docs/ru/img/CC2531.png +0 -0
  68. package/docs/ru/img/CC2591.png +0 -0
  69. package/docs/ru/img/sku_429478_2.png +0 -0
  70. package/docs/ru/img/sku_429601_2.png +0 -0
  71. package/docs/ru/readme.md +0 -28
  72. package/docs/tutorial/CC2530_20190425.zip +0 -0
  73. package/docs/tutorial/CC2530_CC2591_20190515.zip +0 -0
  74. package/docs/tutorial/CC2530_CC2592_20190515.zip +0 -0
  75. package/docs/tutorial/CC2531_20190425.zip +0 -0
  76. package/docs/tutorial/adm5_1.PNG +0 -0
  77. package/docs/tutorial/adm5_2.PNG +0 -0
  78. package/docs/tutorial/cat.PNG +0 -0
  79. package/docs/tutorial/groups-1.png +0 -0
  80. package/docs/tutorial/groups-2.png +0 -0
  81. package/docs/tutorial/inst.PNG +0 -0
  82. package/docs/tutorial/reflash-finish.PNG +0 -0
  83. package/docs/tutorial/reflash-step0.png +0 -0
  84. package/docs/tutorial/reflash-step1.PNG +0 -0
  85. package/docs/tutorial/reflash-step2.PNG +0 -0
  86. package/docs/tutorial/settings.png +0 -0
  87. package/docs/tutorial/tab-dev-1.png +0 -0
  88. package/docs/tutorial/zigbee.png +0 -0
  89. package/docs/tutorial/zigbee15.png +0 -0
package/lib/exclude.js CHANGED
@@ -27,12 +27,13 @@ class Exclude {
27
27
  debug(msg) {
28
28
  this.adapter.log.debug(msg);
29
29
  }
30
-
30
+
31
31
  warn(msg) {
32
32
  this.adapter.log.warn(msg);
33
33
  }
34
34
 
35
35
 
36
+
36
37
  /**
37
38
  * @param {ioBroker.Message} obj
38
39
  */
@@ -41,21 +42,24 @@ class Exclude {
41
42
  switch (obj.command) {
42
43
  case 'addExclude':
43
44
  if (obj && obj.message && typeof obj.message === 'object') {
44
- this.addExclude(obj.from, obj.command, obj.message, err =>
45
- this.adapter.sendTo(obj.from, obj.command, err, obj.callback));
45
+ this.addExclude(obj.from, obj.command, obj.message, (err)=>{
46
+ this.adapter.sendTo(obj.from, obj.command, err, obj.callback);
47
+ });
46
48
  }
47
49
  break;
48
50
 
49
51
  case 'getExclude':
50
52
  if (obj && obj.message && typeof obj.message === 'object') {
51
- this.getExclude(exclude =>
52
- this.adapter.sendTo(obj.from, obj.command, exclude, obj.callback));
53
+ this.getExclude((exclude)=>{
54
+ this.adapter.sendTo(obj.from, obj.command, exclude, obj.callback);
55
+ });
53
56
  }
54
57
  break;
55
58
  case 'delExclude':
56
59
  if (obj && obj.message) {
57
- this.delExclude(obj.from, obj.command, obj.message, err =>
58
- this.adapter.sendTo(obj.from, obj.command, err, obj.callback));
60
+ this.delExclude(obj.from, obj.command, obj.message, (err)=>{
61
+ this.adapter.sendTo(obj.from, obj.command, err, obj.callback);
62
+ });
59
63
  }
60
64
  break;
61
65
  }
@@ -65,14 +69,13 @@ class Exclude {
65
69
  getExcludeId(exclude_target) {
66
70
  return `${this.extractDeviceId(exclude_target)}`;
67
71
  }
68
-
72
+
69
73
  extractDeviceId(stateId) {
70
- if (stateId) {
74
+ if (stateId)
71
75
  return stateId.replace(`${this.adapter.namespace}.`, '');
72
- }
73
76
  return '';
74
77
  }
75
-
78
+
76
79
  extractExcludeId(stateId) {
77
80
  return stateId.replace(`${this.adapter.namespace}.exclude.`, '');
78
81
  }
@@ -91,25 +94,27 @@ class Exclude {
91
94
  {
92
95
  type: 'state',
93
96
  common: {name: exclude_mod},
94
- },
95
- () => this.adapter.setState(stateId, exclude_mod, true, () =>
96
- callback()),
97
+ }, () => {
98
+ this.adapter.setState(stateId, exclude_mod, true, () => {
99
+ callback();
100
+ });
101
+ }
97
102
  );
98
103
  } catch (error) {
99
104
  this.error(`Failed to addExclude ${error.stack}`);
100
105
  throw new Error(`Failed to addExclude ${error.stack}`);
101
106
  }
102
107
  }
103
-
104
108
  async delExclude(from, command, exclude_id, callback) {
105
109
  try {
106
- this.debug(`delExclude message: ${JSON.stringify(exclude_id)}`);
110
+ this.debug('delExclude message: ' + JSON.stringify(exclude_id));
107
111
  const stateId = `exclude.${exclude_id}`;
108
112
  this.adapter.getStateAsync(stateId)
109
113
  .then(async (stateV) => {
110
- this.debug(`found state: ${JSON.stringify(stateV)}`);
111
- this.adapter.deleteState(null, 'exclude', exclude_id, async () =>
112
- callback());
114
+ this.debug('found state: ' + JSON.stringify(stateV));
115
+ this.adapter.deleteState(null, 'exclude', exclude_id, async () => {
116
+ callback();
117
+ });
113
118
  });
114
119
  } catch (error) {
115
120
  this.error(`Failed to delExclude ${error.stack}`);
@@ -125,31 +130,32 @@ class Exclude {
125
130
  const exc = [];
126
131
  states.forEach(state => {
127
132
  if (state._id.startsWith(`${this.adapter.namespace}.exclude`)) {
128
- exc.push(new Promise(resolve =>
129
- this.adapter.getStateAsync(state._id)
133
+ exc.push(new Promise(resolve => {
134
+ return this.adapter.getStateAsync(state._id)
130
135
  .then(stateVa => {
131
136
  if (stateVa !== null) {
132
137
  const val = {
133
138
  id: this.extractExcludeId(state._id),
134
- name: stateVa.val
139
+ name : stateVa.val
135
140
  };
136
141
  if (this.extractExcludeId(state._id) !== 'all') {
137
142
  exclude.push(val);
138
143
  }
139
144
  }
140
145
  resolve();
141
- })));
146
+ });
147
+ }));
142
148
  }
143
149
  });
144
- return Promise.all(exc)
145
- .then(() => {
146
- const arrExclude = JSON.stringify(exclude);
147
- this.debug(`getExclude result: ${arrExclude}`);
148
- this.adapter.setState('exclude.all', arrExclude, true, () =>
149
- callback(exclude));
150
+ return Promise.all(exc).then(() => {
151
+ const arrExclude = JSON.stringify(exclude);
152
+ this.debug('getExclude result: ' + arrExclude);
153
+ this.adapter.setState('exclude.all', arrExclude, true, () => {
154
+ callback(exclude);
150
155
  });
156
+ });
151
157
  } else {
152
- this.debug(`getExclude result: ${JSON.stringify(exclude)}`);
158
+ this.debug('getExclude result: ' + JSON.stringify(exclude));
153
159
  callback(exclude);
154
160
  }
155
161
  });