matterbridge-example-accessory-platform 1.0.0 → 1.0.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/.eslintrc.json +3 -3
- package/.prettierrc.json +1 -1
- package/README.md +15 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -14
- package/dist/index.js.map +1 -1
- package/dist/platform.d.ts +7 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +59 -21
- package/dist/platform.js.map +1 -1
- package/link-matterbridge-script.js +15 -0
- package/package.json +20 -12
package/.eslintrc.json
CHANGED
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
],
|
|
24
24
|
"rules": {
|
|
25
25
|
"prettier/prettier": ["error"],
|
|
26
|
-
"indent": ["error", 2],
|
|
27
|
-
"max-len": ["warn",
|
|
26
|
+
"indent": ["error", 2, { "SwitchCase": 1 }],
|
|
27
|
+
"max-len": ["warn", 200],
|
|
28
28
|
"no-console": ["warn"],
|
|
29
29
|
"quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }],
|
|
30
30
|
"comma-spacing": ["error", { "before": false, "after": true }],
|
|
31
|
-
"space-before-function-paren": ["error", { "anonymous": "
|
|
31
|
+
"space-before-function-paren": ["error", { "anonymous": "always", "named": "never", "asyncArrow": "always" }],
|
|
32
32
|
"keyword-spacing": ["error", { "before": true, "after": true }],
|
|
33
33
|
"no-multi-spaces": "error",
|
|
34
34
|
"object-curly-spacing": ["error", "always"],
|
package/.prettierrc.json
CHANGED
package/README.md
CHANGED
|
@@ -1,2 +1,15 @@
|
|
|
1
|
-
# Matterbridge
|
|
2
|
-
|
|
1
|
+
# <img src="https://github.com/Luligu/matterbridge/blob/main/frontend/public/matterbridge%2064x64.png" alt="Matterbridge Logo" width="64px" height="64px"> Matterbridge accessory platform example plugin
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/matterbridge-example-accessory-platform)
|
|
4
|
+
[](https://www.npmjs.com/package/matterbridge-example-accessory-platform)
|
|
5
|
+
|
|
6
|
+
[](https://www.npmjs.com/package/matterbridge)
|
|
7
|
+
[](https://www.npmjs.com/package/matter-history)
|
|
8
|
+
[](https://www.npmjs.com/package/node-ansi-logger)
|
|
9
|
+
[](https://www.npmjs.com/package/node-persist-manager)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
Matterbridge accessory platform example plugin is a template to develop your own plugin using the accessory platform.
|
|
14
|
+
|
|
15
|
+
See the guidelines on [Matterbridge](https://github.com/Luligu/matterbridge/blob/main/README.md) for more information.
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,wCAEnF"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { MatterServer } from '@project-chip/matter-node.js';
|
|
2
|
-
import { Format, Level, Logger } from '@project-chip/matter-node.js/log';
|
|
3
|
-
import { StorageBackendJsonFile, StorageManager } from '@project-chip/matter-node.js/storage';
|
|
4
1
|
import { ExampleMatterbridgeAccessoryPlatform } from './platform.js';
|
|
5
2
|
/**
|
|
6
3
|
* This is the standard interface for MatterBridge plugins.
|
|
@@ -9,16 +6,6 @@ import { ExampleMatterbridgeAccessoryPlatform } from './platform.js';
|
|
|
9
6
|
* @param matterbridge - An instance of MatterBridge
|
|
10
7
|
*/
|
|
11
8
|
export default function initializePlugin(matterbridge, log) {
|
|
12
|
-
|
|
13
|
-
Logger.defaultLogLevel = Level.DEBUG;
|
|
14
|
-
Logger.format = Format.ANSI;
|
|
15
|
-
// Do nothing just load @project-chip/matter-node.js for the Time Crypto Net Node variant
|
|
16
|
-
const storageJson = new StorageBackendJsonFile('matterbridge-example');
|
|
17
|
-
const storageManager = new StorageManager(storageJson);
|
|
18
|
-
new MatterServer(storageManager);
|
|
19
|
-
log.info('Matterbridge accessory platform example plugin is loading...');
|
|
20
|
-
const platform = new ExampleMatterbridgeAccessoryPlatform(matterbridge, log);
|
|
21
|
-
log.info('Matterbridge accessory platform example plugin initialized successfully!');
|
|
22
|
-
return platform;
|
|
9
|
+
return new ExampleMatterbridgeAccessoryPlatform(matterbridge, log);
|
|
23
10
|
}
|
|
24
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oCAAoC,EAAE,MAAM,eAAe,CAAC;AAErE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAA0B,EAAE,GAAe;IAClF,OAAO,IAAI,oCAAoC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC"}
|
package/dist/platform.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import { Matterbridge, MatterbridgeDevice, MatterbridgeAccessoryPlatform } from 'matterbridge';
|
|
2
3
|
import { AnsiLogger } from 'node-ansi-logger';
|
|
3
4
|
export declare class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryPlatform {
|
|
5
|
+
cover: MatterbridgeDevice | undefined;
|
|
6
|
+
coverInterval: NodeJS.Timeout | undefined;
|
|
4
7
|
constructor(matterbridge: Matterbridge, log: AnsiLogger);
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
onStart(reason?: string): Promise<void>;
|
|
9
|
+
onConfigure(): Promise<void>;
|
|
10
|
+
onShutdown(reason?: string): Promise<void>;
|
|
7
11
|
}
|
|
8
12
|
//# sourceMappingURL=platform.d.ts.map
|
package/dist/platform.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,oCAAqC,SAAQ,6BAA6B;IACrF,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;gBAE9B,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU;IAIxC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IA6CvB,WAAW;IA2BX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;CAK1C"}
|
package/dist/platform.js
CHANGED
|
@@ -1,27 +1,63 @@
|
|
|
1
|
-
import { DeviceTypes } from '
|
|
2
|
-
import { MatterbridgeDevice, MatterbridgeAccessoryPlatform } from '
|
|
3
|
-
import { WindowCovering, WindowCoveringCluster } from '@project-chip/matter-node.js/cluster';
|
|
1
|
+
import { DeviceTypes, WindowCovering } from 'matterbridge';
|
|
2
|
+
import { MatterbridgeDevice, MatterbridgeAccessoryPlatform } from 'matterbridge';
|
|
4
3
|
export class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryPlatform {
|
|
4
|
+
cover;
|
|
5
|
+
coverInterval;
|
|
5
6
|
constructor(matterbridge, log) {
|
|
6
7
|
super(matterbridge, log);
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
-
this.log.info('
|
|
10
|
-
|
|
11
|
-
cover.createDefaultIdentifyClusterServer();
|
|
12
|
-
cover.createDefaultBasicInformationClusterServer('
|
|
13
|
-
cover.
|
|
14
|
-
this.
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
async onStart(reason) {
|
|
10
|
+
this.log.info('onStart called with reason:', reason ?? 'none');
|
|
11
|
+
this.cover = new MatterbridgeDevice(DeviceTypes.WINDOW_COVERING);
|
|
12
|
+
this.cover.createDefaultIdentifyClusterServer();
|
|
13
|
+
this.cover.createDefaultBasicInformationClusterServer('Accessory device', '0x59108853', 0xfff1, 'Luligu', 0x0001, 'Accessory device');
|
|
14
|
+
this.cover.createDefaultPowerSourceWiredClusterServer();
|
|
15
|
+
this.cover.createDefaultWindowCoveringClusterServer(10000);
|
|
16
|
+
await this.registerDevice(this.cover);
|
|
17
|
+
this.cover.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
|
18
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
|
17
19
|
});
|
|
18
|
-
cover.addCommandHandler('
|
|
19
|
-
|
|
20
|
+
this.cover.addCommandHandler('stopMotion', async ({ attributes: { currentPositionLiftPercent100ths, targetPositionLiftPercent100ths, operationalStatus } }) => {
|
|
21
|
+
const position = currentPositionLiftPercent100ths?.getLocal();
|
|
22
|
+
if (position !== null && position !== undefined)
|
|
23
|
+
targetPositionLiftPercent100ths?.setLocal(position);
|
|
24
|
+
operationalStatus.setLocal({
|
|
25
|
+
global: WindowCovering.MovementStatus.Stopped,
|
|
26
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
|
27
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
|
28
|
+
});
|
|
29
|
+
this.log.debug(`Command stopMotion called. Attributes: currentPositionLiftPercent100ths: ${currentPositionLiftPercent100ths?.getLocal()}`);
|
|
30
|
+
this.log.debug(`Command stopMotion called. Attributes: targetPositionLiftPercent100ths: ${targetPositionLiftPercent100ths?.getLocal()}`);
|
|
31
|
+
this.log.debug(`Command stopMotion called. Attributes: operationalStatus: ${operationalStatus?.getLocal().lift}`);
|
|
20
32
|
});
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
this.cover.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue }, attributes: { currentPositionLiftPercent100ths, targetPositionLiftPercent100ths, operationalStatus } }) => {
|
|
34
|
+
currentPositionLiftPercent100ths?.setLocal(liftPercent100thsValue);
|
|
35
|
+
targetPositionLiftPercent100ths?.setLocal(liftPercent100thsValue);
|
|
36
|
+
operationalStatus.setLocal({
|
|
37
|
+
global: WindowCovering.MovementStatus.Stopped,
|
|
38
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
|
39
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
|
40
|
+
});
|
|
41
|
+
this.log.info(`Command goToLiftPercentage called. Request: liftPercent100thsValue: ${liftPercent100thsValue} `);
|
|
42
|
+
this.log.debug(`Command goToLiftPercentage called. Attributes: currentPositionLiftPercent100ths: ${currentPositionLiftPercent100ths?.getLocal()}`);
|
|
43
|
+
this.log.debug(`Command goToLiftPercentage called. Attributes: targetPositionLiftPercent100ths: ${targetPositionLiftPercent100ths?.getLocal()}`);
|
|
44
|
+
this.log.debug(`Command goToLiftPercentage called. Attributes: operationalStatus: ${operationalStatus?.getLocal().lift}`);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async onConfigure() {
|
|
48
|
+
this.log.info('onConfigure called');
|
|
49
|
+
// Set cover to target = current position and status to stopped (current position is persisted in the cluster)
|
|
50
|
+
this.cover?.setWindowCoveringTargetAsCurrentAndStopped();
|
|
51
|
+
this.log.debug('Set cover initial targetPositionLiftPercent100ths = currentPositionLiftPercent100ths and operationalStatus to Stopped.');
|
|
52
|
+
this.coverInterval = setInterval(() => {
|
|
53
|
+
if (!this.cover)
|
|
54
|
+
return;
|
|
55
|
+
const coverCluster = this.cover.getClusterServer(WindowCovering.Complete);
|
|
23
56
|
if (coverCluster && coverCluster.getCurrentPositionLiftPercent100thsAttribute) {
|
|
24
|
-
let position = coverCluster.getCurrentPositionLiftPercent100thsAttribute()
|
|
57
|
+
let position = coverCluster.getCurrentPositionLiftPercent100thsAttribute();
|
|
58
|
+
if (position === null || position === undefined)
|
|
59
|
+
return;
|
|
60
|
+
position = position + 1000;
|
|
25
61
|
position = position > 10000 ? 0 : position;
|
|
26
62
|
coverCluster.setTargetPositionLiftPercent100thsAttribute(position);
|
|
27
63
|
coverCluster.setCurrentPositionLiftPercent100thsAttribute(position);
|
|
@@ -30,12 +66,14 @@ export class ExampleMatterbridgeAccessoryPlatform extends MatterbridgeAccessoryP
|
|
|
30
66
|
lift: WindowCovering.MovementStatus.Stopped,
|
|
31
67
|
tilt: WindowCovering.MovementStatus.Stopped,
|
|
32
68
|
});
|
|
33
|
-
this.log.
|
|
69
|
+
this.log.info(`Set liftPercent100thsValue to ${position}`);
|
|
34
70
|
}
|
|
35
|
-
},
|
|
71
|
+
}, 60 * 1000);
|
|
36
72
|
}
|
|
37
|
-
onShutdown() {
|
|
38
|
-
this.log.info('onShutdown called');
|
|
73
|
+
async onShutdown(reason) {
|
|
74
|
+
this.log.info('onShutdown called with reason:', reason ?? 'none');
|
|
75
|
+
clearInterval(this.coverInterval);
|
|
76
|
+
await this.unregisterAllDevices();
|
|
39
77
|
}
|
|
40
78
|
}
|
|
41
79
|
//# sourceMappingURL=platform.js.map
|
package/dist/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// link-script.js
|
|
2
|
+
import { exec } from 'child_process';
|
|
3
|
+
|
|
4
|
+
const command = process.platform === 'win32' ? 'npm link matterbridge' : 'sudo npm link matterbridge';
|
|
5
|
+
|
|
6
|
+
exec(command, (error, stdout, stderr) => {
|
|
7
|
+
if (error) {
|
|
8
|
+
console.error(`exec error: ${error}`);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
console.log(`stdout: ${stdout}`);
|
|
12
|
+
if (stderr) {
|
|
13
|
+
console.error(`stderr: ${stderr}`);
|
|
14
|
+
}
|
|
15
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matterbridge-example-accessory-platform",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Matterbridge accessory platform plugin example",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"license": "MIT",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"types": "dist/index.d.js",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
|
-
"url": "https://github.com/Luligu/matterbridge-example-accessory-platform"
|
|
12
|
+
"url": "git+https://github.com/Luligu/matterbridge-example-accessory-platform.git"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/Luligu/matterbridge-example-accessory-platform/issues"
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
"scripts": {
|
|
27
27
|
"build": "tsc",
|
|
28
28
|
"watch": "tsc --watch",
|
|
29
|
-
"start": "
|
|
29
|
+
"start:bridge": "matterbridge -bridge",
|
|
30
|
+
"start:childbridge": "matterbridge -childbridge",
|
|
30
31
|
"test": "jest",
|
|
31
32
|
"test:verbose": "jest --verbose",
|
|
32
33
|
"test:watch": "jest --watch",
|
|
@@ -40,22 +41,29 @@
|
|
|
40
41
|
"prepublishOnly": "npm run lint && npm run cleanBuild",
|
|
41
42
|
"checkDependencies": "npx npm-check-updates",
|
|
42
43
|
"updateDependencies": "npx npm-check-updates -u",
|
|
43
|
-
"
|
|
44
|
+
"matterbridge:add": "matterbridge -add .\\",
|
|
45
|
+
"matterbridge:remove": "matterbridge -remove .\\",
|
|
46
|
+
"matterbridge:enable": "matterbridge -enable .\\",
|
|
47
|
+
"matterbridge:disable": "matterbridge -disable .\\",
|
|
48
|
+
"matterbridge:list": "matterbridge -list",
|
|
49
|
+
"dev:link": "npm link --save-dev matterbridge",
|
|
50
|
+
"dev:install": "npm install --save-dev matterbridge",
|
|
51
|
+
"dev:unlink": "npm uninstall matterbridge && npm unlink matterbridge",
|
|
52
|
+
"install": "node link-matterbridge-script.js && npm run build"
|
|
44
53
|
},
|
|
45
54
|
"devDependencies": {
|
|
46
|
-
"@stylistic/eslint-plugin": "^1.
|
|
55
|
+
"@stylistic/eslint-plugin": "^1.7.0",
|
|
47
56
|
"@tsconfig/node-lts": "^20.1.1",
|
|
48
|
-
"@types/node": "^20.11.
|
|
49
|
-
"@typescript-eslint/eslint-plugin": "^7.
|
|
50
|
-
"@typescript-eslint/parser": "^7.
|
|
57
|
+
"@types/node": "^20.11.30",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^7.3.1",
|
|
59
|
+
"@typescript-eslint/parser": "^7.3.1",
|
|
51
60
|
"eslint-config-prettier": "^9.1.0",
|
|
52
61
|
"eslint-plugin-prettier": "^5.1.3",
|
|
62
|
+
"matterbridge": "file:../matterbridge",
|
|
53
63
|
"prettier": "^3.2.5",
|
|
54
|
-
"typescript": "^5.
|
|
64
|
+
"typescript": "^5.4.3"
|
|
55
65
|
},
|
|
56
66
|
"dependencies": {
|
|
57
|
-
"
|
|
58
|
-
"node-ansi-logger": "^1.9.1",
|
|
59
|
-
"node-persist-manager": "^1.0.3"
|
|
67
|
+
"node-ansi-logger": "^1.9.2"
|
|
60
68
|
}
|
|
61
69
|
}
|