@matterbridge/core 3.10.7-dev-20260822-149e3eb → 3.10.7-dev-20260823-6142c00
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/dist/behaviors/colorControlServer.d.ts +2 -0
- package/dist/behaviors/colorControlServer.js +77 -0
- package/dist/behaviors/levelControlServer.d.ts +2 -0
- package/dist/behaviors/levelControlServer.js +37 -0
- package/dist/behaviors/onOffServer.js +66 -54
- package/dist/behaviors/operationalStateServer.d.ts +12 -1
- package/dist/behaviors/operationalStateServer.js +77 -2
- package/dist/behaviors/valveConfigurationAndControlServer.d.ts +20 -2
- package/dist/behaviors/valveConfigurationAndControlServer.js +98 -11
- package/dist/chipTests.js +84 -1
- package/dist/demoDevices.js +26 -5
- package/dist/devices/closure.d.ts +18 -2
- package/dist/devices/closure.js +86 -2
- package/dist/devices/irrigationSystem.d.ts +5 -1
- package/dist/devices/irrigationSystem.js +35 -3
- package/dist/matterbridge.js +3 -2
- package/dist/matterbridgeEndpoint.d.ts +2 -2
- package/dist/matterbridgeEndpoint.js +10 -3
- package/dist/matterbridgeEndpointHelpers.d.ts +1 -1
- package/dist/matterbridgeEndpointHelpers.js +10 -10
- package/package.json +5 -5
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MaybePromise } from '@matter/general';
|
|
1
2
|
import { ColorControlServer } from '@matter/node/behaviors/color-control';
|
|
2
3
|
import { ColorControl } from '@matter/types/clusters/color-control';
|
|
3
4
|
declare const MatterbridgeColorControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof ColorControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<ColorControl, {
|
|
@@ -8,6 +9,7 @@ declare const MatterbridgeColorControlServer_base: import("@matter/node").Cluste
|
|
|
8
9
|
xy: true;
|
|
9
10
|
}>, import("@matter/types").ClusterType.Concrete, typeof import("@matter/node/behaviors/color-control").ColorControlBaseServer.Internal, "colorControl">;
|
|
10
11
|
export declare class MatterbridgeColorControlServer extends MatterbridgeColorControlServer_base {
|
|
12
|
+
initialize(): MaybePromise;
|
|
11
13
|
moveToHue(request: ColorControl.MoveToHueRequest): Promise<void>;
|
|
12
14
|
moveHue(request: ColorControl.MoveHueRequest): Promise<void>;
|
|
13
15
|
stepHue(request: ColorControl.StepHueRequest): Promise<void>;
|
|
@@ -2,9 +2,18 @@ import { ColorControlServer } from '@matter/node/behaviors/color-control';
|
|
|
2
2
|
import { ColorControl } from '@matter/types/clusters/color-control';
|
|
3
3
|
import { MatterbridgeServer } from './matterbridgeServer.js';
|
|
4
4
|
export class MatterbridgeColorControlServer extends ColorControlServer.with(ColorControl.Feature.HueSaturation, ColorControl.Feature.Xy, ColorControl.Feature.ColorTemperature, ColorControl.Feature.EnhancedHue) {
|
|
5
|
+
initialize() {
|
|
6
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST)
|
|
7
|
+
this.state.managedTransitionTimeHandling = true;
|
|
8
|
+
return super.initialize();
|
|
9
|
+
}
|
|
5
10
|
async moveToHue(request) {
|
|
6
11
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
7
12
|
device.log.info(`Setting hue to ${request.hue} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
13
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
14
|
+
await super.moveToHue(request);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
8
17
|
await device.commandHandler.executeHandler('ColorControl.moveToHue', {
|
|
9
18
|
command: 'moveToHue',
|
|
10
19
|
request,
|
|
@@ -19,6 +28,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
19
28
|
async moveHue(request) {
|
|
20
29
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
21
30
|
device.log.info(`Moving hue with mode ${request.moveMode} and rate ${request.rate} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
31
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
32
|
+
await super.moveHue(request);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
22
35
|
await device.commandHandler.executeHandler('ColorControl.moveHue', {
|
|
23
36
|
command: 'moveHue',
|
|
24
37
|
request,
|
|
@@ -33,6 +46,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
33
46
|
async stepHue(request) {
|
|
34
47
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
35
48
|
device.log.info(`Stepping hue with mode ${request.stepMode} and size ${request.stepSize} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
49
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
50
|
+
await super.stepHue(request);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
36
53
|
await device.commandHandler.executeHandler('ColorControl.stepHue', {
|
|
37
54
|
command: 'stepHue',
|
|
38
55
|
request,
|
|
@@ -47,6 +64,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
47
64
|
async enhancedMoveToHue(request) {
|
|
48
65
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
49
66
|
device.log.info(`Setting enhanced hue to ${request.enhancedHue} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
67
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
68
|
+
await super.enhancedMoveToHue(request);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
50
71
|
await device.commandHandler.executeHandler('ColorControl.enhancedMoveToHue', {
|
|
51
72
|
command: 'enhancedMoveToHue',
|
|
52
73
|
request,
|
|
@@ -61,6 +82,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
61
82
|
async enhancedMoveHue(request) {
|
|
62
83
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
63
84
|
device.log.info(`Moving enhanced hue with mode ${request.moveMode} and rate ${request.rate} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
85
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
86
|
+
await super.enhancedMoveHue(request);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
64
89
|
await device.commandHandler.executeHandler('ColorControl.enhancedMoveHue', {
|
|
65
90
|
command: 'enhancedMoveHue',
|
|
66
91
|
request,
|
|
@@ -75,6 +100,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
75
100
|
async enhancedStepHue(request) {
|
|
76
101
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
77
102
|
device.log.info(`Stepping enhanced hue with mode ${request.stepMode} and size ${request.stepSize} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
103
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
104
|
+
await super.enhancedStepHue(request);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
78
107
|
await device.commandHandler.executeHandler('ColorControl.enhancedStepHue', {
|
|
79
108
|
command: 'enhancedStepHue',
|
|
80
109
|
request,
|
|
@@ -89,6 +118,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
89
118
|
async moveToSaturation(request) {
|
|
90
119
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
91
120
|
device.log.info(`Setting saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
121
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
122
|
+
await super.moveToSaturation(request);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
92
125
|
await device.commandHandler.executeHandler('ColorControl.moveToSaturation', {
|
|
93
126
|
command: 'moveToSaturation',
|
|
94
127
|
request,
|
|
@@ -103,6 +136,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
103
136
|
async moveSaturation(request) {
|
|
104
137
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
105
138
|
device.log.info(`Moving saturation with mode ${request.moveMode} and rate ${request.rate} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
139
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
140
|
+
await super.moveSaturation(request);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
106
143
|
await device.commandHandler.executeHandler('ColorControl.moveSaturation', {
|
|
107
144
|
command: 'moveSaturation',
|
|
108
145
|
request,
|
|
@@ -117,6 +154,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
117
154
|
async stepSaturation(request) {
|
|
118
155
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
119
156
|
device.log.info(`Stepping saturation with mode ${request.stepMode} and size ${request.stepSize} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
157
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
158
|
+
await super.stepSaturation(request);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
120
161
|
await device.commandHandler.executeHandler('ColorControl.stepSaturation', {
|
|
121
162
|
command: 'stepSaturation',
|
|
122
163
|
request,
|
|
@@ -131,6 +172,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
131
172
|
async moveToHueAndSaturation(request) {
|
|
132
173
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
133
174
|
device.log.info(`Setting hue to ${request.hue} and saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
175
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
176
|
+
await super.moveToHueAndSaturation(request);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
134
179
|
await device.commandHandler.executeHandler('ColorControl.moveToHueAndSaturation', {
|
|
135
180
|
command: 'moveToHueAndSaturation',
|
|
136
181
|
request,
|
|
@@ -145,6 +190,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
145
190
|
async enhancedMoveToHueAndSaturation(request) {
|
|
146
191
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
147
192
|
device.log.info(`Setting enhanced hue to ${request.enhancedHue} and saturation to ${request.saturation} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
193
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
194
|
+
await super.enhancedMoveToHueAndSaturation(request);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
148
197
|
await device.commandHandler.executeHandler('ColorControl.enhancedMoveToHueAndSaturation', {
|
|
149
198
|
command: 'enhancedMoveToHueAndSaturation',
|
|
150
199
|
request,
|
|
@@ -159,6 +208,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
159
208
|
async moveToColor(request) {
|
|
160
209
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
161
210
|
device.log.info(`Setting color to ${request.colorX}, ${request.colorY} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
211
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
212
|
+
await super.moveToColor(request);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
162
215
|
await device.commandHandler.executeHandler('ColorControl.moveToColor', {
|
|
163
216
|
command: 'moveToColor',
|
|
164
217
|
request,
|
|
@@ -173,6 +226,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
173
226
|
async moveColor(request) {
|
|
174
227
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
175
228
|
device.log.info(`Moving color with rateX ${request.rateX} and rateY ${request.rateY} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
229
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
230
|
+
await super.moveColor(request);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
176
233
|
await device.commandHandler.executeHandler('ColorControl.moveColor', {
|
|
177
234
|
command: 'moveColor',
|
|
178
235
|
request,
|
|
@@ -187,6 +244,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
187
244
|
async stepColor(request) {
|
|
188
245
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
189
246
|
device.log.info(`Stepping color with stepX ${request.stepX} and stepY ${request.stepY} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
247
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
248
|
+
await super.stepColor(request);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
190
251
|
await device.commandHandler.executeHandler('ColorControl.stepColor', {
|
|
191
252
|
command: 'stepColor',
|
|
192
253
|
request,
|
|
@@ -201,6 +262,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
201
262
|
async moveToColorTemperature(request) {
|
|
202
263
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
203
264
|
device.log.info(`Setting color temperature to ${request.colorTemperatureMireds} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
265
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
266
|
+
await super.moveToColorTemperature(request);
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
204
269
|
await device.commandHandler.executeHandler('ColorControl.moveToColorTemperature', {
|
|
205
270
|
command: 'moveToColorTemperature',
|
|
206
271
|
request,
|
|
@@ -215,6 +280,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
215
280
|
async moveColorTemperature(request) {
|
|
216
281
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
217
282
|
device.log.info(`Moving color temperature with mode ${request.moveMode} and rate ${request.rate} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
283
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
284
|
+
await super.moveColorTemperature(request);
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
218
287
|
await device.commandHandler.executeHandler('ColorControl.moveColorTemperature', {
|
|
219
288
|
command: 'moveColorTemperature',
|
|
220
289
|
request,
|
|
@@ -229,6 +298,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
229
298
|
async stepColorTemperature(request) {
|
|
230
299
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
231
300
|
device.log.info(`Stepping color temperature with mode ${request.stepMode} and size ${request.stepSize} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
301
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
302
|
+
await super.stepColorTemperature(request);
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
232
305
|
await device.commandHandler.executeHandler('ColorControl.stepColorTemperature', {
|
|
233
306
|
command: 'stepColorTemperature',
|
|
234
307
|
request,
|
|
@@ -243,6 +316,10 @@ export class MatterbridgeColorControlServer extends ColorControlServer.with(Colo
|
|
|
243
316
|
async stopMoveStep(request) {
|
|
244
317
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
245
318
|
device.log.info(`Stopping color move/step (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
319
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
320
|
+
await super.stopMoveStep(request);
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
246
323
|
await device.commandHandler.executeHandler('ColorControl.stopMoveStep', {
|
|
247
324
|
command: 'stopMoveStep',
|
|
248
325
|
request,
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { MaybePromise } from '@matter/general';
|
|
1
2
|
import { LevelControlServer } from '@matter/node/behaviors/level-control';
|
|
2
3
|
import type { LevelControl } from '@matter/types/clusters/level-control';
|
|
3
4
|
export declare class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
5
|
+
initialize(): MaybePromise;
|
|
4
6
|
moveToLevel(request: LevelControl.MoveToLevelRequest): Promise<void>;
|
|
5
7
|
moveToLevelWithOnOff(request: LevelControl.MoveToLevelRequest): Promise<void>;
|
|
6
8
|
move(request: LevelControl.MoveRequest): Promise<void>;
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import { LevelControlServer } from '@matter/node/behaviors/level-control';
|
|
2
2
|
import { MatterbridgeServer } from './matterbridgeServer.js';
|
|
3
3
|
export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
4
|
+
initialize() {
|
|
5
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST)
|
|
6
|
+
this.state.managedTransitionTimeHandling = true;
|
|
7
|
+
return super.initialize();
|
|
8
|
+
}
|
|
4
9
|
async moveToLevel(request) {
|
|
5
10
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
6
11
|
device.log.info(`Setting level to ${request.level} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
12
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
13
|
+
await super.moveToLevel(request);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
7
16
|
await device.commandHandler.executeHandler('LevelControl.moveToLevel', {
|
|
8
17
|
command: 'moveToLevel',
|
|
9
18
|
request,
|
|
@@ -18,6 +27,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
18
27
|
async moveToLevelWithOnOff(request) {
|
|
19
28
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
20
29
|
device.log.info(`Setting level to ${request.level} with transitionTime ${request.transitionTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
30
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
31
|
+
await super.moveToLevelWithOnOff(request);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
21
34
|
await device.commandHandler.executeHandler('LevelControl.moveToLevelWithOnOff', {
|
|
22
35
|
command: 'moveToLevelWithOnOff',
|
|
23
36
|
request,
|
|
@@ -32,6 +45,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
32
45
|
async move(request) {
|
|
33
46
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
34
47
|
device.log.info(`Moving level with mode ${request.moveMode} and rate ${request.rate} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
48
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
49
|
+
await super.move(request);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
35
52
|
await device.commandHandler.executeHandler('LevelControl.move', {
|
|
36
53
|
command: 'move',
|
|
37
54
|
request,
|
|
@@ -46,6 +63,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
46
63
|
async moveWithOnOff(request) {
|
|
47
64
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
48
65
|
device.log.info(`Moving level with mode ${request.moveMode} and rate ${request.rate} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
66
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
67
|
+
await super.moveWithOnOff(request);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
49
70
|
await device.commandHandler.executeHandler('LevelControl.moveWithOnOff', {
|
|
50
71
|
command: 'moveWithOnOff',
|
|
51
72
|
request,
|
|
@@ -60,6 +81,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
60
81
|
async step(request) {
|
|
61
82
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
62
83
|
device.log.info(`Stepping level with mode ${request.stepMode} and size ${request.stepSize} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
84
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
85
|
+
await super.step(request);
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
63
88
|
await device.commandHandler.executeHandler('LevelControl.step', {
|
|
64
89
|
command: 'step',
|
|
65
90
|
request,
|
|
@@ -74,6 +99,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
74
99
|
async stepWithOnOff(request) {
|
|
75
100
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
76
101
|
device.log.info(`Stepping level with mode ${request.stepMode} and size ${request.stepSize} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
102
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
103
|
+
await super.stepWithOnOff(request);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
77
106
|
await device.commandHandler.executeHandler('LevelControl.stepWithOnOff', {
|
|
78
107
|
command: 'stepWithOnOff',
|
|
79
108
|
request,
|
|
@@ -88,6 +117,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
88
117
|
async stop(request) {
|
|
89
118
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
90
119
|
device.log.info(`Stopping level change (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
120
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
121
|
+
await super.stop(request);
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
91
124
|
await device.commandHandler.executeHandler('LevelControl.stop', {
|
|
92
125
|
command: 'stop',
|
|
93
126
|
request,
|
|
@@ -102,6 +135,10 @@ export class MatterbridgeLevelControlServer extends LevelControlServer {
|
|
|
102
135
|
async stopWithOnOff(request) {
|
|
103
136
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
104
137
|
device.log.info(`Stopping level change (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
138
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
139
|
+
await super.stopWithOnOff(request);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
105
142
|
await device.commandHandler.executeHandler('LevelControl.stopWithOnOff', {
|
|
106
143
|
command: 'stopWithOnOff',
|
|
107
144
|
request,
|
|
@@ -5,96 +5,108 @@ export class MatterbridgeOnOffServer extends OnOffServer.with(OnOff.Feature.Ligh
|
|
|
5
5
|
async on() {
|
|
6
6
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
7
7
|
device.log.info(`Switching device on (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
8
|
-
if (
|
|
9
|
-
await
|
|
10
|
-
|
|
11
|
-
request: {},
|
|
12
|
-
cluster: OnOffServer.id,
|
|
13
|
-
attributes: this.state,
|
|
14
|
-
endpoint: this.endpoint,
|
|
15
|
-
context: this.context,
|
|
16
|
-
});
|
|
8
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
9
|
+
await super.on();
|
|
10
|
+
return;
|
|
17
11
|
}
|
|
12
|
+
await device.commandHandler.executeHandler('OnOff.on', {
|
|
13
|
+
command: 'on',
|
|
14
|
+
request: {},
|
|
15
|
+
cluster: OnOffServer.id,
|
|
16
|
+
attributes: this.state,
|
|
17
|
+
endpoint: this.endpoint,
|
|
18
|
+
context: this.context,
|
|
19
|
+
});
|
|
18
20
|
device.log.debug(`MatterbridgeOnOffServer: on called`);
|
|
19
21
|
await super.on();
|
|
20
22
|
}
|
|
21
23
|
async off() {
|
|
22
24
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
23
25
|
device.log.info(`Switching device off (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
24
|
-
if (
|
|
25
|
-
await
|
|
26
|
-
|
|
27
|
-
request: {},
|
|
28
|
-
cluster: OnOffServer.id,
|
|
29
|
-
attributes: this.state,
|
|
30
|
-
endpoint: this.endpoint,
|
|
31
|
-
context: this.context,
|
|
32
|
-
});
|
|
26
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
27
|
+
await super.off();
|
|
28
|
+
return;
|
|
33
29
|
}
|
|
30
|
+
await device.commandHandler.executeHandler('OnOff.off', {
|
|
31
|
+
command: 'off',
|
|
32
|
+
request: {},
|
|
33
|
+
cluster: OnOffServer.id,
|
|
34
|
+
attributes: this.state,
|
|
35
|
+
endpoint: this.endpoint,
|
|
36
|
+
context: this.context,
|
|
37
|
+
});
|
|
34
38
|
device.log.debug(`MatterbridgeOnOffServer: off called`);
|
|
35
39
|
await super.off();
|
|
36
40
|
}
|
|
37
41
|
async toggle() {
|
|
38
42
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
39
43
|
device.log.info(`Toggle device on/off (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
40
|
-
if (
|
|
41
|
-
await
|
|
42
|
-
|
|
43
|
-
request: {},
|
|
44
|
-
cluster: OnOffServer.id,
|
|
45
|
-
attributes: this.state,
|
|
46
|
-
endpoint: this.endpoint,
|
|
47
|
-
context: this.context,
|
|
48
|
-
});
|
|
44
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
45
|
+
await super.toggle();
|
|
46
|
+
return;
|
|
49
47
|
}
|
|
48
|
+
await device.commandHandler.executeHandler('OnOff.toggle', {
|
|
49
|
+
command: 'toggle',
|
|
50
|
+
request: {},
|
|
51
|
+
cluster: OnOffServer.id,
|
|
52
|
+
attributes: this.state,
|
|
53
|
+
endpoint: this.endpoint,
|
|
54
|
+
context: this.context,
|
|
55
|
+
});
|
|
50
56
|
device.log.debug(`MatterbridgeOnOffServer: toggle called`);
|
|
51
57
|
await super.toggle();
|
|
52
58
|
}
|
|
53
59
|
async offWithEffect(request) {
|
|
54
60
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
55
61
|
device.log.info(`Switching device off with effect ${request.effectIdentifier} and variant ${request.effectVariant} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
56
|
-
if (
|
|
57
|
-
await
|
|
58
|
-
|
|
59
|
-
request,
|
|
60
|
-
cluster: OnOffServer.id,
|
|
61
|
-
attributes: this.state,
|
|
62
|
-
endpoint: this.endpoint,
|
|
63
|
-
context: this.context,
|
|
64
|
-
});
|
|
62
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
63
|
+
await super.offWithEffect(request);
|
|
64
|
+
return;
|
|
65
65
|
}
|
|
66
|
+
await device.commandHandler.executeHandler('OnOff.offWithEffect', {
|
|
67
|
+
command: 'offWithEffect',
|
|
68
|
+
request,
|
|
69
|
+
cluster: OnOffServer.id,
|
|
70
|
+
attributes: this.state,
|
|
71
|
+
endpoint: this.endpoint,
|
|
72
|
+
context: this.context,
|
|
73
|
+
});
|
|
66
74
|
device.log.debug(`MatterbridgeOnOffServer: offWithEffect called`);
|
|
67
75
|
await super.offWithEffect(request);
|
|
68
76
|
}
|
|
69
77
|
async onWithRecallGlobalScene() {
|
|
70
78
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
71
79
|
device.log.info(`Switching device on with recall global scene (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
72
|
-
if (
|
|
73
|
-
await
|
|
74
|
-
|
|
75
|
-
request: {},
|
|
76
|
-
cluster: OnOffServer.id,
|
|
77
|
-
attributes: this.state,
|
|
78
|
-
endpoint: this.endpoint,
|
|
79
|
-
context: this.context,
|
|
80
|
-
});
|
|
80
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
81
|
+
await super.onWithRecallGlobalScene();
|
|
82
|
+
return;
|
|
81
83
|
}
|
|
84
|
+
await device.commandHandler.executeHandler('OnOff.onWithRecallGlobalScene', {
|
|
85
|
+
command: 'onWithRecallGlobalScene',
|
|
86
|
+
request: {},
|
|
87
|
+
cluster: OnOffServer.id,
|
|
88
|
+
attributes: this.state,
|
|
89
|
+
endpoint: this.endpoint,
|
|
90
|
+
context: this.context,
|
|
91
|
+
});
|
|
82
92
|
device.log.debug(`MatterbridgeOnOffServer: onWithRecallGlobalScene called`);
|
|
83
93
|
await super.onWithRecallGlobalScene();
|
|
84
94
|
}
|
|
85
95
|
async onWithTimedOff(request) {
|
|
86
96
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
87
97
|
device.log.info(`Switching device on with timed off control ${JSON.stringify(request.onOffControl)}, offWaitTime ${request.offWaitTime} and onTime ${request.onTime} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
88
|
-
if (
|
|
89
|
-
await
|
|
90
|
-
|
|
91
|
-
request,
|
|
92
|
-
cluster: OnOffServer.id,
|
|
93
|
-
attributes: this.state,
|
|
94
|
-
endpoint: this.endpoint,
|
|
95
|
-
context: this.context,
|
|
96
|
-
});
|
|
98
|
+
if (process.env.MATTERBRIDGE_CHIP_TEST) {
|
|
99
|
+
await super.onWithTimedOff(request);
|
|
100
|
+
return;
|
|
97
101
|
}
|
|
102
|
+
await device.commandHandler.executeHandler('OnOff.onWithTimedOff', {
|
|
103
|
+
command: 'onWithTimedOff',
|
|
104
|
+
request,
|
|
105
|
+
cluster: OnOffServer.id,
|
|
106
|
+
attributes: this.state,
|
|
107
|
+
endpoint: this.endpoint,
|
|
108
|
+
context: this.context,
|
|
109
|
+
});
|
|
98
110
|
device.log.debug(`MatterbridgeOnOffServer: onWithTimedOff called`);
|
|
99
111
|
await super.onWithTimedOff(request);
|
|
100
112
|
}
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import type { MaybePromise } from '@matter/general';
|
|
2
2
|
import { OperationalStateServer } from '@matter/node/behaviors/operational-state';
|
|
3
3
|
import { OperationalState } from '@matter/types/clusters/operational-state';
|
|
4
|
-
|
|
4
|
+
declare const MatterbridgeOperationalStateServerBase: import("@matter/node").ClusterBehavior.Type<typeof OperationalStateServer, import("@matter/types").ClusterType.WithEnabledAttributes<import("@matter/types").ClusterType.WithEnabledEvents<OperationalState, "operationCompletion">, never>, import("@matter/types").ClusterType.Concrete, new () => {}, "operationalState">;
|
|
5
|
+
export declare class MatterbridgeOperationalStateServer extends MatterbridgeOperationalStateServerBase {
|
|
6
|
+
protected internal: MatterbridgeOperationalStateServer.Internal;
|
|
5
7
|
initialize(): MaybePromise;
|
|
6
8
|
pause(): Promise<OperationalState.OperationalCommandResponse>;
|
|
7
9
|
stop(): Promise<OperationalState.OperationalCommandResponse>;
|
|
8
10
|
start(): Promise<OperationalState.OperationalCommandResponse>;
|
|
9
11
|
resume(): Promise<OperationalState.OperationalCommandResponse>;
|
|
10
12
|
}
|
|
13
|
+
export declare namespace MatterbridgeOperationalStateServer {
|
|
14
|
+
class Internal extends MatterbridgeOperationalStateServerBase.Internal {
|
|
15
|
+
operationalStateBeforePause: OperationalState.OperationalStateEnum;
|
|
16
|
+
operationStartedAt: number | undefined;
|
|
17
|
+
pausedAccumulatedMs: number;
|
|
18
|
+
pausedSinceMs: number | undefined;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { OperationalStateServer } from '@matter/node/behaviors/operational-state';
|
|
2
2
|
import { OperationalState } from '@matter/types/clusters/operational-state';
|
|
3
3
|
import { MatterbridgeServer } from './matterbridgeServer.js';
|
|
4
|
-
|
|
4
|
+
const MatterbridgeOperationalStateServerBase = OperationalStateServer.enable({ events: { operationCompletion: true } });
|
|
5
|
+
export class MatterbridgeOperationalStateServer extends MatterbridgeOperationalStateServerBase {
|
|
5
6
|
initialize() {
|
|
6
7
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
7
8
|
device.log.debug('MatterbridgeOperationalStateServer initialized: setting operational state to Stopped');
|
|
@@ -20,7 +21,21 @@ export class MatterbridgeOperationalStateServer extends OperationalStateServer {
|
|
|
20
21
|
endpoint: this.endpoint,
|
|
21
22
|
context: this.context,
|
|
22
23
|
});
|
|
24
|
+
if (this.state.operationalState === OperationalState.OperationalStateEnum.Paused) {
|
|
25
|
+
device.log.debug('MatterbridgeOperationalStateServer: pause received while already Paused, taking no further action');
|
|
26
|
+
return {
|
|
27
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Already paused' },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (this.state.operationalState !== OperationalState.OperationalStateEnum.Running) {
|
|
31
|
+
device.log.debug(`MatterbridgeOperationalStateServer: pause received in state ${this.state.operationalState} which is not Pause-compatible`);
|
|
32
|
+
return {
|
|
33
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.CommandInvalidInState, errorStateDetails: 'Not Pause-compatible in the current operational state' },
|
|
34
|
+
};
|
|
35
|
+
}
|
|
23
36
|
device.log.debug('MatterbridgeOperationalStateServer: pause called setting operational state to Paused');
|
|
37
|
+
this.internal.operationalStateBeforePause = this.state.operationalState;
|
|
38
|
+
this.internal.pausedSinceMs = Date.now();
|
|
24
39
|
this.state.operationalState = OperationalState.OperationalStateEnum.Paused;
|
|
25
40
|
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
26
41
|
return {
|
|
@@ -38,7 +53,22 @@ export class MatterbridgeOperationalStateServer extends OperationalStateServer {
|
|
|
38
53
|
endpoint: this.endpoint,
|
|
39
54
|
context: this.context,
|
|
40
55
|
});
|
|
56
|
+
if (this.state.operationalState === OperationalState.OperationalStateEnum.Stopped) {
|
|
57
|
+
device.log.debug('MatterbridgeOperationalStateServer: stop received while already Stopped, taking no further action');
|
|
58
|
+
return {
|
|
59
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Already stopped' },
|
|
60
|
+
};
|
|
61
|
+
}
|
|
41
62
|
device.log.debug('MatterbridgeOperationalStateServer: stop called setting operational state to Stopped');
|
|
63
|
+
if (this.internal.pausedSinceMs !== undefined) {
|
|
64
|
+
this.internal.pausedAccumulatedMs += Date.now() - this.internal.pausedSinceMs;
|
|
65
|
+
this.internal.pausedSinceMs = undefined;
|
|
66
|
+
}
|
|
67
|
+
const totalOperationalTime = this.internal.operationStartedAt === undefined ? null : Math.round((Date.now() - this.internal.operationStartedAt) / 1000);
|
|
68
|
+
const pausedTime = this.internal.operationStartedAt === undefined ? null : Math.round(this.internal.pausedAccumulatedMs / 1000);
|
|
69
|
+
this.internal.operationStartedAt = undefined;
|
|
70
|
+
this.internal.pausedAccumulatedMs = 0;
|
|
71
|
+
this.events.operationCompletion.emit({ completionErrorCode: OperationalState.ErrorState.NoError, totalOperationalTime, pausedTime }, this.context);
|
|
42
72
|
this.state.operationalState = OperationalState.OperationalStateEnum.Stopped;
|
|
43
73
|
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
44
74
|
return {
|
|
@@ -56,7 +86,27 @@ export class MatterbridgeOperationalStateServer extends OperationalStateServer {
|
|
|
56
86
|
endpoint: this.endpoint,
|
|
57
87
|
context: this.context,
|
|
58
88
|
});
|
|
89
|
+
if (this.state.operationalState === OperationalState.OperationalStateEnum.Running) {
|
|
90
|
+
device.log.debug('MatterbridgeOperationalStateServer: start received while already Running, taking no further action');
|
|
91
|
+
return {
|
|
92
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Already running' },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (this.state.operationalState === OperationalState.OperationalStateEnum.Error) {
|
|
96
|
+
device.log.debug('MatterbridgeOperationalStateServer: start received while in the Error state, unable to honor');
|
|
97
|
+
return {
|
|
98
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.UnableToStartOrResume, errorStateDetails: 'Unable to start while in the Error state' },
|
|
99
|
+
};
|
|
100
|
+
}
|
|
59
101
|
device.log.debug('MatterbridgeOperationalStateServer: start called setting operational state to Running');
|
|
102
|
+
if (this.state.operationalState === OperationalState.OperationalStateEnum.Paused && this.internal.pausedSinceMs !== undefined) {
|
|
103
|
+
this.internal.pausedAccumulatedMs += Date.now() - this.internal.pausedSinceMs;
|
|
104
|
+
this.internal.pausedSinceMs = undefined;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
this.internal.operationStartedAt = Date.now();
|
|
108
|
+
this.internal.pausedAccumulatedMs = 0;
|
|
109
|
+
}
|
|
60
110
|
this.state.operationalState = OperationalState.OperationalStateEnum.Running;
|
|
61
111
|
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
62
112
|
return {
|
|
@@ -74,11 +124,36 @@ export class MatterbridgeOperationalStateServer extends OperationalStateServer {
|
|
|
74
124
|
endpoint: this.endpoint,
|
|
75
125
|
context: this.context,
|
|
76
126
|
});
|
|
127
|
+
if (this.state.operationalState === OperationalState.OperationalStateEnum.Running) {
|
|
128
|
+
device.log.debug('MatterbridgeOperationalStateServer: resume received while already Running, taking no further action');
|
|
129
|
+
return {
|
|
130
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Already running' },
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (this.state.operationalState !== OperationalState.OperationalStateEnum.Paused) {
|
|
134
|
+
device.log.debug(`MatterbridgeOperationalStateServer: resume received in state ${this.state.operationalState} which is not Resume-compatible`);
|
|
135
|
+
return {
|
|
136
|
+
commandResponseState: { errorStateId: OperationalState.ErrorState.CommandInvalidInState, errorStateDetails: 'Not Resume-compatible in the current operational state' },
|
|
137
|
+
};
|
|
138
|
+
}
|
|
77
139
|
device.log.debug('MatterbridgeOperationalStateServer: resume called setting operational state to Running');
|
|
78
|
-
this.
|
|
140
|
+
if (this.internal.pausedSinceMs !== undefined) {
|
|
141
|
+
this.internal.pausedAccumulatedMs += Date.now() - this.internal.pausedSinceMs;
|
|
142
|
+
this.internal.pausedSinceMs = undefined;
|
|
143
|
+
}
|
|
144
|
+
this.state.operationalState = this.internal.operationalStateBeforePause;
|
|
79
145
|
this.state.operationalError = { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' };
|
|
80
146
|
return {
|
|
81
147
|
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
82
148
|
};
|
|
83
149
|
}
|
|
84
150
|
}
|
|
151
|
+
(function (MatterbridgeOperationalStateServer) {
|
|
152
|
+
class Internal extends MatterbridgeOperationalStateServerBase.Internal {
|
|
153
|
+
operationalStateBeforePause = OperationalState.OperationalStateEnum.Running;
|
|
154
|
+
operationStartedAt;
|
|
155
|
+
pausedAccumulatedMs = 0;
|
|
156
|
+
pausedSinceMs;
|
|
157
|
+
}
|
|
158
|
+
MatterbridgeOperationalStateServer.Internal = Internal;
|
|
159
|
+
})(MatterbridgeOperationalStateServer || (MatterbridgeOperationalStateServer = {}));
|
|
@@ -1,11 +1,29 @@
|
|
|
1
|
+
import { type MaybePromise, type Timer } from '@matter/general';
|
|
1
2
|
import { ValveConfigurationAndControlServer } from '@matter/node/behaviors/valve-configuration-and-control';
|
|
2
3
|
import { ValveConfigurationAndControl } from '@matter/types/clusters/valve-configuration-and-control';
|
|
3
|
-
declare const
|
|
4
|
+
declare const MatterbridgeValveConfigurationAndControlServerBase: import("@matter/node").ClusterBehavior.Type<typeof ValveConfigurationAndControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<ValveConfigurationAndControl, {
|
|
4
5
|
level: true;
|
|
5
6
|
timeSync: false;
|
|
6
7
|
}>, import("@matter/types").ClusterType.Concrete, new () => {}, "valveConfigurationAndControl">;
|
|
7
|
-
export declare class MatterbridgeValveConfigurationAndControlServer extends
|
|
8
|
+
export declare class MatterbridgeValveConfigurationAndControlServer extends MatterbridgeValveConfigurationAndControlServerBase {
|
|
9
|
+
#private;
|
|
10
|
+
readonly state: MatterbridgeValveConfigurationAndControlServer.State;
|
|
11
|
+
protected internal: MatterbridgeValveConfigurationAndControlServer.Internal;
|
|
12
|
+
initialize(): MaybePromise;
|
|
8
13
|
open(request: ValveConfigurationAndControl.OpenRequest): Promise<void>;
|
|
9
14
|
close(): Promise<void>;
|
|
15
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare namespace MatterbridgeValveConfigurationAndControlServer {
|
|
18
|
+
class Internal extends MatterbridgeValveConfigurationAndControlServerBase.Internal {
|
|
19
|
+
movementTimer?: Timer;
|
|
20
|
+
movementFinalState: ValveConfigurationAndControl.ValveState;
|
|
21
|
+
movementFinalLevel: number;
|
|
22
|
+
autoCloseTimer?: Timer;
|
|
23
|
+
}
|
|
24
|
+
class State extends MatterbridgeValveConfigurationAndControlServerBase.State {
|
|
25
|
+
movementDuration: number;
|
|
26
|
+
autoClose: boolean;
|
|
27
|
+
}
|
|
10
28
|
}
|
|
11
29
|
export {};
|