@matterbridge/core 3.6.2-dev-20260316-0b03ae0 → 3.6.2-dev-20260316-21bfabd

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.
@@ -19,10 +19,8 @@ export function createNumberTemperatureControlClusterServer(endpoint, temperatur
19
19
  }
20
20
  export class MatterbridgeLevelTemperatureControlServer extends TemperatureControlServer.with(TemperatureControl.Feature.TemperatureLevel) {
21
21
  initialize() {
22
- if (this.state.supportedTemperatureLevels.length >= 2) {
23
- const device = this.endpoint.stateOf(MatterbridgeServer);
24
- device.log.info(`MatterbridgeLevelTemperatureControlServer initialized with selectedTemperatureLevel ${this.state.selectedTemperatureLevel} and supportedTemperatureLevels: ${this.state.supportedTemperatureLevels.join(', ')}`);
25
- }
22
+ const device = this.endpoint.stateOf(MatterbridgeServer);
23
+ device.log.info(`MatterbridgeLevelTemperatureControlServer initialized with selectedTemperatureLevel ${this.state.selectedTemperatureLevel} and supportedTemperatureLevels: ${this.state.supportedTemperatureLevels.join(', ')}`);
26
24
  }
27
25
  setTemperature(request) {
28
26
  const device = this.endpoint.stateOf(MatterbridgeServer);
package/dist/frontend.js CHANGED
@@ -1123,12 +1123,14 @@ export class Frontend extends EventEmitter {
1123
1123
  }
1124
1124
  return devices;
1125
1125
  }
1126
- getClusters(pluginName, endpointNumber) {
1126
+ getClusters(pluginName, endpointNumber, serialNumber, uniqueId) {
1127
1127
  if (this.matterbridge.hasCleanupStarted)
1128
1128
  return;
1129
- const endpoint = this.matterbridge.devices.array().find((d) => d.plugin === pluginName && d.maybeNumber === endpointNumber);
1129
+ const endpoint = this.matterbridge.devices
1130
+ .array()
1131
+ .find((d) => d.plugin === pluginName && d.maybeNumber === endpointNumber && (!serialNumber || d.serialNumber === serialNumber) && (!uniqueId || d.uniqueId === uniqueId));
1130
1132
  if (!endpoint || !endpoint.plugin || !endpoint.maybeNumber || !endpoint.maybeId || !endpoint.deviceName || !endpoint.serialNumber) {
1131
- this.log.error(`getClusters: no device found for plugin ${pluginName} and endpoint number ${endpointNumber}`);
1133
+ this.log.error(`getClusters: no device found for plugin ${pluginName} and endpoint number ${endpointNumber} (serial: ${serialNumber ?? 'N/A'}, uniqueId: ${uniqueId ?? 'N/A'})`);
1132
1134
  return;
1133
1135
  }
1134
1136
  const deviceTypes = [];
@@ -1592,7 +1594,7 @@ export class Frontend extends EventEmitter {
1592
1594
  sendResponse({ id: data.id, method: data.method, src: 'Matterbridge', dst: data.src, error: 'Wrong parameter endpoint in /api/clusters' });
1593
1595
  return;
1594
1596
  }
1595
- const response = this.getClusters(data.params.plugin, data.params.endpoint);
1597
+ const response = this.getClusters(data.params.plugin, data.params.endpoint, data.params.serialNumber, data.params.uniqueId);
1596
1598
  if (response) {
1597
1599
  sendResponse({
1598
1600
  id: data.id,
@@ -25,6 +25,13 @@ import { Semtag } from '@matter/types/globals';
25
25
  import { AnsiLogger, LogLevel } from 'node-ansi-logger';
26
26
  import { DeviceTypeDefinition } from './matterbridgeDeviceTypes.js';
27
27
  import { CommandHandlerFunction, MatterbridgeEndpointCommands, MatterbridgeEndpointOptions, SerializedMatterbridgeEndpoint } from './matterbridgeEndpointTypes.js';
28
+ type BehaviorCommandName<T extends Behavior.Type> = {
29
+ [K in keyof CommandsOfBehavior<T>]: K;
30
+ }[keyof CommandsOfBehavior<T>] & string;
31
+ type CommandsOfBehavior<T extends Behavior.Type> = {
32
+ [K in keyof InstanceType<T> as InstanceType<T>[K] extends (...args: infer _P) => infer _R ? K : never]: InstanceType<T>[K] extends (...args: infer P) => infer R ? (input: P[0], context?: ActionContext) => Promise<Awaited<R>> : never;
33
+ };
34
+ type BehaviorCommandParams<T extends Behavior.Type, C extends BehaviorCommandName<T>> = CommandsOfBehavior<T>[C] extends (input: infer P, context?: ActionContext) => Promise<unknown> ? P : never;
28
35
  export declare function isMatterbridgeEndpoint(value: unknown): value is MatterbridgeEndpoint;
29
36
  export declare function assertMatterbridgeEndpoint(value: unknown, context?: string): asserts value is MatterbridgeEndpoint;
30
37
  export declare class MatterbridgeEndpoint extends Endpoint {
@@ -74,11 +81,7 @@ export declare class MatterbridgeEndpoint extends Endpoint {
74
81
  addUserLabel(label: string, value: string): Promise<this>;
75
82
  addCommandHandler(command: keyof MatterbridgeEndpointCommands, handler: CommandHandlerFunction): this;
76
83
  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>;
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>;
84
+ invokeBehaviorCommand<T extends Behavior.Type, C extends BehaviorCommandName<T>>(cluster: T, command: C, params?: BehaviorCommandParams<T, C>): Promise<void>;
82
85
  invokeBehaviorCommand<T extends ClusterType, C extends keyof ClusterType.CommandsOf<T>>(cluster: T, command: C, params?: ClusterType.CommandsOf<T>[C] extends {
83
86
  requestSchema: infer S extends import('@matter/types/tlv').TlvSchema<unknown>;
84
87
  } ? import('@matter/types/tlv').TypeFromSchema<S> : never): Promise<void>;
@@ -191,3 +194,4 @@ export declare class MatterbridgeEndpoint extends Endpoint {
191
194
  createDefaultRadonConcentrationMeasurementClusterServer(measuredValue?: number | null, measurementUnit?: ConcentrationMeasurement.MeasurementUnit, measurementMedium?: ConcentrationMeasurement.MeasurementMedium): this;
192
195
  createDefaultNitrogenDioxideConcentrationMeasurementClusterServer(measuredValue?: number | null, measurementUnit?: ConcentrationMeasurement.MeasurementUnit, measurementMedium?: ConcentrationMeasurement.MeasurementMedium): this;
193
196
  }
197
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matterbridge/core",
3
- "version": "3.6.2-dev-20260316-0b03ae0",
3
+ "version": "3.6.2-dev-20260316-21bfabd",
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.2-dev-20260316-0b03ae0",
126
- "@matterbridge/thread": "3.6.2-dev-20260316-0b03ae0",
127
- "@matterbridge/types": "3.6.2-dev-20260316-0b03ae0",
128
- "@matterbridge/utils": "3.6.2-dev-20260316-0b03ae0",
125
+ "@matterbridge/dgram": "3.6.2-dev-20260316-21bfabd",
126
+ "@matterbridge/thread": "3.6.2-dev-20260316-21bfabd",
127
+ "@matterbridge/types": "3.6.2-dev-20260316-21bfabd",
128
+ "@matterbridge/utils": "3.6.2-dev-20260316-21bfabd",
129
129
  "express": "5.2.1",
130
130
  "multer": "2.1.1",
131
131
  "node-ansi-logger": "3.2.0",