@matterbridge/core 3.8.1-dev-20260610-f258cc7 → 3.9.0-dev-20260612-94fd2e4
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/matterbridgeDeviceTypes.d.ts +1 -3
- package/dist/matterbridgeDeviceTypes.js +91 -183
- package/dist/matterbridgeEndpoint.js +1 -1
- package/dist/matterbridgeEndpointHelpers.d.ts +1 -1
- package/dist/matterbridgeEndpointHelpers.js +4 -2
- package/dist/matterbridgeFactory.d.ts +12 -0
- package/dist/matterbridgeFactory.js +62 -0
- package/package.json +6 -6
|
@@ -18,7 +18,6 @@ export declare enum DeviceScopes {
|
|
|
18
18
|
}
|
|
19
19
|
export interface DeviceTypeDefinition {
|
|
20
20
|
name: string;
|
|
21
|
-
deviceName: string;
|
|
22
21
|
code: DeviceTypeId;
|
|
23
22
|
deviceClass: DeviceClasses;
|
|
24
23
|
deviceScope: DeviceScopes;
|
|
@@ -31,9 +30,8 @@ export interface DeviceTypeDefinition {
|
|
|
31
30
|
requiredServerClustersOneOf?: ClusterId[];
|
|
32
31
|
composedOf?: DeviceTypeDefinition[];
|
|
33
32
|
}
|
|
34
|
-
export declare const DeviceTypeDefinition: ({ name,
|
|
33
|
+
export declare const DeviceTypeDefinition: ({ name, code, deviceClass, deviceScope, revision, requiredServerClusters, optionalServerClusters, requiredClientClusters, optionalClientClusters, requiredDeviceTypes, requiredServerClustersOneOf, composedOf, }: {
|
|
35
34
|
name: string;
|
|
36
|
-
deviceName: string;
|
|
37
35
|
code: number;
|
|
38
36
|
deviceClass: DeviceClasses;
|
|
39
37
|
deviceScope: DeviceScopes;
|
|
@@ -127,9 +127,8 @@ export var DeviceScopes;
|
|
|
127
127
|
DeviceScopes["Endpoint"] = "endpoint";
|
|
128
128
|
DeviceScopes["Node"] = "node";
|
|
129
129
|
})(DeviceScopes || (DeviceScopes = {}));
|
|
130
|
-
export const DeviceTypeDefinition = ({ name,
|
|
130
|
+
export const DeviceTypeDefinition = ({ name, code, deviceClass, deviceScope, revision, requiredServerClusters = [], optionalServerClusters = [], requiredClientClusters = [], optionalClientClusters = [], requiredDeviceTypes = [], requiredServerClustersOneOf = [], composedOf = [], }) => ({
|
|
131
131
|
name,
|
|
132
|
-
deviceName,
|
|
133
132
|
code: DeviceTypeId(code),
|
|
134
133
|
deviceClass,
|
|
135
134
|
deviceScope,
|
|
@@ -143,8 +142,7 @@ export const DeviceTypeDefinition = ({ name, deviceName, code, deviceClass, devi
|
|
|
143
142
|
composedOf,
|
|
144
143
|
});
|
|
145
144
|
export const baseDeviceType = DeviceTypeDefinition({
|
|
146
|
-
name: '
|
|
147
|
-
deviceName: 'BaseDeviceType',
|
|
145
|
+
name: 'BaseDeviceType',
|
|
148
146
|
code: 0x0000,
|
|
149
147
|
deviceClass: DeviceClasses.Simple,
|
|
150
148
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -153,8 +151,7 @@ export const baseDeviceType = DeviceTypeDefinition({
|
|
|
153
151
|
optionalServerClusters: [Binding.id, FixedLabel.id, UserLabel.id],
|
|
154
152
|
});
|
|
155
153
|
export const rootNode = DeviceTypeDefinition({
|
|
156
|
-
name: '
|
|
157
|
-
deviceName: 'RootNode',
|
|
154
|
+
name: 'RootNode',
|
|
158
155
|
code: 0x0016,
|
|
159
156
|
deviceClass: DeviceClasses.Node,
|
|
160
157
|
deviceScope: DeviceScopes.Node,
|
|
@@ -165,8 +162,7 @@ export const rootNode = DeviceTypeDefinition({
|
|
|
165
162
|
optionalClientClusters: [],
|
|
166
163
|
});
|
|
167
164
|
export const powerSource = DeviceTypeDefinition({
|
|
168
|
-
name: '
|
|
169
|
-
deviceName: 'PowerSource',
|
|
165
|
+
name: 'PowerSource',
|
|
170
166
|
code: 0x0011,
|
|
171
167
|
deviceClass: DeviceClasses.Utility,
|
|
172
168
|
deviceScope: DeviceScopes.Node,
|
|
@@ -175,8 +171,7 @@ export const powerSource = DeviceTypeDefinition({
|
|
|
175
171
|
optionalServerClusters: [],
|
|
176
172
|
});
|
|
177
173
|
export const otaRequestor = DeviceTypeDefinition({
|
|
178
|
-
name: '
|
|
179
|
-
deviceName: 'OTARequestor',
|
|
174
|
+
name: 'OTARequestor',
|
|
180
175
|
code: 0x0012,
|
|
181
176
|
deviceClass: DeviceClasses.Utility,
|
|
182
177
|
deviceScope: DeviceScopes.Node,
|
|
@@ -187,8 +182,7 @@ export const otaRequestor = DeviceTypeDefinition({
|
|
|
187
182
|
optionalClientClusters: [],
|
|
188
183
|
});
|
|
189
184
|
export const otaProvider = DeviceTypeDefinition({
|
|
190
|
-
name: '
|
|
191
|
-
deviceName: 'OTAProvider',
|
|
185
|
+
name: 'OTAProvider',
|
|
192
186
|
code: 0x0014,
|
|
193
187
|
deviceClass: DeviceClasses.Utility,
|
|
194
188
|
deviceScope: DeviceScopes.Node,
|
|
@@ -199,8 +193,7 @@ export const otaProvider = DeviceTypeDefinition({
|
|
|
199
193
|
optionalClientClusters: [OtaSoftwareUpdateRequestor.id],
|
|
200
194
|
});
|
|
201
195
|
export const bridgedNode = DeviceTypeDefinition({
|
|
202
|
-
name: '
|
|
203
|
-
deviceName: 'BridgedNode',
|
|
196
|
+
name: 'BridgedNode',
|
|
204
197
|
code: 0x0013,
|
|
205
198
|
deviceClass: DeviceClasses.Utility,
|
|
206
199
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -209,8 +202,7 @@ export const bridgedNode = DeviceTypeDefinition({
|
|
|
209
202
|
optionalServerClusters: [PowerSource.id, EcosystemInformation.id, AdministratorCommissioning.id],
|
|
210
203
|
});
|
|
211
204
|
export const electricalSensor = DeviceTypeDefinition({
|
|
212
|
-
name: '
|
|
213
|
-
deviceName: 'ElectricalSensor',
|
|
205
|
+
name: 'ElectricalSensor',
|
|
214
206
|
code: 0x0510,
|
|
215
207
|
deviceClass: DeviceClasses.Utility,
|
|
216
208
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -220,8 +212,7 @@ export const electricalSensor = DeviceTypeDefinition({
|
|
|
220
212
|
requiredServerClustersOneOf: [ElectricalPowerMeasurement.id, ElectricalEnergyMeasurement.id],
|
|
221
213
|
});
|
|
222
214
|
export const deviceEnergyManagement = DeviceTypeDefinition({
|
|
223
|
-
name: '
|
|
224
|
-
deviceName: 'DeviceEnergyManagement',
|
|
215
|
+
name: 'DeviceEnergyManagement',
|
|
225
216
|
code: 0x050d,
|
|
226
217
|
deviceClass: DeviceClasses.Utility,
|
|
227
218
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -232,8 +223,7 @@ export const deviceEnergyManagement = DeviceTypeDefinition({
|
|
|
232
223
|
optionalClientClusters: [ElectricalGridConditions.id],
|
|
233
224
|
});
|
|
234
225
|
export const onOffLight = DeviceTypeDefinition({
|
|
235
|
-
name: '
|
|
236
|
-
deviceName: 'OnOffLight',
|
|
226
|
+
name: 'OnOffLight',
|
|
237
227
|
code: 0x0100,
|
|
238
228
|
deviceClass: DeviceClasses.Simple,
|
|
239
229
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -244,8 +234,7 @@ export const onOffLight = DeviceTypeDefinition({
|
|
|
244
234
|
optionalClientClusters: [OccupancySensing.id],
|
|
245
235
|
});
|
|
246
236
|
export const dimmableLight = DeviceTypeDefinition({
|
|
247
|
-
name: '
|
|
248
|
-
deviceName: 'DimmableLight',
|
|
237
|
+
name: 'DimmableLight',
|
|
249
238
|
code: 0x0101,
|
|
250
239
|
deviceClass: DeviceClasses.Simple,
|
|
251
240
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -256,8 +245,7 @@ export const dimmableLight = DeviceTypeDefinition({
|
|
|
256
245
|
optionalClientClusters: [OccupancySensing.id],
|
|
257
246
|
});
|
|
258
247
|
export const colorTemperatureLight = DeviceTypeDefinition({
|
|
259
|
-
name: '
|
|
260
|
-
deviceName: 'ColorTemperatureLight',
|
|
248
|
+
name: 'ColorTemperatureLight',
|
|
261
249
|
code: 0x010c,
|
|
262
250
|
deviceClass: DeviceClasses.Simple,
|
|
263
251
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -268,8 +256,7 @@ export const colorTemperatureLight = DeviceTypeDefinition({
|
|
|
268
256
|
optionalClientClusters: [OccupancySensing.id],
|
|
269
257
|
});
|
|
270
258
|
export const extendedColorLight = DeviceTypeDefinition({
|
|
271
|
-
name: '
|
|
272
|
-
deviceName: 'ExtendedColorLight',
|
|
259
|
+
name: 'ExtendedColorLight',
|
|
273
260
|
code: 0x010d,
|
|
274
261
|
deviceClass: DeviceClasses.Simple,
|
|
275
262
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -280,8 +267,7 @@ export const extendedColorLight = DeviceTypeDefinition({
|
|
|
280
267
|
optionalClientClusters: [OccupancySensing.id],
|
|
281
268
|
});
|
|
282
269
|
export const onOffPlugInUnit = DeviceTypeDefinition({
|
|
283
|
-
name: '
|
|
284
|
-
deviceName: 'OnOffPlugInUnit',
|
|
270
|
+
name: 'OnOffPlugInUnit',
|
|
285
271
|
code: 0x010a,
|
|
286
272
|
deviceClass: DeviceClasses.Simple,
|
|
287
273
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -293,8 +279,7 @@ export const onOffPlugInUnit = DeviceTypeDefinition({
|
|
|
293
279
|
});
|
|
294
280
|
export const onOffOutlet = onOffPlugInUnit;
|
|
295
281
|
export const dimmablePlugInUnit = DeviceTypeDefinition({
|
|
296
|
-
name: '
|
|
297
|
-
deviceName: 'DimmablePlugInUnit',
|
|
282
|
+
name: 'DimmablePlugInUnit',
|
|
298
283
|
code: 0x010b,
|
|
299
284
|
deviceClass: DeviceClasses.Simple,
|
|
300
285
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -306,8 +291,7 @@ export const dimmablePlugInUnit = DeviceTypeDefinition({
|
|
|
306
291
|
});
|
|
307
292
|
export const dimmableOutlet = dimmablePlugInUnit;
|
|
308
293
|
export const mountedOnOffControl = DeviceTypeDefinition({
|
|
309
|
-
name: '
|
|
310
|
-
deviceName: 'MountedOnOffControl',
|
|
294
|
+
name: 'MountedOnOffControl',
|
|
311
295
|
code: 0x010f,
|
|
312
296
|
deviceClass: DeviceClasses.Simple,
|
|
313
297
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -319,8 +303,7 @@ export const mountedOnOffControl = DeviceTypeDefinition({
|
|
|
319
303
|
});
|
|
320
304
|
export const onOffMountedSwitch = mountedOnOffControl;
|
|
321
305
|
export const mountedDimmableLoadControl = DeviceTypeDefinition({
|
|
322
|
-
name: '
|
|
323
|
-
deviceName: 'MountedDimmableLoadControl',
|
|
306
|
+
name: 'MountedDimmableLoadControl',
|
|
324
307
|
code: 0x0110,
|
|
325
308
|
deviceClass: DeviceClasses.Simple,
|
|
326
309
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -332,8 +315,7 @@ export const mountedDimmableLoadControl = DeviceTypeDefinition({
|
|
|
332
315
|
});
|
|
333
316
|
export const dimmableMountedSwitch = mountedDimmableLoadControl;
|
|
334
317
|
export const pump = DeviceTypeDefinition({
|
|
335
|
-
name: '
|
|
336
|
-
deviceName: 'Pump',
|
|
318
|
+
name: 'Pump',
|
|
337
319
|
code: 0x303,
|
|
338
320
|
deviceClass: DeviceClasses.Simple,
|
|
339
321
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -345,8 +327,7 @@ export const pump = DeviceTypeDefinition({
|
|
|
345
327
|
});
|
|
346
328
|
export const pumpDevice = pump;
|
|
347
329
|
export const waterValve = DeviceTypeDefinition({
|
|
348
|
-
name: '
|
|
349
|
-
deviceName: 'WaterValve',
|
|
330
|
+
name: 'WaterValve',
|
|
350
331
|
code: 0x42,
|
|
351
332
|
deviceClass: DeviceClasses.Simple,
|
|
352
333
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -357,8 +338,7 @@ export const waterValve = DeviceTypeDefinition({
|
|
|
357
338
|
optionalClientClusters: [FlowMeasurement.id],
|
|
358
339
|
});
|
|
359
340
|
export const irrigationSystem = DeviceTypeDefinition({
|
|
360
|
-
name: '
|
|
361
|
-
deviceName: 'IrrigationSystem',
|
|
341
|
+
name: 'IrrigationSystem',
|
|
362
342
|
code: 0x0040,
|
|
363
343
|
deviceClass: DeviceClasses.Simple,
|
|
364
344
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -370,8 +350,7 @@ export const irrigationSystem = DeviceTypeDefinition({
|
|
|
370
350
|
composedOf: [waterValve],
|
|
371
351
|
});
|
|
372
352
|
export const onOffLightSwitch = DeviceTypeDefinition({
|
|
373
|
-
name: '
|
|
374
|
-
deviceName: 'OnOffLightSwitch',
|
|
353
|
+
name: 'OnOffLightSwitch',
|
|
375
354
|
code: 0x0103,
|
|
376
355
|
deviceClass: DeviceClasses.Simple,
|
|
377
356
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -383,8 +362,7 @@ export const onOffLightSwitch = DeviceTypeDefinition({
|
|
|
383
362
|
});
|
|
384
363
|
export const onOffSwitch = onOffLightSwitch;
|
|
385
364
|
export const dimmerSwitch = DeviceTypeDefinition({
|
|
386
|
-
name: '
|
|
387
|
-
deviceName: 'DimmerSwitch',
|
|
365
|
+
name: 'DimmerSwitch',
|
|
388
366
|
code: 0x0104,
|
|
389
367
|
deviceClass: DeviceClasses.Simple,
|
|
390
368
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -396,8 +374,7 @@ export const dimmerSwitch = DeviceTypeDefinition({
|
|
|
396
374
|
});
|
|
397
375
|
export const dimmableSwitch = dimmerSwitch;
|
|
398
376
|
export const colorDimmerSwitch = DeviceTypeDefinition({
|
|
399
|
-
name: '
|
|
400
|
-
deviceName: 'ColorDimmerSwitch',
|
|
377
|
+
name: 'ColorDimmerSwitch',
|
|
401
378
|
code: 0x0105,
|
|
402
379
|
deviceClass: DeviceClasses.Simple,
|
|
403
380
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -409,8 +386,7 @@ export const colorDimmerSwitch = DeviceTypeDefinition({
|
|
|
409
386
|
});
|
|
410
387
|
export const colorTemperatureSwitch = colorDimmerSwitch;
|
|
411
388
|
export const controlBridge = DeviceTypeDefinition({
|
|
412
|
-
name: '
|
|
413
|
-
deviceName: 'ControlBridge',
|
|
389
|
+
name: 'ControlBridge',
|
|
414
390
|
code: 0x0840,
|
|
415
391
|
deviceClass: DeviceClasses.Simple,
|
|
416
392
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -421,8 +397,7 @@ export const controlBridge = DeviceTypeDefinition({
|
|
|
421
397
|
optionalClientClusters: [IlluminanceMeasurement.id, OccupancySensing.id],
|
|
422
398
|
});
|
|
423
399
|
export const pumpController = DeviceTypeDefinition({
|
|
424
|
-
name: '
|
|
425
|
-
deviceName: 'PumpController',
|
|
400
|
+
name: 'PumpController',
|
|
426
401
|
code: 0x0304,
|
|
427
402
|
deviceClass: DeviceClasses.Simple,
|
|
428
403
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -433,8 +408,7 @@ export const pumpController = DeviceTypeDefinition({
|
|
|
433
408
|
optionalClientClusters: [Identify.id, Groups.id, LevelControl.id, ScenesManagement.id, TemperatureMeasurement.id, PressureMeasurement.id, FlowMeasurement.id],
|
|
434
409
|
});
|
|
435
410
|
export const genericSwitch = DeviceTypeDefinition({
|
|
436
|
-
name: '
|
|
437
|
-
deviceName: 'GenericSwitch',
|
|
411
|
+
name: 'GenericSwitch',
|
|
438
412
|
code: 0x000f,
|
|
439
413
|
deviceClass: DeviceClasses.Simple,
|
|
440
414
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -443,8 +417,7 @@ export const genericSwitch = DeviceTypeDefinition({
|
|
|
443
417
|
optionalServerClusters: [],
|
|
444
418
|
});
|
|
445
419
|
export const contactSensor = DeviceTypeDefinition({
|
|
446
|
-
name: '
|
|
447
|
-
deviceName: 'ContactSensor',
|
|
420
|
+
name: 'ContactSensor',
|
|
448
421
|
code: 0x0015,
|
|
449
422
|
deviceClass: DeviceClasses.Simple,
|
|
450
423
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -453,8 +426,7 @@ export const contactSensor = DeviceTypeDefinition({
|
|
|
453
426
|
optionalServerClusters: [BooleanStateConfiguration.id],
|
|
454
427
|
});
|
|
455
428
|
export const lightSensor = DeviceTypeDefinition({
|
|
456
|
-
name: '
|
|
457
|
-
deviceName: 'LightSensor',
|
|
429
|
+
name: 'LightSensor',
|
|
458
430
|
code: 0x0106,
|
|
459
431
|
deviceClass: DeviceClasses.Simple,
|
|
460
432
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -462,8 +434,7 @@ export const lightSensor = DeviceTypeDefinition({
|
|
|
462
434
|
requiredServerClusters: [Identify.id, IlluminanceMeasurement.id],
|
|
463
435
|
});
|
|
464
436
|
export const occupancySensor = DeviceTypeDefinition({
|
|
465
|
-
name: '
|
|
466
|
-
deviceName: 'OccupancySensor',
|
|
437
|
+
name: 'OccupancySensor',
|
|
467
438
|
code: 0x0107,
|
|
468
439
|
deviceClass: DeviceClasses.Simple,
|
|
469
440
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -472,8 +443,7 @@ export const occupancySensor = DeviceTypeDefinition({
|
|
|
472
443
|
optionalServerClusters: [BooleanStateConfiguration.id],
|
|
473
444
|
});
|
|
474
445
|
export const temperatureSensor = DeviceTypeDefinition({
|
|
475
|
-
name: '
|
|
476
|
-
deviceName: 'TemperatureSensor',
|
|
446
|
+
name: 'TemperatureSensor',
|
|
477
447
|
code: 0x0302,
|
|
478
448
|
deviceClass: DeviceClasses.Simple,
|
|
479
449
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -482,8 +452,7 @@ export const temperatureSensor = DeviceTypeDefinition({
|
|
|
482
452
|
optionalServerClusters: [ThermostatUserInterfaceConfiguration.id],
|
|
483
453
|
});
|
|
484
454
|
export const pressureSensor = DeviceTypeDefinition({
|
|
485
|
-
name: '
|
|
486
|
-
deviceName: 'PressureSensor',
|
|
455
|
+
name: 'PressureSensor',
|
|
487
456
|
code: 0x0305,
|
|
488
457
|
deviceClass: DeviceClasses.Simple,
|
|
489
458
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -491,8 +460,7 @@ export const pressureSensor = DeviceTypeDefinition({
|
|
|
491
460
|
requiredServerClusters: [Identify.id, PressureMeasurement.id],
|
|
492
461
|
});
|
|
493
462
|
export const flowSensor = DeviceTypeDefinition({
|
|
494
|
-
name: '
|
|
495
|
-
deviceName: 'FlowSensor',
|
|
463
|
+
name: 'FlowSensor',
|
|
496
464
|
code: 0x0306,
|
|
497
465
|
deviceClass: DeviceClasses.Simple,
|
|
498
466
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -500,8 +468,7 @@ export const flowSensor = DeviceTypeDefinition({
|
|
|
500
468
|
requiredServerClusters: [Identify.id, FlowMeasurement.id],
|
|
501
469
|
});
|
|
502
470
|
export const humiditySensor = DeviceTypeDefinition({
|
|
503
|
-
name: '
|
|
504
|
-
deviceName: 'HumiditySensor',
|
|
471
|
+
name: 'HumiditySensor',
|
|
505
472
|
code: 0x0307,
|
|
506
473
|
deviceClass: DeviceClasses.Simple,
|
|
507
474
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -509,8 +476,7 @@ export const humiditySensor = DeviceTypeDefinition({
|
|
|
509
476
|
requiredServerClusters: [Identify.id, RelativeHumidityMeasurement.id],
|
|
510
477
|
});
|
|
511
478
|
export const onOffSensor = DeviceTypeDefinition({
|
|
512
|
-
name: '
|
|
513
|
-
deviceName: 'OnOffSensor',
|
|
479
|
+
name: 'OnOffSensor',
|
|
514
480
|
code: 0x0850,
|
|
515
481
|
deviceClass: DeviceClasses.Simple,
|
|
516
482
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -520,8 +486,7 @@ export const onOffSensor = DeviceTypeDefinition({
|
|
|
520
486
|
optionalClientClusters: [Groups.id, LevelControl.id, ColorControl.id, ScenesManagement.id],
|
|
521
487
|
});
|
|
522
488
|
export const smokeCoAlarm = DeviceTypeDefinition({
|
|
523
|
-
name: '
|
|
524
|
-
deviceName: 'SmokeCOAlarm',
|
|
489
|
+
name: 'SmokeCOAlarm',
|
|
525
490
|
code: 0x0076,
|
|
526
491
|
deviceClass: DeviceClasses.Simple,
|
|
527
492
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -531,8 +496,7 @@ export const smokeCoAlarm = DeviceTypeDefinition({
|
|
|
531
496
|
requiredDeviceTypes: [powerSource],
|
|
532
497
|
});
|
|
533
498
|
export const airQualitySensor = DeviceTypeDefinition({
|
|
534
|
-
name: '
|
|
535
|
-
deviceName: 'AirQualitySensor',
|
|
499
|
+
name: 'AirQualitySensor',
|
|
536
500
|
code: 0x002c,
|
|
537
501
|
deviceClass: DeviceClasses.Simple,
|
|
538
502
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -554,8 +518,7 @@ export const airQualitySensor = DeviceTypeDefinition({
|
|
|
554
518
|
],
|
|
555
519
|
});
|
|
556
520
|
export const waterFreezeDetector = DeviceTypeDefinition({
|
|
557
|
-
name: '
|
|
558
|
-
deviceName: 'WaterFreezeDetector',
|
|
521
|
+
name: 'WaterFreezeDetector',
|
|
559
522
|
code: 0x0041,
|
|
560
523
|
deviceClass: DeviceClasses.Simple,
|
|
561
524
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -564,8 +527,7 @@ export const waterFreezeDetector = DeviceTypeDefinition({
|
|
|
564
527
|
optionalServerClusters: [BooleanStateConfiguration.id],
|
|
565
528
|
});
|
|
566
529
|
export const waterLeakDetector = DeviceTypeDefinition({
|
|
567
|
-
name: '
|
|
568
|
-
deviceName: 'WaterLeakDetector',
|
|
530
|
+
name: 'WaterLeakDetector',
|
|
569
531
|
code: 0x0043,
|
|
570
532
|
deviceClass: DeviceClasses.Simple,
|
|
571
533
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -574,8 +536,7 @@ export const waterLeakDetector = DeviceTypeDefinition({
|
|
|
574
536
|
optionalServerClusters: [BooleanStateConfiguration.id],
|
|
575
537
|
});
|
|
576
538
|
export const rainSensor = DeviceTypeDefinition({
|
|
577
|
-
name: '
|
|
578
|
-
deviceName: 'RainSensor',
|
|
539
|
+
name: 'RainSensor',
|
|
579
540
|
code: 0x0044,
|
|
580
541
|
deviceClass: DeviceClasses.Simple,
|
|
581
542
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -584,8 +545,7 @@ export const rainSensor = DeviceTypeDefinition({
|
|
|
584
545
|
optionalServerClusters: [BooleanStateConfiguration.id],
|
|
585
546
|
});
|
|
586
547
|
export const soilSensor = DeviceTypeDefinition({
|
|
587
|
-
name: '
|
|
588
|
-
deviceName: 'SoilSensor',
|
|
548
|
+
name: 'SoilSensor',
|
|
589
549
|
code: 0x0045,
|
|
590
550
|
deviceClass: DeviceClasses.Simple,
|
|
591
551
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -594,8 +554,7 @@ export const soilSensor = DeviceTypeDefinition({
|
|
|
594
554
|
optionalServerClusters: [TemperatureMeasurement.id],
|
|
595
555
|
});
|
|
596
556
|
export const doorLock = DeviceTypeDefinition({
|
|
597
|
-
name: '
|
|
598
|
-
deviceName: 'DoorLock',
|
|
557
|
+
name: 'DoorLock',
|
|
599
558
|
code: 0xa,
|
|
600
559
|
deviceClass: DeviceClasses.Simple,
|
|
601
560
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -605,8 +564,7 @@ export const doorLock = DeviceTypeDefinition({
|
|
|
605
564
|
});
|
|
606
565
|
export const doorLockDevice = doorLock;
|
|
607
566
|
export const doorLockController = DeviceTypeDefinition({
|
|
608
|
-
name: '
|
|
609
|
-
deviceName: 'DoorLockController',
|
|
567
|
+
name: 'DoorLockController',
|
|
610
568
|
code: 0x00b,
|
|
611
569
|
deviceClass: DeviceClasses.Simple,
|
|
612
570
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -617,8 +575,7 @@ export const doorLockController = DeviceTypeDefinition({
|
|
|
617
575
|
optionalClientClusters: [Groups.id, ScenesManagement.id],
|
|
618
576
|
});
|
|
619
577
|
export const windowCovering = DeviceTypeDefinition({
|
|
620
|
-
name: '
|
|
621
|
-
deviceName: 'WindowCovering',
|
|
578
|
+
name: 'WindowCovering',
|
|
622
579
|
code: 0x202,
|
|
623
580
|
deviceClass: DeviceClasses.Simple,
|
|
624
581
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -628,8 +585,7 @@ export const windowCovering = DeviceTypeDefinition({
|
|
|
628
585
|
});
|
|
629
586
|
export const coverDevice = windowCovering;
|
|
630
587
|
export const windowCoveringController = DeviceTypeDefinition({
|
|
631
|
-
name: '
|
|
632
|
-
deviceName: 'WindowCoveringController',
|
|
588
|
+
name: 'WindowCoveringController',
|
|
633
589
|
code: 0x203,
|
|
634
590
|
deviceClass: DeviceClasses.Simple,
|
|
635
591
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -640,8 +596,7 @@ export const windowCoveringController = DeviceTypeDefinition({
|
|
|
640
596
|
optionalClientClusters: [Identify.id, Groups.id],
|
|
641
597
|
});
|
|
642
598
|
export const closure = DeviceTypeDefinition({
|
|
643
|
-
name: '
|
|
644
|
-
deviceName: 'Closure',
|
|
599
|
+
name: 'Closure',
|
|
645
600
|
code: 0x0230,
|
|
646
601
|
deviceClass: DeviceClasses.Simple,
|
|
647
602
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -650,8 +605,7 @@ export const closure = DeviceTypeDefinition({
|
|
|
650
605
|
optionalServerClusters: [],
|
|
651
606
|
});
|
|
652
607
|
export const closurePanel = DeviceTypeDefinition({
|
|
653
|
-
name: '
|
|
654
|
-
deviceName: 'ClosurePanel',
|
|
608
|
+
name: 'ClosurePanel',
|
|
655
609
|
code: 0x0231,
|
|
656
610
|
deviceClass: DeviceClasses.Simple,
|
|
657
611
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -660,8 +614,7 @@ export const closurePanel = DeviceTypeDefinition({
|
|
|
660
614
|
optionalServerClusters: [],
|
|
661
615
|
});
|
|
662
616
|
export const closureController = DeviceTypeDefinition({
|
|
663
|
-
name: '
|
|
664
|
-
deviceName: 'ClosureController',
|
|
617
|
+
name: 'ClosureController',
|
|
665
618
|
code: 0x023e,
|
|
666
619
|
deviceClass: DeviceClasses.Simple,
|
|
667
620
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -672,8 +625,7 @@ export const closureController = DeviceTypeDefinition({
|
|
|
672
625
|
optionalClientClusters: [Identify.id, Groups.id, ClosureDimension.id],
|
|
673
626
|
});
|
|
674
627
|
export const thermostat = DeviceTypeDefinition({
|
|
675
|
-
name: '
|
|
676
|
-
deviceName: 'Thermostat',
|
|
628
|
+
name: 'Thermostat',
|
|
677
629
|
code: 0x301,
|
|
678
630
|
deviceClass: DeviceClasses.Simple,
|
|
679
631
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -685,8 +637,7 @@ export const thermostat = DeviceTypeDefinition({
|
|
|
685
637
|
});
|
|
686
638
|
export const thermostatDevice = thermostat;
|
|
687
639
|
export const fan = DeviceTypeDefinition({
|
|
688
|
-
name: '
|
|
689
|
-
deviceName: 'Fan',
|
|
640
|
+
name: 'Fan',
|
|
690
641
|
code: 0x2b,
|
|
691
642
|
deviceClass: DeviceClasses.Simple,
|
|
692
643
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -696,8 +647,7 @@ export const fan = DeviceTypeDefinition({
|
|
|
696
647
|
});
|
|
697
648
|
export const fanDevice = fan;
|
|
698
649
|
export const airPurifier = DeviceTypeDefinition({
|
|
699
|
-
name: '
|
|
700
|
-
deviceName: 'AirPurifier',
|
|
650
|
+
name: 'AirPurifier',
|
|
701
651
|
code: 0x2d,
|
|
702
652
|
deviceClass: DeviceClasses.Simple,
|
|
703
653
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -706,8 +656,7 @@ export const airPurifier = DeviceTypeDefinition({
|
|
|
706
656
|
optionalServerClusters: [Groups.id, OnOff.id, HepaFilterMonitoring.id, ActivatedCarbonFilterMonitoring.id],
|
|
707
657
|
});
|
|
708
658
|
export const thermostatController = DeviceTypeDefinition({
|
|
709
|
-
name: '
|
|
710
|
-
deviceName: 'ThermostatController',
|
|
659
|
+
name: 'ThermostatController',
|
|
711
660
|
code: 0x030a,
|
|
712
661
|
deviceClass: DeviceClasses.Simple,
|
|
713
662
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -718,8 +667,7 @@ export const thermostatController = DeviceTypeDefinition({
|
|
|
718
667
|
optionalClientClusters: [Identify.id, Groups.id, ScenesManagement.id],
|
|
719
668
|
});
|
|
720
669
|
export const basicVideoPlayer = DeviceTypeDefinition({
|
|
721
|
-
name: '
|
|
722
|
-
deviceName: 'BasicVideoPlayer',
|
|
670
|
+
name: 'BasicVideoPlayer',
|
|
723
671
|
code: 0x0028,
|
|
724
672
|
deviceClass: DeviceClasses.Simple,
|
|
725
673
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -728,8 +676,7 @@ export const basicVideoPlayer = DeviceTypeDefinition({
|
|
|
728
676
|
optionalServerClusters: [WakeOnLan.id, Channel.id, TargetNavigator.id, MediaInput.id, LowPower.id, AudioOutput.id, ContentControl.id, Messages.id],
|
|
729
677
|
});
|
|
730
678
|
export const castingVideoPlayer = DeviceTypeDefinition({
|
|
731
|
-
name: '
|
|
732
|
-
deviceName: 'CastingVideoPlayer',
|
|
679
|
+
name: 'CastingVideoPlayer',
|
|
733
680
|
code: 0x0023,
|
|
734
681
|
deviceClass: DeviceClasses.Simple,
|
|
735
682
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -749,8 +696,7 @@ export const castingVideoPlayer = DeviceTypeDefinition({
|
|
|
749
696
|
],
|
|
750
697
|
});
|
|
751
698
|
export const speaker = DeviceTypeDefinition({
|
|
752
|
-
name: '
|
|
753
|
-
deviceName: 'Speaker',
|
|
699
|
+
name: 'Speaker',
|
|
754
700
|
code: 0x0022,
|
|
755
701
|
deviceClass: DeviceClasses.Simple,
|
|
756
702
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -760,8 +706,7 @@ export const speaker = DeviceTypeDefinition({
|
|
|
760
706
|
});
|
|
761
707
|
export const speakerDevice = speaker;
|
|
762
708
|
export const contentApp = DeviceTypeDefinition({
|
|
763
|
-
name: '
|
|
764
|
-
deviceName: 'ContentApp',
|
|
709
|
+
name: 'ContentApp',
|
|
765
710
|
code: 0x0024,
|
|
766
711
|
deviceClass: DeviceClasses.Simple,
|
|
767
712
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -772,8 +717,7 @@ export const contentApp = DeviceTypeDefinition({
|
|
|
772
717
|
optionalClientClusters: [ContentAppObserver.id],
|
|
773
718
|
});
|
|
774
719
|
export const castingVideoClient = DeviceTypeDefinition({
|
|
775
|
-
name: '
|
|
776
|
-
deviceName: 'CastingVideoClient',
|
|
720
|
+
name: 'CastingVideoClient',
|
|
777
721
|
code: 0x0029,
|
|
778
722
|
deviceClass: DeviceClasses.Simple,
|
|
779
723
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -797,8 +741,7 @@ export const castingVideoClient = DeviceTypeDefinition({
|
|
|
797
741
|
],
|
|
798
742
|
});
|
|
799
743
|
export const videoRemoteControl = DeviceTypeDefinition({
|
|
800
|
-
name: '
|
|
801
|
-
deviceName: 'VideoRemoteControl',
|
|
744
|
+
name: 'VideoRemoteControl',
|
|
802
745
|
code: 0x002a,
|
|
803
746
|
deviceClass: DeviceClasses.Simple,
|
|
804
747
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -821,8 +764,7 @@ export const videoRemoteControl = DeviceTypeDefinition({
|
|
|
821
764
|
],
|
|
822
765
|
});
|
|
823
766
|
export const modeSelect = DeviceTypeDefinition({
|
|
824
|
-
name: '
|
|
825
|
-
deviceName: 'ModeSelect',
|
|
767
|
+
name: 'ModeSelect',
|
|
826
768
|
code: 0x27,
|
|
827
769
|
deviceClass: DeviceClasses.Simple,
|
|
828
770
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -830,8 +772,7 @@ export const modeSelect = DeviceTypeDefinition({
|
|
|
830
772
|
requiredServerClusters: [ModeSelect.id],
|
|
831
773
|
});
|
|
832
774
|
export const aggregator = DeviceTypeDefinition({
|
|
833
|
-
name: '
|
|
834
|
-
deviceName: 'Aggregator',
|
|
775
|
+
name: 'Aggregator',
|
|
835
776
|
code: 0x000e,
|
|
836
777
|
deviceClass: DeviceClasses.Dynamic,
|
|
837
778
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -841,8 +782,7 @@ export const aggregator = DeviceTypeDefinition({
|
|
|
841
782
|
});
|
|
842
783
|
export const bridge = aggregator;
|
|
843
784
|
export const roboticVacuumCleaner = DeviceTypeDefinition({
|
|
844
|
-
name: '
|
|
845
|
-
deviceName: 'RoboticVacuumCleaner',
|
|
785
|
+
name: 'RoboticVacuumCleaner',
|
|
846
786
|
code: 0x74,
|
|
847
787
|
deviceClass: DeviceClasses.Simple,
|
|
848
788
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -851,8 +791,7 @@ export const roboticVacuumCleaner = DeviceTypeDefinition({
|
|
|
851
791
|
optionalServerClusters: [RvcCleanMode.id, ServiceArea.id],
|
|
852
792
|
});
|
|
853
793
|
export const laundryWasher = DeviceTypeDefinition({
|
|
854
|
-
name: '
|
|
855
|
-
deviceName: 'LaundryWasher',
|
|
794
|
+
name: 'LaundryWasher',
|
|
856
795
|
code: 0x73,
|
|
857
796
|
deviceClass: DeviceClasses.Simple,
|
|
858
797
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -861,8 +800,7 @@ export const laundryWasher = DeviceTypeDefinition({
|
|
|
861
800
|
optionalServerClusters: [Identify.id, LaundryWasherMode.id, OnOff.id, LaundryWasherControls.id, TemperatureControl.id],
|
|
862
801
|
});
|
|
863
802
|
export const refrigerator = DeviceTypeDefinition({
|
|
864
|
-
name: '
|
|
865
|
-
deviceName: 'Refrigerator',
|
|
803
|
+
name: 'Refrigerator',
|
|
866
804
|
code: 0x70,
|
|
867
805
|
deviceClass: DeviceClasses.Simple,
|
|
868
806
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -871,8 +809,7 @@ export const refrigerator = DeviceTypeDefinition({
|
|
|
871
809
|
optionalServerClusters: [Identify.id, RefrigeratorAndTemperatureControlledCabinetMode.id, RefrigeratorAlarm.id],
|
|
872
810
|
});
|
|
873
811
|
export const roomAirConditioner = DeviceTypeDefinition({
|
|
874
|
-
name: '
|
|
875
|
-
deviceName: 'RoomAirConditioner',
|
|
812
|
+
name: 'RoomAirConditioner',
|
|
876
813
|
code: 0x72,
|
|
877
814
|
deviceClass: DeviceClasses.Simple,
|
|
878
815
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -891,8 +828,7 @@ export const roomAirConditioner = DeviceTypeDefinition({
|
|
|
891
828
|
});
|
|
892
829
|
export const airConditioner = roomAirConditioner;
|
|
893
830
|
export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
|
|
894
|
-
name: '
|
|
895
|
-
deviceName: 'TemperatureControlledCabinet',
|
|
831
|
+
name: 'TemperatureControlledCabinet',
|
|
896
832
|
code: 0x71,
|
|
897
833
|
deviceClass: DeviceClasses.Simple,
|
|
898
834
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -901,8 +837,7 @@ export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
|
|
|
901
837
|
optionalServerClusters: [TemperatureMeasurement.id],
|
|
902
838
|
});
|
|
903
839
|
export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
|
|
904
|
-
name: '
|
|
905
|
-
deviceName: 'TemperatureControlledCabinet',
|
|
840
|
+
name: 'TemperatureControlledCabinet',
|
|
906
841
|
code: 0x71,
|
|
907
842
|
deviceClass: DeviceClasses.Simple,
|
|
908
843
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -911,8 +846,7 @@ export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
|
|
|
911
846
|
optionalServerClusters: [TemperatureMeasurement.id],
|
|
912
847
|
});
|
|
913
848
|
export const dishwasher = DeviceTypeDefinition({
|
|
914
|
-
name: '
|
|
915
|
-
deviceName: 'Dishwasher',
|
|
849
|
+
name: 'Dishwasher',
|
|
916
850
|
code: 0x75,
|
|
917
851
|
deviceClass: DeviceClasses.Simple,
|
|
918
852
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -921,8 +855,7 @@ export const dishwasher = DeviceTypeDefinition({
|
|
|
921
855
|
optionalServerClusters: [Identify.id, OnOff.id, TemperatureControl.id, DishwasherMode.id, DishwasherAlarm.id],
|
|
922
856
|
});
|
|
923
857
|
export const laundryDryer = DeviceTypeDefinition({
|
|
924
|
-
name: '
|
|
925
|
-
deviceName: 'LaundryDryer',
|
|
858
|
+
name: 'LaundryDryer',
|
|
926
859
|
code: 0x7c,
|
|
927
860
|
deviceClass: DeviceClasses.Simple,
|
|
928
861
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -931,8 +864,7 @@ export const laundryDryer = DeviceTypeDefinition({
|
|
|
931
864
|
optionalServerClusters: [Identify.id, LaundryWasherMode.id, OnOff.id, LaundryDryerControls.id, TemperatureControl.id],
|
|
932
865
|
});
|
|
933
866
|
export const cookSurface = DeviceTypeDefinition({
|
|
934
|
-
name: '
|
|
935
|
-
deviceName: 'CookSurface',
|
|
867
|
+
name: 'CookSurface',
|
|
936
868
|
code: 0x77,
|
|
937
869
|
deviceClass: DeviceClasses.Simple,
|
|
938
870
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -941,8 +873,7 @@ export const cookSurface = DeviceTypeDefinition({
|
|
|
941
873
|
optionalServerClusters: [TemperatureControl.id, TemperatureMeasurement.id, OnOff.id],
|
|
942
874
|
});
|
|
943
875
|
export const cooktop = DeviceTypeDefinition({
|
|
944
|
-
name: '
|
|
945
|
-
deviceName: 'Cooktop',
|
|
876
|
+
name: 'Cooktop',
|
|
946
877
|
code: 0x78,
|
|
947
878
|
deviceClass: DeviceClasses.Simple,
|
|
948
879
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -951,8 +882,7 @@ export const cooktop = DeviceTypeDefinition({
|
|
|
951
882
|
optionalServerClusters: [Identify.id],
|
|
952
883
|
});
|
|
953
884
|
export const oven = DeviceTypeDefinition({
|
|
954
|
-
name: '
|
|
955
|
-
deviceName: 'Oven',
|
|
885
|
+
name: 'Oven',
|
|
956
886
|
code: 0x7b,
|
|
957
887
|
deviceClass: DeviceClasses.Simple,
|
|
958
888
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -961,8 +891,7 @@ export const oven = DeviceTypeDefinition({
|
|
|
961
891
|
optionalServerClusters: [Identify.id],
|
|
962
892
|
});
|
|
963
893
|
export const extractorHood = DeviceTypeDefinition({
|
|
964
|
-
name: '
|
|
965
|
-
deviceName: 'ExtractorHood',
|
|
894
|
+
name: 'ExtractorHood',
|
|
966
895
|
code: 0x7a,
|
|
967
896
|
deviceClass: DeviceClasses.Simple,
|
|
968
897
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -971,8 +900,7 @@ export const extractorHood = DeviceTypeDefinition({
|
|
|
971
900
|
optionalServerClusters: [Identify.id, HepaFilterMonitoring.id, ActivatedCarbonFilterMonitoring.id],
|
|
972
901
|
});
|
|
973
902
|
export const microwaveOven = DeviceTypeDefinition({
|
|
974
|
-
name: '
|
|
975
|
-
deviceName: 'MicrowaveOven',
|
|
903
|
+
name: 'MicrowaveOven',
|
|
976
904
|
code: 0x79,
|
|
977
905
|
deviceClass: DeviceClasses.Simple,
|
|
978
906
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -981,8 +909,7 @@ export const microwaveOven = DeviceTypeDefinition({
|
|
|
981
909
|
optionalServerClusters: [Identify.id, FanControl.id],
|
|
982
910
|
});
|
|
983
911
|
export const evse = DeviceTypeDefinition({
|
|
984
|
-
name: '
|
|
985
|
-
deviceName: 'EnergyEVSE',
|
|
912
|
+
name: 'EnergyEVSE',
|
|
986
913
|
code: 0x050c,
|
|
987
914
|
deviceClass: DeviceClasses.Simple,
|
|
988
915
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -991,8 +918,7 @@ export const evse = DeviceTypeDefinition({
|
|
|
991
918
|
optionalServerClusters: [Identify.id, TemperatureMeasurement.id],
|
|
992
919
|
});
|
|
993
920
|
export const waterHeater = DeviceTypeDefinition({
|
|
994
|
-
name: '
|
|
995
|
-
deviceName: 'WaterHeater',
|
|
921
|
+
name: 'WaterHeater',
|
|
996
922
|
code: 0x050f,
|
|
997
923
|
deviceClass: DeviceClasses.Simple,
|
|
998
924
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1001,8 +927,7 @@ export const waterHeater = DeviceTypeDefinition({
|
|
|
1001
927
|
optionalServerClusters: [Identify.id],
|
|
1002
928
|
});
|
|
1003
929
|
export const solarPower = DeviceTypeDefinition({
|
|
1004
|
-
name: '
|
|
1005
|
-
deviceName: 'SolarPower',
|
|
930
|
+
name: 'SolarPower',
|
|
1006
931
|
code: 0x0017,
|
|
1007
932
|
deviceClass: DeviceClasses.Simple,
|
|
1008
933
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1011,8 +936,7 @@ export const solarPower = DeviceTypeDefinition({
|
|
|
1011
936
|
optionalServerClusters: [Identify.id],
|
|
1012
937
|
});
|
|
1013
938
|
export const batteryStorage = DeviceTypeDefinition({
|
|
1014
|
-
name: '
|
|
1015
|
-
deviceName: 'BatteryStorage',
|
|
939
|
+
name: 'BatteryStorage',
|
|
1016
940
|
code: 0x0018,
|
|
1017
941
|
deviceClass: DeviceClasses.Simple,
|
|
1018
942
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1021,8 +945,7 @@ export const batteryStorage = DeviceTypeDefinition({
|
|
|
1021
945
|
optionalServerClusters: [Identify.id],
|
|
1022
946
|
});
|
|
1023
947
|
export const heatPump = DeviceTypeDefinition({
|
|
1024
|
-
name: '
|
|
1025
|
-
deviceName: 'HeatPump',
|
|
948
|
+
name: 'HeatPump',
|
|
1026
949
|
code: 0x0309,
|
|
1027
950
|
deviceClass: DeviceClasses.Simple,
|
|
1028
951
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1033,8 +956,7 @@ export const heatPump = DeviceTypeDefinition({
|
|
|
1033
956
|
optionalClientClusters: [Thermostat.id],
|
|
1034
957
|
});
|
|
1035
958
|
export const meterReferencePoint = DeviceTypeDefinition({
|
|
1036
|
-
name: '
|
|
1037
|
-
deviceName: 'MeterReferencePoint',
|
|
959
|
+
name: 'MeterReferencePoint',
|
|
1038
960
|
code: 0x0512,
|
|
1039
961
|
deviceClass: DeviceClasses.Simple,
|
|
1040
962
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1043,8 +965,7 @@ export const meterReferencePoint = DeviceTypeDefinition({
|
|
|
1043
965
|
optionalServerClusters: [],
|
|
1044
966
|
});
|
|
1045
967
|
export const electricalEnergyTariff = DeviceTypeDefinition({
|
|
1046
|
-
name: '
|
|
1047
|
-
deviceName: 'ElectricalEnergyTariff',
|
|
968
|
+
name: 'ElectricalEnergyTariff',
|
|
1048
969
|
code: 0x0513,
|
|
1049
970
|
deviceClass: DeviceClasses.Simple,
|
|
1050
971
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1053,8 +974,7 @@ export const electricalEnergyTariff = DeviceTypeDefinition({
|
|
|
1053
974
|
optionalServerClusters: [CommodityPrice.id, ElectricalGridConditions.id, CommodityTariff.id],
|
|
1054
975
|
});
|
|
1055
976
|
export const electricalMeter = DeviceTypeDefinition({
|
|
1056
|
-
name: '
|
|
1057
|
-
deviceName: 'ElectricalMeter',
|
|
977
|
+
name: 'ElectricalMeter',
|
|
1058
978
|
code: 0x0514,
|
|
1059
979
|
deviceClass: DeviceClasses.Simple,
|
|
1060
980
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1063,8 +983,7 @@ export const electricalMeter = DeviceTypeDefinition({
|
|
|
1063
983
|
optionalServerClusters: [CommodityMetering.id],
|
|
1064
984
|
});
|
|
1065
985
|
export const electricalUtilityMeter = DeviceTypeDefinition({
|
|
1066
|
-
name: '
|
|
1067
|
-
deviceName: 'ElectricalUtilityMeter',
|
|
986
|
+
name: 'ElectricalUtilityMeter',
|
|
1068
987
|
code: 0x0511,
|
|
1069
988
|
deviceClass: DeviceClasses.Simple,
|
|
1070
989
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1073,8 +992,7 @@ export const electricalUtilityMeter = DeviceTypeDefinition({
|
|
|
1073
992
|
optionalServerClusters: [],
|
|
1074
993
|
});
|
|
1075
994
|
export const camera = DeviceTypeDefinition({
|
|
1076
|
-
name: '
|
|
1077
|
-
deviceName: 'Camera',
|
|
995
|
+
name: 'Camera',
|
|
1078
996
|
code: 0x0142,
|
|
1079
997
|
deviceClass: DeviceClasses.Simple,
|
|
1080
998
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1085,8 +1003,7 @@ export const camera = DeviceTypeDefinition({
|
|
|
1085
1003
|
optionalClientClusters: [WebRtcTransportProvider.id],
|
|
1086
1004
|
});
|
|
1087
1005
|
export const floodlightCamera = DeviceTypeDefinition({
|
|
1088
|
-
name: '
|
|
1089
|
-
deviceName: 'FloodlightCamera',
|
|
1006
|
+
name: 'FloodlightCamera',
|
|
1090
1007
|
code: 0x0144,
|
|
1091
1008
|
deviceClass: DeviceClasses.Simple,
|
|
1092
1009
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1095,8 +1012,7 @@ export const floodlightCamera = DeviceTypeDefinition({
|
|
|
1095
1012
|
optionalServerClusters: [],
|
|
1096
1013
|
});
|
|
1097
1014
|
export const videoDoorbell = DeviceTypeDefinition({
|
|
1098
|
-
name: '
|
|
1099
|
-
deviceName: 'VideoDoorbell',
|
|
1015
|
+
name: 'VideoDoorbell',
|
|
1100
1016
|
code: 0x0143,
|
|
1101
1017
|
deviceClass: DeviceClasses.Simple,
|
|
1102
1018
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1105,8 +1021,7 @@ export const videoDoorbell = DeviceTypeDefinition({
|
|
|
1105
1021
|
optionalServerClusters: [],
|
|
1106
1022
|
});
|
|
1107
1023
|
export const intercom = DeviceTypeDefinition({
|
|
1108
|
-
name: '
|
|
1109
|
-
deviceName: 'Intercom',
|
|
1024
|
+
name: 'Intercom',
|
|
1110
1025
|
code: 0x0140,
|
|
1111
1026
|
deviceClass: DeviceClasses.Simple,
|
|
1112
1027
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1117,8 +1032,7 @@ export const intercom = DeviceTypeDefinition({
|
|
|
1117
1032
|
optionalClientClusters: [Chime.id],
|
|
1118
1033
|
});
|
|
1119
1034
|
export const audioDoorbell = DeviceTypeDefinition({
|
|
1120
|
-
name: '
|
|
1121
|
-
deviceName: 'AudioDoorbell',
|
|
1035
|
+
name: 'AudioDoorbell',
|
|
1122
1036
|
code: 0x0141,
|
|
1123
1037
|
deviceClass: DeviceClasses.Simple,
|
|
1124
1038
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1129,8 +1043,7 @@ export const audioDoorbell = DeviceTypeDefinition({
|
|
|
1129
1043
|
optionalClientClusters: [WebRtcTransportProvider.id],
|
|
1130
1044
|
});
|
|
1131
1045
|
export const snapshotCamera = DeviceTypeDefinition({
|
|
1132
|
-
name: '
|
|
1133
|
-
deviceName: 'SnapshotCamera',
|
|
1046
|
+
name: 'SnapshotCamera',
|
|
1134
1047
|
code: 0x0145,
|
|
1135
1048
|
deviceClass: DeviceClasses.Simple,
|
|
1136
1049
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1139,8 +1052,7 @@ export const snapshotCamera = DeviceTypeDefinition({
|
|
|
1139
1052
|
optionalServerClusters: [Identify.id, OccupancySensing.id, ZoneManagement.id, CameraAvSettingsUserLevelManagement.id],
|
|
1140
1053
|
});
|
|
1141
1054
|
export const chime = DeviceTypeDefinition({
|
|
1142
|
-
name: '
|
|
1143
|
-
deviceName: 'Chime',
|
|
1055
|
+
name: 'Chime',
|
|
1144
1056
|
code: 0x0146,
|
|
1145
1057
|
deviceClass: DeviceClasses.Simple,
|
|
1146
1058
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1149,8 +1061,7 @@ export const chime = DeviceTypeDefinition({
|
|
|
1149
1061
|
optionalServerClusters: [Identify.id],
|
|
1150
1062
|
});
|
|
1151
1063
|
export const cameraController = DeviceTypeDefinition({
|
|
1152
|
-
name: '
|
|
1153
|
-
deviceName: 'CameraController',
|
|
1064
|
+
name: 'CameraController',
|
|
1154
1065
|
code: 0x0147,
|
|
1155
1066
|
deviceClass: DeviceClasses.Simple,
|
|
1156
1067
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1171,8 +1082,7 @@ export const cameraController = DeviceTypeDefinition({
|
|
|
1171
1082
|
],
|
|
1172
1083
|
});
|
|
1173
1084
|
export const doorbell = DeviceTypeDefinition({
|
|
1174
|
-
name: '
|
|
1175
|
-
deviceName: 'Doorbell',
|
|
1085
|
+
name: 'Doorbell',
|
|
1176
1086
|
code: 0x0148,
|
|
1177
1087
|
deviceClass: DeviceClasses.Simple,
|
|
1178
1088
|
deviceScope: DeviceScopes.Endpoint,
|
|
@@ -1272,9 +1182,7 @@ export const supportedDeviceTypes = [
|
|
|
1272
1182
|
cameraController,
|
|
1273
1183
|
doorbell,
|
|
1274
1184
|
];
|
|
1275
|
-
export const getSupportedDeviceType = (key) => typeof key === 'number'
|
|
1276
|
-
? supportedDeviceTypes.find((deviceType) => deviceType.code === key)
|
|
1277
|
-
: supportedDeviceTypes.find((deviceType) => deviceType.name === key || deviceType.deviceName === key);
|
|
1185
|
+
export const getSupportedDeviceType = (key) => typeof key === 'number' ? supportedDeviceTypes.find((deviceType) => deviceType.code === key) : supportedDeviceTypes.find((deviceType) => deviceType.name === key);
|
|
1278
1186
|
export const supportedClusters = [
|
|
1279
1187
|
AccountLogin,
|
|
1280
1188
|
Actions,
|
|
@@ -142,7 +142,7 @@ export class MatterbridgeEndpoint extends Endpoint {
|
|
|
142
142
|
deviceTypeList = [{ deviceType: firstDefinition.code, revision: firstDefinition.revision }];
|
|
143
143
|
}
|
|
144
144
|
const deviceTypeDefinitionV8 = {
|
|
145
|
-
name: firstDefinition.name
|
|
145
|
+
name: firstDefinition.name,
|
|
146
146
|
deviceType: firstDefinition.code,
|
|
147
147
|
deviceRevision: firstDefinition.revision,
|
|
148
148
|
deviceClass: firstDefinition.deviceClass.toLowerCase(),
|
|
@@ -39,7 +39,7 @@ export declare function optionsFor<T extends Behavior.Type>(type: T, options: Be
|
|
|
39
39
|
export declare function defaultFor<T extends Behavior.Type>(type: T, options?: Behavior.Options<T>): Partial<Behavior.Options<T>> | undefined;
|
|
40
40
|
export declare function getBehaviourTypesFromClusterServerIds(clusterServerList: ClusterId[]): Behavior.Type[];
|
|
41
41
|
export declare function getBehaviourTypesFromClusterClientIds(clusterClientList: ClusterId[]): Behavior.Type[];
|
|
42
|
-
export declare function getBehaviourTypeFromClusterServerId(clusterId: ClusterId): Behavior.Type;
|
|
42
|
+
export declare function getBehaviourTypeFromClusterServerId(clusterId: ClusterId): Behavior.Type | undefined;
|
|
43
43
|
export declare function getBehaviourTypeFromClusterClientId(clusterId: ClusterId): ClusterBehavior.Type | undefined;
|
|
44
44
|
export declare function getBehavior(endpoint: MatterbridgeEndpoint, cluster: Behavior.Type | ClusterType | ClusterId | string): Behavior.Type | undefined;
|
|
45
45
|
export declare function invokeBehaviorCommand(endpoint: MatterbridgeEndpoint, cluster: Behavior.Type | ClusterType | ClusterId | string, command: CommandHandlers, params?: Record<string, boolean | number | bigint | string | object | null>): Promise<boolean>;
|
|
@@ -228,7 +228,9 @@ export function defaultFor(type, options) {
|
|
|
228
228
|
export function getBehaviourTypesFromClusterServerIds(clusterServerList) {
|
|
229
229
|
const behaviorTypes = [];
|
|
230
230
|
clusterServerList.forEach((clusterId) => {
|
|
231
|
-
|
|
231
|
+
const behaviorType = getBehaviourTypeFromClusterServerId(clusterId);
|
|
232
|
+
if (behaviorType)
|
|
233
|
+
behaviorTypes.push(behaviorType);
|
|
232
234
|
});
|
|
233
235
|
return behaviorTypes;
|
|
234
236
|
}
|
|
@@ -334,7 +336,7 @@ export function getBehaviourTypeFromClusterServerId(clusterId) {
|
|
|
334
336
|
return MatterbridgeDeviceEnergyManagementServer.with('PowerForecastReporting');
|
|
335
337
|
if (clusterId === DeviceEnergyManagementMode.id)
|
|
336
338
|
return MatterbridgeDeviceEnergyManagementModeServer;
|
|
337
|
-
return
|
|
339
|
+
return undefined;
|
|
338
340
|
}
|
|
339
341
|
export function getBehaviourTypeFromClusterClientId(clusterId) {
|
|
340
342
|
if (clusterId === Identify.id)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Behavior } from '@matter/node';
|
|
2
|
+
import { ClusterId } from '@matter/types/datatype';
|
|
3
|
+
import type { MatterbridgeEndpoint } from './matterbridgeEndpoint.js';
|
|
4
|
+
export interface CreateClusterServerOptions {
|
|
5
|
+
features?: Record<string, boolean> | string[];
|
|
6
|
+
attributes?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare function snakeCase(name: string): string;
|
|
9
|
+
export declare function pascalCase(name: string): string;
|
|
10
|
+
export declare function camelCase(name: string): string;
|
|
11
|
+
export declare function getServerBehaviorFromClusterId(clusterId: ClusterId, features?: Record<string, boolean> | string[]): Promise<Behavior.Type | undefined>;
|
|
12
|
+
export declare function createClusterServer(endpoint: MatterbridgeEndpoint, clusterId: ClusterId, options?: CreateClusterServerOptions): Promise<MatterbridgeEndpoint>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ClusterBehavior } from '@matter/node';
|
|
2
|
+
import { getClusterNameById } from '@matter/types/cluster';
|
|
3
|
+
import { db, hk } from 'node-ansi-logger';
|
|
4
|
+
export function snakeCase(name) {
|
|
5
|
+
let result = '';
|
|
6
|
+
let needSeparator = false;
|
|
7
|
+
for (const char of name) {
|
|
8
|
+
if (char >= 'A' && char <= 'Z') {
|
|
9
|
+
if (needSeparator) {
|
|
10
|
+
result += '-';
|
|
11
|
+
needSeparator = false;
|
|
12
|
+
}
|
|
13
|
+
result += char.toLowerCase();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
result += char;
|
|
17
|
+
needSeparator = true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
export function pascalCase(name) {
|
|
23
|
+
return name
|
|
24
|
+
.split(/[-_]/)
|
|
25
|
+
.filter((piece) => piece.length > 0)
|
|
26
|
+
.map((piece) => piece.charAt(0).toUpperCase() + piece.slice(1))
|
|
27
|
+
.join('');
|
|
28
|
+
}
|
|
29
|
+
export function camelCase(name) {
|
|
30
|
+
const pascal = pascalCase(name);
|
|
31
|
+
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
32
|
+
}
|
|
33
|
+
export async function getServerBehaviorFromClusterId(clusterId, features) {
|
|
34
|
+
const name = getClusterNameById(clusterId);
|
|
35
|
+
if (name.includes('Unknown cluster'))
|
|
36
|
+
return undefined;
|
|
37
|
+
let mod;
|
|
38
|
+
try {
|
|
39
|
+
mod = (await import(`@matter/node/behaviors/${snakeCase(name)}`));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const base = mod[`${name}Server`];
|
|
45
|
+
if (!base || !ClusterBehavior.isType(base))
|
|
46
|
+
return undefined;
|
|
47
|
+
const featureNames = (Array.isArray(features)
|
|
48
|
+
? features
|
|
49
|
+
: Object.entries(features ?? {})
|
|
50
|
+
.filter(([, enabled]) => enabled)
|
|
51
|
+
.map(([key]) => key)).map((key) => pascalCase(key));
|
|
52
|
+
return featureNames.length > 0 ? base.with(...featureNames) : base;
|
|
53
|
+
}
|
|
54
|
+
export async function createClusterServer(endpoint, clusterId, options) {
|
|
55
|
+
const type = await getServerBehaviorFromClusterId(clusterId, options?.features);
|
|
56
|
+
if (!type) {
|
|
57
|
+
endpoint.log.warn(`createClusterServer: no matter.js server for clusterId ${hk}0x${clusterId.toString(16).padStart(4, '0')}${db}`);
|
|
58
|
+
return endpoint;
|
|
59
|
+
}
|
|
60
|
+
endpoint.behaviors.require(type, options?.attributes ?? {});
|
|
61
|
+
return endpoint;
|
|
62
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matterbridge/core",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.9.0-dev-20260612-94fd2e4",
|
|
4
4
|
"description": "Matterbridge core library",
|
|
5
5
|
"author": "https://github.com/Luligu",
|
|
6
6
|
"homepage": "https://matterbridge.io/",
|
|
@@ -129,11 +129,11 @@
|
|
|
129
129
|
"CHANGELOG.md"
|
|
130
130
|
],
|
|
131
131
|
"dependencies": {
|
|
132
|
-
"@matter/main": "0.17.2
|
|
133
|
-
"@matterbridge/dgram": "3.
|
|
134
|
-
"@matterbridge/thread": "3.
|
|
135
|
-
"@matterbridge/types": "3.
|
|
136
|
-
"@matterbridge/utils": "3.
|
|
132
|
+
"@matter/main": "0.17.2",
|
|
133
|
+
"@matterbridge/dgram": "3.9.0-dev-20260612-94fd2e4",
|
|
134
|
+
"@matterbridge/thread": "3.9.0-dev-20260612-94fd2e4",
|
|
135
|
+
"@matterbridge/types": "3.9.0-dev-20260612-94fd2e4",
|
|
136
|
+
"@matterbridge/utils": "3.9.0-dev-20260612-94fd2e4",
|
|
137
137
|
"escape-html": "1.0.3",
|
|
138
138
|
"express": "5.2.1",
|
|
139
139
|
"express-rate-limit": "8.5.2",
|