matterbridge 3.5.0-dev-20260113-c10324f → 3.5.0-dev-20260114-67b3c1f
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/CHANGELOG.md +44 -0
- package/dist/devices/evse.js +0 -1
- package/dist/frontend.js +12 -2
- package/dist/jestutils/jestHelpers.js +7 -10
- package/dist/matterNode.js +17 -9
- package/dist/matterbridge.js +9 -7
- package/dist/matterbridgeBehaviors.d.ts +44 -20
- package/dist/matterbridgeDeviceTypes.js +21 -21
- package/dist/matterbridgeEndpoint.js +6 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +1391 -323
- package/npm-shrinkwrap.json +59 -59
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -30,11 +30,55 @@ Advantages:
|
|
|
30
30
|
|
|
31
31
|
## [3.5.0] - Dev branch
|
|
32
32
|
|
|
33
|
+
### Breaking Changes
|
|
34
|
+
|
|
35
|
+
- [matter]: This release brings the upgrade to matter 1.4.2 and matter.js 0.16.1.
|
|
36
|
+
|
|
37
|
+
### Changed device types in Matter 1.4.2
|
|
38
|
+
|
|
39
|
+
- [all]: Added ScenesManagement Cluster that is no more provisional.
|
|
40
|
+
- [onOffMountedSwitch]: Updated onOffOutlet and onOffMountedSwitch: when using the mounted device types add as well the outlet device types on the same endpoint as subset device type.
|
|
41
|
+
- [dimmableMountedSwitch]: Updated dimmableOutlet and dimmableMountedSwitch: when using the mounted device types add as well the outlet device types on the same endpoint as subset device type.
|
|
42
|
+
- [coverDevice]: Updated coverDevice rev. 4 and removed Scene Management cluster.
|
|
43
|
+
- [roboticVacuumCleaner]: Updated roboticVacuumCleaner rev. 4: OperationCompletion event for RVC Operational State cluster is now mandatory (TODO: check behavior).
|
|
44
|
+
- [laundryWasher]: Updated laundryWasher rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior).
|
|
45
|
+
- [laundryDryer]: Updated laundryDryer rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior).
|
|
46
|
+
- [dishwasher]: Updated dishwasher rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior).
|
|
47
|
+
- [refrigerator]: Updated refrigerator: Temperature Controlled Cabinet with Cooler condition.
|
|
48
|
+
- [microwaveOven]: Updated microwaveOven rev. 2: OperationCompletion event for Operational State cluster is now mandatory (TODO: check behavior).
|
|
49
|
+
- [cookSurface]: Updated cookSurface rev. 2: TemperatureLevel is the only valid temperature control mode.
|
|
50
|
+
- [temperatureControlledCabinetCooler]: Updated temperatureControlledCabinetCooler rev. 5: TemperatureNumber is the only valid temperature control mode.
|
|
51
|
+
- [temperatureControlledCabinetHeater]: Updated temperatureControlledCabinetHeater rev. 5: TemperatureNumber is the only valid temperature control mode and OperationCompletion event for Oven Cavity Operational State cluster is now mandatory (TODO: check behavior).
|
|
52
|
+
|
|
53
|
+
### Changed clusters in Matter 1.4.2
|
|
54
|
+
|
|
55
|
+
- [BridgedDeviceBasicInformation]: Revision 5 - ConfigurationVersion attribute added as P O.
|
|
56
|
+
- [DoorLock]: Revision 9 - Removed AlarmMask attribute.
|
|
57
|
+
- [ElectricalPowerMeasurement]: Revision 2 - Changed reactive and apparent power fields to use new data types. Revision 3 - Changed range of apparent current field to allow negative apparent current.
|
|
58
|
+
- [FanControl]: Revision 5 - Clarified attribute usage, added conformance column.
|
|
59
|
+
- [Thermostat]: Revision 9 - Removed AlarmMask attribute and AlarmCodeBitmap Type.
|
|
60
|
+
- [Identify]: Revision 6 - Added Q quality for IdentifyTime attribute.
|
|
61
|
+
- [WindowCovering]: Revision 6 - Marked AbsolutePosition feature and associated elements provisional.
|
|
62
|
+
- [RvcCleanMode]: Revision 4 - Add VacuumThenMop cleaning mode.
|
|
63
|
+
- [RvcOperationalState]: Revision 4 - Add several operational states and errors.
|
|
64
|
+
- [ServiceArea]: Revision 2 - Rename InitialTimeEstimate to EstimatedTime.
|
|
65
|
+
|
|
33
66
|
### Added
|
|
34
67
|
|
|
68
|
+
- [jest]: Added cache inside the repo in .cache/jest.
|
|
69
|
+
- [frontend]: Enhanced logging for HTTP/HTTPS server binding in Frontend class.
|
|
70
|
+
- [matterbridge]: Excluded specific network interfaces when looking for the first external interface.
|
|
71
|
+
- [thermostat]: Conformance to new matter.js internal attributes externalMeasuredIndoorTemperature and externallyMeasuredOccupancy (not in Matter 1.4.2).
|
|
72
|
+
|
|
35
73
|
### Changed
|
|
36
74
|
|
|
37
75
|
- [package]: Updated dependencies.
|
|
76
|
+
- [eslint]: Moved cache in .cache/.eslintcache.
|
|
77
|
+
- [prettier]: Moved cache in .cache/.prettiercache.
|
|
78
|
+
|
|
79
|
+
### Fixed
|
|
80
|
+
|
|
81
|
+
- [macOS]: Fixed the EnergyEvse.chargingEnabledUntil attribute that was wrongly set in the disable command (spec 9.3.8.4).
|
|
38
82
|
|
|
39
83
|
<a href="https://www.buymeacoffee.com/luligugithub"><img src="https://matterbridge.io/bmc-button.svg" alt="Buy me a coffee" width="80"></a>
|
|
40
84
|
|
package/dist/devices/evse.js
CHANGED
|
@@ -60,7 +60,6 @@ export class MatterbridgeEnergyEvseServer extends EnergyEvseServer {
|
|
|
60
60
|
if (this.state.state === EnergyEvse.State.PluggedInCharging) {
|
|
61
61
|
this.state.state = EnergyEvse.State.PluggedInDemand;
|
|
62
62
|
}
|
|
63
|
-
this.state.chargingEnabledUntil = 0;
|
|
64
63
|
}
|
|
65
64
|
enableCharging(request) {
|
|
66
65
|
const device = this.endpoint.stateOf(MatterbridgeServer);
|
package/dist/frontend.js
CHANGED
|
@@ -206,6 +206,10 @@ export class Frontend extends EventEmitter {
|
|
|
206
206
|
}
|
|
207
207
|
else {
|
|
208
208
|
this.httpServer.listen(this.port, () => {
|
|
209
|
+
const addr = this.httpServer?.address();
|
|
210
|
+
if (addr && typeof addr !== 'string') {
|
|
211
|
+
this.log.info(`The frontend http server is bound to ${addr.family} ${addr.address}:${addr.port}`);
|
|
212
|
+
}
|
|
209
213
|
if (this.matterbridge.systemInformation.ipv4Address !== '')
|
|
210
214
|
this.log.info(`The frontend http server is listening on ${UNDERLINE}http://${this.matterbridge.systemInformation.ipv4Address}:${this.port}${UNDERLINEOFF}${rs}`);
|
|
211
215
|
if (this.matterbridge.systemInformation.ipv6Address !== '')
|
|
@@ -338,6 +342,10 @@ export class Frontend extends EventEmitter {
|
|
|
338
342
|
}
|
|
339
343
|
else {
|
|
340
344
|
this.httpsServer.listen(this.port, () => {
|
|
345
|
+
const addr = this.httpsServer?.address();
|
|
346
|
+
if (addr && typeof addr !== 'string') {
|
|
347
|
+
this.log.info(`The frontend https server is bound to ${addr.family} ${addr.address}:${addr.port}`);
|
|
348
|
+
}
|
|
341
349
|
if (this.matterbridge.systemInformation.ipv4Address !== '')
|
|
342
350
|
this.log.info(`The frontend https server is listening on ${UNDERLINE}https://${this.matterbridge.systemInformation.ipv4Address}:${this.port}${UNDERLINEOFF}${rs}`);
|
|
343
351
|
if (this.matterbridge.systemInformation.ipv6Address !== '')
|
|
@@ -1496,8 +1504,10 @@ export class Frontend extends EventEmitter {
|
|
|
1496
1504
|
this.wssSendRefreshRequired('matter', { matter: { ...matter, advertising: true } });
|
|
1497
1505
|
}
|
|
1498
1506
|
if (data.params.removeFabric) {
|
|
1499
|
-
|
|
1500
|
-
|
|
1507
|
+
const fabricIndex = FabricIndex(data.params.removeFabric);
|
|
1508
|
+
const fabricManager = serverNode.env.get(FabricManager);
|
|
1509
|
+
if (fabricManager.has(fabricIndex))
|
|
1510
|
+
await fabricManager.for(fabricIndex).leave();
|
|
1501
1511
|
this.log.debug(`*Removed fabric index ${data.params.removeFabric} for node ${data.params.id}`);
|
|
1502
1512
|
this.wssSendRefreshRequired('matter', { matter: { ...matter } });
|
|
1503
1513
|
}
|
|
@@ -162,7 +162,10 @@ export async function startMatterbridge(bridgeMode = 'bridge', frontendPort = 82
|
|
|
162
162
|
process.env['MATTERBRIDGE_PAUSE_MATTER_INTERVAL_MS'] = '100';
|
|
163
163
|
process.argv.length = 0;
|
|
164
164
|
process.argv.push(...originalProcessArgv, '-novirtual', '-debug', '-verbose', '-logger', 'debug', '-matterlogger', 'debug', bridgeMode === '' ? '-test' : '-' + bridgeMode, '-homedir', HOMEDIR, '-frontend', frontendPort.toString(), '-port', matterPort.toString(), '-passcode', passcode.toString(), '-discriminator', discriminator.toString());
|
|
165
|
+
expect(Matterbridge.instance).toBeUndefined();
|
|
165
166
|
matterbridge = await Matterbridge.loadInstance(true);
|
|
167
|
+
expect(matterbridge.environment).toBeDefined();
|
|
168
|
+
new MdnsService(matterbridge.environment);
|
|
166
169
|
expect(matterbridge).toBeDefined();
|
|
167
170
|
expect(matterbridge.profile).toBeUndefined();
|
|
168
171
|
expect(matterbridge.bridgeMode).toBe(bridgeMode);
|
|
@@ -333,7 +336,7 @@ export async function stopMatterbridgeEnvironment() {
|
|
|
333
336
|
expect(server.lifecycle.isReady).toBeTruthy();
|
|
334
337
|
expect(server.lifecycle.isOnline).toBeTruthy();
|
|
335
338
|
await server.close();
|
|
336
|
-
expect(server.lifecycle.isReady).
|
|
339
|
+
expect(server.lifecycle.isReady).toBeFalsy();
|
|
337
340
|
expect(server.lifecycle.isOnline).toBeFalsy();
|
|
338
341
|
await matterbridge.stopMatterStorage();
|
|
339
342
|
expect(matterbridge.matterStorageService).not.toBeDefined();
|
|
@@ -357,10 +360,7 @@ export async function destroyInstance(matterbridge, cleanupPause = 10, destroyPa
|
|
|
357
360
|
}
|
|
358
361
|
export async function closeMdnsInstance(matterbridge) {
|
|
359
362
|
const mdns = matterbridge.environment.get(MdnsService);
|
|
360
|
-
|
|
361
|
-
await mdns[Symbol.asyncDispose]();
|
|
362
|
-
if (mdns && mdns.close && typeof mdns.close === 'function')
|
|
363
|
-
await mdns.close();
|
|
363
|
+
await mdns.close();
|
|
364
364
|
}
|
|
365
365
|
export function createTestEnvironment(name) {
|
|
366
366
|
expect(name).toBeDefined();
|
|
@@ -379,10 +379,7 @@ export function createTestEnvironment(name) {
|
|
|
379
379
|
}
|
|
380
380
|
export async function destroyTestEnvironment() {
|
|
381
381
|
const mdns = environment.get(MdnsService);
|
|
382
|
-
|
|
383
|
-
await mdns[Symbol.asyncDispose]();
|
|
384
|
-
if (mdns && typeof mdns.close === 'function')
|
|
385
|
-
await mdns.close();
|
|
382
|
+
await mdns.close();
|
|
386
383
|
}
|
|
387
384
|
export async function flushAsync(ticks = 3, microTurns = 10, pause = 250) {
|
|
388
385
|
for (let i = 0; i < ticks; i++)
|
|
@@ -532,7 +529,7 @@ export async function stopServerNode(server) {
|
|
|
532
529
|
expect(server.lifecycle.isReady).toBeTruthy();
|
|
533
530
|
expect(server.lifecycle.isOnline).toBeTruthy();
|
|
534
531
|
await server.close();
|
|
535
|
-
expect(server.lifecycle.isReady).
|
|
532
|
+
expect(server.lifecycle.isReady).toBeFalsy();
|
|
536
533
|
expect(server.lifecycle.isOnline).toBeFalsy();
|
|
537
534
|
const mdns = environment.get(MdnsService);
|
|
538
535
|
if (mdns && typeof mdns[Symbol.asyncDispose] === 'function')
|
package/dist/matterNode.js
CHANGED
|
@@ -5,7 +5,7 @@ import { AnsiLogger, BLUE, CYAN, db, debugStringify, er, nf, or, zb } from 'node
|
|
|
5
5
|
import { NodeStorageManager } from 'node-persist-manager';
|
|
6
6
|
import '@matter/nodejs';
|
|
7
7
|
import { Logger, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, StorageService, UINT32_MAX, UINT16_MAX, Environment } from '@matter/general';
|
|
8
|
-
import {
|
|
8
|
+
import { MdnsService } from '@matter/protocol';
|
|
9
9
|
import { VendorId, DeviceTypeId } from '@matter/types';
|
|
10
10
|
import { ServerNode, Endpoint } from '@matter/node';
|
|
11
11
|
import { AggregatorEndpoint } from '@matter/node/endpoints/aggregator';
|
|
@@ -64,6 +64,9 @@ export class MatterNode extends EventEmitter {
|
|
|
64
64
|
this.log.logNameColor = '\x1b[38;5;65m';
|
|
65
65
|
if (this.debug)
|
|
66
66
|
this.log.debug(`MatterNode ${this.pluginName ? 'for plugin ' + this.pluginName : 'bridge'} loading...`);
|
|
67
|
+
this.port = matterbridge.port;
|
|
68
|
+
this.passcode = matterbridge.passcode;
|
|
69
|
+
this.discriminator = matterbridge.discriminator;
|
|
67
70
|
this.server = new BroadcastServer('matter', this.log);
|
|
68
71
|
this.server.on('broadcast_message', this.msgHandler.bind(this));
|
|
69
72
|
if (this.verbose)
|
|
@@ -81,6 +84,12 @@ export class MatterNode extends EventEmitter {
|
|
|
81
84
|
this.environment.vars.set('runtime.exitcode', false);
|
|
82
85
|
if (this.verbose)
|
|
83
86
|
this.log.debug(`Matter Environment is ready`);
|
|
87
|
+
this.matterMdnsService = new MdnsService(this.environment);
|
|
88
|
+
setImmediate(async () => {
|
|
89
|
+
await this.matterMdnsService?.construction.ready;
|
|
90
|
+
if (this.verbose)
|
|
91
|
+
this.log.debug(`Matter MdnsService is ready`);
|
|
92
|
+
});
|
|
84
93
|
if (this.matterbridge.fileLogger) {
|
|
85
94
|
AnsiLogger.setGlobalLogfile(path.join(this.matterbridge.matterbridgeDirectory, MATTERBRIDGE_LOGGER_FILE), this.matterbridge.logLevel);
|
|
86
95
|
}
|
|
@@ -127,11 +136,7 @@ export class MatterNode extends EventEmitter {
|
|
|
127
136
|
if (closeMdns) {
|
|
128
137
|
if (this.verbose)
|
|
129
138
|
this.log.debug(`Closing Matter MdnsService for ${this.storeId}...`);
|
|
130
|
-
this.matterMdnsService
|
|
131
|
-
if (typeof this.matterMdnsService[Symbol.asyncDispose] === 'function')
|
|
132
|
-
await this.matterMdnsService[Symbol.asyncDispose]();
|
|
133
|
-
else
|
|
134
|
-
await this.matterMdnsService.close();
|
|
139
|
+
await this.matterMdnsService?.close();
|
|
135
140
|
if (this.verbose)
|
|
136
141
|
this.log.debug(`Closed Matter MdnsService for ${this.storeId}`);
|
|
137
142
|
}
|
|
@@ -429,14 +434,14 @@ export class MatterNode extends EventEmitter {
|
|
|
429
434
|
serverNode.events.commissioning.fabricsChanged.on((fabricIndex, fabricAction) => {
|
|
430
435
|
let action = '';
|
|
431
436
|
switch (fabricAction) {
|
|
432
|
-
case
|
|
437
|
+
case 'added':
|
|
433
438
|
this.advertisingNodes.delete(storeId);
|
|
434
439
|
action = 'added';
|
|
435
440
|
break;
|
|
436
|
-
case
|
|
441
|
+
case 'deleted':
|
|
437
442
|
action = 'removed';
|
|
438
443
|
break;
|
|
439
|
-
case
|
|
444
|
+
case 'updated':
|
|
440
445
|
action = 'updated';
|
|
441
446
|
break;
|
|
442
447
|
}
|
|
@@ -595,6 +600,9 @@ export class MatterNode extends EventEmitter {
|
|
|
595
600
|
try {
|
|
596
601
|
this.log.debug(`Creating MatterNode for device ${plg}${pluginName}${db}:${dev}${device.deviceName}${db} (${zb}${device.name}${db})...`);
|
|
597
602
|
const matterNode = new MatterNode(this.matterbridge, pluginName, device);
|
|
603
|
+
matterNode.port = this.port ? this.port++ : undefined;
|
|
604
|
+
matterNode.passcode = this.passcode ? this.passcode++ : undefined;
|
|
605
|
+
matterNode.discriminator = this.discriminator ? this.discriminator++ : undefined;
|
|
598
606
|
this.dependantMatterNodes.set(device.id, matterNode);
|
|
599
607
|
await matterNode.create();
|
|
600
608
|
this.log.debug(`Created MatterNode for device ${plg}${pluginName}${db}:${dev}${device.deviceName}${db} (${zb}${device.name}${db})`);
|
package/dist/matterbridge.js
CHANGED
|
@@ -9,7 +9,7 @@ import { AnsiLogger, UNDERLINE, UNDERLINEOFF, db, debugStringify, BRIGHT, RESET,
|
|
|
9
9
|
import { NodeStorageManager } from 'node-persist-manager';
|
|
10
10
|
import '@matter/nodejs';
|
|
11
11
|
import { Logger, LogLevel as MatterLogLevel, LogFormat as MatterLogFormat, UINT32_MAX, UINT16_MAX, Crypto, Environment, StorageService } from '@matter/general';
|
|
12
|
-
import {
|
|
12
|
+
import { PaseClient } from '@matter/protocol';
|
|
13
13
|
import { Endpoint, ServerNode } from '@matter/node';
|
|
14
14
|
import { DeviceTypeId, VendorId } from '@matter/types/datatype';
|
|
15
15
|
import { AggregatorEndpoint } from '@matter/node/endpoints';
|
|
@@ -746,6 +746,7 @@ export class Matterbridge extends EventEmitter {
|
|
|
746
746
|
this.sigtermHandler = undefined;
|
|
747
747
|
}
|
|
748
748
|
async logNodeAndSystemInfo() {
|
|
749
|
+
const excludedInterfaceNamePattern = /(tailscale|wireguard|openvpn|zerotier|hamachi|\bwg\d+\b|\btun\d+\b|\btap\d+\b|\butun\d+\b|docker|podman|\bveth[a-z0-9]*\b|\bbr-[a-z0-9]+\b|cni|kube|flannel|calico|virbr\d*\b|vmware|vmnet\d*\b|virtualbox|vboxnet\d*\b|teredo|isatap)/i;
|
|
749
750
|
const networkInterfaces = os.networkInterfaces();
|
|
750
751
|
this.systemInformation.interfaceName = '';
|
|
751
752
|
this.systemInformation.ipv4Address = '';
|
|
@@ -754,9 +755,10 @@ export class Matterbridge extends EventEmitter {
|
|
|
754
755
|
for (const [interfaceName, interfaceDetails] of Object.entries(networkInterfaces)) {
|
|
755
756
|
if (this.mdnsInterface && interfaceName !== this.mdnsInterface)
|
|
756
757
|
continue;
|
|
757
|
-
if (!
|
|
758
|
-
|
|
759
|
-
|
|
758
|
+
if (!this.mdnsInterface && excludedInterfaceNamePattern.test(interfaceName))
|
|
759
|
+
continue;
|
|
760
|
+
if (!interfaceDetails)
|
|
761
|
+
continue;
|
|
760
762
|
for (const detail of interfaceDetails) {
|
|
761
763
|
if (detail.family === 'IPv4' && !detail.internal && this.systemInformation.ipv4Address === '') {
|
|
762
764
|
this.systemInformation.interfaceName = interfaceName;
|
|
@@ -1484,14 +1486,14 @@ export class Matterbridge extends EventEmitter {
|
|
|
1484
1486
|
serverNode.events.commissioning.fabricsChanged.on((fabricIndex, fabricAction) => {
|
|
1485
1487
|
let action = '';
|
|
1486
1488
|
switch (fabricAction) {
|
|
1487
|
-
case
|
|
1489
|
+
case 'added':
|
|
1488
1490
|
this.advertisingNodes.delete(storeId);
|
|
1489
1491
|
action = 'added';
|
|
1490
1492
|
break;
|
|
1491
|
-
case
|
|
1493
|
+
case 'deleted':
|
|
1492
1494
|
action = 'removed';
|
|
1493
1495
|
break;
|
|
1494
|
-
case
|
|
1496
|
+
case 'updated':
|
|
1495
1497
|
action = 'updated';
|
|
1496
1498
|
break;
|
|
1497
1499
|
}
|
|
@@ -857,7 +857,7 @@ export declare class MatterbridgeEnhancedColorControlServer extends Matterbridge
|
|
|
857
857
|
declare const MatterbridgeLiftWindowCoveringServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
|
|
858
858
|
readonly id: 258;
|
|
859
859
|
readonly name: "WindowCovering";
|
|
860
|
-
readonly revision:
|
|
860
|
+
readonly revision: 6;
|
|
861
861
|
readonly features: {
|
|
862
862
|
readonly lift: import("@matter/types").BitFlag;
|
|
863
863
|
readonly tilt: import("@matter/types").BitFlag;
|
|
@@ -1052,7 +1052,7 @@ export declare class MatterbridgeLiftWindowCoveringServer extends MatterbridgeLi
|
|
|
1052
1052
|
declare const MatterbridgeLiftTiltWindowCoveringServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
|
|
1053
1053
|
readonly id: 258;
|
|
1054
1054
|
readonly name: "WindowCovering";
|
|
1055
|
-
readonly revision:
|
|
1055
|
+
readonly revision: 6;
|
|
1056
1056
|
readonly features: {
|
|
1057
1057
|
readonly lift: import("@matter/types").BitFlag;
|
|
1058
1058
|
readonly tilt: import("@matter/types").BitFlag;
|
|
@@ -1256,7 +1256,7 @@ export declare class MatterbridgeFanControlServer extends MatterbridgeFanControl
|
|
|
1256
1256
|
declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
|
|
1257
1257
|
readonly id: 513;
|
|
1258
1258
|
readonly name: "Thermostat";
|
|
1259
|
-
readonly revision:
|
|
1259
|
+
readonly revision: 9;
|
|
1260
1260
|
readonly features: {
|
|
1261
1261
|
readonly heating: import("@matter/types").BitFlag;
|
|
1262
1262
|
readonly cooling: import("@matter/types").BitFlag;
|
|
@@ -1325,6 +1325,18 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1325
1325
|
mode: import("@matter/types").FieldType<Thermostat.SetpointRaiseLowerMode>;
|
|
1326
1326
|
amount: import("@matter/types").FieldType<number>;
|
|
1327
1327
|
}>, void, any>;
|
|
1328
|
+
readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1329
|
+
requestType: import("@matter/types").FieldType<Thermostat.RequestType>;
|
|
1330
|
+
attributeRequests: import("@matter/types").FieldType<import("@matter/types/datatype").AttributeId[]>;
|
|
1331
|
+
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1332
|
+
}>, import("@matter/types").TypeFromFields<{
|
|
1333
|
+
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1334
|
+
attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1335
|
+
attributeId: import("@matter/types").FieldType<import("@matter/types/datatype").AttributeId>;
|
|
1336
|
+
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1337
|
+
}>[]>;
|
|
1338
|
+
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1339
|
+
}>, any>;
|
|
1328
1340
|
};
|
|
1329
1341
|
readonly extensions: readonly [{
|
|
1330
1342
|
readonly flags: {
|
|
@@ -1515,9 +1527,9 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1515
1527
|
}>>;
|
|
1516
1528
|
}>[], any>;
|
|
1517
1529
|
readonly numberOfPresets: import("@matter/types").FixedAttribute<number, any>;
|
|
1518
|
-
readonly activePresetHandle: import("@matter/types").Attribute<
|
|
1530
|
+
readonly activePresetHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
|
|
1519
1531
|
readonly presets: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
|
|
1520
|
-
presetHandle: import("@matter/types").FieldType<
|
|
1532
|
+
presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
|
|
1521
1533
|
presetScenario: import("@matter/types").FieldType<Thermostat.PresetScenario>;
|
|
1522
1534
|
name: import("@matter/types").OptionalFieldType<string | null>;
|
|
1523
1535
|
coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
|
|
@@ -1527,7 +1539,7 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1527
1539
|
};
|
|
1528
1540
|
readonly commands: {
|
|
1529
1541
|
readonly setActivePresetRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1530
|
-
presetHandle: import("@matter/types").FieldType<
|
|
1542
|
+
presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
|
|
1531
1543
|
}>, void, any>;
|
|
1532
1544
|
};
|
|
1533
1545
|
};
|
|
@@ -1550,12 +1562,12 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1550
1562
|
readonly numberOfSchedules: import("@matter/types").FixedAttribute<number, any>;
|
|
1551
1563
|
readonly numberOfScheduleTransitions: import("@matter/types").FixedAttribute<number, any>;
|
|
1552
1564
|
readonly numberOfScheduleTransitionPerDay: import("@matter/types").FixedAttribute<number | null, any>;
|
|
1553
|
-
readonly activeScheduleHandle: import("@matter/types").Attribute<
|
|
1565
|
+
readonly activeScheduleHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
|
|
1554
1566
|
readonly schedules: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
|
|
1555
|
-
scheduleHandle: import("@matter/types").FieldType<
|
|
1567
|
+
scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
|
|
1556
1568
|
systemMode: import("@matter/types").FieldType<Thermostat.SystemMode>;
|
|
1557
1569
|
name: import("@matter/types").OptionalFieldType<string>;
|
|
1558
|
-
presetHandle: import("@matter/types").OptionalFieldType<
|
|
1570
|
+
presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
|
|
1559
1571
|
transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1560
1572
|
dayOfWeek: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
|
|
1561
1573
|
sunday: import("@matter/types").BitFlag;
|
|
@@ -1568,7 +1580,7 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1568
1580
|
away: import("@matter/types").BitFlag;
|
|
1569
1581
|
}>>;
|
|
1570
1582
|
transitionTime: import("@matter/types").FieldType<number>;
|
|
1571
|
-
presetHandle: import("@matter/types").OptionalFieldType<
|
|
1583
|
+
presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
|
|
1572
1584
|
systemMode: import("@matter/types").OptionalFieldType<Thermostat.SystemMode>;
|
|
1573
1585
|
coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
|
|
1574
1586
|
heatingSetpoint: import("@matter/types").OptionalFieldType<number>;
|
|
@@ -1578,7 +1590,7 @@ declare const MatterbridgeThermostatServer_base: import("@matter/node").ClusterB
|
|
|
1578
1590
|
};
|
|
1579
1591
|
readonly commands: {
|
|
1580
1592
|
readonly setActiveScheduleRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1581
|
-
scheduleHandle: import("@matter/types").FieldType<
|
|
1593
|
+
scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource>;
|
|
1582
1594
|
}>, void, any>;
|
|
1583
1595
|
};
|
|
1584
1596
|
};
|
|
@@ -1608,7 +1620,7 @@ export declare class MatterbridgeThermostatServer extends MatterbridgeThermostat
|
|
|
1608
1620
|
declare const MatterbridgePresetThermostatServer_base: import("@matter/node").ClusterBehavior.Type<import("@matter/types").ClusterComposer.WithFeatures<import("@matter/types").ClusterType.Of<{
|
|
1609
1621
|
readonly id: 513;
|
|
1610
1622
|
readonly name: "Thermostat";
|
|
1611
|
-
readonly revision:
|
|
1623
|
+
readonly revision: 9;
|
|
1612
1624
|
readonly features: {
|
|
1613
1625
|
readonly heating: import("@matter/types").BitFlag;
|
|
1614
1626
|
readonly cooling: import("@matter/types").BitFlag;
|
|
@@ -1677,6 +1689,18 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1677
1689
|
mode: import("@matter/types").FieldType<Thermostat.SetpointRaiseLowerMode>;
|
|
1678
1690
|
amount: import("@matter/types").FieldType<number>;
|
|
1679
1691
|
}>, void, any>;
|
|
1692
|
+
readonly atomicRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1693
|
+
requestType: import("@matter/types").FieldType<Thermostat.RequestType>;
|
|
1694
|
+
attributeRequests: import("@matter/types").FieldType<import("@matter/types/datatype").AttributeId[]>;
|
|
1695
|
+
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1696
|
+
}>, import("@matter/types").TypeFromFields<{
|
|
1697
|
+
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1698
|
+
attributeStatus: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1699
|
+
attributeId: import("@matter/types").FieldType<import("@matter/types/datatype").AttributeId>;
|
|
1700
|
+
statusCode: import("@matter/types").FieldType<import("@matter/types").Status>;
|
|
1701
|
+
}>[]>;
|
|
1702
|
+
timeout: import("@matter/types").OptionalFieldType<number>;
|
|
1703
|
+
}>, any>;
|
|
1680
1704
|
};
|
|
1681
1705
|
readonly extensions: readonly [{
|
|
1682
1706
|
readonly flags: {
|
|
@@ -1867,9 +1891,9 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1867
1891
|
}>>;
|
|
1868
1892
|
}>[], any>;
|
|
1869
1893
|
readonly numberOfPresets: import("@matter/types").FixedAttribute<number, any>;
|
|
1870
|
-
readonly activePresetHandle: import("@matter/types").Attribute<
|
|
1894
|
+
readonly activePresetHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
|
|
1871
1895
|
readonly presets: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
|
|
1872
|
-
presetHandle: import("@matter/types").FieldType<
|
|
1896
|
+
presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
|
|
1873
1897
|
presetScenario: import("@matter/types").FieldType<Thermostat.PresetScenario>;
|
|
1874
1898
|
name: import("@matter/types").OptionalFieldType<string | null>;
|
|
1875
1899
|
coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
|
|
@@ -1879,7 +1903,7 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1879
1903
|
};
|
|
1880
1904
|
readonly commands: {
|
|
1881
1905
|
readonly setActivePresetRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1882
|
-
presetHandle: import("@matter/types").FieldType<
|
|
1906
|
+
presetHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
|
|
1883
1907
|
}>, void, any>;
|
|
1884
1908
|
};
|
|
1885
1909
|
};
|
|
@@ -1902,12 +1926,12 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1902
1926
|
readonly numberOfSchedules: import("@matter/types").FixedAttribute<number, any>;
|
|
1903
1927
|
readonly numberOfScheduleTransitions: import("@matter/types").FixedAttribute<number, any>;
|
|
1904
1928
|
readonly numberOfScheduleTransitionPerDay: import("@matter/types").FixedAttribute<number | null, any>;
|
|
1905
|
-
readonly activeScheduleHandle: import("@matter/types").Attribute<
|
|
1929
|
+
readonly activeScheduleHandle: import("@matter/types").Attribute<AllowSharedBufferSource | null, any>;
|
|
1906
1930
|
readonly schedules: import("@matter/types").WritableAttribute<import("@matter/types").TypeFromFields<{
|
|
1907
|
-
scheduleHandle: import("@matter/types").FieldType<
|
|
1931
|
+
scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource | null>;
|
|
1908
1932
|
systemMode: import("@matter/types").FieldType<Thermostat.SystemMode>;
|
|
1909
1933
|
name: import("@matter/types").OptionalFieldType<string>;
|
|
1910
|
-
presetHandle: import("@matter/types").OptionalFieldType<
|
|
1934
|
+
presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
|
|
1911
1935
|
transitions: import("@matter/types").FieldType<import("@matter/types").TypeFromFields<{
|
|
1912
1936
|
dayOfWeek: import("@matter/types").FieldType<import("@matter/types").TypeFromPartialBitSchema<{
|
|
1913
1937
|
sunday: import("@matter/types").BitFlag;
|
|
@@ -1920,7 +1944,7 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1920
1944
|
away: import("@matter/types").BitFlag;
|
|
1921
1945
|
}>>;
|
|
1922
1946
|
transitionTime: import("@matter/types").FieldType<number>;
|
|
1923
|
-
presetHandle: import("@matter/types").OptionalFieldType<
|
|
1947
|
+
presetHandle: import("@matter/types").OptionalFieldType<AllowSharedBufferSource>;
|
|
1924
1948
|
systemMode: import("@matter/types").OptionalFieldType<Thermostat.SystemMode>;
|
|
1925
1949
|
coolingSetpoint: import("@matter/types").OptionalFieldType<number>;
|
|
1926
1950
|
heatingSetpoint: import("@matter/types").OptionalFieldType<number>;
|
|
@@ -1930,7 +1954,7 @@ declare const MatterbridgePresetThermostatServer_base: import("@matter/node").Cl
|
|
|
1930
1954
|
};
|
|
1931
1955
|
readonly commands: {
|
|
1932
1956
|
readonly setActiveScheduleRequest: import("@matter/types").Command<import("@matter/types").TypeFromFields<{
|
|
1933
|
-
scheduleHandle: import("@matter/types").FieldType<
|
|
1957
|
+
scheduleHandle: import("@matter/types").FieldType<AllowSharedBufferSource>;
|
|
1934
1958
|
}>, void, any>;
|
|
1935
1959
|
};
|
|
1936
1960
|
};
|
|
@@ -174,7 +174,7 @@ export const onOffLight = DeviceTypeDefinition({
|
|
|
174
174
|
code: 0x0100,
|
|
175
175
|
deviceClass: DeviceClasses.Simple,
|
|
176
176
|
revision: 3,
|
|
177
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
|
|
177
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id],
|
|
178
178
|
optionalServerClusters: [LevelControl.Cluster.id],
|
|
179
179
|
});
|
|
180
180
|
export const dimmableLight = DeviceTypeDefinition({
|
|
@@ -182,7 +182,7 @@ export const dimmableLight = DeviceTypeDefinition({
|
|
|
182
182
|
code: 0x0101,
|
|
183
183
|
deviceClass: DeviceClasses.Simple,
|
|
184
184
|
revision: 3,
|
|
185
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
185
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
186
186
|
optionalServerClusters: [],
|
|
187
187
|
});
|
|
188
188
|
export const colorTemperatureLight = DeviceTypeDefinition({
|
|
@@ -190,7 +190,7 @@ export const colorTemperatureLight = DeviceTypeDefinition({
|
|
|
190
190
|
code: 0x010c,
|
|
191
191
|
deviceClass: DeviceClasses.Simple,
|
|
192
192
|
revision: 4,
|
|
193
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
193
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
194
194
|
optionalServerClusters: [],
|
|
195
195
|
});
|
|
196
196
|
export const extendedColorLight = DeviceTypeDefinition({
|
|
@@ -198,39 +198,39 @@ export const extendedColorLight = DeviceTypeDefinition({
|
|
|
198
198
|
code: 0x010d,
|
|
199
199
|
deviceClass: DeviceClasses.Simple,
|
|
200
200
|
revision: 4,
|
|
201
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
201
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
202
202
|
optionalServerClusters: [],
|
|
203
203
|
});
|
|
204
204
|
export const onOffOutlet = DeviceTypeDefinition({
|
|
205
205
|
name: 'MA-onoffpluginunit',
|
|
206
206
|
code: 0x010a,
|
|
207
207
|
deviceClass: DeviceClasses.Simple,
|
|
208
|
-
revision:
|
|
209
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
|
|
208
|
+
revision: 4,
|
|
209
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id],
|
|
210
210
|
optionalServerClusters: [LevelControl.Cluster.id],
|
|
211
211
|
});
|
|
212
212
|
export const dimmableOutlet = DeviceTypeDefinition({
|
|
213
213
|
name: 'MA-dimmablepluginunit',
|
|
214
214
|
code: 0x010b,
|
|
215
215
|
deviceClass: DeviceClasses.Simple,
|
|
216
|
-
revision:
|
|
217
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
216
|
+
revision: 5,
|
|
217
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
218
218
|
optionalServerClusters: [],
|
|
219
219
|
});
|
|
220
220
|
export const onOffMountedSwitch = DeviceTypeDefinition({
|
|
221
221
|
name: 'MA-onoffmountedswitch',
|
|
222
222
|
code: 0x010f,
|
|
223
223
|
deviceClass: DeviceClasses.Simple,
|
|
224
|
-
revision:
|
|
225
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
|
|
224
|
+
revision: 2,
|
|
225
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id],
|
|
226
226
|
optionalServerClusters: [LevelControl.Cluster.id],
|
|
227
227
|
});
|
|
228
228
|
export const dimmableMountedSwitch = DeviceTypeDefinition({
|
|
229
229
|
name: 'MA-dimmablemountedswitch',
|
|
230
230
|
code: 0x0110,
|
|
231
231
|
deviceClass: DeviceClasses.Simple,
|
|
232
|
-
revision:
|
|
233
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
232
|
+
revision: 2,
|
|
233
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
234
234
|
optionalServerClusters: [],
|
|
235
235
|
});
|
|
236
236
|
export const pumpDevice = DeviceTypeDefinition({
|
|
@@ -397,7 +397,7 @@ export const coverDevice = DeviceTypeDefinition({
|
|
|
397
397
|
name: 'MA-windowCovering',
|
|
398
398
|
code: 0x202,
|
|
399
399
|
deviceClass: DeviceClasses.Simple,
|
|
400
|
-
revision:
|
|
400
|
+
revision: 4,
|
|
401
401
|
requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
|
|
402
402
|
optionalServerClusters: [Groups.Cluster.id],
|
|
403
403
|
});
|
|
@@ -480,7 +480,7 @@ export const roboticVacuumCleaner = DeviceTypeDefinition({
|
|
|
480
480
|
name: 'MA-roboticvacuumcleaner',
|
|
481
481
|
code: 0x74,
|
|
482
482
|
deviceClass: DeviceClasses.Simple,
|
|
483
|
-
revision:
|
|
483
|
+
revision: 4,
|
|
484
484
|
requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
|
|
485
485
|
optionalServerClusters: [RvcCleanMode.Cluster.id, ServiceArea.Cluster.id],
|
|
486
486
|
});
|
|
@@ -488,7 +488,7 @@ export const laundryWasher = DeviceTypeDefinition({
|
|
|
488
488
|
name: 'MA-laundrywasher',
|
|
489
489
|
code: 0x73,
|
|
490
490
|
deviceClass: DeviceClasses.Simple,
|
|
491
|
-
revision:
|
|
491
|
+
revision: 2,
|
|
492
492
|
requiredServerClusters: [OperationalState.Cluster.id],
|
|
493
493
|
optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryWasherControls.Cluster.id, TemperatureControl.Cluster.id],
|
|
494
494
|
});
|
|
@@ -512,7 +512,7 @@ export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
|
|
|
512
512
|
name: 'MA-temperaturecontrolledcabinetcooler',
|
|
513
513
|
code: 0x71,
|
|
514
514
|
deviceClass: DeviceClasses.Simple,
|
|
515
|
-
revision:
|
|
515
|
+
revision: 5,
|
|
516
516
|
requiredServerClusters: [TemperatureControl.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id],
|
|
517
517
|
optionalServerClusters: [TemperatureMeasurement.Cluster.id],
|
|
518
518
|
});
|
|
@@ -520,7 +520,7 @@ export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
|
|
|
520
520
|
name: 'MA-temperaturecontrolledcabinetheater',
|
|
521
521
|
code: 0x71,
|
|
522
522
|
deviceClass: DeviceClasses.Simple,
|
|
523
|
-
revision:
|
|
523
|
+
revision: 5,
|
|
524
524
|
requiredServerClusters: [TemperatureControl.Cluster.id, OvenMode.Cluster.id, OvenCavityOperationalState.Cluster.id],
|
|
525
525
|
optionalServerClusters: [TemperatureMeasurement.Cluster.id],
|
|
526
526
|
});
|
|
@@ -528,7 +528,7 @@ export const dishwasher = DeviceTypeDefinition({
|
|
|
528
528
|
name: 'MA-dishwasher',
|
|
529
529
|
code: 0x75,
|
|
530
530
|
deviceClass: DeviceClasses.Simple,
|
|
531
|
-
revision:
|
|
531
|
+
revision: 2,
|
|
532
532
|
requiredServerClusters: [OperationalState.Cluster.id],
|
|
533
533
|
optionalServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, TemperatureControl.Cluster.id, DishwasherMode.Cluster.id, DishwasherAlarm.Cluster.id],
|
|
534
534
|
});
|
|
@@ -536,7 +536,7 @@ export const laundryDryer = DeviceTypeDefinition({
|
|
|
536
536
|
name: 'MA-laundrydryer',
|
|
537
537
|
code: 0x7c,
|
|
538
538
|
deviceClass: DeviceClasses.Simple,
|
|
539
|
-
revision:
|
|
539
|
+
revision: 2,
|
|
540
540
|
requiredServerClusters: [OperationalState.Cluster.id],
|
|
541
541
|
optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryDryerControls.Cluster.id, TemperatureControl.Cluster.id],
|
|
542
542
|
});
|
|
@@ -544,7 +544,7 @@ export const cookSurface = DeviceTypeDefinition({
|
|
|
544
544
|
name: 'MA-cooksurface',
|
|
545
545
|
code: 0x77,
|
|
546
546
|
deviceClass: DeviceClasses.Simple,
|
|
547
|
-
revision:
|
|
547
|
+
revision: 2,
|
|
548
548
|
requiredServerClusters: [],
|
|
549
549
|
optionalServerClusters: [TemperatureControl.Cluster.id, TemperatureMeasurement.Cluster.id, OnOff.Cluster.id],
|
|
550
550
|
});
|
|
@@ -576,7 +576,7 @@ export const microwaveOven = DeviceTypeDefinition({
|
|
|
576
576
|
name: 'MA-microwaveoven',
|
|
577
577
|
code: 0x79,
|
|
578
578
|
deviceClass: DeviceClasses.Simple,
|
|
579
|
-
revision:
|
|
579
|
+
revision: 2,
|
|
580
580
|
requiredServerClusters: [OperationalState.Cluster.id, MicrowaveOvenMode.Cluster.id, MicrowaveOvenControl.Cluster.id],
|
|
581
581
|
optionalServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
|
|
582
582
|
});
|