@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.
Files changed (36) hide show
  1. package/dist/devices/basicVideoPlayer.d.ts +8 -9
  2. package/dist/devices/basicVideoPlayer.js +56 -16
  3. package/dist/devices/closure.d.ts +3 -4
  4. package/dist/devices/closure.js +15 -5
  5. package/dist/devices/closurePanel.d.ts +2 -3
  6. package/dist/devices/closurePanel.js +14 -4
  7. package/dist/devices/dishwasher.d.ts +1 -2
  8. package/dist/devices/dishwasher.js +7 -2
  9. package/dist/devices/evse.d.ts +3 -3
  10. package/dist/devices/evse.js +21 -6
  11. package/dist/devices/laundryWasher.d.ts +1 -2
  12. package/dist/devices/laundryWasher.js +7 -2
  13. package/dist/devices/microwaveOven.d.ts +1 -2
  14. package/dist/devices/microwaveOven.js +13 -3
  15. package/dist/devices/roboticVacuumCleaner.d.ts +5 -6
  16. package/dist/devices/roboticVacuumCleaner.js +35 -10
  17. package/dist/devices/soilSensor.d.ts +1 -1
  18. package/dist/devices/soilSensor.js +1 -1
  19. package/dist/devices/speaker.d.ts +1 -1
  20. package/dist/devices/speaker.js +2 -2
  21. package/dist/devices/temperatureControl.d.ts +2 -3
  22. package/dist/devices/temperatureControl.js +14 -4
  23. package/dist/devices/waterHeater.d.ts +3 -4
  24. package/dist/devices/waterHeater.js +21 -6
  25. package/dist/export.d.ts +1 -0
  26. package/dist/export.js +1 -0
  27. package/dist/matterbridgeBehaviorsServer.d.ts +55 -53
  28. package/dist/matterbridgeBehaviorsServer.js +354 -139
  29. package/dist/matterbridgeEndpoint.d.ts +21 -11
  30. package/dist/matterbridgeEndpoint.js +11 -6
  31. package/dist/matterbridgeEndpointCommandHandler.d.ts +632 -0
  32. package/dist/matterbridgeEndpointCommandHandler.js +31 -0
  33. package/dist/matterbridgeEndpointHelpers.d.ts +3 -2
  34. package/dist/matterbridgeEndpointHelpers.js +35 -5
  35. package/dist/matterbridgeEndpointTypes.d.ts +0 -83
  36. 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(): MaybePromise<MediaPlayback.PlaybackResponse>;
20
- pause(): MaybePromise<MediaPlayback.PlaybackResponse>;
21
- stop(): MaybePromise<MediaPlayback.PlaybackResponse>;
22
- previous(): MaybePromise<MediaPlayback.PlaybackResponse>;
23
- next(): MaybePromise<MediaPlayback.PlaybackResponse>;
24
- skipForward(): MaybePromise<MediaPlayback.PlaybackResponse>;
25
- skipBackward(): MaybePromise<MediaPlayback.PlaybackResponse>;
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): MaybePromise<KeypadInput.SendKeyResponse>;
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: undefined, cluster: MediaPlaybackServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request, cluster: KeypadInputServer.id, attributes: this.state, endpoint: this.endpoint });
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) => MaybePromise;
295
- stop: () => MaybePromise;
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 {};
@@ -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', { request, cluster: ClosureControl.Cluster.id, attributes: this.state, endpoint: this.endpoint });
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', { request: {}, cluster: ClosureControl.Cluster.id, attributes: this.state, endpoint: this.endpoint });
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(ClosureControl.Cluster.id, 'mainState');
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) => MaybePromise;
374
- step: (request: ClosureDimension.StepRequest) => MaybePromise;
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', { request, cluster: ClosureDimension.Cluster.id, attributes: this.state, endpoint: this.endpoint });
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', { request, cluster: ClosureDimension.Cluster.id, attributes: this.state, endpoint: this.endpoint });
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): MaybePromise<ModeBase.ChangeToModeResponse>;
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', { request, cluster: DishwasherModeServer.id, attributes: this.state, endpoint: this.endpoint });
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}`);
@@ -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(): MaybePromise;
16
- enableCharging(request: EnergyEvse.EnableChargingRequest): MaybePromise;
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): MaybePromise<ModeBase.ChangeToModeResponse>;
22
+ changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
23
23
  }
24
24
  export {};
@@ -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', { request: {}, cluster: EnergyEvseServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request, cluster: EnergyEvseServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request, cluster: EnergyEvseModeServer.id, attributes: this.state, endpoint: this.endpoint });
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): MaybePromise<ModeBase.ChangeToModeResponse>;
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', { request, cluster: LaundryWasherModeServer.id, attributes: this.state, endpoint: this.endpoint });
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): MaybePromise;
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', { request, cluster: MicrowaveOvenControl.Cluster.id, attributes: this.state, endpoint: this.endpoint });
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', { request, cluster: MicrowaveOvenControl.Cluster.id, attributes: this.state, endpoint: this.endpoint });
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): MaybePromise<ModeBase.ChangeToModeResponse>;
19
+ changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
21
20
  }
22
21
  export declare class MatterbridgeRvcCleanModeServer extends RvcCleanModeServer {
23
- changeToMode(request: ModeBase.ChangeToModeRequest): MaybePromise<ModeBase.ChangeToModeResponse>;
22
+ changeToMode(request: ModeBase.ChangeToModeRequest): Promise<ModeBase.ChangeToModeResponse>;
24
23
  }
25
24
  export declare class MatterbridgeRvcOperationalStateServer extends RvcOperationalStateServer {
26
- pause(): MaybePromise<OperationalState.OperationalCommandResponse>;
27
- resume(): MaybePromise<OperationalState.OperationalCommandResponse>;
28
- goHome(): MaybePromise<OperationalState.OperationalCommandResponse>;
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', { request, cluster: RvcRunModeServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request, cluster: RvcCleanModeServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: {}, cluster: RvcOperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: {}, cluster: RvcOperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
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', { request: {}, cluster: RvcOperationalStateServer.id, attributes: this.state, endpoint: this.endpoint });
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.id, 'soilMoistureMeasuredValue');
50
+ return this.getAttribute(SoilMeasurement.Cluster, 'soilMoistureMeasuredValue');
51
51
  }
52
52
  }
@@ -4,5 +4,5 @@ export declare class Speaker extends MatterbridgeEndpoint {
4
4
  setMuted(muted: boolean): Promise<void>;
5
5
  isMuted(): boolean;
6
6
  setVolume(level: number): Promise<void>;
7
- getVolume(): number;
7
+ getVolume(): number | null | undefined;
8
8
  }
@@ -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.id, 'currentLevel', level);
31
+ await this.setAttribute(LevelControl.Cluster, 'currentLevel', level);
32
32
  }
33
33
  getVolume() {
34
- return this.getAttribute(LevelControl.Cluster.id, 'currentLevel');
34
+ return this.getAttribute(LevelControl.Cluster, 'currentLevel');
35
35
  }
36
36
  }