@matterbridge/core 3.6.2-dev-20260316-21bfabd → 3.7.0-dev-20260318-c9f4120
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/devices/basicVideoPlayer.d.ts +8 -9
- package/dist/devices/basicVideoPlayer.js +56 -16
- package/dist/devices/closure.d.ts +3 -4
- package/dist/devices/closure.js +15 -5
- package/dist/devices/closurePanel.d.ts +2 -3
- package/dist/devices/closurePanel.js +14 -4
- package/dist/devices/dishwasher.d.ts +1 -2
- package/dist/devices/dishwasher.js +7 -2
- package/dist/devices/evse.d.ts +3 -3
- package/dist/devices/evse.js +21 -6
- package/dist/devices/laundryWasher.d.ts +1 -2
- package/dist/devices/laundryWasher.js +7 -2
- package/dist/devices/microwaveOven.d.ts +1 -2
- package/dist/devices/microwaveOven.js +13 -3
- package/dist/devices/roboticVacuumCleaner.d.ts +5 -6
- package/dist/devices/roboticVacuumCleaner.js +35 -10
- package/dist/devices/soilSensor.d.ts +1 -1
- package/dist/devices/soilSensor.js +1 -1
- package/dist/devices/speaker.d.ts +1 -1
- package/dist/devices/speaker.js +2 -2
- package/dist/devices/temperatureControl.d.ts +2 -3
- package/dist/devices/temperatureControl.js +14 -4
- package/dist/devices/waterHeater.d.ts +3 -4
- package/dist/devices/waterHeater.js +21 -6
- package/dist/export.d.ts +1 -0
- package/dist/export.js +1 -0
- package/dist/matterbridgeBehaviorsServer.d.ts +55 -53
- package/dist/matterbridgeBehaviorsServer.js +354 -139
- package/dist/matterbridgeEndpoint.d.ts +21 -11
- package/dist/matterbridgeEndpoint.js +11 -6
- package/dist/matterbridgeEndpointCommandHandler.d.ts +632 -0
- package/dist/matterbridgeEndpointCommandHandler.js +31 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +3 -2
- package/dist/matterbridgeEndpointHelpers.js +35 -5
- package/dist/matterbridgeEndpointTypes.d.ts +0 -83
- package/package.json +5 -5
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { KeypadInputServer } from '@matter/node/behaviors/keypad-input';
|
|
3
2
|
import { MediaPlaybackServer } from '@matter/node/behaviors/media-playback';
|
|
4
3
|
import { KeypadInput } from '@matter/types/clusters/keypad-input';
|
|
@@ -16,15 +15,15 @@ export declare class BasicVideoPlayer extends MatterbridgeEndpoint {
|
|
|
16
15
|
export declare class MatterbridgeMediaPlaybackServer extends MediaPlaybackServer {
|
|
17
16
|
initialize(): void;
|
|
18
17
|
protected handleOnOffChange(_onOff: boolean): void;
|
|
19
|
-
play():
|
|
20
|
-
pause():
|
|
21
|
-
stop():
|
|
22
|
-
previous():
|
|
23
|
-
next():
|
|
24
|
-
skipForward():
|
|
25
|
-
skipBackward():
|
|
18
|
+
play(): Promise<MediaPlayback.PlaybackResponse>;
|
|
19
|
+
pause(): Promise<MediaPlayback.PlaybackResponse>;
|
|
20
|
+
stop(): Promise<MediaPlayback.PlaybackResponse>;
|
|
21
|
+
previous(): Promise<MediaPlayback.PlaybackResponse>;
|
|
22
|
+
next(): Promise<MediaPlayback.PlaybackResponse>;
|
|
23
|
+
skipForward(request: MediaPlayback.SkipForwardRequest): Promise<MediaPlayback.PlaybackResponse>;
|
|
24
|
+
skipBackward(request: MediaPlayback.SkipBackwardRequest): Promise<MediaPlayback.PlaybackResponse>;
|
|
26
25
|
}
|
|
27
26
|
export declare class MatterbridgeKeypadInputServer extends KeypadInputServer {
|
|
28
27
|
initialize(): void;
|
|
29
|
-
sendKey(request: KeypadInput.SendKeyRequest):
|
|
28
|
+
sendKey(request: KeypadInput.SendKeyRequest): Promise<KeypadInput.SendKeyResponse>;
|
|
30
29
|
}
|
|
@@ -37,52 +37,87 @@ export class MatterbridgeMediaPlaybackServer extends MediaPlaybackServer {
|
|
|
37
37
|
handleOnOffChange(_onOff) {
|
|
38
38
|
this.state.currentState = MediaPlayback.PlaybackState.NotPlaying;
|
|
39
39
|
}
|
|
40
|
-
play() {
|
|
40
|
+
async play() {
|
|
41
41
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
42
42
|
device.log.info(`Play (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
43
|
-
device.commandHandler.executeHandler('play', {
|
|
43
|
+
await device.commandHandler.executeHandler('MediaPlayback.play', {
|
|
44
|
+
request: {},
|
|
45
|
+
cluster: MediaPlaybackServer.id,
|
|
46
|
+
attributes: this.state,
|
|
47
|
+
endpoint: this.endpoint,
|
|
48
|
+
});
|
|
44
49
|
if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff === true)
|
|
45
50
|
this.state.currentState = MediaPlayback.PlaybackState.Playing;
|
|
46
51
|
return { status: MediaPlayback.Status.Success };
|
|
47
52
|
}
|
|
48
|
-
pause() {
|
|
53
|
+
async pause() {
|
|
49
54
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
50
55
|
device.log.info(`Pause (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
51
|
-
device.commandHandler.executeHandler('pause', {
|
|
56
|
+
await device.commandHandler.executeHandler('MediaPlayback.pause', {
|
|
57
|
+
request: {},
|
|
58
|
+
cluster: MediaPlaybackServer.id,
|
|
59
|
+
attributes: this.state,
|
|
60
|
+
endpoint: this.endpoint,
|
|
61
|
+
});
|
|
52
62
|
if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff === true)
|
|
53
63
|
this.state.currentState = MediaPlayback.PlaybackState.Paused;
|
|
54
64
|
return { status: MediaPlayback.Status.Success };
|
|
55
65
|
}
|
|
56
|
-
stop() {
|
|
66
|
+
async stop() {
|
|
57
67
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
58
68
|
device.log.info(`Stop (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
59
|
-
device.commandHandler.executeHandler('stop', {
|
|
69
|
+
await device.commandHandler.executeHandler('MediaPlayback.stop', {
|
|
70
|
+
request: {},
|
|
71
|
+
cluster: MediaPlaybackServer.id,
|
|
72
|
+
attributes: this.state,
|
|
73
|
+
endpoint: this.endpoint,
|
|
74
|
+
});
|
|
60
75
|
if (this.endpoint.stateOf(MatterbridgeOnOffServer).onOff === true)
|
|
61
76
|
this.state.currentState = MediaPlayback.PlaybackState.NotPlaying;
|
|
62
77
|
return { status: MediaPlayback.Status.Success };
|
|
63
78
|
}
|
|
64
|
-
previous() {
|
|
79
|
+
async previous() {
|
|
65
80
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
66
81
|
device.log.info(`Previous (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
67
|
-
device.commandHandler.executeHandler('previous', {
|
|
82
|
+
await device.commandHandler.executeHandler('MediaPlayback.previous', {
|
|
83
|
+
request: {},
|
|
84
|
+
cluster: MediaPlaybackServer.id,
|
|
85
|
+
attributes: this.state,
|
|
86
|
+
endpoint: this.endpoint,
|
|
87
|
+
});
|
|
68
88
|
return { status: MediaPlayback.Status.Success };
|
|
69
89
|
}
|
|
70
|
-
next() {
|
|
90
|
+
async next() {
|
|
71
91
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
72
92
|
device.log.info(`Next (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
73
|
-
device.commandHandler.executeHandler('next', {
|
|
93
|
+
await device.commandHandler.executeHandler('MediaPlayback.next', {
|
|
94
|
+
request: {},
|
|
95
|
+
cluster: MediaPlaybackServer.id,
|
|
96
|
+
attributes: this.state,
|
|
97
|
+
endpoint: this.endpoint,
|
|
98
|
+
});
|
|
74
99
|
return { status: MediaPlayback.Status.Success };
|
|
75
100
|
}
|
|
76
|
-
skipForward() {
|
|
101
|
+
async skipForward(request) {
|
|
77
102
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
78
103
|
device.log.info(`SkipForward (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
79
|
-
device.commandHandler.executeHandler('skipForward', {
|
|
104
|
+
await device.commandHandler.executeHandler('MediaPlayback.skipForward', {
|
|
105
|
+
request,
|
|
106
|
+
cluster: MediaPlaybackServer.id,
|
|
107
|
+
attributes: this.state,
|
|
108
|
+
endpoint: this.endpoint,
|
|
109
|
+
});
|
|
80
110
|
return { status: MediaPlayback.Status.Success };
|
|
81
111
|
}
|
|
82
|
-
skipBackward() {
|
|
112
|
+
async skipBackward(request) {
|
|
83
113
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
84
114
|
device.log.info(`SkipBackward (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
85
|
-
device.commandHandler.executeHandler('skipBackward', {
|
|
115
|
+
await device.commandHandler.executeHandler('MediaPlayback.skipBackward', {
|
|
116
|
+
request,
|
|
117
|
+
cluster: MediaPlaybackServer.id,
|
|
118
|
+
attributes: this.state,
|
|
119
|
+
endpoint: this.endpoint,
|
|
120
|
+
});
|
|
86
121
|
return { status: MediaPlayback.Status.Success };
|
|
87
122
|
}
|
|
88
123
|
}
|
|
@@ -91,10 +126,15 @@ export class MatterbridgeKeypadInputServer extends KeypadInputServer {
|
|
|
91
126
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
92
127
|
device.log.info(`MatterbridgeKeypadInputServer initialized`);
|
|
93
128
|
}
|
|
94
|
-
sendKey(request) {
|
|
129
|
+
async sendKey(request) {
|
|
95
130
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
96
131
|
device.log.info(`SendKey keyCode ${request.keyCode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
97
|
-
device.commandHandler.executeHandler('sendKey', {
|
|
132
|
+
await device.commandHandler.executeHandler('KeypadInput.sendKey', {
|
|
133
|
+
request,
|
|
134
|
+
cluster: KeypadInputServer.id,
|
|
135
|
+
attributes: this.state,
|
|
136
|
+
endpoint: this.endpoint,
|
|
137
|
+
});
|
|
98
138
|
return { status: KeypadInput.Status.Success };
|
|
99
139
|
}
|
|
100
140
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { ClusterBehavior } from '@matter/node';
|
|
3
2
|
import { ClusterType } from '@matter/types';
|
|
4
3
|
import { ClosureControl } from '../clusters/closure-control.js';
|
|
@@ -291,14 +290,14 @@ declare const ClosureControlServer_base: ClusterBehavior.Type<import("@matter/ty
|
|
|
291
290
|
}>;
|
|
292
291
|
export declare class ClosureControlServer extends ClosureControlServer_base {
|
|
293
292
|
state: ClosureControlServer.State;
|
|
294
|
-
moveTo: (request: ClosureControl.MoveToRequest) =>
|
|
295
|
-
stop: () =>
|
|
293
|
+
moveTo: (request: ClosureControl.MoveToRequest) => Promise<void>;
|
|
294
|
+
stop: () => Promise<void>;
|
|
296
295
|
}
|
|
297
296
|
export interface ClosureOptions {
|
|
298
297
|
mainState?: ClosureControl.MainState;
|
|
299
298
|
}
|
|
300
299
|
export declare class Closure extends MatterbridgeEndpoint {
|
|
301
300
|
constructor(name: string, serial: string, options?: ClosureOptions);
|
|
302
|
-
getMainState(): ClosureControl.MainState;
|
|
301
|
+
getMainState(): ClosureControl.MainState | undefined;
|
|
303
302
|
}
|
|
304
303
|
export {};
|
package/dist/devices/closure.js
CHANGED
|
@@ -12,10 +12,15 @@ const ClosureControlSchema = ClusterElement({
|
|
|
12
12
|
}, AttributeElement({ id: 0xfffd, name: 'ClusterRevision', type: 'ClusterRevision', conformance: 'M', default: ClosureControl.Base.revision }), AttributeElement({ id: 0xfffc, name: 'FeatureMap', type: 'FeatureMap', conformance: 'M' }, FieldElement({ name: 'POS', constraint: '0', title: 'Positioning' }), FieldElement({ name: 'ML', constraint: '1', title: 'MotionLatching' }), FieldElement({ name: 'INS', constraint: '2', title: 'Instantaneous' }), FieldElement({ name: 'SPD', constraint: '3', title: 'Speed' }), FieldElement({ name: 'VNT', constraint: '4', title: 'Ventilation' }), FieldElement({ name: 'PED', constraint: '5', title: 'Pedestrian' }), FieldElement({ name: 'CAL', constraint: '6', title: 'Calibration' }), FieldElement({ name: 'PRT', constraint: '7', title: 'Protection' }), FieldElement({ name: 'MAN', constraint: '8', title: 'ManuallyOperable' })), AttributeElement({ name: 'CountdownTime', id: 0x0000, type: 'uint32', conformance: 'POS', default: null, quality: 'X' }), AttributeElement({ name: 'MainState', id: 0x0001, type: 'MainStateEnum', conformance: 'M', constraint: 'desc' }), AttributeElement({ name: 'CurrentErrorList', id: 0x0002, type: 'list', conformance: 'M', default: [] }, FieldElement({ name: 'entry', type: 'ClosureErrorEnum' })), AttributeElement({ name: 'OverallCurrentState', id: 0x0003, type: 'OverallCurrentStateStruct', conformance: 'M', default: null, quality: 'X' }), AttributeElement({ name: 'OverallTargetState', id: 0x0004, type: 'OverallTargetStateStruct', conformance: 'M', default: null, quality: 'X' }), CommandElement({ name: 'Stop', id: 0x0000, conformance: 'M', direction: 'request', response: 'status' }), CommandElement({ name: 'MoveTo', id: 0x0001, conformance: 'M', direction: 'request', response: 'status' }, FieldElement({ name: 'Position', id: 0, type: 'TargetPositionEnum', conformance: 'O' }), FieldElement({ name: 'Latch', id: 1, type: 'bool', conformance: 'O' }), FieldElement({ name: 'Speed', id: 2, type: 'ThreeLevelAutoEnum', conformance: 'O' })), EventElement({ name: 'OperationalError', id: 0x0000, conformance: 'M', priority: 'critical' }, FieldElement({ name: 'ErrorState', id: 0, type: 'list', conformance: 'M', constraint: 'max 10' }, FieldElement({ name: 'entry', type: 'ClosureErrorEnum' }))), EventElement({ name: 'MovementCompleted', id: 0x0001, conformance: 'M', priority: 'info' }), EventElement({ name: 'SecureStateChanged', id: 0x0003, conformance: 'M', priority: 'info' }, FieldElement({ name: 'SecureValue', id: 0, type: 'bool', conformance: 'M' })), DatatypeElement({ name: 'ClosureErrorEnum', type: 'enum8' }, FieldElement({ name: 'PhysicallyBlocked', id: 0, conformance: 'M' }), FieldElement({ name: 'BlockedBySensor', id: 1, conformance: 'M' }), FieldElement({ name: 'TemperatureLimited', id: 2, conformance: 'M' }), FieldElement({ name: 'MaintenanceRequired', id: 3, conformance: 'M' }), FieldElement({ name: 'InternalInterference', id: 4, conformance: 'M' })), DatatypeElement({ name: 'CurrentPositionEnum', type: 'enum8' }, FieldElement({ name: 'FullyClosed', id: 0, conformance: 'M' }), FieldElement({ name: 'FullyOpened', id: 1, conformance: 'M' }), FieldElement({ name: 'PartiallyOpened', id: 2, conformance: 'M' }), FieldElement({ name: 'OpenedForPedestrian', id: 3, conformance: 'M' }), FieldElement({ name: 'OpenedForVentilation', id: 4, conformance: 'M' }), FieldElement({ name: 'OpenedAtSignature', id: 5, conformance: 'M' })), DatatypeElement({ name: 'MainStateEnum', type: 'enum8' }, FieldElement({ name: 'Stopped', id: 0, conformance: 'M' }), FieldElement({ name: 'Moving', id: 1, conformance: 'M' }), FieldElement({ name: 'WaitingForMotion', id: 2, conformance: 'M' }), FieldElement({ name: 'Error', id: 3, conformance: 'M' }), FieldElement({ name: 'Calibrating', id: 4, conformance: 'M' }), FieldElement({ name: 'Protected', id: 5, conformance: 'M' }), FieldElement({ name: 'Disengaged', id: 6, conformance: 'M' }), FieldElement({ name: 'SetupRequired', id: 7, conformance: 'M' })), DatatypeElement({ name: 'TargetPositionEnum', type: 'enum8' }, FieldElement({ name: 'MoveToFullyClosed', id: 0, conformance: 'M' }), FieldElement({ name: 'MoveToFullyOpen', id: 1, conformance: 'M' }), FieldElement({ name: 'MoveToPedestrianPosition', id: 2, conformance: 'M' }), FieldElement({ name: 'MoveToVentilationPosition', id: 3, conformance: 'M' }), FieldElement({ name: 'MoveToSignaturePosition', id: 4, conformance: 'M' })), DatatypeElement({ name: 'OverallCurrentStateStruct', type: 'struct' }, FieldElement({ name: 'Position', id: 0, type: 'CurrentPositionEnum', conformance: 'O', default: null, quality: 'X' }), FieldElement({ name: 'Latch', id: 1, type: 'bool', conformance: 'O', default: null, quality: 'X' }), FieldElement({ name: 'Speed', id: 2, type: 'ThreeLevelAutoEnum', conformance: 'O' }), FieldElement({ name: 'SecureState', id: 3, type: 'bool', conformance: 'O', default: null, quality: 'X' })), DatatypeElement({ name: 'OverallTargetStateStruct', type: 'struct' }, FieldElement({ name: 'Position', id: 0, type: 'TargetPositionEnum', conformance: 'O', default: null, quality: 'X' }), FieldElement({ name: 'Latch', id: 1, type: 'bool', conformance: 'O', default: null, quality: 'X' }), FieldElement({ name: 'Speed', id: 2, type: 'ThreeLevelAutoEnum', conformance: 'O' })));
|
|
13
13
|
const ClosureControlBehavior = ClusterBehavior.for(ClusterType(ClosureControl.Base), new ClusterModel(ClosureControlSchema));
|
|
14
14
|
export class ClosureControlServer extends ClosureControlBehavior.with(ClosureControl.Feature.Positioning) {
|
|
15
|
-
moveTo = (request) => {
|
|
15
|
+
moveTo = async (request) => {
|
|
16
16
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
17
17
|
device.log.info(`MoveTo (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
18
|
-
device.commandHandler.executeHandler('moveTo', {
|
|
18
|
+
await device.commandHandler.executeHandler('ClosureControl.moveTo', {
|
|
19
|
+
request,
|
|
20
|
+
cluster: ClosureControlServer.id,
|
|
21
|
+
attributes: this.state,
|
|
22
|
+
endpoint: this.endpoint,
|
|
23
|
+
});
|
|
19
24
|
const previousTarget = this.state.overallTargetState ?? {};
|
|
20
25
|
const nextTarget = {
|
|
21
26
|
...previousTarget,
|
|
@@ -26,10 +31,15 @@ export class ClosureControlServer extends ClosureControlBehavior.with(ClosureCon
|
|
|
26
31
|
this.state.overallTargetState = nextTarget;
|
|
27
32
|
this.state.mainState = ClosureControl.MainState.Moving;
|
|
28
33
|
};
|
|
29
|
-
stop = () => {
|
|
34
|
+
stop = async () => {
|
|
30
35
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
31
36
|
device.log.info(`Stop (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
32
|
-
device.commandHandler.executeHandler('stop', {
|
|
37
|
+
await device.commandHandler.executeHandler('ClosureControl.stop', {
|
|
38
|
+
request: {},
|
|
39
|
+
cluster: ClosureControlServer.id,
|
|
40
|
+
attributes: this.state,
|
|
41
|
+
endpoint: this.endpoint,
|
|
42
|
+
});
|
|
33
43
|
this.state.mainState = ClosureControl.MainState.Stopped;
|
|
34
44
|
};
|
|
35
45
|
}
|
|
@@ -47,6 +57,6 @@ export class Closure extends MatterbridgeEndpoint {
|
|
|
47
57
|
});
|
|
48
58
|
}
|
|
49
59
|
getMainState() {
|
|
50
|
-
return this.getAttribute(
|
|
60
|
+
return this.getAttribute(ClosureControlServer, 'mainState');
|
|
51
61
|
}
|
|
52
62
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { ClusterBehavior } from '@matter/node';
|
|
3
2
|
import { ClusterType } from '@matter/types';
|
|
4
3
|
import { ClosureDimension } from '../clusters/closure-dimension.js';
|
|
@@ -370,8 +369,8 @@ declare const ClosureDimensionServer_base: ClusterBehavior.Type<import("@matter/
|
|
|
370
369
|
}>;
|
|
371
370
|
export declare class ClosureDimensionServer extends ClosureDimensionServer_base {
|
|
372
371
|
state: ClosureDimensionServer.State;
|
|
373
|
-
setTarget: (request: ClosureDimension.SetTargetRequest) =>
|
|
374
|
-
step: (request: ClosureDimension.StepRequest) =>
|
|
372
|
+
setTarget: (request: ClosureDimension.SetTargetRequest) => Promise<void>;
|
|
373
|
+
step: (request: ClosureDimension.StepRequest) => Promise<void>;
|
|
375
374
|
}
|
|
376
375
|
export interface ClosurePanelOptions {
|
|
377
376
|
resolution?: number;
|
|
@@ -12,10 +12,15 @@ const ClosureDimensionSchema = ClusterElement({
|
|
|
12
12
|
}, AttributeElement({ id: 0xfffd, name: 'ClusterRevision', type: 'ClusterRevision', conformance: 'M', default: ClosureDimension.Base.revision }), AttributeElement({ id: 0xfffc, name: 'FeatureMap', type: 'FeatureMap', conformance: 'M' }, FieldElement({ name: 'POS', constraint: '0', title: 'Positioning' }), FieldElement({ name: 'ML', constraint: '1', title: 'MotionLatching' }), FieldElement({ name: 'UNI', constraint: '2', title: 'Unit' }), FieldElement({ name: 'LIM', constraint: '3', title: 'Limitation' }), FieldElement({ name: 'SPD', constraint: '4', title: 'Speed' }), FieldElement({ name: 'TRN', constraint: '5', title: 'Translation' }), FieldElement({ name: 'ROT', constraint: '6', title: 'Rotation' }), FieldElement({ name: 'MOD', constraint: '7', title: 'Modulation' })), AttributeElement({ name: 'CurrentState', id: 0x0000, type: 'DimensionStateStruct', conformance: 'M', default: null, quality: 'X' }), AttributeElement({ name: 'TargetState', id: 0x0001, type: 'DimensionStateStruct', conformance: 'M', default: null, quality: 'X' }), AttributeElement({ name: 'Resolution', id: 0x0002, type: 'percent100ths', conformance: 'POS', default: 1 }), AttributeElement({ name: 'StepValue', id: 0x0003, type: 'percent100ths', conformance: 'POS', default: 1 }), CommandElement({ name: 'SetTarget', id: 0x0000, conformance: 'M', direction: 'request', response: 'status' }, FieldElement({ name: 'Position', id: 0, type: 'percent100ths', conformance: 'O' }), FieldElement({ name: 'Latch', id: 1, type: 'bool', conformance: 'O' }), FieldElement({ name: 'Speed', id: 2, type: 'ThreeLevelAutoEnum', conformance: 'O' })), CommandElement({ name: 'Step', id: 0x0001, conformance: 'POS', direction: 'request', response: 'status' }, FieldElement({ name: 'Direction', id: 0, type: 'StepDirectionEnum', conformance: 'M' }), FieldElement({ name: 'NumberOfSteps', id: 1, type: 'uint16', conformance: 'M', constraint: { min: 1 } }), FieldElement({ name: 'Speed', id: 2, type: 'ThreeLevelAutoEnum', conformance: 'O' })), DatatypeElement({ name: 'StepDirectionEnum', type: 'enum8' }, FieldElement({ name: 'Decrease', id: 0, conformance: 'M' }), FieldElement({ name: 'Increase', id: 1, conformance: 'M' })), DatatypeElement({ name: 'DimensionStateStruct', type: 'struct' }, FieldElement({ name: 'Position', id: 0, type: 'percent100ths', conformance: 'O', default: null, quality: 'X' }), FieldElement({ name: 'Latch', id: 1, type: 'bool', conformance: 'O', default: null, quality: 'X' }), FieldElement({ name: 'Speed', id: 2, type: 'ThreeLevelAutoEnum', conformance: 'O' })));
|
|
13
13
|
const ClosureDimensionBehavior = ClusterBehavior.for(ClusterType(ClosureDimension.Base), new ClusterModel(ClosureDimensionSchema));
|
|
14
14
|
export class ClosureDimensionServer extends ClosureDimensionBehavior.with(ClosureDimension.Feature.Positioning) {
|
|
15
|
-
setTarget = (request) => {
|
|
15
|
+
setTarget = async (request) => {
|
|
16
16
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
17
17
|
device.log.info(`SetTarget (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
18
|
-
device.commandHandler.executeHandler('setTarget', {
|
|
18
|
+
await device.commandHandler.executeHandler('ClosureDimension.setTarget', {
|
|
19
|
+
request,
|
|
20
|
+
cluster: ClosureDimensionServer.id,
|
|
21
|
+
attributes: this.state,
|
|
22
|
+
endpoint: this.endpoint,
|
|
23
|
+
});
|
|
19
24
|
const previousTarget = this.state.targetState ?? {};
|
|
20
25
|
const nextTarget = {
|
|
21
26
|
...previousTarget,
|
|
@@ -25,10 +30,15 @@ export class ClosureDimensionServer extends ClosureDimensionBehavior.with(Closur
|
|
|
25
30
|
};
|
|
26
31
|
this.state.targetState = nextTarget;
|
|
27
32
|
};
|
|
28
|
-
step = (request) => {
|
|
33
|
+
step = async (request) => {
|
|
29
34
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
30
35
|
device.log.info(`Step (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
31
|
-
device.commandHandler.executeHandler('step', {
|
|
36
|
+
await device.commandHandler.executeHandler('ClosureDimension.step', {
|
|
37
|
+
request,
|
|
38
|
+
cluster: ClosureDimensionServer.id,
|
|
39
|
+
attributes: this.state,
|
|
40
|
+
endpoint: this.endpoint,
|
|
41
|
+
});
|
|
32
42
|
const stepValue = this.state.stepValue;
|
|
33
43
|
const numberOfSteps = request.numberOfSteps;
|
|
34
44
|
const delta = stepValue * numberOfSteps;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { DishwasherModeServer } from '@matter/node/behaviors/dishwasher-mode';
|
|
3
2
|
import { DishwasherMode } from '@matter/types/clusters/dishwasher-mode';
|
|
4
3
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
@@ -12,5 +11,5 @@ export declare class Dishwasher extends MatterbridgeEndpoint {
|
|
|
12
11
|
export declare class MatterbridgeDishwasherModeServer extends DishwasherModeServer {
|
|
13
12
|
initialize(): void;
|
|
14
13
|
protected handleOnOffChange(onOff: boolean): void;
|
|
15
|
-
changeToMode(request: ModeBase.ChangeToModeRequest):
|
|
14
|
+
changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
|
|
16
15
|
}
|
|
@@ -55,10 +55,15 @@ export class MatterbridgeDishwasherModeServer extends DishwasherModeServer {
|
|
|
55
55
|
this.state.currentMode = 2;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
changeToMode(request) {
|
|
58
|
+
async changeToMode(request) {
|
|
59
59
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
60
60
|
device.log.info(`ChangeToMode (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
61
|
-
device.commandHandler.executeHandler('changeToMode', {
|
|
61
|
+
await device.commandHandler.executeHandler('DishwasherMode.changeToMode', {
|
|
62
|
+
request,
|
|
63
|
+
cluster: DishwasherModeServer.id,
|
|
64
|
+
attributes: this.state,
|
|
65
|
+
endpoint: this.endpoint,
|
|
66
|
+
});
|
|
62
67
|
const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
|
|
63
68
|
if (supportedMode) {
|
|
64
69
|
device.log.info(`DishwasherModeServer: changeToMode called with mode ${supportedMode.mode} => ${supportedMode.label}`);
|
package/dist/devices/evse.d.ts
CHANGED
|
@@ -12,13 +12,13 @@ export declare class Evse extends MatterbridgeEndpoint {
|
|
|
12
12
|
}
|
|
13
13
|
declare const MatterbridgeEnergyEvseServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<EnergyEvse.Cluster, readonly [EnergyEvse.Feature.ChargingPreferences]>, typeof EnergyEvseServer, import("@matter/node/behaviors/energy-evse").EnergyEvseInterface>;
|
|
14
14
|
export declare class MatterbridgeEnergyEvseServer extends MatterbridgeEnergyEvseServer_base {
|
|
15
|
-
disable():
|
|
16
|
-
enableCharging(request: EnergyEvse.EnableChargingRequest):
|
|
15
|
+
disable(): Promise<void>;
|
|
16
|
+
enableCharging(request: EnergyEvse.EnableChargingRequest): Promise<void>;
|
|
17
17
|
setTargets(request: EnergyEvse.SetTargetsRequest): MaybePromise;
|
|
18
18
|
getTargets(): MaybePromise<EnergyEvse.GetTargetsResponse>;
|
|
19
19
|
clearTargets(): MaybePromise;
|
|
20
20
|
}
|
|
21
21
|
export declare class MatterbridgeEnergyEvseModeServer extends EnergyEvseModeServer {
|
|
22
|
-
changeToMode(request: ModeBase.ChangeToModeRequest):
|
|
22
|
+
changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
|
|
23
23
|
}
|
|
24
24
|
export {};
|
package/dist/devices/evse.js
CHANGED
|
@@ -57,20 +57,30 @@ export class Evse extends MatterbridgeEndpoint {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
export class MatterbridgeEnergyEvseServer extends EnergyEvseServer.with(EnergyEvse.Feature.ChargingPreferences) {
|
|
60
|
-
disable() {
|
|
60
|
+
async disable() {
|
|
61
61
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
62
62
|
device.log.info(`Disable charging (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
63
|
-
device.commandHandler.executeHandler('disable', {
|
|
63
|
+
await device.commandHandler.executeHandler('EnergyEvse.disable', {
|
|
64
|
+
request: {},
|
|
65
|
+
cluster: EnergyEvseServer.id,
|
|
66
|
+
attributes: this.state,
|
|
67
|
+
endpoint: this.endpoint,
|
|
68
|
+
});
|
|
64
69
|
device.log.debug(`MatterbridgeEnergyEvseServer disable called`);
|
|
65
70
|
this.state.supplyState = EnergyEvse.SupplyState.Disabled;
|
|
66
71
|
if (this.state.state === EnergyEvse.State.PluggedInCharging) {
|
|
67
72
|
this.state.state = EnergyEvse.State.PluggedInDemand;
|
|
68
73
|
}
|
|
69
74
|
}
|
|
70
|
-
enableCharging(request) {
|
|
75
|
+
async enableCharging(request) {
|
|
71
76
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
72
77
|
device.log.info(`EnableCharging (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
73
|
-
device.commandHandler.executeHandler('enableCharging', {
|
|
78
|
+
await device.commandHandler.executeHandler('EnergyEvse.enableCharging', {
|
|
79
|
+
request,
|
|
80
|
+
cluster: EnergyEvseServer.id,
|
|
81
|
+
attributes: this.state,
|
|
82
|
+
endpoint: this.endpoint,
|
|
83
|
+
});
|
|
74
84
|
device.log.debug(`MatterbridgeEnergyEvseServer enableCharging called`);
|
|
75
85
|
this.state.supplyState = EnergyEvse.SupplyState.ChargingEnabled;
|
|
76
86
|
if (this.state.state === EnergyEvse.State.PluggedInDemand) {
|
|
@@ -97,10 +107,15 @@ export class MatterbridgeEnergyEvseServer extends EnergyEvseServer.with(EnergyEv
|
|
|
97
107
|
}
|
|
98
108
|
}
|
|
99
109
|
export class MatterbridgeEnergyEvseModeServer extends EnergyEvseModeServer {
|
|
100
|
-
changeToMode(request) {
|
|
110
|
+
async changeToMode(request) {
|
|
101
111
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
102
112
|
device.log.info(`Changing mode to ${request.newMode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
103
|
-
device.commandHandler.executeHandler('changeToMode', {
|
|
113
|
+
await device.commandHandler.executeHandler('EnergyEvseMode.changeToMode', {
|
|
114
|
+
request,
|
|
115
|
+
cluster: EnergyEvseModeServer.id,
|
|
116
|
+
attributes: this.state,
|
|
117
|
+
endpoint: this.endpoint,
|
|
118
|
+
});
|
|
104
119
|
const supported = this.state.supportedModes.find((mode) => mode.mode === request.newMode);
|
|
105
120
|
if (!supported) {
|
|
106
121
|
device.log.error(`MatterbridgeEnergyEvseModeServer changeToMode called with unsupported newMode: ${request.newMode}`);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { LaundryWasherModeServer } from '@matter/node/behaviors/laundry-washer-mode';
|
|
3
2
|
import { LaundryWasherControls } from '@matter/types/clusters/laundry-washer-controls';
|
|
4
3
|
import { LaundryWasherMode } from '@matter/types/clusters/laundry-washer-mode';
|
|
@@ -13,5 +12,5 @@ export declare class LaundryWasher extends MatterbridgeEndpoint {
|
|
|
13
12
|
export declare class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer {
|
|
14
13
|
initialize(): void;
|
|
15
14
|
protected handleOnOffChange(onOff: boolean): void;
|
|
16
|
-
changeToMode(request: ModeBase.ChangeToModeRequest):
|
|
15
|
+
changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
|
|
17
16
|
}
|
|
@@ -63,10 +63,15 @@ export class MatterbridgeLaundryWasherModeServer extends LaundryWasherModeServer
|
|
|
63
63
|
this.state.currentMode = 2;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
changeToMode(request) {
|
|
66
|
+
async changeToMode(request) {
|
|
67
67
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
68
68
|
device.log.info(`ChangeToMode (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
69
|
-
device.commandHandler.executeHandler('changeToMode', {
|
|
69
|
+
await device.commandHandler.executeHandler('LaundryWasherMode.changeToMode', {
|
|
70
|
+
request,
|
|
71
|
+
cluster: LaundryWasherModeServer.id,
|
|
72
|
+
attributes: this.state,
|
|
73
|
+
endpoint: this.endpoint,
|
|
74
|
+
});
|
|
70
75
|
const supportedMode = this.state.supportedModes.find((supportedMode) => supportedMode.mode === request.newMode);
|
|
71
76
|
if (supportedMode) {
|
|
72
77
|
device.log.debug(`MatterbridgeLaundryWasherModeServer: changeToMode called with mode ${supportedMode.mode} => ${supportedMode.label}`);
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { MicrowaveOvenControlServer } from '@matter/node/behaviors/microwave-oven-control';
|
|
3
2
|
import { MicrowaveOvenControl } from '@matter/types/clusters/microwave-oven-control';
|
|
4
3
|
import { MicrowaveOvenMode } from '@matter/types/clusters/microwave-oven-mode';
|
|
@@ -87,6 +86,6 @@ declare const MatterbridgeMicrowaveOvenControlServer_base: import("@matter/node"
|
|
|
87
86
|
export declare class MatterbridgeMicrowaveOvenControlServer extends MatterbridgeMicrowaveOvenControlServer_base {
|
|
88
87
|
initialize(): Promise<void>;
|
|
89
88
|
setCookingParameters(request: MicrowaveOvenControl.SetCookingParametersRequest): Promise<void>;
|
|
90
|
-
addMoreTime(request: MicrowaveOvenControl.AddMoreTimeRequest):
|
|
89
|
+
addMoreTime(request: MicrowaveOvenControl.AddMoreTimeRequest): Promise<void>;
|
|
91
90
|
}
|
|
92
91
|
export {};
|
|
@@ -50,7 +50,12 @@ export class MatterbridgeMicrowaveOvenControlServer extends MicrowaveOvenControl
|
|
|
50
50
|
async setCookingParameters(request) {
|
|
51
51
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
52
52
|
device.log.info(`MatterbridgeMicrowaveOvenControlServer: setCookingParameters (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
53
|
-
device.commandHandler.executeHandler('setCookingParameters', {
|
|
53
|
+
await device.commandHandler.executeHandler('MicrowaveOvenControl.setCookingParameters', {
|
|
54
|
+
request,
|
|
55
|
+
cluster: MicrowaveOvenControlServer.id,
|
|
56
|
+
attributes: this.state,
|
|
57
|
+
endpoint: this.endpoint,
|
|
58
|
+
});
|
|
54
59
|
if (request.cookMode !== undefined) {
|
|
55
60
|
device.log.info(`MatterbridgeMicrowaveOvenControlServer: setCookingParameters called setting cookMode to ${request.cookMode}`);
|
|
56
61
|
await this.endpoint.setStateOf(MicrowaveOvenModeServer, { currentMode: request.cookMode });
|
|
@@ -82,10 +87,15 @@ export class MatterbridgeMicrowaveOvenControlServer extends MicrowaveOvenControl
|
|
|
82
87
|
await this.endpoint.setStateOf(MatterbridgeOperationalStateServer, { operationalState: OperationalState.OperationalStateEnum.Running });
|
|
83
88
|
}
|
|
84
89
|
}
|
|
85
|
-
addMoreTime(request) {
|
|
90
|
+
async addMoreTime(request) {
|
|
86
91
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
87
92
|
device.log.info(`MatterbridgeMicrowaveOvenControlServer: addMoreTime (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
88
|
-
device.commandHandler.executeHandler('addMoreTime', {
|
|
93
|
+
await device.commandHandler.executeHandler('MicrowaveOvenControl.addMoreTime', {
|
|
94
|
+
request,
|
|
95
|
+
cluster: MicrowaveOvenControlServer.id,
|
|
96
|
+
attributes: this.state,
|
|
97
|
+
endpoint: this.endpoint,
|
|
98
|
+
});
|
|
89
99
|
if (request.timeToAdd !== undefined && request.timeToAdd > 0 && this.state.cookTime + request.timeToAdd <= this.state.maxCookTime) {
|
|
90
100
|
device.log.info(`MatterbridgeMicrowaveOvenControlServer: addMoreTime called setting cookTime to ${this.state.cookTime + request.timeToAdd}`);
|
|
91
101
|
this.state.cookTime += request.timeToAdd;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { MaybePromise } from '@matter/general';
|
|
2
1
|
import { RvcCleanModeServer } from '@matter/node/behaviors/rvc-clean-mode';
|
|
3
2
|
import { RvcOperationalStateServer } from '@matter/node/behaviors/rvc-operational-state';
|
|
4
3
|
import { RvcRunModeServer } from '@matter/node/behaviors/rvc-run-mode';
|
|
@@ -17,13 +16,13 @@ export declare class RoboticVacuumCleaner extends MatterbridgeEndpoint {
|
|
|
17
16
|
createDefaultRvcOperationalStateClusterServer(phaseList?: string[] | null, currentPhase?: number | null, operationalStateList?: RvcOperationalState.OperationalStateStruct[], operationalState?: RvcOperationalState.OperationalState, operationalError?: RvcOperationalState.ErrorStateStruct): this;
|
|
18
17
|
}
|
|
19
18
|
export declare class MatterbridgeRvcRunModeServer extends RvcRunModeServer {
|
|
20
|
-
changeToMode(request: ModeBase.ChangeToModeRequest):
|
|
19
|
+
changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
|
|
21
20
|
}
|
|
22
21
|
export declare class MatterbridgeRvcCleanModeServer extends RvcCleanModeServer {
|
|
23
|
-
changeToMode(request: ModeBase.ChangeToModeRequest):
|
|
22
|
+
changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
|
|
24
23
|
}
|
|
25
24
|
export declare class MatterbridgeRvcOperationalStateServer extends RvcOperationalStateServer {
|
|
26
|
-
pause():
|
|
27
|
-
resume():
|
|
28
|
-
goHome():
|
|
25
|
+
pause(): Promise<OperationalState.OperationalCommandResponse>;
|
|
26
|
+
resume(): Promise<OperationalState.OperationalCommandResponse>;
|
|
27
|
+
goHome(): Promise<OperationalState.OperationalCommandResponse>;
|
|
29
28
|
}
|
|
@@ -97,10 +97,15 @@ export class RoboticVacuumCleaner extends MatterbridgeEndpoint {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
export class MatterbridgeRvcRunModeServer extends RvcRunModeServer {
|
|
100
|
-
changeToMode(request) {
|
|
100
|
+
async changeToMode(request) {
|
|
101
101
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
102
102
|
device.log.info(`Changing mode to ${request.newMode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
103
|
-
device.commandHandler.executeHandler('changeToMode', {
|
|
103
|
+
await device.commandHandler.executeHandler('RvcRunMode.changeToMode', {
|
|
104
|
+
request,
|
|
105
|
+
cluster: RvcRunModeServer.id,
|
|
106
|
+
attributes: this.state,
|
|
107
|
+
endpoint: this.endpoint,
|
|
108
|
+
});
|
|
104
109
|
const supported = this.state.supportedModes.find((mode) => mode.mode === request.newMode);
|
|
105
110
|
if (!supported) {
|
|
106
111
|
device.log.error(`MatterbridgeRvcRunModeServer changeToMode called with unsupported newMode: ${request.newMode}`);
|
|
@@ -123,10 +128,15 @@ export class MatterbridgeRvcRunModeServer extends RvcRunModeServer {
|
|
|
123
128
|
}
|
|
124
129
|
}
|
|
125
130
|
export class MatterbridgeRvcCleanModeServer extends RvcCleanModeServer {
|
|
126
|
-
changeToMode(request) {
|
|
131
|
+
async changeToMode(request) {
|
|
127
132
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
128
133
|
device.log.info(`Changing mode to ${request.newMode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
129
|
-
device.commandHandler.executeHandler('changeToMode', {
|
|
134
|
+
await device.commandHandler.executeHandler('RvcCleanMode.changeToMode', {
|
|
135
|
+
request,
|
|
136
|
+
cluster: RvcCleanModeServer.id,
|
|
137
|
+
attributes: this.state,
|
|
138
|
+
endpoint: this.endpoint,
|
|
139
|
+
});
|
|
130
140
|
const supported = this.state.supportedModes.find((mode) => mode.mode === request.newMode);
|
|
131
141
|
if (!supported) {
|
|
132
142
|
device.log.error(`MatterbridgeRvcCleanModeServer changeToMode called with unsupported newMode: ${request.newMode}`);
|
|
@@ -138,10 +148,15 @@ export class MatterbridgeRvcCleanModeServer extends RvcCleanModeServer {
|
|
|
138
148
|
}
|
|
139
149
|
}
|
|
140
150
|
export class MatterbridgeRvcOperationalStateServer extends RvcOperationalStateServer {
|
|
141
|
-
pause() {
|
|
151
|
+
async pause() {
|
|
142
152
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
143
153
|
device.log.info(`Pause (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
144
|
-
device.commandHandler.executeHandler('pause', {
|
|
154
|
+
await device.commandHandler.executeHandler('RvcOperationalState.pause', {
|
|
155
|
+
request: {},
|
|
156
|
+
cluster: RvcOperationalStateServer.id,
|
|
157
|
+
attributes: this.state,
|
|
158
|
+
endpoint: this.endpoint,
|
|
159
|
+
});
|
|
145
160
|
device.log.debug('MatterbridgeRvcOperationalStateServer: pause called setting operational state to Paused and currentMode to Idle');
|
|
146
161
|
this.agent.get(MatterbridgeRvcRunModeServer).state.currentMode = 1;
|
|
147
162
|
this.state.operationalState = RvcOperationalState.OperationalState.Paused;
|
|
@@ -150,10 +165,15 @@ export class MatterbridgeRvcOperationalStateServer extends RvcOperationalStateSe
|
|
|
150
165
|
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
151
166
|
};
|
|
152
167
|
}
|
|
153
|
-
resume() {
|
|
168
|
+
async resume() {
|
|
154
169
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
155
170
|
device.log.info(`Resume (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
156
|
-
device.commandHandler.executeHandler('resume', {
|
|
171
|
+
await device.commandHandler.executeHandler('RvcOperationalState.resume', {
|
|
172
|
+
request: {},
|
|
173
|
+
cluster: RvcOperationalStateServer.id,
|
|
174
|
+
attributes: this.state,
|
|
175
|
+
endpoint: this.endpoint,
|
|
176
|
+
});
|
|
157
177
|
device.log.debug('MatterbridgeRvcOperationalStateServer: resume called setting operational state to Running and currentMode to Cleaning');
|
|
158
178
|
this.agent.get(MatterbridgeRvcRunModeServer).state.currentMode = 2;
|
|
159
179
|
this.state.operationalState = RvcOperationalState.OperationalState.Running;
|
|
@@ -162,10 +182,15 @@ export class MatterbridgeRvcOperationalStateServer extends RvcOperationalStateSe
|
|
|
162
182
|
commandResponseState: { errorStateId: OperationalState.ErrorState.NoError, errorStateDetails: 'Fully operational' },
|
|
163
183
|
};
|
|
164
184
|
}
|
|
165
|
-
goHome() {
|
|
185
|
+
async goHome() {
|
|
166
186
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
167
187
|
device.log.info(`GoHome (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
168
|
-
device.commandHandler.executeHandler('goHome', {
|
|
188
|
+
await device.commandHandler.executeHandler('RvcOperationalState.goHome', {
|
|
189
|
+
request: {},
|
|
190
|
+
cluster: RvcOperationalStateServer.id,
|
|
191
|
+
attributes: this.state,
|
|
192
|
+
endpoint: this.endpoint,
|
|
193
|
+
});
|
|
169
194
|
device.log.debug('MatterbridgeRvcOperationalStateServer: goHome called setting operational state to Docked and currentMode to Idle');
|
|
170
195
|
this.agent.get(MatterbridgeRvcRunModeServer).state.currentMode = 1;
|
|
171
196
|
this.state.operationalState = RvcOperationalState.OperationalState.Docked;
|
|
@@ -23,6 +23,6 @@ export interface SoilSensorOptions {
|
|
|
23
23
|
export declare class SoilSensor extends MatterbridgeEndpoint {
|
|
24
24
|
constructor(name: string, serial: string, options?: SoilSensorOptions);
|
|
25
25
|
setSoilMoistureMeasuredValue(value: number | null): Promise<void>;
|
|
26
|
-
getSoilMoistureMeasuredValue(): number | null;
|
|
26
|
+
getSoilMoistureMeasuredValue(): number | null | undefined;
|
|
27
27
|
}
|
|
28
28
|
export {};
|
|
@@ -47,6 +47,6 @@ export class SoilSensor extends MatterbridgeEndpoint {
|
|
|
47
47
|
await this.setAttribute(SoilMeasurement.Cluster.id, 'soilMoistureMeasuredValue', value);
|
|
48
48
|
}
|
|
49
49
|
getSoilMoistureMeasuredValue() {
|
|
50
|
-
return this.getAttribute(SoilMeasurement.Cluster
|
|
50
|
+
return this.getAttribute(SoilMeasurement.Cluster, 'soilMoistureMeasuredValue');
|
|
51
51
|
}
|
|
52
52
|
}
|
package/dist/devices/speaker.js
CHANGED
|
@@ -28,9 +28,9 @@ export class Speaker extends MatterbridgeEndpoint {
|
|
|
28
28
|
level = 1;
|
|
29
29
|
if (level > 254)
|
|
30
30
|
level = 254;
|
|
31
|
-
await this.setAttribute(LevelControl.Cluster
|
|
31
|
+
await this.setAttribute(LevelControl.Cluster, 'currentLevel', level);
|
|
32
32
|
}
|
|
33
33
|
getVolume() {
|
|
34
|
-
return this.getAttribute(LevelControl.Cluster
|
|
34
|
+
return this.getAttribute(LevelControl.Cluster, 'currentLevel');
|
|
35
35
|
}
|
|
36
36
|
}
|