matterbridge-example-accessory-platform 1.1.2 → 1.1.4
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 +29 -0
- package/dist/index.js +0 -10
- package/dist/platform.js +10 -19
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -2
- package/dist/index.d.ts +0 -14
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/platform.d.ts +0 -12
- package/dist/platform.d.ts.map +0 -1
- package/dist/platform.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,8 +4,37 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
If you like this project and find it useful, please consider giving it a star on GitHub at https://github.com/Luligu/matterbridge-example-dynamic-platform and sponsoring it.
|
|
6
6
|
|
|
7
|
+
## [1.1.4] - 2025-01-21
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- [package]: Require matterbridge 2.0.0.
|
|
12
|
+
- [package]: Updated dependencies.
|
|
13
|
+
- [package]: Updated package.
|
|
14
|
+
|
|
15
|
+
<a href="https://www.buymeacoffee.com/luligugithub">
|
|
16
|
+
<img src="./yellow-button.png" alt="Buy me a coffee" width="120">
|
|
17
|
+
</a>
|
|
18
|
+
|
|
19
|
+
## [1.1.3] - 2024-12-21
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- [platform]: Added call to super.OnConfigure() and super.OnShutDown() to check endpoints numbers.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- [package]: Updated dependencies.
|
|
28
|
+
- [package]: Updated package.
|
|
29
|
+
|
|
30
|
+
<a href="https://www.buymeacoffee.com/luligugithub">
|
|
31
|
+
<img src="./yellow-button.png" alt="Buy me a coffee" width="120">
|
|
32
|
+
</a>
|
|
33
|
+
|
|
7
34
|
## [1.1.2] - 2024-12-12
|
|
8
35
|
|
|
36
|
+
### Changed
|
|
37
|
+
|
|
9
38
|
- [package]: Require matterbridge 1.6.6
|
|
10
39
|
- [package]: Updated package.
|
|
11
40
|
- [package]: Updated dependencies.
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,4 @@
|
|
|
1
1
|
import { ExampleMatterbridgeAccessoryPlatform } from './platform.js';
|
|
2
|
-
/**
|
|
3
|
-
* This is the standard interface for Matterbridge plugins.
|
|
4
|
-
* Each plugin should export a default function that follows this signature.
|
|
5
|
-
*
|
|
6
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
7
|
-
* @param {AnsiLogger} log - The logger instance.
|
|
8
|
-
* @param {PlatformConfig} config - The platform configuration.
|
|
9
|
-
* @returns {ExampleMatterbridgeAccessoryPlatform} The initialized platform.
|
|
10
|
-
*/
|
|
11
2
|
export default function initializePlugin(matterbridge, log, config) {
|
|
12
3
|
return new ExampleMatterbridgeAccessoryPlatform(matterbridge, log, config);
|
|
13
4
|
}
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/dist/platform.js
CHANGED
|
@@ -1,31 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MatterbridgeAccessoryPlatform, WindowCovering, powerSource, WindowCoveringCluster, MatterbridgeEndpoint, coverDevice, } from 'matterbridge';
|
|
2
2
|
import { isValidNumber } from 'matterbridge/utils';
|
|
3
3
|
export class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryPlatform {
|
|
4
4
|
cover;
|
|
5
5
|
coverInterval;
|
|
6
|
-
async createMutableDevice(definition, options = {}, debug = false) {
|
|
7
|
-
let device;
|
|
8
|
-
if (this.matterbridge.edge === true)
|
|
9
|
-
device = new MatterbridgeEndpoint(definition, options, debug);
|
|
10
|
-
else
|
|
11
|
-
device = new MatterbridgeDevice(definition, options, debug);
|
|
12
|
-
return device;
|
|
13
|
-
}
|
|
14
6
|
constructor(matterbridge, log, config) {
|
|
15
7
|
super(matterbridge, log, config);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
throw new Error(`This plugin requires Matterbridge version >= "1.6.6". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend.`);
|
|
8
|
+
if (this.verifyMatterbridgeVersion === undefined || typeof this.verifyMatterbridgeVersion !== 'function' || !this.verifyMatterbridgeVersion('2.0.0')) {
|
|
9
|
+
throw new Error(`This plugin requires Matterbridge version >= "2.0.0". Please update Matterbridge from ${this.matterbridge.matterbridgeVersion} to the latest version in the frontend.`);
|
|
19
10
|
}
|
|
20
11
|
this.log.info('Initializing platform:', this.config.name);
|
|
21
12
|
}
|
|
22
13
|
async onStart(reason) {
|
|
23
14
|
this.log.info('onStart called with reason:', reason ?? 'none');
|
|
24
|
-
this.cover =
|
|
15
|
+
this.cover = new MatterbridgeEndpoint([coverDevice, powerSource], { uniqueStorageKey: 'Cover example device' }, this.config.debug);
|
|
16
|
+
this.cover.log.logName = 'Cover example device';
|
|
25
17
|
this.cover.createDefaultIdentifyClusterServer();
|
|
26
|
-
this.cover.createDefaultBasicInformationClusterServer('Cover example device', `0x59108853594
|
|
18
|
+
this.cover.createDefaultBasicInformationClusterServer('Cover example device', `0x59108853594`, 0xfff1, 'Matterbridge', 0x0001, 'Matterbridge Cover', parseInt(this.version.replace(/\D/g, '')), this.version, parseInt(this.matterbridge.matterbridgeVersion.replace(/\D/g, '')), this.matterbridge.matterbridgeVersion);
|
|
27
19
|
this.cover.createDefaultWindowCoveringClusterServer(10000);
|
|
28
|
-
this.cover.addDeviceType(powerSource);
|
|
29
20
|
this.cover.createDefaultPowerSourceWiredClusterServer();
|
|
30
21
|
await this.registerDevice(this.cover);
|
|
31
22
|
this.cover.subscribeAttribute(WindowCoveringCluster.id, 'mode', (newValue, oldValue) => {
|
|
@@ -47,15 +38,15 @@ export class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryP
|
|
|
47
38
|
await this.cover?.setWindowCoveringCurrentTargetStatus(10000, 10000, WindowCovering.MovementStatus.Stopped);
|
|
48
39
|
});
|
|
49
40
|
this.cover.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue } }) => {
|
|
50
|
-
this.cover?.log.info(`Command goToLiftPercentage ${liftPercent100thsValue}
|
|
41
|
+
this.cover?.log.info(`Command goToLiftPercentage called request ${liftPercent100thsValue}`);
|
|
51
42
|
await this.cover?.setWindowCoveringCurrentTargetStatus(liftPercent100thsValue, liftPercent100thsValue, WindowCovering.MovementStatus.Stopped);
|
|
52
43
|
});
|
|
53
44
|
}
|
|
54
45
|
async onConfigure() {
|
|
46
|
+
await super.onConfigure();
|
|
55
47
|
this.log.info('onConfigure called');
|
|
56
48
|
await this.cover?.setWindowCoveringTargetAsCurrentAndStopped();
|
|
57
49
|
this.log.info('Set cover initial targetPositionLiftPercent100ths = currentPositionLiftPercent100ths and operationalStatus to Stopped.');
|
|
58
|
-
// Matter: 0 Fully open 10000 fully closed
|
|
59
50
|
this.coverInterval = setInterval(async () => {
|
|
60
51
|
if (!this.cover)
|
|
61
52
|
return;
|
|
@@ -69,11 +60,11 @@ export class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryP
|
|
|
69
60
|
}, 60 * 1000);
|
|
70
61
|
}
|
|
71
62
|
async onShutdown(reason) {
|
|
72
|
-
this.log.info('onShutdown called with reason:', reason ?? 'none');
|
|
73
63
|
clearInterval(this.coverInterval);
|
|
74
64
|
this.coverInterval = undefined;
|
|
65
|
+
await super.onShutdown(reason);
|
|
66
|
+
this.log.info('onShutdown called with reason:', reason ?? 'none');
|
|
75
67
|
if (this.config.unregisterOnShutdown === true)
|
|
76
68
|
await this.unregisterAllDevices();
|
|
77
69
|
}
|
|
78
70
|
}
|
|
79
|
-
//# sourceMappingURL=platform.js.map
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-example-accessory-platform",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "matterbridge-example-accessory-platform",
|
|
9
|
-
"version": "1.1.
|
|
9
|
+
"version": "1.1.4",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"node-ansi-logger": "3.0.0",
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-example-accessory-platform",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"description": "Matterbridge accessory plugin",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
|
-
"types": "dist/index.d.ts",
|
|
10
9
|
"repository": {
|
|
11
10
|
"type": "git",
|
|
12
11
|
"url": "git+https://github.com/Luligu/matterbridge-example-accessory-platform.git"
|
package/dist/index.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Matterbridge, PlatformConfig } from 'matterbridge';
|
|
2
|
-
import { AnsiLogger } from 'matterbridge/logger';
|
|
3
|
-
import { ExampleMatterbridgeAccessoryPlatform } from './platform.js';
|
|
4
|
-
/**
|
|
5
|
-
* This is the standard interface for Matterbridge plugins.
|
|
6
|
-
* Each plugin should export a default function that follows this signature.
|
|
7
|
-
*
|
|
8
|
-
* @param {Matterbridge} matterbridge - The Matterbridge instance.
|
|
9
|
-
* @param {AnsiLogger} log - The logger instance.
|
|
10
|
-
* @param {PlatformConfig} config - The platform configuration.
|
|
11
|
-
* @returns {ExampleMatterbridgeAccessoryPlatform} The initialized platform.
|
|
12
|
-
*/
|
|
13
|
-
export default function initializePlugin(matterbridge: Matterbridge, log: AnsiLogger, config: PlatformConfig): ExampleMatterbridgeAccessoryPlatform;
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,oCAAoC,CAElJ"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAA0B,EAAE,GAAe,EAAE,MAAsB;IAC1G,OAAO,IAAI,oCAAoC,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC"}
|
package/dist/platform.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Matterbridge, MatterbridgeDevice, MatterbridgeAccessoryPlatform, PlatformConfig, DeviceTypeDefinition, AtLeastOne, EndpointOptions } from 'matterbridge';
|
|
2
|
-
import { AnsiLogger } from 'matterbridge/logger';
|
|
3
|
-
export declare class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryPlatform {
|
|
4
|
-
cover: MatterbridgeDevice | undefined;
|
|
5
|
-
coverInterval: NodeJS.Timeout | undefined;
|
|
6
|
-
createMutableDevice(definition: DeviceTypeDefinition | AtLeastOne<DeviceTypeDefinition>, options?: EndpointOptions, debug?: boolean): Promise<MatterbridgeDevice>;
|
|
7
|
-
constructor(matterbridge: Matterbridge, log: AnsiLogger, config: PlatformConfig);
|
|
8
|
-
onStart(reason?: string): Promise<void>;
|
|
9
|
-
onConfigure(): Promise<void>;
|
|
10
|
-
onShutdown(reason?: string): Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=platform.d.ts.map
|
package/dist/platform.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,6BAA6B,EAE7B,cAAc,EAMd,oBAAoB,EACpB,UAAU,EACV,eAAe,EAEhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,oCAAqC,SAAQ,6BAA6B;IACrF,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAEpC,mBAAmB,CAAC,UAAU,EAAE,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,EAAE,OAAO,GAAE,eAAoB,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;gBAO7J,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc;IAahE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IAyEvB,WAAW;IAkBX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;CAM1C"}
|
package/dist/platform.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|