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.
@@ -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.toZigbeeConverters.light_onoff_brightness,
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
- this.emit('pairing', 'Interview successful', {friendly_name: friendlyName, supported: false});
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
- let memberIDs = [];
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
- let memberIDs = [];
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.setattr || stateDesc.prop || stateDesc.id;
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.8.24",
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": "^11.0.1"
21
+ "serialport": "^12.0.0"
22
22
  },
23
23
  "dependencies": {
24
- "@iobroker/adapter-core": "^3.0.3",
25
- "tar": "^6.1.15",
26
- "typescript": "^5.2.2",
27
- "zigbee-herdsman": "0.18.7",
28
- "zigbee-herdsman-converters": "15.70.0"
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.6.0",
33
- "@alcalzone/release-script-plugin-iobroker": "^3.6.0",
34
- "@alcalzone/release-script-plugin-license": "^3.5.9",
35
- "@alcalzone/release-script-plugin-manual-review": "^3.5.9",
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.5.0",
38
- "chai": "^4.3.8",
39
+ "axios": "^1.6.0",
40
+ "chai": "^4.3.10",
39
41
  "chai-as-promised": "^7.1.1",
40
- "eslint": "^8.46.0",
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",