matterbridge-example-dynamic-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 +5 -4
- 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 +13 -3
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +209 -36
- package/dist/platform.js.map +1 -1
- package/link-matterbridge-script.js +15 -0
- package/package.json +20 -12
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,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 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.
|
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,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,18 @@
|
|
1
|
-
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
2
|
+
import { Matterbridge, MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
|
2
3
|
import { AnsiLogger } from 'node-ansi-logger';
|
3
4
|
export declare class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
|
5
|
+
switch: MatterbridgeDevice | undefined;
|
6
|
+
light: MatterbridgeDevice | undefined;
|
7
|
+
outlet: MatterbridgeDevice | undefined;
|
8
|
+
cover: MatterbridgeDevice | undefined;
|
9
|
+
switchInterval: NodeJS.Timeout | undefined;
|
10
|
+
lightInterval: NodeJS.Timeout | undefined;
|
11
|
+
outletInterval: NodeJS.Timeout | undefined;
|
12
|
+
coverInterval: NodeJS.Timeout | undefined;
|
4
13
|
constructor(matterbridge: Matterbridge, log: AnsiLogger);
|
5
|
-
|
6
|
-
|
14
|
+
onStart(reason?: string): Promise<void>;
|
15
|
+
onConfigure(): Promise<void>;
|
16
|
+
onShutdown(reason?: string): Promise<void>;
|
7
17
|
}
|
8
18
|
//# 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,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACvC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;gBAE9B,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU;IAIxC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM;IAqIvB,WAAW;IAwFX,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM;CAQ1C"}
|
package/dist/platform.js
CHANGED
@@ -1,45 +1,218 @@
|
|
1
|
-
import { DeviceTypes } from '
|
2
|
-
import { MatterbridgeDevice, MatterbridgeDynamicPlatform } from '
|
1
|
+
import { ColorControl, ColorControlCluster, DeviceTypes, LevelControlCluster, OnOffCluster, WindowCovering, WindowCoveringCluster, onOffSwitch } from 'matterbridge';
|
2
|
+
import { MatterbridgeDevice, MatterbridgeDynamicPlatform } from 'matterbridge';
|
3
3
|
export class ExampleMatterbridgeDynamicPlatform extends MatterbridgeDynamicPlatform {
|
4
|
+
switch;
|
5
|
+
light;
|
6
|
+
outlet;
|
7
|
+
cover;
|
8
|
+
switchInterval;
|
9
|
+
lightInterval;
|
10
|
+
outletInterval;
|
11
|
+
coverInterval;
|
4
12
|
constructor(matterbridge, log) {
|
5
13
|
super(matterbridge, log);
|
6
14
|
}
|
7
|
-
|
8
|
-
this.log.info('
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
this.
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
cover.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue } }) => {
|
21
|
-
this.log.warn(`Command goToLiftPercentage called liftPercent100thsValue:${liftPercent100thsValue}`);
|
22
|
-
});
|
23
|
-
const light = new MatterbridgeDevice(DeviceTypes.ON_OFF_LIGHT);
|
24
|
-
light.createDefaultIdentifyClusterServer();
|
25
|
-
light.createDefaultGroupsClusterServer();
|
26
|
-
light.createDefaultScenesClusterServer();
|
27
|
-
light.createDefaultBridgedDeviceBasicInformationClusterServer('BridgedDevice2', 'BridgedDevice2 0x23023304', 0xfff1, 'Luligu', 'BridgedDevice2');
|
28
|
-
light.createDefaultPowerSourceReplaceableBatteryClusterServer(70);
|
29
|
-
light.createDefaultOnOffClusterServer();
|
30
|
-
this.registerDevice(light);
|
31
|
-
light.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
32
|
-
this.log.warn(`Command identify called identifyTime:${identifyTime}`);
|
33
|
-
});
|
34
|
-
light.addCommandHandler('on', async () => {
|
35
|
-
this.log.warn('Command on called');
|
36
|
-
});
|
37
|
-
light.addCommandHandler('off', async () => {
|
38
|
-
this.log.warn('Command off called');
|
15
|
+
async onStart(reason) {
|
16
|
+
this.log.info('onStart called with reason:', reason ?? 'none');
|
17
|
+
// Create a switch device
|
18
|
+
this.switch = new MatterbridgeDevice(onOffSwitch);
|
19
|
+
this.switch.createDefaultIdentifyClusterServer();
|
20
|
+
this.switch.createDefaultGroupsClusterServer();
|
21
|
+
this.switch.createDefaultScenesClusterServer();
|
22
|
+
this.switch.createDefaultBridgedDeviceBasicInformationClusterServer('Bridged device 3', '0x23452164', 0xfff1, 'Luligu', 'Dynamic device 3');
|
23
|
+
this.switch.createDefaultPowerSourceRechargeableBatteryClusterServer(70);
|
24
|
+
this.switch.createDefaultOnOffClusterServer();
|
25
|
+
await this.registerDevice(this.switch);
|
26
|
+
this.switch.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
27
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
39
28
|
});
|
29
|
+
this.switch.addCommandHandler('on', async () => {
|
30
|
+
this.switch?.getClusterServer(OnOffCluster)?.setOnOffAttribute(true);
|
31
|
+
this.log.info('Command on called');
|
32
|
+
});
|
33
|
+
this.switch.addCommandHandler('off', async () => {
|
34
|
+
this.switch?.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
35
|
+
this.log.info('Command off called');
|
36
|
+
});
|
37
|
+
// Create a light device
|
38
|
+
this.light = new MatterbridgeDevice(DeviceTypes.ON_OFF_LIGHT);
|
39
|
+
this.light.createDefaultIdentifyClusterServer();
|
40
|
+
this.light.createDefaultGroupsClusterServer();
|
41
|
+
this.light.createDefaultScenesClusterServer();
|
42
|
+
this.light.createDefaultBridgedDeviceBasicInformationClusterServer('Bridged device 2', '0x23480564', 0xfff1, 'Luligu', 'Dynamic device 2');
|
43
|
+
this.light.createDefaultPowerSourceReplaceableBatteryClusterServer(70);
|
44
|
+
this.light.createDefaultOnOffClusterServer();
|
45
|
+
this.light.createDefaultLevelControlClusterServer();
|
46
|
+
this.light.createDefaultColorControlClusterServer();
|
47
|
+
await this.registerDevice(this.light);
|
48
|
+
this.light.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
49
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
50
|
+
});
|
51
|
+
this.light.addCommandHandler('on', async () => {
|
52
|
+
this.light?.getClusterServer(OnOffCluster)?.setOnOffAttribute(true);
|
53
|
+
this.log.info('Command on called');
|
54
|
+
});
|
55
|
+
this.light.addCommandHandler('off', async () => {
|
56
|
+
this.light?.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
57
|
+
this.log.info('Command off called');
|
58
|
+
});
|
59
|
+
this.light.addCommandHandler('moveToLevel', async ({ request: { level }, attributes: { currentLevel } }) => {
|
60
|
+
this.light?.getClusterServer(LevelControlCluster)?.setCurrentLevelAttribute(level);
|
61
|
+
this.log.debug(`Command moveToLevel called request: ${level} attributes: ${currentLevel?.getLocal()}`);
|
62
|
+
});
|
63
|
+
this.light.addCommandHandler('moveToLevelWithOnOff', async ({ request: { level }, attributes: { currentLevel } }) => {
|
64
|
+
this.light?.getClusterServer(LevelControlCluster)?.setCurrentLevelAttribute(level);
|
65
|
+
this.log.debug(`Command moveToLevelWithOnOff called request: ${level} attributes: ${currentLevel?.getLocal()}`);
|
66
|
+
});
|
67
|
+
this.light.addCommandHandler('moveToHueAndSaturation', async ({ request: { hue, saturation }, attributes: { currentHue, currentSaturation } }) => {
|
68
|
+
this.light?.getClusterServer(ColorControlCluster.with(ColorControl.Feature.HueSaturation))?.setCurrentHueAttribute(hue);
|
69
|
+
this.light?.getClusterServer(ColorControlCluster.with(ColorControl.Feature.HueSaturation))?.setCurrentSaturationAttribute(saturation);
|
70
|
+
this.log.debug(`Command moveToHueAndSaturation called request: hue ${hue} saturation ${saturation} attributes: hue ${currentHue?.getLocal()} saturation ${currentSaturation?.getLocal()}`);
|
71
|
+
});
|
72
|
+
this.light.addCommandHandler('moveToColorTemperature', async ({ request, attributes }) => {
|
73
|
+
this.light?.getClusterServer(ColorControl.Complete)?.setColorTemperatureMiredsAttribute(request.colorTemperatureMireds);
|
74
|
+
this.log.debug(`Command moveToColorTemperature called request: ${request.colorTemperatureMireds} attributes: ${attributes.colorTemperatureMireds?.getLocal()}`);
|
75
|
+
});
|
76
|
+
// Create an outlet device
|
77
|
+
this.outlet = new MatterbridgeDevice(DeviceTypes.ON_OFF_PLUGIN_UNIT);
|
78
|
+
this.outlet.createDefaultIdentifyClusterServer();
|
79
|
+
this.outlet.createDefaultGroupsClusterServer();
|
80
|
+
this.outlet.createDefaultScenesClusterServer();
|
81
|
+
this.outlet.createDefaultBridgedDeviceBasicInformationClusterServer('Bridged device 4', '0x29252164', 0xfff1, 'Luligu', 'Dynamic device 4');
|
82
|
+
this.outlet.createDefaultPowerSourceWiredClusterServer();
|
83
|
+
this.outlet.createDefaultOnOffClusterServer();
|
84
|
+
await this.registerDevice(this.outlet);
|
85
|
+
this.outlet.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
86
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
87
|
+
});
|
88
|
+
this.outlet.addCommandHandler('on', async () => {
|
89
|
+
this.outlet?.getClusterServer(OnOffCluster)?.setOnOffAttribute(true);
|
90
|
+
this.log.info('Command on called');
|
91
|
+
});
|
92
|
+
this.outlet.addCommandHandler('off', async () => {
|
93
|
+
this.outlet?.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
94
|
+
this.log.info('Command off called');
|
95
|
+
});
|
96
|
+
// Create a window covering device
|
97
|
+
this.cover = new MatterbridgeDevice(DeviceTypes.WINDOW_COVERING);
|
98
|
+
this.cover.createDefaultIdentifyClusterServer();
|
99
|
+
this.cover.createDefaultGroupsClusterServer();
|
100
|
+
this.cover.createDefaultScenesClusterServer();
|
101
|
+
this.cover.createDefaultBridgedDeviceBasicInformationClusterServer('Bridged device 1', '0x01020564', 0xfff1, 'Luligu', 'Dynamic device 1');
|
102
|
+
this.cover.createDefaultPowerSourceRechargeableBatteryClusterServer(86);
|
103
|
+
this.cover.createDefaultWindowCoveringClusterServer();
|
104
|
+
await this.registerDevice(this.cover);
|
105
|
+
this.cover.addCommandHandler('identify', async ({ request: { identifyTime } }) => {
|
106
|
+
this.log.info(`Command identify called identifyTime:${identifyTime}`);
|
107
|
+
});
|
108
|
+
this.cover.addCommandHandler('stopMotion', async ({ attributes: { currentPositionLiftPercent100ths, targetPositionLiftPercent100ths, operationalStatus } }) => {
|
109
|
+
const position = currentPositionLiftPercent100ths?.getLocal();
|
110
|
+
if (position !== null && position !== undefined)
|
111
|
+
targetPositionLiftPercent100ths?.setLocal(position);
|
112
|
+
operationalStatus.setLocal({
|
113
|
+
global: WindowCovering.MovementStatus.Stopped,
|
114
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
115
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
116
|
+
});
|
117
|
+
this.log.debug(`Command stopMotion called. Attributes: currentPositionLiftPercent100ths: ${currentPositionLiftPercent100ths?.getLocal()}`);
|
118
|
+
this.log.debug(`Command stopMotion called. Attributes: targetPositionLiftPercent100ths: ${targetPositionLiftPercent100ths?.getLocal()}`);
|
119
|
+
this.log.debug(`Command stopMotion called. Attributes: operationalStatus: ${operationalStatus?.getLocal().lift}`);
|
120
|
+
});
|
121
|
+
this.cover.addCommandHandler('goToLiftPercentage', async ({ request: { liftPercent100thsValue }, attributes: { currentPositionLiftPercent100ths, targetPositionLiftPercent100ths, operationalStatus } }) => {
|
122
|
+
currentPositionLiftPercent100ths?.setLocal(liftPercent100thsValue);
|
123
|
+
targetPositionLiftPercent100ths?.setLocal(liftPercent100thsValue);
|
124
|
+
operationalStatus.setLocal({
|
125
|
+
global: WindowCovering.MovementStatus.Stopped,
|
126
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
127
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
128
|
+
});
|
129
|
+
this.log.info(`Command goToLiftPercentage called. Request: liftPercent100thsValue: ${liftPercent100thsValue} `);
|
130
|
+
this.log.debug(`Command goToLiftPercentage called. Attributes: currentPositionLiftPercent100ths: ${currentPositionLiftPercent100ths?.getLocal()}`);
|
131
|
+
this.log.debug(`Command goToLiftPercentage called. Attributes: targetPositionLiftPercent100ths: ${targetPositionLiftPercent100ths?.getLocal()}`);
|
132
|
+
this.log.debug(`Command goToLiftPercentage called. Attributes: operationalStatus: ${operationalStatus?.getLocal().lift}`);
|
133
|
+
});
|
134
|
+
}
|
135
|
+
async onConfigure() {
|
136
|
+
this.log.info('onConfigure called');
|
137
|
+
// Set switch to off
|
138
|
+
this.switch?.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
139
|
+
this.log.info('Set switch initial onOff to false');
|
140
|
+
this.switchInterval = setInterval(() => {
|
141
|
+
if (!this.switch)
|
142
|
+
return;
|
143
|
+
const status = this.switch.getClusterServer(OnOffCluster)?.getOnOffAttribute();
|
144
|
+
this.switch.getClusterServer(OnOffCluster)?.setOnOffAttribute(!status);
|
145
|
+
this.log.info(`Set switch onOff to ${status}`);
|
146
|
+
}, 60 * 1000 + 100);
|
147
|
+
// Set light to off, level to 0 and hue to 0 and saturation to 50% (pink color)
|
148
|
+
this.light?.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
149
|
+
this.light?.getClusterServer(LevelControlCluster)?.setCurrentLevelAttribute(0);
|
150
|
+
this.light?.getClusterServer(ColorControlCluster.with(ColorControl.Feature.HueSaturation))?.setCurrentHueAttribute(0);
|
151
|
+
this.light?.getClusterServer(ColorControlCluster.with(ColorControl.Feature.HueSaturation))?.setCurrentSaturationAttribute(128);
|
152
|
+
this.log.info('Set light initial onOff to false, currentLevel to 0, hue to 0 and saturation to 50%.');
|
153
|
+
this.lightInterval = setInterval(() => {
|
154
|
+
if (!this.light)
|
155
|
+
return;
|
156
|
+
const lightLevelControlCluster = this.light.getClusterServer(LevelControlCluster);
|
157
|
+
if (lightLevelControlCluster) {
|
158
|
+
let level = lightLevelControlCluster.getCurrentLevelAttribute();
|
159
|
+
if (level === null)
|
160
|
+
return;
|
161
|
+
level += 10;
|
162
|
+
if (level > 254) {
|
163
|
+
level = 0;
|
164
|
+
this.light.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
165
|
+
this.log.info('Set light onOff to false');
|
166
|
+
return;
|
167
|
+
}
|
168
|
+
else {
|
169
|
+
this.light.getClusterServer(OnOffCluster)?.setOnOffAttribute(true);
|
170
|
+
this.log.info('Set light onOff to true');
|
171
|
+
}
|
172
|
+
lightLevelControlCluster.setCurrentLevelAttribute(level);
|
173
|
+
this.log.info(`Set light currentLevel to ${level}`);
|
174
|
+
}
|
175
|
+
}, 60 * 1000 + 200);
|
176
|
+
// Set outlet to off
|
177
|
+
this.outlet?.getClusterServer(OnOffCluster)?.setOnOffAttribute(false);
|
178
|
+
this.log.info('Set outlet initial onOff to false');
|
179
|
+
this.outletInterval = setInterval(() => {
|
180
|
+
if (!this.outlet)
|
181
|
+
return;
|
182
|
+
const status = this.outlet.getClusterServer(OnOffCluster)?.getOnOffAttribute();
|
183
|
+
this.outlet.getClusterServer(OnOffCluster)?.setOnOffAttribute(!status);
|
184
|
+
this.log.info(`Set outlet onOff to ${status}`);
|
185
|
+
}, 60 * 1000 + 300);
|
186
|
+
// Set cover to target = current position and status to stopped (current position is persisted in the cluster)
|
187
|
+
this.cover?.setWindowCoveringTargetAsCurrentAndStopped();
|
188
|
+
this.log.debug('Set cover initial targetPositionLiftPercent100ths = currentPositionLiftPercent100ths and operationalStatus to Stopped.');
|
189
|
+
this.coverInterval = setInterval(() => {
|
190
|
+
if (!this.cover)
|
191
|
+
return;
|
192
|
+
const coverCluster = this.cover.getClusterServer(WindowCoveringCluster.with(WindowCovering.Feature.Lift, WindowCovering.Feature.PositionAwareLift));
|
193
|
+
if (coverCluster && coverCluster.getCurrentPositionLiftPercent100thsAttribute) {
|
194
|
+
let position = coverCluster.getCurrentPositionLiftPercent100thsAttribute();
|
195
|
+
if (position === null)
|
196
|
+
return;
|
197
|
+
position = position >= 9000 ? 0 : position + 1000;
|
198
|
+
coverCluster.setTargetPositionLiftPercent100thsAttribute(position);
|
199
|
+
coverCluster.setCurrentPositionLiftPercent100thsAttribute(position);
|
200
|
+
coverCluster.setOperationalStatusAttribute({
|
201
|
+
global: WindowCovering.MovementStatus.Stopped,
|
202
|
+
lift: WindowCovering.MovementStatus.Stopped,
|
203
|
+
tilt: WindowCovering.MovementStatus.Stopped,
|
204
|
+
});
|
205
|
+
this.log.info(`Set cover positionLiftPercent100ths to ${position}`);
|
206
|
+
}
|
207
|
+
}, 60 * 1000 + 400);
|
40
208
|
}
|
41
|
-
onShutdown() {
|
42
|
-
this.log.info('onShutdown called');
|
209
|
+
async onShutdown(reason) {
|
210
|
+
this.log.info('onShutdown called with reason:', reason ?? 'none');
|
211
|
+
clearInterval(this.switchInterval);
|
212
|
+
clearInterval(this.lightInterval);
|
213
|
+
clearInterval(this.outletInterval);
|
214
|
+
clearInterval(this.coverInterval);
|
215
|
+
await this.unregisterAllDevices();
|
43
216
|
}
|
44
217
|
}
|
45
218
|
//# 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,qCAAqC,CAAC;AAElE,OAAO,EAAgB,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAGjH,MAAM,OAAO,kCAAmC,SAAQ,2BAA2B;IACjF,YAAY,YAA0B,EAAE,GAAe;QACrD,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEQ,sBAAsB;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE/C,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAClE,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAC3C,KAAK,CAAC,gCAAgC,EAAE,CAAC;QACzC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QACzC,KAAK,CAAC,uDAAuD,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACjJ,KAAK,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,wCAAwC,EAAE,CAAC;QACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC1E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,sBAAsB,EAAE,EAAE,EAAE,EAAE;YAC9F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4DAA4D,sBAAsB,EAAE,CAAC,CAAC;QACtG,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC/D,KAAK,CAAC,kCAAkC,EAAE,CAAC;QAC3C,KAAK,CAAC,gCAAgC,EAAE,CAAC;QACzC,KAAK,CAAC,gCAAgC,EAAE,CAAC;QACzC,KAAK,CAAC,uDAAuD,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QACjJ,KAAK,CAAC,uDAAuD,CAAC,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,+BAA+B,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAE3B,KAAK,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE;YAC1E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;YACvC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,UAAU;QACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACrC,CAAC;CACF"}
|
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-dynamic-platform",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.4",
|
4
4
|
"description": "Matterbridge dynamic 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-dynamic-platform"
|
12
|
+
"url": "git+https://github.com/Luligu/matterbridge-example-dynamic-platform.git"
|
13
13
|
},
|
14
14
|
"bugs": {
|
15
15
|
"url": "https://github.com/Luligu/matterbridge-example-dynamic-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
|
}
|