@matterbridge/core 3.6.1-dev-20260313-1c1c125 → 3.6.1-dev-20260314-9cef6d3
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.js +1 -1
- package/dist/devices/castingVideoPlayer.js +1 -1
- package/dist/devices/closure.js +1 -1
- package/dist/devices/closurePanel.js +1 -1
- package/dist/devices/dishwasher.js +1 -1
- package/dist/devices/evse.js +1 -1
- package/dist/devices/laundryWasher.js +1 -1
- package/dist/devices/microwaveOven.js +1 -1
- package/dist/devices/oven.js +1 -1
- package/dist/devices/refrigerator.js +1 -1
- package/dist/devices/roboticVacuumCleaner.js +1 -1
- package/dist/devices/temperatureControl.js +1 -1
- package/dist/devices/waterHeater.js +1 -1
- package/dist/export.d.ts +1 -1
- package/dist/export.js +1 -1
- package/dist/jestutils/jestHelpers.d.ts +2 -0
- package/dist/jestutils/jestHelpers.js +21 -0
- package/dist/matterbridgeBehaviorsClient.js +1 -1
- package/dist/{matterbridgeBehaviors.d.ts → matterbridgeBehaviorsServer.d.ts} +4 -4
- package/dist/{matterbridgeBehaviors.js → matterbridgeBehaviorsServer.js} +8 -0
- package/dist/matterbridgeEndpoint.d.ts +15 -3
- package/dist/matterbridgeEndpoint.js +2 -2
- package/dist/matterbridgeEndpointHelpers.d.ts +1 -1
- package/dist/matterbridgeEndpointHelpers.js +1 -1
- package/package.json +5 -5
|
@@ -2,7 +2,7 @@ import { KeypadInputServer } from '@matter/node/behaviors/keypad-input';
|
|
|
2
2
|
import { MediaPlaybackServer } from '@matter/node/behaviors/media-playback';
|
|
3
3
|
import { KeypadInput } from '@matter/types/clusters/keypad-input';
|
|
4
4
|
import { MediaPlayback } from '@matter/types/clusters/media-playback';
|
|
5
|
-
import { MatterbridgeOnOffServer, MatterbridgeServer } from '../
|
|
5
|
+
import { MatterbridgeOnOffServer, MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
6
6
|
import { basicVideoPlayer, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
7
7
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
8
8
|
export class BasicVideoPlayer extends MatterbridgeEndpoint {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ContentLauncherServer } from '@matter/node/behaviors/content-launcher';
|
|
2
2
|
import { MediaPlayback } from '@matter/types/clusters/media-playback';
|
|
3
|
-
import { MatterbridgeServer } from '../
|
|
3
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
4
4
|
import { castingVideoPlayer, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
5
5
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
6
6
|
import { MatterbridgeKeypadInputServer, MatterbridgeMediaPlaybackServer } from './basicVideoPlayer.js';
|
package/dist/devices/closure.js
CHANGED
|
@@ -2,7 +2,7 @@ import { AttributeElement, ClusterElement, ClusterModel, CommandElement, Datatyp
|
|
|
2
2
|
import { ClusterBehavior } from '@matter/node';
|
|
3
3
|
import { ClusterType } from '@matter/types';
|
|
4
4
|
import { ClosureControl } from '../clusters/closure-control.js';
|
|
5
|
-
import { MatterbridgeServer } from '../
|
|
5
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
6
6
|
import { closure } from '../matterbridgeDeviceTypes.js';
|
|
7
7
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
8
8
|
const ClosureControlSchema = ClusterElement({
|
|
@@ -2,7 +2,7 @@ import { AttributeElement, ClusterElement, ClusterModel, CommandElement, Datatyp
|
|
|
2
2
|
import { ClusterBehavior } from '@matter/node';
|
|
3
3
|
import { ClusterType } from '@matter/types';
|
|
4
4
|
import { ClosureDimension } from '../clusters/closure-dimension.js';
|
|
5
|
-
import { MatterbridgeServer } from '../
|
|
5
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
6
6
|
import { closurePanel } from '../matterbridgeDeviceTypes.js';
|
|
7
7
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
8
8
|
const ClosureDimensionSchema = ClusterElement({
|
|
@@ -2,7 +2,7 @@ import { DishwasherAlarmServer } from '@matter/node/behaviors/dishwasher-alarm';
|
|
|
2
2
|
import { DishwasherModeServer } from '@matter/node/behaviors/dishwasher-mode';
|
|
3
3
|
import { DishwasherMode } from '@matter/types/clusters/dishwasher-mode';
|
|
4
4
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
5
|
-
import { MatterbridgeOnOffServer, MatterbridgeServer } from '../
|
|
5
|
+
import { MatterbridgeOnOffServer, MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
6
6
|
import { dishwasher, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
7
7
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
8
8
|
import { createLevelTemperatureControlClusterServer, createNumberTemperatureControlClusterServer } from './temperatureControl.js';
|
package/dist/devices/evse.js
CHANGED
|
@@ -4,7 +4,7 @@ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-man
|
|
|
4
4
|
import { EnergyEvse } from '@matter/types/clusters/energy-evse';
|
|
5
5
|
import { EnergyEvseMode } from '@matter/types/clusters/energy-evse-mode';
|
|
6
6
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
7
|
-
import { MatterbridgeServer } from '../
|
|
7
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
8
8
|
import { deviceEnergyManagement, electricalSensor, evse, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
9
9
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
10
10
|
export class Evse extends MatterbridgeEndpoint {
|
|
@@ -3,7 +3,7 @@ import { LaundryWasherModeServer } from '@matter/node/behaviors/laundry-washer-m
|
|
|
3
3
|
import { LaundryWasherControls } from '@matter/types/clusters/laundry-washer-controls';
|
|
4
4
|
import { LaundryWasherMode } from '@matter/types/clusters/laundry-washer-mode';
|
|
5
5
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
6
|
-
import { MatterbridgeOnOffServer, MatterbridgeServer } from '../
|
|
6
|
+
import { MatterbridgeOnOffServer, MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
7
7
|
import { laundryWasher, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
8
8
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
9
9
|
import { createLevelTemperatureControlClusterServer, createNumberTemperatureControlClusterServer } from './temperatureControl.js';
|
|
@@ -3,7 +3,7 @@ import { MicrowaveOvenModeServer } from '@matter/node/behaviors/microwave-oven-m
|
|
|
3
3
|
import { MicrowaveOvenControl } from '@matter/types/clusters/microwave-oven-control';
|
|
4
4
|
import { MicrowaveOvenMode } from '@matter/types/clusters/microwave-oven-mode';
|
|
5
5
|
import { OperationalState } from '@matter/types/clusters/operational-state';
|
|
6
|
-
import { MatterbridgeOperationalStateServer, MatterbridgeServer } from '../
|
|
6
|
+
import { MatterbridgeOperationalStateServer, MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
7
7
|
import { microwaveOven, powerSource } from '../matterbridgeDeviceTypes.js';
|
|
8
8
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
9
9
|
export class MicrowaveOven extends MatterbridgeEndpoint {
|
package/dist/devices/oven.js
CHANGED
|
@@ -3,7 +3,7 @@ import { OvenModeServer } from '@matter/node/behaviors/oven-mode';
|
|
|
3
3
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
4
4
|
import { OperationalState } from '@matter/types/clusters/operational-state';
|
|
5
5
|
import { OvenMode } from '@matter/types/clusters/oven-mode';
|
|
6
|
-
import { MatterbridgeServer } from '../
|
|
6
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
7
7
|
import { oven, powerSource, temperatureControlledCabinetHeater } from '../matterbridgeDeviceTypes.js';
|
|
8
8
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
9
9
|
import { createNumberTemperatureControlClusterServer } from './temperatureControl.js';
|
|
@@ -2,7 +2,7 @@ import { RefrigeratorAlarmServer } from '@matter/node/behaviors/refrigerator-ala
|
|
|
2
2
|
import { RefrigeratorAndTemperatureControlledCabinetModeServer } from '@matter/node/behaviors/refrigerator-and-temperature-controlled-cabinet-mode';
|
|
3
3
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
4
4
|
import { RefrigeratorAndTemperatureControlledCabinetMode } from '@matter/types/clusters/refrigerator-and-temperature-controlled-cabinet-mode';
|
|
5
|
-
import { MatterbridgeServer } from '../
|
|
5
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
6
6
|
import { powerSource, refrigerator, temperatureControlledCabinetCooler } from '../matterbridgeDeviceTypes.js';
|
|
7
7
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
8
8
|
import { createNumberTemperatureControlClusterServer } from './temperatureControl.js';
|
|
@@ -9,7 +9,7 @@ import { RvcCleanMode } from '@matter/types/clusters/rvc-clean-mode';
|
|
|
9
9
|
import { RvcOperationalState } from '@matter/types/clusters/rvc-operational-state';
|
|
10
10
|
import { RvcRunMode } from '@matter/types/clusters/rvc-run-mode';
|
|
11
11
|
import { ServiceArea } from '@matter/types/clusters/service-area';
|
|
12
|
-
import { MatterbridgeServer, MatterbridgeServiceAreaServer } from '../
|
|
12
|
+
import { MatterbridgeServer, MatterbridgeServiceAreaServer } from '../matterbridgeBehaviorsServer.js';
|
|
13
13
|
import { powerSource, roboticVacuumCleaner } from '../matterbridgeDeviceTypes.js';
|
|
14
14
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
15
15
|
export class RoboticVacuumCleaner extends MatterbridgeEndpoint {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TemperatureControlServer } from '@matter/node/behaviors/temperature-control';
|
|
2
2
|
import { TemperatureControl } from '@matter/types/clusters/temperature-control';
|
|
3
|
-
import { MatterbridgeServer } from '../
|
|
3
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
4
4
|
export function createLevelTemperatureControlClusterServer(endpoint, selectedTemperatureLevel = 1, supportedTemperatureLevels = ['Cold', 'Warm', 'Hot', '30°', '40°', '60°', '80°']) {
|
|
5
5
|
endpoint.behaviors.require(MatterbridgeLevelTemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel), {
|
|
6
6
|
selectedTemperatureLevel,
|
|
@@ -4,7 +4,7 @@ import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-man
|
|
|
4
4
|
import { ModeBase } from '@matter/types/clusters/mode-base';
|
|
5
5
|
import { WaterHeaterManagement } from '@matter/types/clusters/water-heater-management';
|
|
6
6
|
import { WaterHeaterMode } from '@matter/types/clusters/water-heater-mode';
|
|
7
|
-
import { MatterbridgeServer } from '../
|
|
7
|
+
import { MatterbridgeServer } from '../matterbridgeBehaviorsServer.js';
|
|
8
8
|
import { deviceEnergyManagement, electricalSensor, powerSource, waterHeater } from '../matterbridgeDeviceTypes.js';
|
|
9
9
|
import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
|
|
10
10
|
export class WaterHeater extends MatterbridgeEndpoint {
|
package/dist/export.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { addVirtualDevice } from './helpers.js';
|
|
2
2
|
export * from './matterbridgeAccessoryPlatform.js';
|
|
3
|
-
export * from './
|
|
3
|
+
export * from './matterbridgeBehaviorsServer.js';
|
|
4
4
|
export * from './matterbridgeDeviceTypes.js';
|
|
5
5
|
export * from './matterbridgeDynamicPlatform.js';
|
|
6
6
|
export * from './matterbridgeEndpoint.js';
|
package/dist/export.js
CHANGED
|
@@ -2,7 +2,7 @@ if (process.argv.includes('--loader') || process.argv.includes('-loader'))
|
|
|
2
2
|
console.log('\u001B[32mIndex loaded.\u001B[40;0m');
|
|
3
3
|
export { addVirtualDevice } from './helpers.js';
|
|
4
4
|
export * from './matterbridgeAccessoryPlatform.js';
|
|
5
|
-
export * from './
|
|
5
|
+
export * from './matterbridgeBehaviorsServer.js';
|
|
6
6
|
export * from './matterbridgeDeviceTypes.js';
|
|
7
7
|
export * from './matterbridgeDynamicPlatform.js';
|
|
8
8
|
export * from './matterbridgeEndpoint.js';
|
|
@@ -93,6 +93,8 @@ export declare function deleteDevice(owner: ServerNode<ServerNode.RootEndpoint>
|
|
|
93
93
|
export declare function getMoveToLevelRequest(level: number, transitionTime: number, executeIfOff: boolean): LevelControl.MoveToLevelRequest;
|
|
94
94
|
export declare function getMoveToColorTemperatureRequest(colorTemperatureMireds: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToColorTemperatureRequest;
|
|
95
95
|
export declare function getMoveToHueRequest(hue: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToHueRequest;
|
|
96
|
+
export declare function getEnhancedMoveToHueRequest(enhancedHue: number, transitionTime: number, executeIfOff: boolean): ColorControl.EnhancedMoveToHueRequest;
|
|
96
97
|
export declare function getMoveToSaturationRequest(saturation: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToSaturationRequest;
|
|
97
98
|
export declare function getMoveToHueAndSaturationRequest(hue: number, saturation: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToHueAndSaturationRequest;
|
|
99
|
+
export declare function getEnhancedMoveToHueAndSaturationRequest(enhancedHue: number, saturation: number, transitionTime: number, executeIfOff: boolean): ColorControl.EnhancedMoveToHueAndSaturationRequest;
|
|
98
100
|
export declare function getMoveToColorRequest(colorX: number, colorY: number, transitionTime: number, executeIfOff: boolean): ColorControl.MoveToColorRequest;
|
|
@@ -579,6 +579,7 @@ export async function addDevice(owner, device, pause = 10) {
|
|
|
579
579
|
process.stderr.write(`${er}Error adding device ${device.maybeId}.${device.maybeNumber}: ${errorMessage}${rs}\nStack: ${errorInspect}\n`);
|
|
580
580
|
return false;
|
|
581
581
|
}
|
|
582
|
+
await device.construction.ready;
|
|
582
583
|
expect(owner.parts.has(device)).toBeTruthy();
|
|
583
584
|
expect(owner.lifecycle.isPartsReady).toBeTruthy();
|
|
584
585
|
expect(device.lifecycle.isReady).toBeTruthy();
|
|
@@ -642,6 +643,16 @@ export function getMoveToHueRequest(hue, transitionTime, executeIfOff) {
|
|
|
642
643
|
};
|
|
643
644
|
return request;
|
|
644
645
|
}
|
|
646
|
+
export function getEnhancedMoveToHueRequest(enhancedHue, transitionTime, executeIfOff) {
|
|
647
|
+
const request = {
|
|
648
|
+
enhancedHue,
|
|
649
|
+
transitionTime,
|
|
650
|
+
direction: ColorControl.Direction.Shortest,
|
|
651
|
+
optionsMask: { executeIfOff },
|
|
652
|
+
optionsOverride: { executeIfOff },
|
|
653
|
+
};
|
|
654
|
+
return request;
|
|
655
|
+
}
|
|
645
656
|
export function getMoveToSaturationRequest(saturation, transitionTime, executeIfOff) {
|
|
646
657
|
const request = {
|
|
647
658
|
saturation,
|
|
@@ -661,6 +672,16 @@ export function getMoveToHueAndSaturationRequest(hue, saturation, transitionTime
|
|
|
661
672
|
};
|
|
662
673
|
return request;
|
|
663
674
|
}
|
|
675
|
+
export function getEnhancedMoveToHueAndSaturationRequest(enhancedHue, saturation, transitionTime, executeIfOff) {
|
|
676
|
+
const request = {
|
|
677
|
+
enhancedHue,
|
|
678
|
+
saturation,
|
|
679
|
+
transitionTime,
|
|
680
|
+
optionsMask: { executeIfOff },
|
|
681
|
+
optionsOverride: { executeIfOff },
|
|
682
|
+
};
|
|
683
|
+
return request;
|
|
684
|
+
}
|
|
664
685
|
export function getMoveToColorRequest(colorX, colorY, transitionTime, executeIfOff) {
|
|
665
686
|
const request = {
|
|
666
687
|
colorX,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BindingBehavior } from '@matter/main/behaviors/binding';
|
|
2
2
|
import { DescriptorServer } from '@matter/main/behaviors/descriptor';
|
|
3
|
-
import { MatterbridgeServer } from './
|
|
3
|
+
import { MatterbridgeServer } from './matterbridgeBehaviorsServer.js';
|
|
4
4
|
export class MatterbridgeBindingServer extends BindingBehavior {
|
|
5
5
|
async initialize() {
|
|
6
6
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
@@ -1327,12 +1327,12 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1327
1327
|
}>, void, any>;
|
|
1328
1328
|
readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1329
1329
|
requestType: import("@matter/types").FieldType<Thermostat.RequestType>;
|
|
1330
|
-
attributeRequests: import("@matter/types").FieldType<import("@matter/types
|
|
1330
|
+
attributeRequests: import("@matter/types").FieldType<import("@matter/types").AttributeId[]>;
|
|
1331
1331
|
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1332
1332
|
}>, import("@matter/types").TypeFromFields<{
|
|
1333
1333
|
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1334
1334
|
attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1335
|
-
attributeId: import("@matter/types").FieldType<import("@matter/types
|
|
1335
|
+
attributeId: import("@matter/types").FieldType<import("@matter/types").AttributeId>;
|
|
1336
1336
|
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1337
1337
|
}>[]>;
|
|
1338
1338
|
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
@@ -1692,12 +1692,12 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1692
1692
|
}>, void, any>;
|
|
1693
1693
|
readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1694
1694
|
requestType: import("@matter/types").FieldType<Thermostat.RequestType>;
|
|
1695
|
-
attributeRequests: import("@matter/types").FieldType<import("@matter/types
|
|
1695
|
+
attributeRequests: import("@matter/types").FieldType<import("@matter/types").AttributeId[]>;
|
|
1696
1696
|
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1697
1697
|
}>, import("@matter/types").TypeFromFields<{
|
|
1698
1698
|
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1699
1699
|
attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1700
|
-
attributeId: import("@matter/types").FieldType<import("@matter/types
|
|
1700
|
+
attributeId: import("@matter/types").FieldType<import("@matter/types").AttributeId>;
|
|
1701
1701
|
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1702
1702
|
}>[]>;
|
|
1703
1703
|
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Bytes } from '@matter/general';
|
|
1
2
|
import { Behavior } from '@matter/node';
|
|
2
3
|
import { ActivatedCarbonFilterMonitoringServer } from '@matter/node/behaviors/activated-carbon-filter-monitoring';
|
|
3
4
|
import { BooleanStateConfigurationServer } from '@matter/node/behaviors/boolean-state-configuration';
|
|
@@ -19,6 +20,7 @@ import { SwitchServer } from '@matter/node/behaviors/switch';
|
|
|
19
20
|
import { ThermostatServer } from '@matter/node/behaviors/thermostat';
|
|
20
21
|
import { ValveConfigurationAndControlServer } from '@matter/node/behaviors/valve-configuration-and-control';
|
|
21
22
|
import { WindowCoveringServer } from '@matter/node/behaviors/window-covering';
|
|
23
|
+
import { StatusResponse } from '@matter/types';
|
|
22
24
|
import { BooleanStateConfiguration } from '@matter/types/clusters/boolean-state-configuration';
|
|
23
25
|
import { ColorControl } from '@matter/types/clusters/color-control';
|
|
24
26
|
import { DeviceEnergyManagement } from '@matter/types/clusters/device-energy-management';
|
|
@@ -380,6 +382,12 @@ export class MatterbridgePresetThermostatServer extends ThermostatServer.with(Th
|
|
|
380
382
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
381
383
|
device.log.info(`Setting preset to ${request.presetHandle} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
382
384
|
device.commandHandler.executeHandler('setActivePresetRequest', { request, cluster: ThermostatServer.id, attributes: this.state, endpoint: this.endpoint });
|
|
385
|
+
if (request.presetHandle !== null) {
|
|
386
|
+
const preset = this.state.persistedPresets?.find((storedPreset) => storedPreset.presetHandle !== null && Bytes.areEqual(storedPreset.presetHandle, request.presetHandle));
|
|
387
|
+
if (preset === undefined)
|
|
388
|
+
throw new StatusResponse.InvalidCommandError('Requested PresetHandle not found');
|
|
389
|
+
}
|
|
390
|
+
this.state.activePresetHandle = request.presetHandle;
|
|
383
391
|
device.log.debug(`MatterbridgePresetThermostatServer: setActivePresetRequest called with presetHandle: ${request.presetHandle}`);
|
|
384
392
|
}
|
|
385
393
|
}
|
|
@@ -62,15 +62,27 @@ export declare class MatterbridgeEndpoint extends Endpoint {
|
|
|
62
62
|
setAttribute(clusterId: Behavior.Type | ClusterType | ClusterId | string, attribute: string, value: boolean | number | bigint | string | object | null, log?: AnsiLogger): Promise<boolean>;
|
|
63
63
|
updateAttribute(cluster: Behavior.Type | ClusterType | ClusterId | string, attribute: string, value: boolean | number | bigint | string | object | null, log?: AnsiLogger): Promise<boolean>;
|
|
64
64
|
subscribeAttribute(cluster: Behavior.Type | ClusterType | ClusterId | string, attribute: string, listener: (newValue: any, oldValue: any, context: ActionContext) => void, log?: AnsiLogger): Promise<boolean>;
|
|
65
|
-
setCluster
|
|
66
|
-
|
|
65
|
+
setCluster<T extends Behavior.Type>(cluster: T, value: Behavior.StateOf<T>, log?: AnsiLogger): Promise<boolean>;
|
|
66
|
+
setCluster<T extends ClusterType>(cluster: T, value: ClusterType.AttributeValues<T>, log?: AnsiLogger): Promise<boolean>;
|
|
67
|
+
setCluster(cluster: ClusterId | string, value: Record<string, boolean | number | bigint | string | object | undefined | null>, log?: AnsiLogger): Promise<boolean>;
|
|
68
|
+
getCluster<T extends Behavior.Type>(cluster: T, log?: AnsiLogger): Behavior.StateOf<T> | undefined;
|
|
69
|
+
getCluster<T extends ClusterType>(cluster: T, log?: AnsiLogger): ClusterType.AttributeValues<T> | undefined;
|
|
70
|
+
getCluster(cluster: ClusterId | string, log?: AnsiLogger): Record<string, boolean | number | bigint | string | object | undefined | null> | undefined;
|
|
67
71
|
triggerEvent(cluster: Behavior.Type | ClusterType | ClusterId | string, event: string, payload: Record<string, boolean | number | bigint | string | object | undefined | null>, log?: AnsiLogger): Promise<boolean>;
|
|
68
72
|
addClusterServers(serverList: ClusterId[]): this;
|
|
69
73
|
addFixedLabel(label: string, value: string): Promise<this>;
|
|
70
74
|
addUserLabel(label: string, value: string): Promise<this>;
|
|
71
75
|
addCommandHandler(command: keyof MatterbridgeEndpointCommands, handler: CommandHandlerFunction): this;
|
|
72
76
|
executeCommandHandler(command: keyof MatterbridgeEndpointCommands, request?: Record<string, boolean | number | bigint | string | object | null>, cluster?: string, attributes?: Record<string, boolean | number | bigint | string | object | null>, endpoint?: MatterbridgeEndpoint): Promise<void>;
|
|
73
|
-
invokeBehaviorCommand
|
|
77
|
+
invokeBehaviorCommand<T extends Behavior.Type, C extends keyof {
|
|
78
|
+
[K in keyof InstanceType<T> as InstanceType<T>[K] extends (...args: unknown[]) => unknown ? K : never]: InstanceType<T>[K];
|
|
79
|
+
}>(cluster: T, command: C, params?: {
|
|
80
|
+
[K in keyof InstanceType<T> as InstanceType<T>[K] extends (...args: unknown[]) => unknown ? K : never]: InstanceType<T>[K];
|
|
81
|
+
}[C] extends (...args: infer P) => unknown ? P[0] : never): Promise<void>;
|
|
82
|
+
invokeBehaviorCommand<T extends ClusterType, C extends keyof ClusterType.CommandsOf<T>>(cluster: T, command: C, params?: ClusterType.CommandsOf<T>[C] extends {
|
|
83
|
+
requestSchema: infer S extends import('@matter/types/tlv').TlvSchema<unknown>;
|
|
84
|
+
} ? import('@matter/types/tlv').TypeFromSchema<S> : never): Promise<void>;
|
|
85
|
+
invokeBehaviorCommand(cluster: ClusterId | string, command: keyof MatterbridgeEndpointCommands, params?: Record<string, boolean | number | bigint | string | object | null>): Promise<void>;
|
|
74
86
|
addRequiredClusterServers(): MatterbridgeEndpoint;
|
|
75
87
|
addOptionalClusterServers(): MatterbridgeEndpoint;
|
|
76
88
|
getAllClusterServers(): Behavior.Type[];
|
|
@@ -62,7 +62,7 @@ import { VendorId } from '@matter/types/datatype';
|
|
|
62
62
|
import { inspectError } from '@matterbridge/utils/error';
|
|
63
63
|
import { isValidNumber, isValidObject, isValidString } from '@matterbridge/utils/validate';
|
|
64
64
|
import { AnsiLogger, CYAN, db, debugStringify, hk, or, YELLOW, zb } from 'node-ansi-logger';
|
|
65
|
-
import { MatterbridgeActivatedCarbonFilterMonitoringServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeColorControlServer, MatterbridgeDeviceEnergyManagementModeServer, MatterbridgeDeviceEnergyManagementServer, MatterbridgeDoorLockServer, MatterbridgeEnhancedColorControlServer, MatterbridgeFanControlServer, MatterbridgeHepaFilterMonitoringServer, MatterbridgeIdentifyServer, MatterbridgeLevelControlServer, MatterbridgeLiftTiltWindowCoveringServer, MatterbridgeLiftWindowCoveringServer, MatterbridgeModeSelectServer, MatterbridgeOnOffServer, MatterbridgeOperationalStateServer, MatterbridgePowerSourceServer, MatterbridgePresetThermostatServer, MatterbridgeServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeSwitchServer, MatterbridgeThermostatServer, MatterbridgeValveConfigurationAndControlServer, } from './
|
|
65
|
+
import { MatterbridgeActivatedCarbonFilterMonitoringServer, MatterbridgeBooleanStateConfigurationServer, MatterbridgeColorControlServer, MatterbridgeDeviceEnergyManagementModeServer, MatterbridgeDeviceEnergyManagementServer, MatterbridgeDoorLockServer, MatterbridgeEnhancedColorControlServer, MatterbridgeFanControlServer, MatterbridgeHepaFilterMonitoringServer, MatterbridgeIdentifyServer, MatterbridgeLevelControlServer, MatterbridgeLiftTiltWindowCoveringServer, MatterbridgeLiftWindowCoveringServer, MatterbridgeModeSelectServer, MatterbridgeOnOffServer, MatterbridgeOperationalStateServer, MatterbridgePowerSourceServer, MatterbridgePresetThermostatServer, MatterbridgeServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeSwitchServer, MatterbridgeThermostatServer, MatterbridgeValveConfigurationAndControlServer, } from './matterbridgeBehaviorsServer.js';
|
|
66
66
|
import { addClusterServers, addFixedLabel, addOptionalClusterServers, addRequiredClusterServers, addUserLabel, checkNotLatinCharacters, createUniqueId, featuresFor, generateUniqueId, getApparentElectricalPowerMeasurementClusterServer, getAttribute, getAttributeId, getBehavior, getBehaviourTypesFromClusterClientIds, getBehaviourTypesFromClusterServerIds, getCluster, getClusterId, getDefaultDeviceEnergyManagementClusterServer, getDefaultDeviceEnergyManagementModeClusterServer, getDefaultElectricalEnergyMeasurementClusterServer, getDefaultElectricalPowerMeasurementClusterServer, getDefaultFlowMeasurementClusterServer, getDefaultIlluminanceMeasurementClusterServer, getDefaultOccupancySensingClusterServer, getDefaultOperationalStateClusterServer, getDefaultPowerSourceBatteryClusterServer, getDefaultPowerSourceRechargeableBatteryClusterServer, getDefaultPowerSourceReplaceableBatteryClusterServer, getDefaultPowerSourceWiredClusterServer, getDefaultPressureMeasurementClusterServer, getDefaultRelativeHumidityMeasurementClusterServer, getDefaultTemperatureMeasurementClusterServer, invokeBehaviorCommand, lowercaseFirstLetter, setAttribute, setCluster, subscribeAttribute, triggerEvent, updateAttribute, } from './matterbridgeEndpointHelpers.js';
|
|
67
67
|
const MATTERBRIDGE_ENDPOINT_BRAND = Symbol('MatterbridgeEndpoint.brand');
|
|
68
68
|
export function isMatterbridgeEndpoint(value) {
|
|
@@ -910,7 +910,7 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
910
910
|
...(occupied !== undefined ? { unoccupiedCoolingSetpoint: unoccupiedCoolingSetpoint !== undefined ? unoccupiedCoolingSetpoint * 100 : 2700 } : {}),
|
|
911
911
|
...(occupied !== undefined ? { occupancy: { occupied } } : {}),
|
|
912
912
|
...(occupied !== undefined ? { externallyMeasuredOccupancy: true } : {}),
|
|
913
|
-
numberOfPresets: Array.isArray(presetsList) ? presetsList.length : 0,
|
|
913
|
+
numberOfPresets: Math.max(Array.isArray(presetsList) ? presetsList.length : 0, 10),
|
|
914
914
|
activePresetHandle: activePresetHandle !== undefined ? Uint8Array.from([activePresetHandle]) : null,
|
|
915
915
|
presets: (presetsList ?? []).map((p) => ({
|
|
916
916
|
presetHandle: Uint8Array.from(p.presetHandle || [0]),
|
|
@@ -18,7 +18,7 @@ import { TemperatureMeasurement } from '@matter/types/clusters/temperature-measu
|
|
|
18
18
|
import { ClusterId, VendorId } from '@matter/types/datatype';
|
|
19
19
|
import { MeasurementType, Semtag } from '@matter/types/globals';
|
|
20
20
|
import { AnsiLogger } from 'node-ansi-logger';
|
|
21
|
-
import { MatterbridgeDeviceEnergyManagementModeServer, MatterbridgeDeviceEnergyManagementServer, MatterbridgeOperationalStateServer, MatterbridgePowerSourceServer } from './
|
|
21
|
+
import { MatterbridgeDeviceEnergyManagementModeServer, MatterbridgeDeviceEnergyManagementServer, MatterbridgeOperationalStateServer, MatterbridgePowerSourceServer } from './matterbridgeBehaviorsServer.js';
|
|
22
22
|
import { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
|
|
23
23
|
import { MatterbridgeEndpointCommands } from './matterbridgeEndpointTypes.js';
|
|
24
24
|
export declare function capitalizeFirstLetter(name: string): string;
|
|
@@ -83,7 +83,7 @@ import { deepCopy } from '@matterbridge/utils/deep-copy';
|
|
|
83
83
|
import { deepEqual } from '@matterbridge/utils/deep-equal';
|
|
84
84
|
import { isValidArray } from '@matterbridge/utils/validate';
|
|
85
85
|
import { BLUE, CYAN, db, debugStringify, er, hk, or, YELLOW, zb } from 'node-ansi-logger';
|
|
86
|
-
import { MatterbridgeBooleanStateConfigurationServer, MatterbridgeColorControlServer, MatterbridgeDeviceEnergyManagementModeServer, MatterbridgeDeviceEnergyManagementServer, MatterbridgeDoorLockServer, MatterbridgeFanControlServer, MatterbridgeIdentifyServer, MatterbridgeLevelControlServer, MatterbridgeLiftWindowCoveringServer, MatterbridgeModeSelectServer, MatterbridgeOnOffServer, MatterbridgeOperationalStateServer, MatterbridgePowerSourceServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeThermostatServer, MatterbridgeValveConfigurationAndControlServer, } from './
|
|
86
|
+
import { MatterbridgeBooleanStateConfigurationServer, MatterbridgeColorControlServer, MatterbridgeDeviceEnergyManagementModeServer, MatterbridgeDeviceEnergyManagementServer, MatterbridgeDoorLockServer, MatterbridgeFanControlServer, MatterbridgeIdentifyServer, MatterbridgeLevelControlServer, MatterbridgeLiftWindowCoveringServer, MatterbridgeModeSelectServer, MatterbridgeOnOffServer, MatterbridgeOperationalStateServer, MatterbridgePowerSourceServer, MatterbridgeSmokeCoAlarmServer, MatterbridgeThermostatServer, MatterbridgeValveConfigurationAndControlServer, } from './matterbridgeBehaviorsServer.js';
|
|
87
87
|
export function capitalizeFirstLetter(name) {
|
|
88
88
|
if (!name)
|
|
89
89
|
return name;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matterbridge/core",
|
|
3
|
-
"version": "3.6.1-dev-
|
|
3
|
+
"version": "3.6.1-dev-20260314-9cef6d3",
|
|
4
4
|
"description": "Matterbridge core library",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"homepage": "https://matterbridge.io/",
|
|
@@ -122,10 +122,10 @@
|
|
|
122
122
|
],
|
|
123
123
|
"dependencies": {
|
|
124
124
|
"@matter/main": "0.16.10",
|
|
125
|
-
"@matterbridge/dgram": "3.6.1-dev-
|
|
126
|
-
"@matterbridge/thread": "3.6.1-dev-
|
|
127
|
-
"@matterbridge/types": "3.6.1-dev-
|
|
128
|
-
"@matterbridge/utils": "3.6.1-dev-
|
|
125
|
+
"@matterbridge/dgram": "3.6.1-dev-20260314-9cef6d3",
|
|
126
|
+
"@matterbridge/thread": "3.6.1-dev-20260314-9cef6d3",
|
|
127
|
+
"@matterbridge/types": "3.6.1-dev-20260314-9cef6d3",
|
|
128
|
+
"@matterbridge/utils": "3.6.1-dev-20260314-9cef6d3",
|
|
129
129
|
"archiver": "7.0.1",
|
|
130
130
|
"express": "5.2.1",
|
|
131
131
|
"glob": "13.0.6",
|