iobroker.zigbee 1.8.24 → 1.9.0
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.
- package/README.md +25 -6
- package/admin/admin.js +9 -2
- package/admin/img/LED1923R5.png +0 -0
- package/admin/index_m.html +6 -6
- package/admin/tab_m.html +64 -56
- package/admin/vis-network.min.js +3 -4
- package/io-package.json +56 -53
- package/lib/developer.js +11 -5
- package/lib/devicemgmt.js +393 -0
- package/lib/devices.js +4 -0
- package/lib/exposes.js +1 -1
- package/lib/statescontroller.js +2 -2
- package/lib/utils.js +1 -1
- package/lib/zbDeviceAvailability.js +5 -5
- package/lib/zbDeviceConfigure.js +11 -9
- package/lib/zigbeecontroller.js +25 -5
- package/main.js +14 -2
- package/package.json +16 -14
package/lib/zigbeecontroller.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
const pathLib = require('path');
|
|
4
4
|
const ZigbeeHerdsman = require('zigbee-herdsman');
|
|
5
5
|
const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters');
|
|
6
|
+
const zigbeeHerdsmanConvertersPhilips = require('zigbee-herdsman-converters/lib/philips');
|
|
6
7
|
const EventEmitter = require('events').EventEmitter;
|
|
7
8
|
const safeJsonStringify = require('./json');
|
|
8
9
|
const DeviceAvailabilityExt = require('./zbDeviceAvailability');
|
|
@@ -11,7 +12,22 @@ const DeviceEventExt = require('./zbDeviceEvent');
|
|
|
11
12
|
const DelayedActionExt = require('./zbDelayedAction');
|
|
12
13
|
const utils = require('./utils');
|
|
13
14
|
const groupConverters = [
|
|
14
|
-
zigbeeHerdsmanConverters.
|
|
15
|
+
zigbeeHerdsmanConverters.toZigbee.light_onoff_brightness,
|
|
16
|
+
zigbeeHerdsmanConverters.toZigbee.light_color_colortemp,
|
|
17
|
+
zigbeeHerdsmanConvertersPhilips.tz.effect, // Support Hue effects for groups
|
|
18
|
+
zigbeeHerdsmanConverters.toZigbee.ignore_transition,
|
|
19
|
+
zigbeeHerdsmanConverters.toZigbee.cover_position_tilt,
|
|
20
|
+
zigbeeHerdsmanConverters.toZigbee.thermostat_occupied_heating_setpoint,
|
|
21
|
+
zigbeeHerdsmanConverters.toZigbee.tint_scene,
|
|
22
|
+
zigbeeHerdsmanConverters.toZigbee.light_brightness_move,
|
|
23
|
+
zigbeeHerdsmanConverters.toZigbee.light_brightness_step,
|
|
24
|
+
zigbeeHerdsmanConverters.toZigbee.light_colortemp_step,
|
|
25
|
+
zigbeeHerdsmanConverters.toZigbee.light_colortemp_move,
|
|
26
|
+
zigbeeHerdsmanConverters.toZigbee.light_hue_saturation_move,
|
|
27
|
+
zigbeeHerdsmanConverters.toZigbee.light_hue_saturation_step
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/* zigbeeHerdsmanConverters.toZigbeeConverters.light_onoff_brightness,
|
|
15
31
|
zigbeeHerdsmanConverters.toZigbeeConverters.light_colortemp,
|
|
16
32
|
zigbeeHerdsmanConverters.toZigbeeConverters.light_color,
|
|
17
33
|
zigbeeHerdsmanConverters.toZigbeeConverters.light_alert,
|
|
@@ -20,7 +36,8 @@ const groupConverters = [
|
|
|
20
36
|
zigbeeHerdsmanConverters.toZigbeeConverters.light_brightness_step,
|
|
21
37
|
zigbeeHerdsmanConverters.toZigbeeConverters.light_colortemp_move,
|
|
22
38
|
zigbeeHerdsmanConverters.toZigbeeConverters.light_colortemp_step,
|
|
23
|
-
zigbeeHerdsmanConverters.toZigbeeConverters.light_colortemp_startup
|
|
39
|
+
zigbeeHerdsmanConverters.toZigbeeConverters.light_colortemp_startup*/
|
|
40
|
+
|
|
24
41
|
];
|
|
25
42
|
|
|
26
43
|
function isFunction(functionToCheck) {
|
|
@@ -70,6 +87,8 @@ class ZigbeeController extends EventEmitter {
|
|
|
70
87
|
adapter: {
|
|
71
88
|
forceStartWithInconsistentAdapterConfiguration: options.startWithInconsistent
|
|
72
89
|
},
|
|
90
|
+
legacy : false,
|
|
91
|
+
|
|
73
92
|
};
|
|
74
93
|
// https://github.com/ioBroker/ioBroker.zigbee/issues/668
|
|
75
94
|
if (!options.extPanIdFix) {
|
|
@@ -646,7 +665,8 @@ class ZigbeeController extends EventEmitter {
|
|
|
646
665
|
`Device '${friendlyName}' with Zigbee model '${message.device.modelID}' is NOT supported, ` +
|
|
647
666
|
`please follow https://www.zigbee2mqtt.io/how_tos/how_to_support_new_devices.html`
|
|
648
667
|
);
|
|
649
|
-
|
|
668
|
+
const frName = {friendly_name: friendlyName, supported: false};
|
|
669
|
+
this.emit('pairing', 'Interview successful', JSON.stringify(frName));
|
|
650
670
|
entity.device.modelID = entity.device._modelID;
|
|
651
671
|
this.emit('new', entity);
|
|
652
672
|
}
|
|
@@ -817,7 +837,7 @@ class ZigbeeController extends EventEmitter {
|
|
|
817
837
|
this.debug(`addDevFromGroup - entity: ${utils.getEntityInfo(entity)}`);
|
|
818
838
|
// generate group debug info and display it
|
|
819
839
|
const members = await this.getGroupMembersFromController(groupId);
|
|
820
|
-
|
|
840
|
+
const memberIDs = [];
|
|
821
841
|
for (const member of members) {
|
|
822
842
|
memberIDs.push(member.ieee);
|
|
823
843
|
}
|
|
@@ -867,7 +887,7 @@ class ZigbeeController extends EventEmitter {
|
|
|
867
887
|
const group = await this.resolveEntity(groupId);
|
|
868
888
|
|
|
869
889
|
const members = await this.getGroupMembersFromController(groupId);
|
|
870
|
-
|
|
890
|
+
const memberIDs = [];
|
|
871
891
|
for (const member of members) {
|
|
872
892
|
memberIDs.push(member.ieee);
|
|
873
893
|
}
|
package/main.js
CHANGED
|
@@ -33,6 +33,7 @@ const ExcludePlugin = require('./lib/exclude');
|
|
|
33
33
|
const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters');
|
|
34
34
|
const vm = require('vm');
|
|
35
35
|
const util = require('util');
|
|
36
|
+
const dmZigbee = require('./lib/devicemgmt.js');
|
|
36
37
|
|
|
37
38
|
const createByteArray = function (hexString) {
|
|
38
39
|
const bytes = [];
|
|
@@ -73,6 +74,9 @@ class Zigbee extends utils.Adapter {
|
|
|
73
74
|
this.stController = new StatesController(this);
|
|
74
75
|
this.stController.on('log', this.onLog.bind(this));
|
|
75
76
|
this.stController.on('changed', this.publishFromState.bind(this));
|
|
77
|
+
|
|
78
|
+
this.deviceManagement = new dmZigbee(this);
|
|
79
|
+
|
|
76
80
|
this.plugins = [
|
|
77
81
|
new SerialListPlugin(this),
|
|
78
82
|
new CommandsPlugin(this),
|
|
@@ -607,7 +611,7 @@ class Zigbee extends utils.Adapter {
|
|
|
607
611
|
async publishFromState(deviceId, model, stateModel, stateList, options) {
|
|
608
612
|
let isGroup = false;
|
|
609
613
|
|
|
610
|
-
this.log.debug(`publishFromState : ${deviceId} ${model}`);
|
|
614
|
+
this.log.debug(`publishFromState : ${deviceId} ${model} ${safeJsonStringify(stateList)}`);
|
|
611
615
|
if (model === 'group') {
|
|
612
616
|
isGroup = true;
|
|
613
617
|
deviceId = parseInt(deviceId);
|
|
@@ -693,6 +697,7 @@ class Zigbee extends utils.Adapter {
|
|
|
693
697
|
|
|
694
698
|
const preparedValue = (stateDesc.setter) ? stateDesc.setter(value, options) : value;
|
|
695
699
|
const preparedOptions = (stateDesc.setterOpt) ? stateDesc.setterOpt(value, options) : {};
|
|
700
|
+
|
|
696
701
|
let syncStateList = [];
|
|
697
702
|
if (stateModel && stateModel.syncStates) {
|
|
698
703
|
stateModel.syncStates.forEach(syncFunct => {
|
|
@@ -704,7 +709,7 @@ class Zigbee extends utils.Adapter {
|
|
|
704
709
|
}
|
|
705
710
|
|
|
706
711
|
const epName = stateDesc.epname !== undefined ? stateDesc.epname : (stateDesc.prop || stateDesc.id);
|
|
707
|
-
const key = stateDesc.
|
|
712
|
+
const key = stateDesc.prop || stateDesc.id || stateDesc.setattr;
|
|
708
713
|
this.log.debug(`convert ${key}, ${safeJsonStringify(preparedValue)}, ${safeJsonStringify(preparedOptions)}`);
|
|
709
714
|
|
|
710
715
|
let target;
|
|
@@ -727,6 +732,13 @@ class Zigbee extends utils.Adapter {
|
|
|
727
732
|
state: {},
|
|
728
733
|
};
|
|
729
734
|
|
|
735
|
+
// new toZigbee
|
|
736
|
+
if (typeof preparedValue === 'number') {
|
|
737
|
+
meta.message.state = preparedValue > 0 ? 'ON' : 'OFF';
|
|
738
|
+
} else {
|
|
739
|
+
meta.message.state = preparedValue;
|
|
740
|
+
}
|
|
741
|
+
|
|
730
742
|
if (preparedOptions.hasOwnProperty('state')) {
|
|
731
743
|
meta.state = preparedOptions.state;
|
|
732
744
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.zigbee",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Kirov Ilya",
|
|
6
6
|
"email": "kirovilya@gmail.com"
|
|
@@ -18,26 +18,28 @@
|
|
|
18
18
|
"node": ">=16"
|
|
19
19
|
},
|
|
20
20
|
"optionalDependencies": {
|
|
21
|
-
"serialport": "^
|
|
21
|
+
"serialport": "^12.0.0"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@iobroker/adapter-core": "^3.0.
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
24
|
+
"@iobroker/adapter-core": "^3.0.4",
|
|
25
|
+
"@jey-cee/dm-utils": "^0.0.5",
|
|
26
|
+
"humanize-duration": "^3.31.0",
|
|
27
|
+
"tar": "^6.2.0",
|
|
28
|
+
"typescript": "^5.3.3",
|
|
29
|
+
"zigbee-herdsman": "0.27.1",
|
|
30
|
+
"zigbee-herdsman-converters": "16.16.0"
|
|
29
31
|
},
|
|
30
32
|
"description": "Zigbee devices",
|
|
31
33
|
"devDependencies": {
|
|
32
|
-
"@alcalzone/release-script": "^3.
|
|
33
|
-
"@alcalzone/release-script-plugin-iobroker": "^3.
|
|
34
|
-
"@alcalzone/release-script-plugin-license": "^3.
|
|
35
|
-
"@alcalzone/release-script-plugin-manual-review": "^3.
|
|
34
|
+
"@alcalzone/release-script": "^3.7.0",
|
|
35
|
+
"@alcalzone/release-script-plugin-iobroker": "^3.7.0",
|
|
36
|
+
"@alcalzone/release-script-plugin-license": "^3.7.0",
|
|
37
|
+
"@alcalzone/release-script-plugin-manual-review": "^3.7.0",
|
|
36
38
|
"@iobroker/testing": "^4.1.0",
|
|
37
|
-
"axios": "^1.
|
|
38
|
-
"chai": "^4.3.
|
|
39
|
+
"axios": "^1.6.0",
|
|
40
|
+
"chai": "^4.3.10",
|
|
39
41
|
"chai-as-promised": "^7.1.1",
|
|
40
|
-
"eslint": "^8.
|
|
42
|
+
"eslint": "^8.52.0",
|
|
41
43
|
"eslint-config-prettier": "^9.0.0",
|
|
42
44
|
"eslint-plugin-prettier": "^5.0.0",
|
|
43
45
|
"gulp": "^4.0.2",
|