@matterbridge/core 3.7.10 → 3.8.0-dev-20260524-92c5fdd

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 (50) hide show
  1. package/dist/behaviors/activatedCarbonFilterMonitoringServer.d.ts +5 -2
  2. package/dist/behaviors/bindingServer.js +0 -2
  3. package/dist/behaviors/booleanStateConfigurationServer.d.ts +6 -1
  4. package/dist/behaviors/colorControlServer.d.ts +20 -774
  5. package/dist/behaviors/deviceEnergyManagementServer.d.ts +9 -299
  6. package/dist/behaviors/doorLockServer.d.ts +29 -47
  7. package/dist/behaviors/doorLockServer.js +11 -299
  8. package/dist/behaviors/fanControlServer.d.ts +8 -1
  9. package/dist/behaviors/hepaFilterMonitoringServer.d.ts +5 -2
  10. package/dist/behaviors/smokeCoAlarmServer.d.ts +4 -77
  11. package/dist/behaviors/thermostatServer.d.ts +20 -722
  12. package/dist/behaviors/valveConfigurationAndControlServer.d.ts +4 -1
  13. package/dist/behaviors/windowCoveringServer.d.ts +28 -564
  14. package/dist/clusters/closure-control.d.ts +130 -620
  15. package/dist/clusters/closure-control.js +15 -170
  16. package/dist/clusters/closure-dimension.d.ts +148 -814
  17. package/dist/clusters/closure-dimension.js +15 -202
  18. package/dist/clusters/export.d.ts +1 -3
  19. package/dist/clusters/export.js +1 -3
  20. package/dist/clusters/soil-measurement.d.ts +31 -31
  21. package/dist/clusters/soil-measurement.js +29 -19
  22. package/dist/devices/closure.d.ts +14 -291
  23. package/dist/devices/closure.js +6 -13
  24. package/dist/devices/closurePanel.d.ts +13 -370
  25. package/dist/devices/closurePanel.js +9 -15
  26. package/dist/devices/evse.d.ts +7 -1
  27. package/dist/devices/heatPump.js +5 -5
  28. package/dist/devices/irrigationSystem.js +2 -2
  29. package/dist/devices/microwaveOven.d.ts +5 -76
  30. package/dist/devices/roboticVacuumCleaner.js +5 -5
  31. package/dist/devices/soilSensor.d.ts +0 -15
  32. package/dist/devices/soilSensor.js +4 -20
  33. package/dist/devices/temperatureControl.d.ts +10 -130
  34. package/dist/helpers.js +0 -8
  35. package/dist/jestutils/jestBroadcastServerSpy.d.ts +2 -2
  36. package/dist/jestutils/jestMatterTest.js +4 -4
  37. package/dist/jestutils/jestMatterbridgeEndpointSpy.d.ts +34 -37
  38. package/dist/jestutils/jestMatterbridgePlatformSpy.d.ts +4 -4
  39. package/dist/jestutils/jestMatterbridgeTest.js +1 -1
  40. package/dist/matter/export.d.ts +11 -0
  41. package/dist/matter/export.js +11 -0
  42. package/dist/matterbridge.js +3 -1
  43. package/dist/matterbridgeDeviceTypes.d.ts +15 -0
  44. package/dist/matterbridgeDeviceTypes.js +305 -162
  45. package/dist/matterbridgeEndpoint.d.ts +35 -25
  46. package/dist/matterbridgeEndpoint.js +6 -7
  47. package/dist/matterbridgeEndpointCommandHandler.d.ts +3 -59
  48. package/dist/matterbridgeEndpointHelpers.d.ts +83 -1382
  49. package/dist/matterbridgeEndpointHelpers.js +20 -5
  50. package/package.json +6 -6
@@ -1,24 +1,8 @@
1
- import { AttributeElement, ClusterElement, ClusterModel } from '@matter/main/model';
2
- import { ClusterBehavior } from '@matter/node';
1
+ import { SoilMeasurementServer } from '@matter/node/behaviors/soil-measurement';
2
+ import { SoilMeasurement } from '@matter/types/clusters/soil-measurement';
3
3
  import { MeasurementType } from '@matter/types/globals';
4
- import { SoilMeasurement } from '../clusters/soil-measurement.js';
5
4
  import { powerSource, soilSensor } from '../matterbridgeDeviceTypes.js';
6
5
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
7
- const SoilMeasurementSchema = ClusterElement({
8
- id: SoilMeasurement.Cluster.id,
9
- name: SoilMeasurement.Cluster.name,
10
- classification: 'application',
11
- }, AttributeElement({ id: 0xfffd, name: 'ClusterRevision', type: 'ClusterRevision', conformance: 'M', default: SoilMeasurement.Cluster.revision }), AttributeElement({ id: 0xfffc, name: 'FeatureMap', type: 'FeatureMap', conformance: 'M', default: 0 }), AttributeElement({ id: 0x0000, name: 'soilMoistureMeasurementLimits', type: 'MeasurementAccuracyStruct', conformance: 'M' }), AttributeElement({
12
- id: 0x0001,
13
- name: 'soilMoistureMeasuredValue',
14
- type: 'percent',
15
- conformance: 'M',
16
- quality: 'X',
17
- default: null,
18
- }));
19
- const SoilMeasurementBehavior = ClusterBehavior.for(SoilMeasurement.Cluster, new ClusterModel(SoilMeasurementSchema));
20
- export class SoilMeasurementServer extends SoilMeasurementBehavior {
21
- }
22
6
  export class SoilSensor extends MatterbridgeEndpoint {
23
7
  constructor(name, serial, options = {}) {
24
8
  super([soilSensor, powerSource], { id: `${name.replaceAll(' ', '')}-${serial.replaceAll(' ', '')}` });
@@ -44,9 +28,9 @@ export class SoilSensor extends MatterbridgeEndpoint {
44
28
  this.createDefaultTemperatureMeasurementClusterServer(options.temperatureMeasuredValue);
45
29
  }
46
30
  async setSoilMoistureMeasuredValue(value) {
47
- await this.setAttribute(SoilMeasurement.Cluster.id, 'soilMoistureMeasuredValue', value);
31
+ await this.setAttribute(SoilMeasurement.id, 'soilMoistureMeasuredValue', value);
48
32
  }
49
33
  getSoilMoistureMeasuredValue() {
50
- return this.getAttribute(SoilMeasurement.Cluster, 'soilMoistureMeasuredValue');
34
+ return this.getAttribute(SoilMeasurement, 'soilMoistureMeasuredValue');
51
35
  }
52
36
  }
@@ -3,140 +3,20 @@ import { TemperatureControl } from '@matter/types/clusters/temperature-control';
3
3
  import { MatterbridgeEndpoint } from '../matterbridgeEndpoint.js';
4
4
  export declare function createLevelTemperatureControlClusterServer(endpoint: MatterbridgeEndpoint, selectedTemperatureLevel?: number, supportedTemperatureLevels?: string[]): MatterbridgeEndpoint;
5
5
  export declare function createNumberTemperatureControlClusterServer(endpoint: MatterbridgeEndpoint, temperatureSetpoint?: number, minTemperature?: number, maxTemperature?: number, step?: number): MatterbridgeEndpoint;
6
- declare const MatterbridgeLevelTemperatureControlServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
7
- readonly id: 86;
8
- readonly name: "TemperatureControl";
9
- readonly revision: 1;
10
- readonly features: {
11
- readonly temperatureNumber: import("@matter/types").BitFlag;
12
- readonly temperatureLevel: import("@matter/types").BitFlag;
13
- readonly temperatureStep: import("@matter/types").BitFlag;
14
- };
15
- readonly commands: {
16
- readonly setTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
17
- targetTemperature: import("@matter/types").OptionalFieldType<number>;
18
- targetTemperatureLevel: import("@matter/types").OptionalFieldType<number>;
19
- }>, void, any>;
20
- };
21
- readonly extensions: readonly [{
22
- readonly flags: {
23
- readonly temperatureNumber: true;
24
- };
25
- readonly component: {
26
- readonly attributes: {
27
- readonly temperatureSetpoint: import("@matter/types").Attribute<number, any>;
28
- readonly minTemperature: import("@matter/types").FixedAttribute<number, any>;
29
- readonly maxTemperature: import("@matter/types").FixedAttribute<number, any>;
30
- };
31
- };
32
- }, {
33
- readonly flags: {
34
- readonly temperatureStep: true;
35
- };
36
- readonly component: {
37
- readonly attributes: {
38
- readonly step: import("@matter/types").FixedAttribute<number, any>;
39
- };
40
- };
41
- }, {
42
- readonly flags: {
43
- readonly temperatureLevel: true;
44
- };
45
- readonly component: {
46
- readonly attributes: {
47
- readonly selectedTemperatureLevel: import("@matter/types").Attribute<number, any>;
48
- readonly supportedTemperatureLevels: import("@matter/types").Attribute<string[], any>;
49
- };
50
- };
51
- }, {
52
- readonly flags: {
53
- readonly temperatureStep: true;
54
- readonly temperatureNumber: false;
55
- };
56
- readonly component: false;
57
- }, {
58
- readonly flags: {
59
- readonly temperatureNumber: true;
60
- readonly temperatureLevel: true;
61
- };
62
- readonly component: false;
63
- }, {
64
- readonly flags: {
65
- readonly temperatureNumber: false;
66
- readonly temperatureLevel: false;
67
- };
68
- readonly component: false;
69
- }];
70
- }>, readonly [TemperatureControl.Feature.TemperatureLevel]>, typeof TemperatureControlServer, import("@matter/node/behaviors/temperature-control").TemperatureControlInterface>;
6
+ declare const MatterbridgeLevelTemperatureControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof TemperatureControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<TemperatureControl, {
7
+ temperatureNumber: false;
8
+ temperatureLevel: true;
9
+ temperatureStep: false;
10
+ }>, import("@matter/types").ClusterType.Concrete, new () => {}, "temperatureControl">;
71
11
  export declare class MatterbridgeLevelTemperatureControlServer extends MatterbridgeLevelTemperatureControlServer_base {
72
12
  initialize(): void;
73
13
  setTemperature(request: TemperatureControl.SetTemperatureRequest): Promise<void>;
74
14
  }
75
- declare const MatterbridgeNumberTemperatureControlServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
76
- readonly id: 86;
77
- readonly name: "TemperatureControl";
78
- readonly revision: 1;
79
- readonly features: {
80
- readonly temperatureNumber: import("@matter/types").BitFlag;
81
- readonly temperatureLevel: import("@matter/types").BitFlag;
82
- readonly temperatureStep: import("@matter/types").BitFlag;
83
- };
84
- readonly commands: {
85
- readonly setTemperature: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
86
- targetTemperature: import("@matter/types").OptionalFieldType<number>;
87
- targetTemperatureLevel: import("@matter/types").OptionalFieldType<number>;
88
- }>, void, any>;
89
- };
90
- readonly extensions: readonly [{
91
- readonly flags: {
92
- readonly temperatureNumber: true;
93
- };
94
- readonly component: {
95
- readonly attributes: {
96
- readonly temperatureSetpoint: import("@matter/types").Attribute<number, any>;
97
- readonly minTemperature: import("@matter/types").FixedAttribute<number, any>;
98
- readonly maxTemperature: import("@matter/types").FixedAttribute<number, any>;
99
- };
100
- };
101
- }, {
102
- readonly flags: {
103
- readonly temperatureStep: true;
104
- };
105
- readonly component: {
106
- readonly attributes: {
107
- readonly step: import("@matter/types").FixedAttribute<number, any>;
108
- };
109
- };
110
- }, {
111
- readonly flags: {
112
- readonly temperatureLevel: true;
113
- };
114
- readonly component: {
115
- readonly attributes: {
116
- readonly selectedTemperatureLevel: import("@matter/types").Attribute<number, any>;
117
- readonly supportedTemperatureLevels: import("@matter/types").Attribute<string[], any>;
118
- };
119
- };
120
- }, {
121
- readonly flags: {
122
- readonly temperatureStep: true;
123
- readonly temperatureNumber: false;
124
- };
125
- readonly component: false;
126
- }, {
127
- readonly flags: {
128
- readonly temperatureNumber: true;
129
- readonly temperatureLevel: true;
130
- };
131
- readonly component: false;
132
- }, {
133
- readonly flags: {
134
- readonly temperatureNumber: false;
135
- readonly temperatureLevel: false;
136
- };
137
- readonly component: false;
138
- }];
139
- }>, readonly [TemperatureControl.Feature.TemperatureNumber, TemperatureControl.Feature.TemperatureStep]>, typeof TemperatureControlServer, import("@matter/node/behaviors/temperature-control").TemperatureControlInterface>;
15
+ declare const MatterbridgeNumberTemperatureControlServer_base: import("@matter/node").ClusterBehavior.Type<typeof TemperatureControlServer, import("@matter/types").ClusterType.WithSupportedFeatures<TemperatureControl, {
16
+ temperatureNumber: true;
17
+ temperatureLevel: false;
18
+ temperatureStep: true;
19
+ }>, import("@matter/types").ClusterType.Concrete, new () => {}, "temperatureControl">;
140
20
  export declare class MatterbridgeNumberTemperatureControlServer extends MatterbridgeNumberTemperatureControlServer_base {
141
21
  initialize(): void;
142
22
  setTemperature(request: TemperatureControl.SetTemperatureRequest): Promise<void>;
package/dist/helpers.js CHANGED
@@ -9,8 +9,6 @@ import { MountedOnOffControlDevice } from '@matter/node/devices/mounted-on-off-c
9
9
  import { OnOffLightDevice } from '@matter/node/devices/on-off-light';
10
10
  import { OnOffLightSwitchDevice } from '@matter/node/devices/on-off-light-switch';
11
11
  import { OnOffPlugInUnitDevice } from '@matter/node/devices/on-off-plug-in-unit';
12
- import { Identify } from '@matter/types/clusters/identify';
13
- import { OnOff } from '@matter/types/clusters/on-off';
14
12
  import { VendorId } from '@matter/types/datatype';
15
13
  import { hasParameter } from '@matterbridge/utils/cli';
16
14
  import { doorLockDevice } from './matterbridgeDeviceTypes.js';
@@ -51,12 +49,6 @@ export async function addVirtualDevice(aggregatorEndpoint, name, type, callback)
51
49
  });
52
50
  await aggregatorEndpoint.add(device);
53
51
  await device.construction.ready;
54
- if (type === 'switch') {
55
- await device.act(async (agent) => {
56
- const descriptor = await agent.load(DescriptorServer);
57
- descriptor.state.clientList.push(Identify.Cluster.id, OnOff.Cluster.id);
58
- });
59
- }
60
52
  if (type === 'mounted_switch') {
61
53
  await device.act(async (agent) => {
62
54
  const descriptor = await agent.load(DescriptorServer);
@@ -8,5 +8,5 @@ export declare const broadcastBroadcastServerSpy: import("jest-mock").SpiedFunct
8
8
  export declare const requestBroadcastServerSpy: import("jest-mock").SpiedFunction<(<K extends keyof import("@matterbridge/types").WorkerMessageTypes>(message: import("@matterbridge/types").WorkerMessageRequest<K>) => void)>;
9
9
  export declare const respondBroadcastServerSpy: import("jest-mock").SpiedFunction<(<K extends keyof import("@matterbridge/types").WorkerMessageTypes>(message: import("@matterbridge/types").WorkerMessageResponse<K>) => void)>;
10
10
  export declare const fetchBroadcastServerSpy: import("jest-mock").SpiedFunction<(<T extends import("@matterbridge/types").WorkerMessageRequestAny, K extends Extract<keyof import("@matterbridge/types").WorkerMessageTypes, T["type"]>>(message: T, timeout?: number) => Promise<import("@matterbridge/types").WorkerMessageResponseSuccess<K>>)>;
11
- export declare const broadcastMessageHandlerBroadcastServerSpy: import("jest-mock").SpiedSetter<import("@matterbridge/types").WorkerSrcType> | import("jest-mock").SpiedGetter<import("@matterbridge/types").WorkerSrcType>;
12
- export declare const broadcastMessageErrorHandlerBroadcastServerSpy: import("jest-mock").SpiedSetter<import("@matterbridge/types").WorkerSrcType> | import("jest-mock").SpiedGetter<import("@matterbridge/types").WorkerSrcType>;
11
+ export declare const broadcastMessageHandlerBroadcastServerSpy: import("jest-mock").SpiedGetter<import("@matterbridge/types").WorkerSrcType> | import("jest-mock").SpiedSetter<import("@matterbridge/types").WorkerSrcType>;
12
+ export declare const broadcastMessageErrorHandlerBroadcastServerSpy: import("jest-mock").SpiedGetter<import("@matterbridge/types").WorkerSrcType> | import("jest-mock").SpiedSetter<import("@matterbridge/types").WorkerSrcType>;
@@ -57,10 +57,10 @@ export function getPlatformMatterbridge() {
57
57
  matterbridgePluginDirectory: path.join(HOMEDIR, 'Matterbridge'),
58
58
  matterbridgeCertDirectory: path.join(HOMEDIR, '.mattercert'),
59
59
  globalModulesDirectory: path.join(HOMEDIR, 'node_modules'),
60
- matterbridgeVersion: '3.7.10',
61
- matterbridgeLatestVersion: '3.7.10',
62
- matterbridgeDevVersion: '3.7.10',
63
- frontendVersion: '3.7.10',
60
+ matterbridgeVersion: '3.8.0',
61
+ matterbridgeLatestVersion: '3.8.0',
62
+ matterbridgeDevVersion: '3.8.0',
63
+ frontendVersion: '3.8.0',
64
64
  bridgeMode: '',
65
65
  restartMode: '',
66
66
  virtualMode: 'mounted_switch',
@@ -1,57 +1,54 @@
1
1
  export declare const setClusterMatterbridgeEndpointSpy: import("jest-mock").SpiedFunction<{
2
2
  <T extends import("@matter/node").Behavior.Type>(cluster: T, value: import("@matter/node").Behavior.StateOf<T>, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
3
- <T extends import("@matter/types").ClusterType>(cluster: T, value: import("@matter/types").ClusterType.AttributeValues<T>, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
3
+ <T extends import("@matter/types").ClusterType>(cluster: T, value: T["Typing"] extends {
4
+ Attributes: infer Attributes;
5
+ } ? Attributes : {}, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
4
6
  (cluster: import("@matter/types").ClusterId | string, value: Record<string, boolean | number | bigint | string | object | undefined | null>, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
5
7
  }>;
6
8
  export declare const setAttributeMatterbridgeEndpointSpy: import("jest-mock").SpiedFunction<{
7
9
  <T extends import("@matter/node").Behavior.Type, A extends keyof import("@matter/node").Behavior.StateOf<T>>(clusterId: T, attribute: A, value: import("@matter/node").Behavior.StateOf<T>[A], log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
8
- <T extends import("@matter/types").ClusterType, A extends keyof import("@matter/types").ClusterType.AttributeValues<T>>(clusterId: T, attribute: A, value: import("@matter/types").ClusterType.AttributeValues<T>[A], log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
10
+ <T extends import("@matter/types").ClusterType, A extends keyof (T["Typing"] extends {
11
+ Attributes: infer Attributes;
12
+ } ? Attributes : {})>(clusterId: T, attribute: A, value: (T["Typing"] extends {
13
+ Attributes: infer Attributes;
14
+ } ? Attributes : {})[A], log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
9
15
  (clusterId: import("@matter/types").ClusterId | string, attribute: string, value: boolean | number | bigint | string | object | null, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
10
16
  }>;
11
17
  export declare const updateAttributeMatterbridgeEndpointSpy: import("jest-mock").SpiedFunction<{
12
18
  <T extends import("@matter/node").Behavior.Type, A extends keyof import("@matter/node").Behavior.StateOf<T>>(cluster: T, attribute: A, value: import("@matter/node").Behavior.StateOf<T>[A], log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
13
- <T extends import("@matter/types").ClusterType, A extends keyof import("@matter/types").ClusterType.AttributeValues<T>>(cluster: T, attribute: A, value: import("@matter/types").ClusterType.AttributeValues<T>[A], log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
19
+ <T extends import("@matter/types").ClusterType, A extends keyof (T["Typing"] extends {
20
+ Attributes: infer Attributes;
21
+ } ? Attributes : {})>(cluster: T, attribute: A, value: (T["Typing"] extends {
22
+ Attributes: infer Attributes;
23
+ } ? Attributes : {})[A], log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
14
24
  (cluster: import("@matter/types").ClusterId | string, attribute: string, value: boolean | number | bigint | string | object | null, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
15
25
  }>;
16
26
  export declare const subscribeAttributeMatterbridgeEndpointSpy: import("jest-mock").SpiedFunction<{
17
27
  <T extends import("@matter/node").Behavior.Type, A extends keyof import("@matter/node").Behavior.StateOf<T>>(cluster: T, attribute: A, listener: (newValue: import("@matter/node").Behavior.StateOf<T>[A], oldValue: import("@matter/node").Behavior.StateOf<T>[A], context: import("@matter/node").ActionContext) => void, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
18
- <T extends import("@matter/types").ClusterType, A extends keyof import("@matter/types").ClusterType.AttributeValues<T>>(cluster: T, attribute: A, listener: (newValue: import("@matter/types").ClusterType.AttributeValues<T>[A], oldValue: import("@matter/types").ClusterType.AttributeValues<T>[A], context: import("@matter/node").ActionContext) => void, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
28
+ <T extends import("@matter/types").ClusterType, A extends keyof (T["Typing"] extends {
29
+ Attributes: infer Attributes;
30
+ } ? Attributes : {})>(cluster: T, attribute: A, listener: (newValue: (T["Typing"] extends {
31
+ Attributes: infer Attributes;
32
+ } ? Attributes : {})[A], oldValue: (T["Typing"] extends {
33
+ Attributes: infer Attributes;
34
+ } ? Attributes : {})[A], context: import("@matter/node").ActionContext) => void, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
19
35
  (cluster: import("@matter/types").ClusterId | string, attribute: string, listener: (newValue: any, oldValue: any, context: import("@matter/node").ActionContext) => void, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
20
36
  }>;
21
37
  export declare const triggerEventMatterbridgeEndpointSpy: import("jest-mock").SpiedFunction<{
22
- <T extends import("@matter/node").Behavior.Type, E extends keyof import("@matter/types").ClusterType.EventsOf<T extends {
23
- cluster: infer C extends import("@matter/types").ClusterType;
24
- } ? C : import("@matter/types").ClusterType.Of<{
25
- readonly id: 0;
26
- readonly revision: 0;
27
- readonly name: "Unknown";
28
- readonly attributes: {};
29
- readonly commands: {};
30
- readonly events: {};
31
- }>> & string>(cluster: T, event: E, payload: E extends keyof import("@matter/types").ClusterType.EventsOf<T extends {
32
- cluster: infer C extends import("@matter/types").ClusterType;
33
- } ? C : import("@matter/types").ClusterType.Of<{
34
- readonly id: 0;
35
- readonly revision: 0;
36
- readonly name: "Unknown";
37
- readonly attributes: {};
38
- readonly commands: {};
39
- readonly events: {};
40
- }>> ? import("@matter/types").ClusterType.EventsOf<T extends {
41
- cluster: infer C extends import("@matter/types").ClusterType;
42
- } ? C : import("@matter/types").ClusterType.Of<{
43
- readonly id: 0;
44
- readonly revision: 0;
45
- readonly name: "Unknown";
46
- readonly attributes: {};
47
- readonly commands: {};
48
- readonly events: {};
49
- }>>[E] extends {
50
- schema: infer S extends import("@matter/types").TlvSchema<unknown>;
51
- } ? import("@matter/types").TypeFromSchema<S> : never : never, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
52
- <T extends import("@matter/types").ClusterType, E extends keyof import("@matter/types").ClusterType.EventsOf<T> & string>(cluster: T, event: E, payload: E extends keyof import("@matter/types").ClusterType.EventsOf<T> ? import("@matter/types").ClusterType.EventsOf<T>[E] extends {
53
- schema: infer S extends import("@matter/types").TlvSchema<unknown>;
54
- } ? import("@matter/types").TypeFromSchema<S> : never : never, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
38
+ <T extends import("@matter/node").Behavior.Type, E extends keyof ((T extends {
39
+ Interface: infer N extends import("@matter/types").ClusterTyping;
40
+ } ? N : import("@matter/types").ClusterTyping)["Events"] & {}) & string>(cluster: T, event: E, payload: E extends keyof ((T extends {
41
+ Interface: infer N extends import("@matter/types").ClusterTyping;
42
+ } ? N : import("@matter/types").ClusterTyping)["Events"] & {}) & string ? ((T extends {
43
+ Interface: infer N extends import("@matter/types").ClusterTyping;
44
+ } ? N : import("@matter/types").ClusterTyping)["Events"] & {})[E] : never, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
45
+ <T extends import("@matter/types").ClusterType, E extends keyof (T["Typing"] extends {
46
+ Events: infer Events;
47
+ } ? Events : Record<string, never>) & string>(cluster: T, event: E, payload: E extends keyof (T["Typing"] extends {
48
+ Events: infer Events;
49
+ } ? Events : Record<string, never>) ? (T["Typing"] extends {
50
+ Events: infer Events;
51
+ } ? Events : Record<string, never>)[E] : never, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
55
52
  (cluster: import("@matter/types").ClusterId | string, event: string, payload: Record<string, boolean | number | bigint | string | object | undefined | null>, log?: import("node-ansi-logger").AnsiLogger): Promise<boolean>;
56
53
  }>;
57
54
  export declare const triggerSwitchEventMatterbridgeEndpointSpy: import("jest-mock").SpiedFunction<(event: "Single" | "Double" | "Long" | "Press" | "Release", log?: import("node-ansi-logger").AnsiLogger) => Promise<boolean>>;
@@ -1,4 +1,4 @@
1
- export declare const destroyMatterbridgePlatformSpy: import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
1
+ export declare const destroyMatterbridgePlatformSpy: import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
2
2
  export declare const onStartMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(reason?: string) => Promise<void>>;
3
3
  export declare const onConfigureMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<() => Promise<void>>;
4
4
  export declare const onShutdownMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(reason?: string) => Promise<void>>;
@@ -24,7 +24,7 @@ export declare const registerVirtualDeviceMatterbridgePlatformSpy: import("jest-
24
24
  export declare const registerDeviceMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(device: import("../matterbridgeEndpoint.js").MatterbridgeEndpoint) => Promise<void>>;
25
25
  export declare const unregisterDeviceMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(device: import("../matterbridgeEndpoint.js").MatterbridgeEndpoint) => Promise<void>>;
26
26
  export declare const unregisterAllDevicesMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(delay?: number) => Promise<void>>;
27
- export declare const saveSelectsMatterbridgePlatformSpy: import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
27
+ export declare const saveSelectsMatterbridgePlatformSpy: import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
28
28
  export declare const clearSelectMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<() => Promise<void>>;
29
29
  export declare const clearDeviceSelectMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(serial: string) => Promise<void>>;
30
30
  export declare const clearEntitySelectMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(name: string) => Promise<void>>;
@@ -56,5 +56,5 @@ export declare const getSelectEntitiesMatterbridgePlatformSpy: import("jest-mock
56
56
  export declare const verifyMatterbridgeVersionMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(requiredVersion: string, destroy?: boolean) => boolean>;
57
57
  export declare const validateDeviceMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(device: string | string[], log?: boolean) => boolean>;
58
58
  export declare const validateEntityMatterbridgePlatformSpy: import("jest-mock").SpiedFunction<(device: string, entity: string, log?: boolean) => boolean>;
59
- export declare const clearEndpointNumbersMatterbridgePlatformSpy: import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
60
- export declare const checkEndpointNumbersMatterbridgePlatformSpy: import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
59
+ export declare const clearEndpointNumbersMatterbridgePlatformSpy: import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
60
+ export declare const checkEndpointNumbersMatterbridgePlatformSpy: import("jest-mock").SpiedGetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage> | import("jest-mock").SpiedSetter<string | boolean | import("node-ansi-logger").AnsiLogger | Promise<void> | import("../matterbridgePlatform.js").PlatformConfig | import("../matterbridgePlatform.js").PlatformMatterbridge | import("node-persist-manager").NodeStorage>;
@@ -109,7 +109,7 @@ export async function createMatterbridgeEnvironment() {
109
109
  matterbridge = await Matterbridge.loadInstance(false);
110
110
  expect(matterbridge).toBeDefined();
111
111
  expect(matterbridge).toBeInstanceOf(Matterbridge);
112
- matterbridge.matterbridgeVersion = '3.7.10';
112
+ matterbridge.matterbridgeVersion = '3.8.0';
113
113
  matterbridge.bridgeMode = 'bridge';
114
114
  matterbridge.rootDirectory = path.join(HOMEDIR);
115
115
  matterbridge.homeDirectory = path.join(HOMEDIR);
@@ -1,3 +1,14 @@
1
1
  export * from '@matter/main';
2
2
  export { AttributeElement, ClusterElement, ClusterModel, CommandElement, EventElement, FieldElement, MatterDefinition } from '@matter/main/model';
3
3
  export { MdnsService, Val } from '@matter/main/protocol';
4
+ export { CommonAreaNamespaceTag as AreaNamespaceTag } from '@matter/main/node';
5
+ export { CommonClosureTag as ClosureTag } from '@matter/main/node';
6
+ export { CommonCompassDirectionTag as CompassDirectionTag } from '@matter/main/node';
7
+ export { CommonCompassLocationTag as CompassLocationTag } from '@matter/main/node';
8
+ export { CommonDirectionTag as DirectionTag } from '@matter/main/node';
9
+ export { CommonLandmarkNamespaceTag as LandmarkNamespaceTag } from '@matter/main/node';
10
+ export { CommonLevelTag as LevelTag } from '@matter/main/node';
11
+ export { CommonLocationTag as LocationTag } from '@matter/main/node';
12
+ export { CommonNumberTag as NumberTag } from '@matter/main/node';
13
+ export { CommonPositionTag as PositionTag } from '@matter/main/node';
14
+ export { CommonRelativePositionTag as RelativePositionTag } from '@matter/main/node';
@@ -1,3 +1,14 @@
1
1
  export * from '@matter/main';
2
2
  export { AttributeElement, ClusterElement, ClusterModel, CommandElement, EventElement, FieldElement, MatterDefinition } from '@matter/main/model';
3
3
  export { MdnsService, Val } from '@matter/main/protocol';
4
+ export { CommonAreaNamespaceTag as AreaNamespaceTag } from '@matter/main/node';
5
+ export { CommonClosureTag as ClosureTag } from '@matter/main/node';
6
+ export { CommonCompassDirectionTag as CompassDirectionTag } from '@matter/main/node';
7
+ export { CommonCompassLocationTag as CompassLocationTag } from '@matter/main/node';
8
+ export { CommonDirectionTag as DirectionTag } from '@matter/main/node';
9
+ export { CommonLandmarkNamespaceTag as LandmarkNamespaceTag } from '@matter/main/node';
10
+ export { CommonLevelTag as LevelTag } from '@matter/main/node';
11
+ export { CommonLocationTag as LocationTag } from '@matter/main/node';
12
+ export { CommonNumberTag as NumberTag } from '@matter/main/node';
13
+ export { CommonPositionTag as PositionTag } from '@matter/main/node';
14
+ export { CommonRelativePositionTag as RelativePositionTag } from '@matter/main/node';
@@ -652,7 +652,7 @@ export class Matterbridge extends EventEmitter {
652
652
  execSync(`${sudo ? 'sudo ' : ''}npm install -g ${path.join(this.matterbridgeDirectory, 'uploads', plugin.tarballPath)} --no-fund --no-audit --silent --omit=dev`);
653
653
  }
654
654
  else {
655
- this.log.info(`Plugin ${plg}${plugin.name}${nf} not found. Trying to reinstall it from npm...`);
655
+ this.log.info(`Plugin ${plg}${plugin.name}${nf} not found. Trying to reinstall it from npm${plugin.version.includes('-dev-') ? ' with tag @dev' : ''}...`);
656
656
  execSync(`${sudo ? 'sudo ' : ''}npm install -g ${plugin.name}${plugin.version.includes('-dev-') ? '@dev' : ''} --no-fund --no-audit --silent --omit=dev`);
657
657
  }
658
658
  this.log.info(`Plugin ${plg}${plugin.name}${nf} reinstalled.`);
@@ -1945,6 +1945,8 @@ export class Matterbridge extends EventEmitter {
1945
1945
  listeningAddressIpv4: this.ipv4Address,
1946
1946
  listeningAddressIpv6: this.ipv6Address,
1947
1947
  port,
1948
+ tcp: true,
1949
+ transportPreference: 'udp',
1948
1950
  },
1949
1951
  operationalCredentials: {
1950
1952
  certification: this.certification,
@@ -31,6 +31,7 @@ export declare const DeviceTypeDefinition: ({ name, code, deviceClass, revision,
31
31
  requiredClientClusters?: ClusterId[];
32
32
  optionalClientClusters?: ClusterId[];
33
33
  }) => DeviceTypeDefinition;
34
+ export declare const baseDevice: DeviceTypeDefinition;
34
35
  export declare const rootNode: DeviceTypeDefinition;
35
36
  export declare const powerSource: DeviceTypeDefinition;
36
37
  export declare const OTARequestor: DeviceTypeDefinition;
@@ -97,3 +98,17 @@ export declare const soilSensor: DeviceTypeDefinition;
97
98
  export declare const irrigationSystem: DeviceTypeDefinition;
98
99
  export declare const closure: DeviceTypeDefinition;
99
100
  export declare const closurePanel: DeviceTypeDefinition;
101
+ export declare const closureController: DeviceTypeDefinition;
102
+ export declare const meterReferencePoint: DeviceTypeDefinition;
103
+ export declare const electricalEnergyTariff: DeviceTypeDefinition;
104
+ export declare const electricalMeter: DeviceTypeDefinition;
105
+ export declare const electricalUtilityMeter: DeviceTypeDefinition;
106
+ export declare const camera: DeviceTypeDefinition;
107
+ export declare const floodlightCamera: DeviceTypeDefinition;
108
+ export declare const videoDoorbell: DeviceTypeDefinition;
109
+ export declare const intercom: DeviceTypeDefinition;
110
+ export declare const audioDoorbell: DeviceTypeDefinition;
111
+ export declare const snapshotCamera: DeviceTypeDefinition;
112
+ export declare const chime: DeviceTypeDefinition;
113
+ export declare const cameraController: DeviceTypeDefinition;
114
+ export declare const doorbell: DeviceTypeDefinition;