matterbridge-zigbee2mqtt 3.0.0 → 3.0.1
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/CHANGELOG.md +13 -0
- package/dist/entity.js +22 -22
- package/dist/module.js +4 -15
- package/npm-shrinkwrap.json +18 -8
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,19 @@ If you like this project and find it useful, please consider giving it a star on
|
|
|
8
8
|
<img src="bmc-button.svg" alt="Buy me a coffee" width="120">
|
|
9
9
|
</a>
|
|
10
10
|
|
|
11
|
+
## [3.0.1] - 2025-11-14
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- [package]: Updated dependencies.
|
|
16
|
+
- [package]: Bumped package to automator v.2.0.12.
|
|
17
|
+
- [package]: Updated to the current Matterbridge signatures.
|
|
18
|
+
- [jest]: Updated jestHelpers to v.1.0.12.
|
|
19
|
+
|
|
20
|
+
<a href="https://www.buymeacoffee.com/luligugithub">
|
|
21
|
+
<img src="bmc-button.svg" alt="Buy me a coffee" width="80">
|
|
22
|
+
</a>
|
|
23
|
+
|
|
11
24
|
## [3.0.0] - 2025-11-08
|
|
12
25
|
|
|
13
26
|
### Added
|
package/dist/entity.js
CHANGED
|
@@ -330,8 +330,8 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
330
330
|
}
|
|
331
331
|
this.log.debug(`Command on called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber}`);
|
|
332
332
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
333
|
-
this.setCachePublishAttributes(data.endpoint, isChildEndpoint ? '_' + data.endpoint.
|
|
334
|
-
this.cachePublish('on', { ['state' + (isChildEndpoint ? '_' + data.endpoint.
|
|
333
|
+
this.setCachePublishAttributes(data.endpoint, isChildEndpoint ? '_' + data.endpoint.id : undefined);
|
|
334
|
+
this.cachePublish('on', { ['state' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: 'ON' });
|
|
335
335
|
}
|
|
336
336
|
async offCommandHandler(data) {
|
|
337
337
|
if (data.endpoint.getAttribute(OnOff.Cluster.id, 'onOff') === false) {
|
|
@@ -340,17 +340,17 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
340
340
|
}
|
|
341
341
|
this.log.debug(`Command off called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber}`);
|
|
342
342
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
343
|
-
this.cachePublish('off', { ['state' + (isChildEndpoint ? '_' + data.endpoint.
|
|
343
|
+
this.cachePublish('off', { ['state' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: 'OFF' });
|
|
344
344
|
}
|
|
345
345
|
async toggleCommandHandler(data) {
|
|
346
346
|
this.log.debug(`Command toggle called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber}`);
|
|
347
347
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
348
348
|
if (data.endpoint.getAttribute(OnOff.Cluster.id, 'onOff') === false) {
|
|
349
|
-
this.setCachePublishAttributes(data.endpoint, isChildEndpoint ? '_' + data.endpoint.
|
|
350
|
-
this.cachePublish('toggle', { ['state' + (isChildEndpoint ? '_' + data.endpoint.
|
|
349
|
+
this.setCachePublishAttributes(data.endpoint, isChildEndpoint ? '_' + data.endpoint.id : undefined);
|
|
350
|
+
this.cachePublish('toggle', { ['state' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: 'ON' });
|
|
351
351
|
}
|
|
352
352
|
else {
|
|
353
|
-
this.cachePublish('toggle', { ['state' + (isChildEndpoint ? '_' + data.endpoint.
|
|
353
|
+
this.cachePublish('toggle', { ['state' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: 'OFF' });
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
async moveToLevelCommandHandler(data) {
|
|
@@ -360,7 +360,7 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
360
360
|
}
|
|
361
361
|
this.log.debug(`Command moveToLevel called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: ${data.request.level} transition: ${data.request.transitionTime}`);
|
|
362
362
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
363
|
-
this.cachePublish('moveToLevel', { ['brightness' + (isChildEndpoint ? '_' + data.endpoint.
|
|
363
|
+
this.cachePublish('moveToLevel', { ['brightness' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: data.request.level }, data.request.transitionTime);
|
|
364
364
|
}
|
|
365
365
|
async moveToLevelWithOnOffCommandHandler(data) {
|
|
366
366
|
this.log.debug(`Command moveToLevelWithOnOff called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: ${data.request.level} transition: ${data.request.transitionTime}`);
|
|
@@ -371,15 +371,15 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
371
371
|
return;
|
|
372
372
|
}
|
|
373
373
|
data.endpoint.log.debug(`Command moveToLevelWithOnOff received with level <= minLevel(${data.endpoint.getAttribute(LevelControl.Cluster.id, 'minLevel')}) => turn off the light`);
|
|
374
|
-
this.cachePublish('moveToLevelWithOnOff', { ['state' + (isChildEndpoint ? '_' + data.endpoint.
|
|
374
|
+
this.cachePublish('moveToLevelWithOnOff', { ['state' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: 'OFF' }, data.request.transitionTime);
|
|
375
375
|
}
|
|
376
376
|
else {
|
|
377
377
|
if (data.endpoint.getAttribute(OnOff.Cluster.id, 'onOff') === false) {
|
|
378
378
|
data.endpoint.log.debug(`Command moveToLevelWithOnOff received with level > minLevel(${data.endpoint.getAttribute(LevelControl.Cluster.id, 'minLevel')}) and light is off => turn on the light with attributes`);
|
|
379
|
-
this.cachePayload['state' + (isChildEndpoint ? '_' + data.endpoint.
|
|
380
|
-
this.setCachePublishAttributes(data.endpoint, isChildEndpoint ? '_' + data.endpoint.
|
|
379
|
+
this.cachePayload['state' + (isChildEndpoint ? '_' + data.endpoint.id : '')] = 'ON';
|
|
380
|
+
this.setCachePublishAttributes(data.endpoint, isChildEndpoint ? '_' + data.endpoint.id : '');
|
|
381
381
|
}
|
|
382
|
-
this.cachePublish('moveToLevelWithOnOff', { ['brightness' + (isChildEndpoint ? '_' + data.endpoint.
|
|
382
|
+
this.cachePublish('moveToLevelWithOnOff', { ['brightness' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: data.request.level }, data.request.transitionTime);
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
385
|
async moveToColorTemperatureCommandHandler(data) {
|
|
@@ -391,11 +391,11 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
391
391
|
this.log.debug(`Command moveToColorTemperature called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: ${data.request.colorTemperatureMireds} transition: ${data.request.transitionTime}`);
|
|
392
392
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
393
393
|
if (this.propertyMap.get('color_temp')) {
|
|
394
|
-
this.cachePublish('moveToColorTemperature', { ['color_temp' + (isChildEndpoint ? '_' + data.endpoint.
|
|
394
|
+
this.cachePublish('moveToColorTemperature', { ['color_temp' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: data.request.colorTemperatureMireds }, data.request.transitionTime);
|
|
395
395
|
}
|
|
396
396
|
else {
|
|
397
397
|
const rgb = kelvinToRGB(miredToKelvin(data.request.colorTemperatureMireds));
|
|
398
|
-
this.cachePublish('moveToColorTemperature', { ['color' + (isChildEndpoint ? '_' + data.endpoint.
|
|
398
|
+
this.cachePublish('moveToColorTemperature', { ['color' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: { r: rgb.r, g: rgb.g, b: rgb.b } }, data.request.transitionTime);
|
|
399
399
|
this.log.debug(`Command moveToColorTemperature called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} but color_temp property is not available. Converting ${data.request.colorTemperatureMireds} to RGB ${debugStringify(rgb)}.`);
|
|
400
400
|
}
|
|
401
401
|
}
|
|
@@ -407,7 +407,7 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
407
407
|
}
|
|
408
408
|
this.log.debug(`Command moveToColor called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: X: ${data.request.colorX} Y: ${data.request.colorY} transition: ${data.request.transitionTime}`);
|
|
409
409
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
410
|
-
this.cachePublish('moveToColor', { ['color' + (isChildEndpoint ? '_' + data.endpoint.
|
|
410
|
+
this.cachePublish('moveToColor', { ['color' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: { x: Math.round(data.request.colorX / 65536 * 10000) / 10000, y: Math.round(data.request.colorY / 65536 * 10000) / 10000 } }, data.request.transitionTime);
|
|
411
411
|
}
|
|
412
412
|
async moveToHueCommandHandler(data) {
|
|
413
413
|
delete this.cachePayload['color_temp'];
|
|
@@ -417,7 +417,7 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
417
417
|
}
|
|
418
418
|
this.log.debug(`Command moveToHue called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: ${data.request.hue} transition: ${data.request.transitionTime}`);
|
|
419
419
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
420
|
-
this.cachePublish('moveToHue', { ['color' + (isChildEndpoint ? '_' + data.endpoint.
|
|
420
|
+
this.cachePublish('moveToHue', { ['color' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: { h: Math.round(data.request.hue / 254 * 360), s: Math.round(data.endpoint.getAttribute(ColorControlCluster.id, 'currentSaturation') / 254 * 100) } }, data.request.transitionTime);
|
|
421
421
|
}
|
|
422
422
|
async moveToSaturationCommandHandler(data) {
|
|
423
423
|
delete this.cachePayload['color_temp'];
|
|
@@ -427,7 +427,7 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
427
427
|
}
|
|
428
428
|
this.log.debug(`Command moveToSaturation called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: ${data.request.saturation} transition: ${data.request.transitionTime}`);
|
|
429
429
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
430
|
-
this.cachePublish('moveToSaturation', { ['color' + (isChildEndpoint ? '_' + data.endpoint.
|
|
430
|
+
this.cachePublish('moveToSaturation', { ['color' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: { h: Math.round(data.endpoint.getAttribute(ColorControlCluster.id, 'currentHue') / 254 * 360), s: Math.round(data.request.saturation / 254 * 100) } }, data.request.transitionTime);
|
|
431
431
|
}
|
|
432
432
|
async moveToHueAndSaturationCommandHandler(data) {
|
|
433
433
|
delete this.cachePayload['color_temp'];
|
|
@@ -437,7 +437,7 @@ export class ZigbeeEntity extends EventEmitter {
|
|
|
437
437
|
}
|
|
438
438
|
this.log.debug(`Command moveToHueAndSaturation called for ${this.ien}${this.isGroup ? this.group?.friendly_name : this.device?.friendly_name}${rs}${db} endpoint: ${data.endpoint?.maybeId}:${data.endpoint?.maybeNumber} request: ${data.request.hue} - ${data.request.saturation} transition: ${data.request.transitionTime}`);
|
|
439
439
|
const isChildEndpoint = data.endpoint.deviceName !== this.entityName;
|
|
440
|
-
this.cachePublish('moveToHueAndSaturation', { ['color' + (isChildEndpoint ? '_' + data.endpoint.
|
|
440
|
+
this.cachePublish('moveToHueAndSaturation', { ['color' + (isChildEndpoint ? '_' + data.endpoint.id : '')]: { h: Math.round(data.request.hue / 254 * 360), s: Math.round(data.request.saturation / 254 * 100) } }, data.request.transitionTime);
|
|
441
441
|
}
|
|
442
442
|
addBridgedDeviceBasicInformation() {
|
|
443
443
|
if (!this.bridgedDevice)
|
|
@@ -599,7 +599,7 @@ export class ZigbeeGroup extends ZigbeeEntity {
|
|
|
599
599
|
let isThermostat = false;
|
|
600
600
|
if (group.members.length === 0) {
|
|
601
601
|
zigbeeGroup.log.debug(`Group: ${gn}${group.friendly_name}${rs}${db} is a ${CYAN}virtual${db} group`);
|
|
602
|
-
zigbeeGroup.bridgedDevice = new MatterbridgeEndpoint([onOffSwitch, bridgedNode, powerSource], {
|
|
602
|
+
zigbeeGroup.bridgedDevice = new MatterbridgeEndpoint([onOffSwitch, bridgedNode, powerSource], { id: group.friendly_name }, zigbeeGroup.log.logLevel === "debug");
|
|
603
603
|
isSwitch = true;
|
|
604
604
|
zigbeeGroup.propertyMap.set('state', { name: 'state', type: 'switch', endpoint: '' });
|
|
605
605
|
}
|
|
@@ -685,7 +685,7 @@ export class ZigbeeGroup extends ZigbeeEntity {
|
|
|
685
685
|
}
|
|
686
686
|
if (!deviceType)
|
|
687
687
|
return zigbeeGroup;
|
|
688
|
-
zigbeeGroup.bridgedDevice = new MatterbridgeEndpoint([deviceType, bridgedNode, powerSource], {
|
|
688
|
+
zigbeeGroup.bridgedDevice = new MatterbridgeEndpoint([deviceType, bridgedNode, powerSource], { id: group.friendly_name }, zigbeeGroup.log.logLevel === "debug");
|
|
689
689
|
}
|
|
690
690
|
if (!platform.featureBlackList?.includes('scenes') && !platform.deviceFeatureBlackList[group.friendly_name]?.includes('scenes')) {
|
|
691
691
|
group.scenes.forEach((scene) => {
|
|
@@ -884,7 +884,7 @@ export class ZigbeeDevice extends ZigbeeEntity {
|
|
|
884
884
|
(device.model_id.startsWith('SLZB-') && device.manufacturer === 'SMLIGHT')) {
|
|
885
885
|
zigbeeDevice.isRouter = true;
|
|
886
886
|
platform.setSelectDevice(device.ieee_address, device.friendly_name, 'wifi');
|
|
887
|
-
zigbeeDevice.bridgedDevice = new MatterbridgeEndpoint([doorLockDevice, bridgedNode, powerSource], {
|
|
887
|
+
zigbeeDevice.bridgedDevice = new MatterbridgeEndpoint([doorLockDevice, bridgedNode, powerSource], { id: device.friendly_name }, zigbeeDevice.log.logLevel === "debug");
|
|
888
888
|
zigbeeDevice.addBridgedDeviceBasicInformation();
|
|
889
889
|
zigbeeDevice.addPowerSource();
|
|
890
890
|
zigbeeDevice.bridgedDevice.addRequiredClusterServers();
|
|
@@ -1076,7 +1076,7 @@ export class ZigbeeDevice extends ZigbeeEntity {
|
|
|
1076
1076
|
zigbeeDevice.log.info(`Device ${zigbeeDevice.ien}${device.friendly_name}${rs}${nf} has actions mapped to these switches on sub endpoints:`);
|
|
1077
1077
|
zigbeeDevice.log.info(' controller events <=> zigbee2mqtt actions');
|
|
1078
1078
|
if (!zigbeeDevice.bridgedDevice)
|
|
1079
|
-
zigbeeDevice.bridgedDevice = new MatterbridgeEndpoint([bridgedNode], {
|
|
1079
|
+
zigbeeDevice.bridgedDevice = new MatterbridgeEndpoint([bridgedNode], { id: device.friendly_name }, zigbeeDevice.log.logLevel === "debug");
|
|
1080
1080
|
zigbeeDevice.hasEndpoints = true;
|
|
1081
1081
|
const switchMap = ['Single Press', 'Double Press', 'Long Press '];
|
|
1082
1082
|
const triggerMap = ['Single', 'Double', 'Long'];
|
|
@@ -1164,7 +1164,7 @@ export class ZigbeeDevice extends ZigbeeEntity {
|
|
|
1164
1164
|
deviceTypesMap.delete(powerSource.code);
|
|
1165
1165
|
device.deviceTypes = Array.from(deviceTypesMap.values());
|
|
1166
1166
|
}
|
|
1167
|
-
zigbeeDevice.bridgedDevice = new MatterbridgeEndpoint([...mainEndpoint.deviceTypes, bridgedNode, powerSource], {
|
|
1167
|
+
zigbeeDevice.bridgedDevice = new MatterbridgeEndpoint([...mainEndpoint.deviceTypes, bridgedNode, powerSource], { id: device.friendly_name }, zigbeeDevice.log.logLevel === "debug");
|
|
1168
1168
|
zigbeeDevice.addBridgedDeviceBasicInformation();
|
|
1169
1169
|
zigbeeDevice.addPowerSource();
|
|
1170
1170
|
if (mainEndpoint.clusterServersIds.includes(PowerSource.Cluster.id)) {
|
package/dist/module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { MatterbridgeDynamicPlatform } from 'matterbridge';
|
|
3
3
|
import { dn, gn, db, wr, zb, payloadStringify, rs, debugStringify, CYAN, er, nf } from 'matterbridge/logger';
|
|
4
4
|
import { isValidNumber, isValidString, waiter } from 'matterbridge/utils';
|
|
5
5
|
import { BridgedDeviceBasicInformation, DoorLock } from 'matterbridge/matter/clusters';
|
|
@@ -9,6 +9,7 @@ export default function initializePlugin(matterbridge, log, config) {
|
|
|
9
9
|
return new ZigbeePlatform(matterbridge, log, config);
|
|
10
10
|
}
|
|
11
11
|
export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
|
|
12
|
+
config;
|
|
12
13
|
bridgedDevices = [];
|
|
13
14
|
zigbeeEntities = [];
|
|
14
15
|
namePostfix = 1;
|
|
@@ -41,6 +42,7 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
|
|
|
41
42
|
availabilityTimer;
|
|
42
43
|
constructor(matterbridge, log, config) {
|
|
43
44
|
super(matterbridge, log, config);
|
|
45
|
+
this.config = config;
|
|
44
46
|
if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('3.3.0')) {
|
|
45
47
|
throw new Error(`This plugin requires Matterbridge version >= "3.3.0". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend."`);
|
|
46
48
|
}
|
|
@@ -486,20 +488,7 @@ export class ZigbeePlatform extends MatterbridgeDynamicPlatform {
|
|
|
486
488
|
return matterGroup;
|
|
487
489
|
}
|
|
488
490
|
_registerVirtualDevice(name, callback) {
|
|
489
|
-
|
|
490
|
-
if (this.matterbridge.bridgeMode === 'bridge') {
|
|
491
|
-
aggregator = this.matterbridge.aggregatorNode;
|
|
492
|
-
}
|
|
493
|
-
else if (this.matterbridge.bridgeMode === 'childbridge') {
|
|
494
|
-
aggregator = this.matterbridge.plugins.get(this.name)?.aggregatorNode;
|
|
495
|
-
}
|
|
496
|
-
if (aggregator) {
|
|
497
|
-
if (aggregator.parts.has(name.replaceAll(' ', '') + ':' + this.config.scenesType)) {
|
|
498
|
-
this.log.warn(`Scene name ${name} already registered. Please use a different name. Changed to ${name + ' ' + this.namePostfix}`);
|
|
499
|
-
name = name + ' ' + this.namePostfix++;
|
|
500
|
-
}
|
|
501
|
-
addVirtualDevice(aggregator, name.slice(0, 32), this.config.scenesType, callback);
|
|
502
|
-
}
|
|
491
|
+
this.registerVirtualDevice(name, this.config.scenesType, callback);
|
|
503
492
|
}
|
|
504
493
|
async unregisterZigbeeEntity(friendly_name) {
|
|
505
494
|
const entity = this.zigbeeEntities.find((entity) => entity.entityName === friendly_name);
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-zigbee2mqtt",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge-zigbee2mqtt",
|
|
9
|
-
"version": "3.0.
|
|
9
|
+
"version": "3.0.1",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
|
+
"moment": "2.30.1",
|
|
12
13
|
"mqtt": "5.14.1",
|
|
13
14
|
"node-ansi-logger": "3.1.1",
|
|
14
15
|
"node-persist-manager": "2.0.0"
|
|
@@ -31,9 +32,9 @@
|
|
|
31
32
|
}
|
|
32
33
|
},
|
|
33
34
|
"node_modules/@types/node": {
|
|
34
|
-
"version": "24.
|
|
35
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.
|
|
36
|
-
"integrity": "sha512-
|
|
35
|
+
"version": "24.10.1",
|
|
36
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
|
|
37
|
+
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
|
|
37
38
|
"license": "MIT",
|
|
38
39
|
"dependencies": {
|
|
39
40
|
"undici-types": "~7.16.0"
|
|
@@ -259,9 +260,9 @@
|
|
|
259
260
|
"license": "ISC"
|
|
260
261
|
},
|
|
261
262
|
"node_modules/ip-address": {
|
|
262
|
-
"version": "10.0
|
|
263
|
-
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.
|
|
264
|
-
"integrity": "sha512-
|
|
263
|
+
"version": "10.1.0",
|
|
264
|
+
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz",
|
|
265
|
+
"integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==",
|
|
265
266
|
"license": "MIT",
|
|
266
267
|
"engines": {
|
|
267
268
|
"node": ">= 12"
|
|
@@ -286,6 +287,15 @@
|
|
|
286
287
|
"url": "https://github.com/sponsors/ljharb"
|
|
287
288
|
}
|
|
288
289
|
},
|
|
290
|
+
"node_modules/moment": {
|
|
291
|
+
"version": "2.30.1",
|
|
292
|
+
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
|
|
293
|
+
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
|
|
294
|
+
"license": "MIT",
|
|
295
|
+
"engines": {
|
|
296
|
+
"node": "*"
|
|
297
|
+
}
|
|
298
|
+
},
|
|
289
299
|
"node_modules/mqtt": {
|
|
290
300
|
"version": "5.14.1",
|
|
291
301
|
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.14.1.tgz",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-zigbee2mqtt",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Matterbridge zigbee2mqtt plugin",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"node": ">=20.0.0 <21.0.0 || >=22.0.0 <23.0.0 || >=24.0.0 <25.0.0"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
+
"moment": "2.30.1",
|
|
44
45
|
"mqtt": "5.14.1",
|
|
45
46
|
"node-ansi-logger": "3.1.1",
|
|
46
47
|
"node-persist-manager": "2.0.0"
|