@matterbridge/core 3.6.1-dev-20260313-a699c0e → 3.6.1
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/matterbridge.js +1 -1
- package/dist/matterbridgeBehaviorsClient.js +1 -1
- package/dist/{matterbridgeBehaviors.d.ts → matterbridgeBehaviorsServer.d.ts} +5 -4
- package/dist/{matterbridgeBehaviors.js → matterbridgeBehaviorsServer.js} +19 -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 +6 -6
|
@@ -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,
|
package/dist/matterbridge.js
CHANGED
|
@@ -1183,7 +1183,7 @@ export class Matterbridge extends EventEmitter {
|
|
|
1183
1183
|
catch {
|
|
1184
1184
|
}
|
|
1185
1185
|
}
|
|
1186
|
-
if (hasParameter('reset-sessions')) {
|
|
1186
|
+
if (hasParameter('reset-sessions') || !hasParameter('no-reset-sessions')) {
|
|
1187
1187
|
this.log.debug(`Cleaning matter storage context for ${GREEN}Matterbridge${db}...`);
|
|
1188
1188
|
unlinkSafe(path.join(this.matterbridgeDirectory, MATTER_STORAGE_NAME, 'Matterbridge', 'sessions.resumptionRecords'), this.log);
|
|
1189
1189
|
unlinkSafe(path.join(this.matterbridgeDirectory, MATTER_STORAGE_NAME, 'Matterbridge', 'root.subscriptions.subscriptions'), this.log);
|
|
@@ -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>;
|
|
@@ -1615,6 +1615,7 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1615
1615
|
}];
|
|
1616
1616
|
}>, readonly [Thermostat.Feature.Cooling, Thermostat.Feature.Heating, Thermostat.Feature.AutoMode]>, typeof ThermostatServer, import("@matter/node/behaviors/thermostat").ThermostatInterface>;
|
|
1617
1617
|
export declare class MatterbridgeThermostatServer extends MatterbridgeThermostatServer_base {
|
|
1618
|
+
initialize(): Promise<void>;
|
|
1618
1619
|
setpointRaiseLower(request: Thermostat.SetpointRaiseLowerRequest): MaybePromise;
|
|
1619
1620
|
}
|
|
1620
1621
|
declare const MatterbridgePresetThermostatServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
|
|
@@ -1691,12 +1692,12 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1691
1692
|
}>, void, any>;
|
|
1692
1693
|
readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1693
1694
|
requestType: import("@matter/types").FieldType<Thermostat.RequestType>;
|
|
1694
|
-
attributeRequests: import("@matter/types").FieldType<import("@matter/types
|
|
1695
|
+
attributeRequests: import("@matter/types").FieldType<import("@matter/types").AttributeId[]>;
|
|
1695
1696
|
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1696
1697
|
}>, import("@matter/types").TypeFromFields<{
|
|
1697
1698
|
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1698
1699
|
attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1699
|
-
attributeId: import("@matter/types").FieldType<import("@matter/types
|
|
1700
|
+
attributeId: import("@matter/types").FieldType<import("@matter/types").AttributeId>;
|
|
1700
1701
|
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1701
1702
|
}>[]>;
|
|
1702
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';
|
|
@@ -321,6 +323,17 @@ export class MatterbridgeFanControlServer extends FanControlServer.with(FanContr
|
|
|
321
323
|
}
|
|
322
324
|
}
|
|
323
325
|
export class MatterbridgeThermostatServer extends ThermostatServer.with(Thermostat.Feature.Cooling, Thermostat.Feature.Heating, Thermostat.Feature.AutoMode) {
|
|
326
|
+
async initialize() {
|
|
327
|
+
await super.initialize();
|
|
328
|
+
this.endpoint.construction.onSuccess(async () => {
|
|
329
|
+
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
330
|
+
device.log.debug(`Removing atomic commands (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
331
|
+
await this.endpoint.setStateOf(ThermostatServer, {
|
|
332
|
+
acceptedCommandList: [0],
|
|
333
|
+
generatedCommandList: [],
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
}
|
|
324
337
|
setpointRaiseLower(request) {
|
|
325
338
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
326
339
|
device.log.info(`Setting setpoint by ${request.amount} in mode ${request.mode} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
@@ -369,6 +382,12 @@ export class MatterbridgePresetThermostatServer extends ThermostatServer.with(Th
|
|
|
369
382
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
|
370
383
|
device.log.info(`Setting preset to ${request.presetHandle} (endpoint ${this.endpoint.maybeId}.${this.endpoint.maybeNumber})`);
|
|
371
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;
|
|
372
391
|
device.log.debug(`MatterbridgePresetThermostatServer: setActivePresetRequest called with presetHandle: ${request.presetHandle}`);
|
|
373
392
|
}
|
|
374
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
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "Matterbridge core library",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"homepage": "https://matterbridge.io/",
|
|
@@ -121,11 +121,11 @@
|
|
|
121
121
|
"CHANGELOG.md"
|
|
122
122
|
],
|
|
123
123
|
"dependencies": {
|
|
124
|
-
"@matter/main": "0.
|
|
125
|
-
"@matterbridge/dgram": "3.6.1
|
|
126
|
-
"@matterbridge/thread": "3.6.1
|
|
127
|
-
"@matterbridge/types": "3.6.1
|
|
128
|
-
"@matterbridge/utils": "3.6.1
|
|
124
|
+
"@matter/main": "0.16.10",
|
|
125
|
+
"@matterbridge/dgram": "3.6.1",
|
|
126
|
+
"@matterbridge/thread": "3.6.1",
|
|
127
|
+
"@matterbridge/types": "3.6.1",
|
|
128
|
+
"@matterbridge/utils": "3.6.1",
|
|
129
129
|
"archiver": "7.0.1",
|
|
130
130
|
"express": "5.2.1",
|
|
131
131
|
"glob": "13.0.6",
|