matterbridge-example-dynamic-platform 1.0.0 → 1.0.2
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 +5 -4
- package/.prettierrc.json +1 -1
- package/README.md +13 -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 +6 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +81 -32
- package/dist/platform.js.map +1 -1
- package/link-matterbridge-script.js +15 -0
- package/package.json +19 -11
package/.eslintrc.json
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
{
|
2
|
+
"ignorePatterns":["dist/", "node_modules/"],
|
2
3
|
"plugins": [
|
3
4
|
"@typescript-eslint",
|
4
5
|
"@stylistic",
|
@@ -22,12 +23,12 @@
|
|
22
23
|
],
|
23
24
|
"rules": {
|
24
25
|
"prettier/prettier": ["error"],
|
25
|
-
"indent": ["error", 2],
|
26
|
-
"max-len": ["warn",
|
26
|
+
"indent": ["error", 2, { "SwitchCase": 1 }],
|
27
|
+
"max-len": ["warn", 200],
|
27
28
|
"no-console": ["warn"],
|
28
29
|
"quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": false }],
|
29
30
|
"comma-spacing": ["error", { "before": false, "after": true }],
|
30
|
-
"space-before-function-paren": ["error", { "anonymous": "
|
31
|
+
"space-before-function-paren": ["error", { "anonymous": "always", "named": "never", "asyncArrow": "always" }],
|
31
32
|
"keyword-spacing": ["error", { "before": true, "after": true }],
|
32
33
|
"no-multi-spaces": "error",
|
33
34
|
"object-curly-spacing": ["error", "always"],
|
@@ -40,6 +41,6 @@
|
|
40
41
|
"after": true
|
41
42
|
}
|
42
43
|
}
|
43
|
-
|
44
|
+
}]
|
44
45
|
}
|
45
46
|
}
|
package/.prettierrc.json
CHANGED
package/README.md
CHANGED
@@ -1,2 +1,13 @@
|
|
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 dynamic platform example plugin
|
2
|
+
|
3
|
+
[](https://www.npmjs.com/package/matterbridge-example-dynamic-platform)
|
4
|
+
[](https://www.npmjs.com/package/matterbridge-example-dynamic-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 dynamic platform example plugin is a template to develop your own plugin using the dynamic platform.
|
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,kCAAkC,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,sCAEnF"}
|
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 { ExampleMatterbridgeDynamicPlatform } from './platform.js';
|
5
2
|
/**
|
6
3
|
* This is the standard interface for MatterBridge plugins.
|
@@ -9,16 +6,6 @@ import { ExampleMatterbridgeDynamicPlatform } 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 dynamic platform plugin example is loading...');
|
20
|
-
const platform = new ExampleMatterbridgeDynamicPlatform(matterbridge, log);
|
21
|
-
log.info('Matterbridge dynamic platform plugin example initialized successfully!');
|
22
|
-
return platform;
|
9
|
+
return new ExampleMatterbridgeDynamicPlatform(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,kCAAkC,EAAE,MAAM,eAAe,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,YAA0B,EAAE,GAAe;IAClF,OAAO,IAAI,kCAAkC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC"}
|
package/dist/platform.d.ts
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
-
import { Matterbridge, MatterbridgeDynamicPlatform } from '
|
1
|
+
import { Matterbridge, MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
|
2
2
|
import { AnsiLogger } from 'node-ansi-logger';
|
3
3
|
export declare class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
|
4
|
+
cover: MatterbridgeDevice | undefined;
|
5
|
+
light: MatterbridgeDevice | undefined;
|
4
6
|
constructor(matterbridge: Matterbridge, log: AnsiLogger);
|
5
|
-
|
6
|
-
|
7
|
+
onStart(reason?: string): Promise<void>;
|
8
|
+
onConfigure(): Promise<void>;
|
9
|
+
onShutdown(reason?: string): Promise<void>;
|
7
10
|
}
|
8
11
|
//# 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,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAa,kCAAmC,SAAQ,2BAA2B;IACjF,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;gBAE1B,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU;IAIxC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IAsCvB,WAAW;IAoDX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;CAG1C"}
|
package/dist/platform.js
CHANGED
@@ -1,45 +1,94 @@
|
|
1
|
-
import { DeviceTypes } from '
|
2
|
-
import { MatterbridgeDevice, MatterbridgeDynamicPlatform } from '
|
1
|
+
import { DeviceTypes, OnOffCluster, WindowCovering, WindowCoveringCluster } from 'matterbridge';
|
2
|
+
import { MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
|
3
3
|
export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
|
4
|
+
cover;
|
5
|
+
light;
|
4
6
|
constructor(matterbridge, log) {
|
5
7
|
super(matterbridge, log);
|
6
8
|
}
|
7
|
-
|
8
|
-
this.log.info('
|
9
|
-
|
10
|
-
cover.createDefaultIdentifyClusterServer();
|
11
|
-
cover.createDefaultGroupsClusterServer();
|
12
|
-
cover.createDefaultScenesClusterServer();
|
13
|
-
cover.createDefaultBridgedDeviceBasicInformationClusterServer('
|
14
|
-
cover.createDefaultPowerSourceRechargableBatteryClusterServer(86);
|
15
|
-
cover.createDefaultWindowCoveringClusterServer();
|
16
|
-
this.registerDevice(cover);
|
17
|
-
cover.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
18
|
-
this.log.
|
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.createDefaultGroupsClusterServer();
|
14
|
+
this.cover.createDefaultScenesClusterServer();
|
15
|
+
this.cover.createDefaultBridgedDeviceBasicInformationClusterServer('Bridged device 1', '0x01020564', 0xfff1, 'Luligu', 'Dynamic device 1');
|
16
|
+
this.cover.createDefaultPowerSourceRechargableBatteryClusterServer(86);
|
17
|
+
this.cover.createDefaultWindowCoveringClusterServer();
|
18
|
+
await this.registerDevice(this.cover);
|
19
|
+
this.cover.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
20
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
19
21
|
});
|
20
|
-
cover.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue } }) => {
|
21
|
-
this.log.
|
22
|
+
this.cover.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue } }) => {
|
23
|
+
this.log.info(`Command goToLiftPercentage called liftPercent100thsValue:${liftPercent100thsValue}`);
|
22
24
|
});
|
23
|
-
|
24
|
-
light.createDefaultIdentifyClusterServer();
|
25
|
-
light.createDefaultGroupsClusterServer();
|
26
|
-
light.createDefaultScenesClusterServer();
|
27
|
-
light.createDefaultBridgedDeviceBasicInformationClusterServer('
|
28
|
-
light.createDefaultPowerSourceReplaceableBatteryClusterServer(70);
|
29
|
-
light.createDefaultOnOffClusterServer();
|
30
|
-
this.registerDevice(light);
|
31
|
-
light.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
32
|
-
this.log.
|
25
|
+
this.light = new MatterbridgeDevice(DeviceTypes.ON_OFF_LIGHT);
|
26
|
+
this.light.createDefaultIdentifyClusterServer();
|
27
|
+
this.light.createDefaultGroupsClusterServer();
|
28
|
+
this.light.createDefaultScenesClusterServer();
|
29
|
+
this.light.createDefaultBridgedDeviceBasicInformationClusterServer('Bridged device 2', '0x23480564', 0xfff1, 'Luligu', 'Dynamic device 2');
|
30
|
+
this.light.createDefaultPowerSourceReplaceableBatteryClusterServer(70);
|
31
|
+
this.light.createDefaultOnOffClusterServer();
|
32
|
+
await this.registerDevice(this.light);
|
33
|
+
this.light.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
34
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
33
35
|
});
|
34
|
-
light.addCommandHandler('on', async () => {
|
35
|
-
this.log.
|
36
|
+
this.light.addCommandHandler('on', async () => {
|
37
|
+
this.log.info('Command on called');
|
36
38
|
});
|
37
|
-
light.addCommandHandler('off', async () => {
|
38
|
-
this.log.
|
39
|
+
this.light.addCommandHandler('off', async () => {
|
40
|
+
this.log.info('Command off called');
|
39
41
|
});
|
40
42
|
}
|
41
|
-
|
42
|
-
this.log.info('
|
43
|
+
async onConfigure() {
|
44
|
+
this.log.info('onConfigure called');
|
45
|
+
if (!this.cover)
|
46
|
+
return;
|
47
|
+
const coverCluster = this.cover.getClusterServer(WindowCoveringCluster.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift));
|
48
|
+
if (coverCluster && coverCluster.getCurrentPositionLiftPercent100thsAttribute) {
|
49
|
+
const position = coverCluster.getCurrentPositionLiftPercent100thsAttribute();
|
50
|
+
if (position === null)
|
51
|
+
return;
|
52
|
+
this.log.debug(`**onConfigure called. Current PositionLiftPercent100ths is ${position}. Set target and status.`);
|
53
|
+
coverCluster.setTargetPositionLiftPercent100thsAttribute(position);
|
54
|
+
coverCluster.setOperationalStatusAttribute({
|
55
|
+
global: WindowCovering.MovementStatus.Stopped,
|
56
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
57
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
58
|
+
});
|
59
|
+
}
|
60
|
+
setInterval(() => {
|
61
|
+
if (!this.cover)
|
62
|
+
return;
|
63
|
+
const coverCluster = this.cover.getClusterServer(WindowCoveringCluster.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift));
|
64
|
+
if (coverCluster && coverCluster.getCurrentPositionLiftPercent100thsAttribute) {
|
65
|
+
let position = coverCluster.getCurrentPositionLiftPercent100thsAttribute();
|
66
|
+
if (position === null)
|
67
|
+
return;
|
68
|
+
position = position >= 9000 ? 0 : position + 1000;
|
69
|
+
coverCluster.setTargetPositionLiftPercent100thsAttribute(position);
|
70
|
+
coverCluster.setCurrentPositionLiftPercent100thsAttribute(position);
|
71
|
+
coverCluster.setOperationalStatusAttribute({
|
72
|
+
global: WindowCovering.MovementStatus.Stopped,
|
73
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
74
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
75
|
+
});
|
76
|
+
this.log.info(`Set PositionLiftPercent100ths to ${position}`);
|
77
|
+
}
|
78
|
+
}, 60 * 1000 + 500);
|
79
|
+
setInterval(() => {
|
80
|
+
if (!this.light)
|
81
|
+
return;
|
82
|
+
const lightCluster = this.light.getClusterServer(OnOffCluster);
|
83
|
+
if (lightCluster) {
|
84
|
+
const status = lightCluster.getOnOffAttribute();
|
85
|
+
lightCluster.setOnOffAttribute(!status);
|
86
|
+
this.log.info(`Set onOff to ${!status}`);
|
87
|
+
}
|
88
|
+
}, 60 * 1000 + 200);
|
89
|
+
}
|
90
|
+
async onShutdown(reason) {
|
91
|
+
this.log.info('onShutdown called with reason:', reason ?? 'none');
|
43
92
|
}
|
44
93
|
}
|
45
94
|
//# 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":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEhG,OAAO,EAAgB,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG7F,MAAM,OAAO,kCAAmC,SAAQ,2BAA2B;IACjF,KAAK,CAAiC;IACtC,KAAK,CAAiC;IAEtC,YAAY,YAA0B,EAAE,GAAe;QACrD,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEQ,KAAK,CAAC,OAAO,CAAC,MAAe;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC3I,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,wCAAwC,EAAE,CAAC;QACtD,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC/E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,EAAE;YACnG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4DAA4D,sBAAsB,EAAE,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC3I,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC/E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YAC5C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC7C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IACQ,KAAK,CAAC,WAAW;QACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACpJ,IAAI,YAAY,IAAI,YAAY,CAAC,4CAA4C,EAAE,CAAC;YAC9E,MAAM,QAAQ,GAAG,YAAY,CAAC,4CAA4C,EAAE,CAAC;YAC7E,IAAI,QAAQ,KAAK,IAAI;gBAAE,OAAO;YAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8DAA8D,QAAQ,0BAA0B,CAAC,CAAC;YACjH,YAAY,CAAC,2CAA2C,CAAC,QAAQ,CAAC,CAAC;YACnE,YAAY,CAAC,6BAA6B,CAAC;gBACzC,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;gBAC7C,IAAI,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;gBAC3C,IAAI,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;aAC5C,CAAC,CAAC;QACL,CAAC;QAED,WAAW,CACT,GAAG,EAAE;YACH,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACpJ,IAAI,YAAY,IAAI,YAAY,CAAC,4CAA4C,EAAE,CAAC;gBAC9E,IAAI,QAAQ,GAAG,YAAY,CAAC,4CAA4C,EAAE,CAAC;gBAC3E,IAAI,QAAQ,KAAK,IAAI;oBAAE,OAAO;gBAC9B,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAClD,YAAY,CAAC,2CAA2C,CAAC,QAAQ,CAAC,CAAC;gBACnE,YAAY,CAAC,4CAA4C,CAAC,QAAQ,CAAC,CAAC;gBACpE,YAAY,CAAC,6BAA6B,CAAC;oBACzC,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;oBAC7C,IAAI,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;oBAC3C,IAAI,EAAE,cAAc,CAAC,cAAc,CAAC,OAAO;iBAC5C,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;QAEF,WAAW,CACT,GAAG,EAAE;YACH,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACxB,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YAC/D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;gBAChD,YAAY,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC,EACD,EAAE,GAAG,IAAI,GAAG,GAAG,CAChB,CAAC;IACJ,CAAC;IAEQ,KAAK,CAAC,UAAU,CAAC,MAAe;QACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,IAAI,MAAM,CAAC,CAAC;IACpE,CAAC;CACF"}
|
@@ -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-dynamic-platform",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.2",
|
4
4
|
"description": "Matterbridge dynamic platform plugin example",
|
5
5
|
"author": "https://github.com/Luligu",
|
6
6
|
"license": "MIT",
|
@@ -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.6.
|
55
|
+
"@stylistic/eslint-plugin": "^1.6.3",
|
47
56
|
"@tsconfig/node-lts": "^20.1.1",
|
48
|
-
"@types/node": "^20.11.
|
49
|
-
"@typescript-eslint/eslint-plugin": "^7.0
|
50
|
-
"@typescript-eslint/parser": "^7.0
|
57
|
+
"@types/node": "^20.11.27",
|
58
|
+
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
59
|
+
"@typescript-eslint/parser": "^7.2.0",
|
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.2"
|
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
|
}
|