matterbridge 3.0.2-dev-20250514-0b26f0a → 3.0.2
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/cli.d.ts +29 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +37 -2
- package/dist/cli.js.map +1 -0
- package/dist/cluster/export.d.ts +2 -0
- package/dist/cluster/export.d.ts.map +1 -0
- package/dist/cluster/export.js +2 -0
- package/dist/cluster/export.js.map +1 -0
- package/dist/defaultConfigSchema.d.ts +27 -0
- package/dist/defaultConfigSchema.d.ts.map +1 -0
- package/dist/defaultConfigSchema.js +23 -0
- package/dist/defaultConfigSchema.js.map +1 -0
- package/dist/deviceManager.d.ts +114 -0
- package/dist/deviceManager.d.ts.map +1 -0
- package/dist/deviceManager.js +94 -1
- package/dist/deviceManager.js.map +1 -0
- package/dist/frontend.d.ts +241 -0
- package/dist/frontend.d.ts.map +1 -0
- package/dist/frontend.js +334 -15
- package/dist/frontend.js.map +1 -0
- package/dist/helpers.d.ts +46 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +49 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -1
- package/dist/index.js.map +1 -0
- package/dist/logger/export.d.ts +2 -0
- package/dist/logger/export.d.ts.map +1 -0
- package/dist/logger/export.js +1 -0
- package/dist/logger/export.js.map +1 -0
- package/dist/matter/behaviors.d.ts +2 -0
- package/dist/matter/behaviors.d.ts.map +1 -0
- package/dist/matter/behaviors.js +2 -0
- package/dist/matter/behaviors.js.map +1 -0
- package/dist/matter/clusters.d.ts +2 -0
- package/dist/matter/clusters.d.ts.map +1 -0
- package/dist/matter/clusters.js +2 -0
- package/dist/matter/clusters.js.map +1 -0
- package/dist/matter/devices.d.ts +2 -0
- package/dist/matter/devices.d.ts.map +1 -0
- package/dist/matter/devices.js +2 -0
- package/dist/matter/devices.js.map +1 -0
- package/dist/matter/endpoints.d.ts +2 -0
- package/dist/matter/endpoints.d.ts.map +1 -0
- package/dist/matter/endpoints.js +2 -0
- package/dist/matter/endpoints.js.map +1 -0
- package/dist/matter/export.d.ts +5 -0
- package/dist/matter/export.d.ts.map +1 -0
- package/dist/matter/export.js +2 -0
- package/dist/matter/export.js.map +1 -0
- package/dist/matter/types.d.ts +3 -0
- package/dist/matter/types.d.ts.map +1 -0
- package/dist/matter/types.js +2 -0
- package/dist/matter/types.js.map +1 -0
- package/dist/matterbridge.d.ts +435 -0
- package/dist/matterbridge.d.ts.map +1 -0
- package/dist/matterbridge.js +746 -47
- package/dist/matterbridge.js.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts +40 -0
- package/dist/matterbridgeAccessoryPlatform.d.ts.map +1 -0
- package/dist/matterbridgeAccessoryPlatform.js +34 -0
- package/dist/matterbridgeAccessoryPlatform.js.map +1 -0
- package/dist/matterbridgeBehaviors.d.ts +1188 -0
- package/dist/matterbridgeBehaviors.d.ts.map +1 -0
- package/dist/matterbridgeBehaviors.js +53 -4
- package/dist/matterbridgeBehaviors.js.map +1 -0
- package/dist/matterbridgeDeviceTypes.d.ts +494 -0
- package/dist/matterbridgeDeviceTypes.d.ts.map +1 -0
- package/dist/matterbridgeDeviceTypes.js +431 -12
- package/dist/matterbridgeDeviceTypes.js.map +1 -0
- package/dist/matterbridgeDynamicPlatform.d.ts +40 -0
- package/dist/matterbridgeDynamicPlatform.d.ts.map +1 -0
- package/dist/matterbridgeDynamicPlatform.js +34 -0
- package/dist/matterbridgeDynamicPlatform.js.map +1 -0
- package/dist/matterbridgeEndpoint.d.ts +965 -0
- package/dist/matterbridgeEndpoint.d.ts.map +1 -0
- package/dist/matterbridgeEndpoint.js +807 -11
- package/dist/matterbridgeEndpoint.js.map +1 -0
- package/dist/matterbridgeEndpointHelpers.d.ts +2728 -0
- package/dist/matterbridgeEndpointHelpers.d.ts.map +1 -0
- package/dist/matterbridgeEndpointHelpers.js +147 -9
- package/dist/matterbridgeEndpointHelpers.js.map +1 -0
- package/dist/matterbridgePlatform.d.ts +294 -0
- package/dist/matterbridgePlatform.d.ts.map +1 -0
- package/dist/matterbridgePlatform.js +225 -7
- package/dist/matterbridgePlatform.js.map +1 -0
- package/dist/matterbridgeTypes.d.ts +187 -0
- package/dist/matterbridgeTypes.d.ts.map +1 -0
- package/dist/matterbridgeTypes.js +24 -0
- package/dist/matterbridgeTypes.js.map +1 -0
- package/dist/pluginManager.d.ts +273 -0
- package/dist/pluginManager.d.ts.map +1 -0
- package/dist/pluginManager.js +264 -3
- package/dist/pluginManager.js.map +1 -0
- package/dist/roboticVacuumCleaner.d.ts +43 -0
- package/dist/roboticVacuumCleaner.d.ts.map +1 -0
- package/dist/roboticVacuumCleaner.js +39 -3
- package/dist/roboticVacuumCleaner.js.map +1 -0
- package/dist/shelly.d.ts +153 -0
- package/dist/shelly.d.ts.map +1 -0
- package/dist/shelly.js +155 -7
- package/dist/shelly.js.map +1 -0
- package/dist/storage/export.d.ts +2 -0
- package/dist/storage/export.d.ts.map +1 -0
- package/dist/storage/export.js +1 -0
- package/dist/storage/export.js.map +1 -0
- package/dist/update.d.ts +58 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +53 -0
- package/dist/update.js.map +1 -0
- package/dist/utils/colorUtils.d.ts +61 -0
- package/dist/utils/colorUtils.d.ts.map +1 -0
- package/dist/utils/colorUtils.js +205 -2
- package/dist/utils/colorUtils.js.map +1 -0
- package/dist/utils/commandLine.d.ts +58 -0
- package/dist/utils/commandLine.d.ts.map +1 -0
- package/dist/utils/commandLine.js +53 -0
- package/dist/utils/commandLine.js.map +1 -0
- package/dist/utils/copyDirectory.d.ts +32 -0
- package/dist/utils/copyDirectory.d.ts.map +1 -0
- package/dist/utils/copyDirectory.js +37 -1
- package/dist/utils/copyDirectory.js.map +1 -0
- package/dist/utils/createZip.d.ts +38 -0
- package/dist/utils/createZip.d.ts.map +1 -0
- package/dist/utils/createZip.js +42 -2
- package/dist/utils/createZip.js.map +1 -0
- package/dist/utils/deepCopy.d.ts +31 -0
- package/dist/utils/deepCopy.d.ts.map +1 -0
- package/dist/utils/deepCopy.js +38 -0
- package/dist/utils/deepCopy.js.map +1 -0
- package/dist/utils/deepEqual.d.ts +53 -0
- package/dist/utils/deepEqual.d.ts.map +1 -0
- package/dist/utils/deepEqual.js +71 -1
- package/dist/utils/deepEqual.js.map +1 -0
- package/dist/utils/export.d.ts +11 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/export.js +1 -0
- package/dist/utils/export.js.map +1 -0
- package/dist/utils/hex.d.ts +48 -0
- package/dist/utils/hex.d.ts.map +1 -0
- package/dist/utils/hex.js +57 -0
- package/dist/utils/hex.js.map +1 -0
- package/dist/utils/isvalid.d.ts +102 -0
- package/dist/utils/isvalid.d.ts.map +1 -0
- package/dist/utils/isvalid.js +100 -0
- package/dist/utils/isvalid.js.map +1 -0
- package/dist/utils/network.d.ts +69 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +76 -5
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/wait.d.ts +51 -0
- package/dist/utils/wait.d.ts.map +1 -0
- package/dist/utils/wait.js +53 -5
- package/dist/utils/wait.js.map +1 -0
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -1
|
@@ -1,4 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file contains the class MatterbridgeDevice.
|
|
3
|
+
*
|
|
4
|
+
* @file matterbridgeDeviceTypes.ts
|
|
5
|
+
* @author Luca Liguori
|
|
6
|
+
* @date 2024-11-08
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
*
|
|
9
|
+
* Copyright 2024, 2025, 2026 Luca Liguori.
|
|
10
|
+
*
|
|
11
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
+
* you may not use this file except in compliance with the License.
|
|
13
|
+
* You may obtain a copy of the License at
|
|
14
|
+
*
|
|
15
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
+
*
|
|
17
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
+
* See the License for the specific language governing permissions and
|
|
21
|
+
* limitations under the License. *
|
|
22
|
+
*/
|
|
23
|
+
// @matter
|
|
1
24
|
import { DeviceTypeId } from '@matter/main';
|
|
25
|
+
// @matter clusters
|
|
2
26
|
import { BooleanState } from '@matter/main/clusters/boolean-state';
|
|
3
27
|
import { BooleanStateConfiguration } from '@matter/main/clusters/boolean-state-configuration';
|
|
4
28
|
import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
|
|
@@ -66,15 +90,42 @@ import { ServiceArea } from '@matter/main/clusters/service-area';
|
|
|
66
90
|
import { TemperatureControl } from '@matter/main/clusters/temperature-control';
|
|
67
91
|
export var DeviceClasses;
|
|
68
92
|
(function (DeviceClasses) {
|
|
93
|
+
/** Node device type. */
|
|
69
94
|
DeviceClasses["Node"] = "Node";
|
|
95
|
+
/**
|
|
96
|
+
* Application device type.
|
|
97
|
+
* Application devices types are typically the most datatype endpoints on a node and in the network.
|
|
98
|
+
*/
|
|
70
99
|
DeviceClasses["App"] = "App";
|
|
100
|
+
/**
|
|
101
|
+
* Utility device type.
|
|
102
|
+
* A Utility device type supports configuration and settings.
|
|
103
|
+
*/
|
|
71
104
|
DeviceClasses["Utility"] = "Utility";
|
|
105
|
+
/**
|
|
106
|
+
* Simple device type.
|
|
107
|
+
* A Simple device type supports local control that is persistent, independent, and unsupervised.
|
|
108
|
+
*/
|
|
72
109
|
DeviceClasses["Simple"] = "Simple";
|
|
110
|
+
/**
|
|
111
|
+
* Dynamic device type.
|
|
112
|
+
* A Dynamic device type supports intelligent and supervisory services, such as commissioning,
|
|
113
|
+
* monitoring, trend analysis, scheduling and central management. A dynamic device type is an
|
|
114
|
+
* application device type.
|
|
115
|
+
*/
|
|
73
116
|
DeviceClasses["Dynamic"] = "Dynamic";
|
|
117
|
+
/** There exists a client application cluster on the endpoint. */
|
|
74
118
|
DeviceClasses["Client"] = "Client";
|
|
119
|
+
/** There exists a server application cluster on the endpoint. */
|
|
75
120
|
DeviceClasses["Server"] = "Server";
|
|
121
|
+
/** The device type is composed of 2 or more device types. */
|
|
76
122
|
DeviceClasses["Composed"] = "Composed";
|
|
123
|
+
/** The endpoint and at least one of its sibling endpoints have an overlap in application device type(s). */
|
|
77
124
|
DeviceClasses["Duplicate"] = "Duplicate";
|
|
125
|
+
/**
|
|
126
|
+
* The endpoint represents a Bridged Device, for which information about the state of
|
|
127
|
+
* its power source is available to the Bridge
|
|
128
|
+
*/
|
|
78
129
|
DeviceClasses["BridgedPowerSourceInfo"] = "BridgedPowerSourceInfo";
|
|
79
130
|
})(DeviceClasses || (DeviceClasses = {}));
|
|
80
131
|
export const DeviceTypeDefinition = ({ name, code, deviceClass, revision, requiredServerClusters = [], optionalServerClusters = [], requiredClientClusters = [], optionalClientClusters = [], }) => ({
|
|
@@ -87,6 +138,7 @@ export const DeviceTypeDefinition = ({ name, code, deviceClass, revision, requir
|
|
|
87
138
|
requiredClientClusters,
|
|
88
139
|
optionalClientClusters,
|
|
89
140
|
});
|
|
141
|
+
// Utility device types
|
|
90
142
|
export const powerSource = DeviceTypeDefinition({
|
|
91
143
|
name: 'MA-powerSource',
|
|
92
144
|
code: 0x0011,
|
|
@@ -95,6 +147,22 @@ export const powerSource = DeviceTypeDefinition({
|
|
|
95
147
|
requiredServerClusters: [PowerSource.Cluster.id],
|
|
96
148
|
optionalServerClusters: [],
|
|
97
149
|
});
|
|
150
|
+
/**
|
|
151
|
+
2.5.3. Conditions
|
|
152
|
+
Please see the Base Device Type definition for conformance tags.
|
|
153
|
+
This device type SHALL only be used for Nodes which have a device type of Bridge.
|
|
154
|
+
|
|
155
|
+
2.5.6. Endpoint Composition
|
|
156
|
+
• A Bridged Node endpoint SHALL support one of the following composition patterns:
|
|
157
|
+
◦ Separate Endpoints: All application device types are supported on separate endpoints, and
|
|
158
|
+
not on the Bridged Node endpoint. The Bridged Node endpoint’s Descriptor cluster PartsList
|
|
159
|
+
attribute SHALL indicate a list of all endpoints representing the functionality of the bridged
|
|
160
|
+
device, including the endpoints supporting the application device types, i.e. the full-family
|
|
161
|
+
pattern defined in the System Model specification.
|
|
162
|
+
◦ One Endpoint: Both the Bridged Node and one or more application device types are sup
|
|
163
|
+
ported on the same endpoint (following application device type rules). Endpoint composi
|
|
164
|
+
tion SHALL conform to the application device type(s) definition
|
|
165
|
+
*/
|
|
98
166
|
export const bridgedNode = DeviceTypeDefinition({
|
|
99
167
|
name: 'MA-bridgedNode',
|
|
100
168
|
code: 0x0013,
|
|
@@ -119,77 +187,194 @@ export const deviceEnergyManagement = DeviceTypeDefinition({
|
|
|
119
187
|
requiredServerClusters: [DeviceEnergyManagement.Cluster.id, DeviceEnergyManagementMode.Cluster.id],
|
|
120
188
|
optionalServerClusters: [],
|
|
121
189
|
});
|
|
190
|
+
// Lightning device types
|
|
191
|
+
/**
|
|
192
|
+
* Element Requirements:
|
|
193
|
+
* - Identify Command TriggerEffect
|
|
194
|
+
* - Scenes Management Command CopyScene
|
|
195
|
+
* - On/Off Feature Lighting
|
|
196
|
+
* - Level Control Feature OnOff
|
|
197
|
+
* - Level Control Feature Lighting
|
|
198
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
199
|
+
* - Level Control Attribute MinLevel 1
|
|
200
|
+
* - Level Control Attribute MaxLevel 254
|
|
201
|
+
*/
|
|
122
202
|
export const onOffLight = DeviceTypeDefinition({
|
|
123
203
|
name: 'MA-onofflight',
|
|
124
204
|
code: 0x0100,
|
|
125
205
|
deviceClass: DeviceClasses.Simple,
|
|
126
206
|
revision: 3,
|
|
127
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
|
|
207
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id],
|
|
128
208
|
optionalServerClusters: [LevelControl.Cluster.id],
|
|
129
209
|
});
|
|
210
|
+
/**
|
|
211
|
+
* Element Requirements:
|
|
212
|
+
* - Identify Command TriggerEffect
|
|
213
|
+
* - Scenes Management Command CopyScene
|
|
214
|
+
* - On/Off Feature Lighting
|
|
215
|
+
* - Level Control Feature OnOff
|
|
216
|
+
* - Level Control Feature Lighting
|
|
217
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
218
|
+
* - Level Control Attribute MinLevel 1
|
|
219
|
+
* - Level Control Attribute MaxLevel 254
|
|
220
|
+
*/
|
|
130
221
|
export const dimmableLight = DeviceTypeDefinition({
|
|
131
222
|
name: 'MA-dimmablelight',
|
|
132
223
|
code: 0x0101,
|
|
133
224
|
deviceClass: DeviceClasses.Simple,
|
|
134
225
|
revision: 3,
|
|
135
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
226
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
136
227
|
optionalServerClusters: [],
|
|
137
228
|
});
|
|
229
|
+
/**
|
|
230
|
+
* Element Requirements:
|
|
231
|
+
* - Identify Command TriggerEffect
|
|
232
|
+
* - Scenes Management Command CopyScene
|
|
233
|
+
* - On/Off Feature Lighting
|
|
234
|
+
* - Level Control Feature OnOff
|
|
235
|
+
* - Level Control Feature Lighting
|
|
236
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
237
|
+
* - Level Control Attribute MinLevel 1
|
|
238
|
+
* - Level Control Attribute MaxLevel 254
|
|
239
|
+
* - Color Control Feature ColorTemperature
|
|
240
|
+
* - Color Control Attribute RemainingTime
|
|
241
|
+
*/
|
|
138
242
|
export const colorTemperatureLight = DeviceTypeDefinition({
|
|
139
243
|
name: 'MA-colortemperaturelight',
|
|
140
244
|
code: 0x010c,
|
|
141
245
|
deviceClass: DeviceClasses.Simple,
|
|
142
246
|
revision: 4,
|
|
143
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
247
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
144
248
|
optionalServerClusters: [],
|
|
145
249
|
});
|
|
250
|
+
/**
|
|
251
|
+
* Element Requirements:
|
|
252
|
+
* - Identify Command TriggerEffect
|
|
253
|
+
* - Scenes Management Command CopyScene
|
|
254
|
+
* - On/Off Feature Lighting
|
|
255
|
+
* - Level Control Feature OnOff
|
|
256
|
+
* - Level Control Feature Lighting
|
|
257
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
258
|
+
* - Level Control Attribute MinLevel 1
|
|
259
|
+
* - Level Control Attribute MaxLevel 254
|
|
260
|
+
* - Color Control Feature XY
|
|
261
|
+
* - Color Control Feature ColorTemperature
|
|
262
|
+
* - Color Control Attribute RemainingTime
|
|
263
|
+
*/
|
|
146
264
|
export const extendedColorLight = DeviceTypeDefinition({
|
|
147
265
|
name: 'MA-extendedcolorlight',
|
|
148
266
|
code: 0x010d,
|
|
149
267
|
deviceClass: DeviceClasses.Simple,
|
|
150
268
|
revision: 4,
|
|
151
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
269
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
152
270
|
optionalServerClusters: [],
|
|
153
271
|
});
|
|
272
|
+
// Smart plugs/Outlets and other Actuators device types
|
|
273
|
+
/**
|
|
274
|
+
* Element Requirements:
|
|
275
|
+
* - Identify Command TriggerEffect
|
|
276
|
+
* - Scenes Management Command CopyScene
|
|
277
|
+
* - On/Off Feature Lighting
|
|
278
|
+
* - Level Control Feature OnOff
|
|
279
|
+
* - Level Control Feature Lighting
|
|
280
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
281
|
+
* - Level Control Attribute MinLevel 1
|
|
282
|
+
* - Level Control Attribute MaxLevel 254
|
|
283
|
+
*/
|
|
154
284
|
export const onOffOutlet = DeviceTypeDefinition({
|
|
155
285
|
name: 'MA-onoffpluginunit',
|
|
156
286
|
code: 0x010a,
|
|
157
287
|
deviceClass: DeviceClasses.Simple,
|
|
158
288
|
revision: 3,
|
|
159
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
|
|
289
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id],
|
|
160
290
|
optionalServerClusters: [LevelControl.Cluster.id],
|
|
161
291
|
});
|
|
292
|
+
/**
|
|
293
|
+
* Element Requirements:
|
|
294
|
+
* - Identify Command TriggerEffect
|
|
295
|
+
* - Scenes Management Command CopyScene
|
|
296
|
+
* - On/Off Feature Lighting
|
|
297
|
+
* - Level Control Feature OnOff
|
|
298
|
+
* - Level Control Feature Lighting
|
|
299
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
300
|
+
* - Level Control Attribute MinLevel 1
|
|
301
|
+
* - Level Control Attribute MaxLevel 254
|
|
302
|
+
*/
|
|
162
303
|
export const dimmableOutlet = DeviceTypeDefinition({
|
|
163
304
|
name: 'MA-dimmablepluginunit',
|
|
164
305
|
code: 0x010b,
|
|
165
306
|
deviceClass: DeviceClasses.Simple,
|
|
166
307
|
revision: 4,
|
|
167
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
308
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
168
309
|
optionalServerClusters: [],
|
|
169
310
|
});
|
|
311
|
+
/**
|
|
312
|
+
* A Mounted On/Off Control is a fixed device that provides power to another device that is plugged
|
|
313
|
+
* into it, and is capable of switching that provided power on or off.
|
|
314
|
+
* It is a simple device type that does not require any client clusters.
|
|
315
|
+
* Element Requirements:
|
|
316
|
+
* - Identify Command TriggerEffect
|
|
317
|
+
* - Scenes Management Command CopyScene
|
|
318
|
+
* - On/Off Feature Lighting
|
|
319
|
+
* - Level Control Feature OnOff
|
|
320
|
+
* - Level Control Feature Lighting
|
|
321
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
322
|
+
* - Level Control Attribute MinLevel 1
|
|
323
|
+
* - Level Control Attribute MaxLevel 254
|
|
324
|
+
*/
|
|
170
325
|
export const onOffMountedSwitch = DeviceTypeDefinition({
|
|
171
326
|
name: 'MA-onoffmountedswitch',
|
|
172
327
|
code: 0x010f,
|
|
173
328
|
deviceClass: DeviceClasses.Simple,
|
|
174
329
|
revision: 1,
|
|
175
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
|
|
330
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id],
|
|
176
331
|
optionalServerClusters: [LevelControl.Cluster.id],
|
|
177
332
|
});
|
|
333
|
+
/**
|
|
334
|
+
* A Mounted Dimmable Load Control is a fixed device that provides power to another device that is
|
|
335
|
+
* plugged into it, and is capable of being switched on or off and have its level adjusted. The Mounted
|
|
336
|
+
* Dimmable Load Control is typically used to control a conventional non-communicating light
|
|
337
|
+
* through its mains connection using phase cutting.
|
|
338
|
+
* It is a simple device type that does not require any client clusters.
|
|
339
|
+
* Element Requirements:
|
|
340
|
+
* - Identify Command TriggerEffect
|
|
341
|
+
* - Scenes Management Command CopyScene
|
|
342
|
+
* - On/Off Feature Lighting
|
|
343
|
+
* - Level Control Feature OnOff
|
|
344
|
+
* - Level Control Feature Lighting
|
|
345
|
+
* - Level Control Attribute CurrentLevel 1 to 254
|
|
346
|
+
* - Level Control Attribute MinLevel 1
|
|
347
|
+
* - Level Control Attribute MaxLevel 254
|
|
348
|
+
*/
|
|
178
349
|
export const dimmableMountedSwitch = DeviceTypeDefinition({
|
|
179
350
|
name: 'MA-dimmablemountedswitch',
|
|
180
351
|
code: 0x0110,
|
|
181
352
|
deviceClass: DeviceClasses.Simple,
|
|
182
353
|
revision: 1,
|
|
183
|
-
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
354
|
+
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
184
355
|
optionalServerClusters: [],
|
|
185
356
|
});
|
|
357
|
+
/**
|
|
358
|
+
* Remark:
|
|
359
|
+
* On/Off Cluster:
|
|
360
|
+
* - Off If the pump is powered on, store the current level then immediately power it off.
|
|
361
|
+
* - On If the pump is powered off, power it on and move immediately to the level stored by a previous Off command. If no such level has been stored,
|
|
362
|
+
* move immediately to the maximum level allowed for the pump.
|
|
363
|
+
* - Toggle If the pump is powered on, proceed as for the Off command. If the device is powered off, proceed as for the On command.
|
|
364
|
+
*
|
|
365
|
+
* LevelControl cluster:
|
|
366
|
+
* Level Setpoint Meaning
|
|
367
|
+
* 0 N/A Pump is stopped,
|
|
368
|
+
* 1–200 Level / 2 (0.5–100.0%) Pump setpoint in percent
|
|
369
|
+
* 201–255 100.0% Pump setpoint is 100.0%
|
|
370
|
+
*/
|
|
186
371
|
export const pumpDevice = DeviceTypeDefinition({
|
|
187
372
|
name: 'MA-pump',
|
|
188
373
|
code: 0x303,
|
|
189
374
|
deviceClass: DeviceClasses.Simple,
|
|
190
375
|
revision: 3,
|
|
191
376
|
requiredServerClusters: [OnOff.Cluster.id, PumpConfigurationAndControl.Cluster.id, Identify.Cluster.id],
|
|
192
|
-
optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
|
|
377
|
+
optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id, */ TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
|
|
193
378
|
});
|
|
194
379
|
export const waterValve = DeviceTypeDefinition({
|
|
195
380
|
name: 'MA-waterValve',
|
|
@@ -199,29 +384,33 @@ export const waterValve = DeviceTypeDefinition({
|
|
|
199
384
|
requiredServerClusters: [Identify.Cluster.id, ValveConfigurationAndControl.Cluster.id],
|
|
200
385
|
optionalServerClusters: [FlowMeasurement.Cluster.id],
|
|
201
386
|
});
|
|
387
|
+
// Switches and Controls device types
|
|
388
|
+
// Custom device types without client clusters (not working in Alexa)
|
|
202
389
|
export const onOffSwitch = DeviceTypeDefinition({
|
|
203
390
|
name: 'MA-onoffswitch',
|
|
204
391
|
code: 0x0103,
|
|
205
392
|
deviceClass: DeviceClasses.Simple,
|
|
206
393
|
revision: 3,
|
|
207
394
|
requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id],
|
|
208
|
-
optionalServerClusters: [Groups.Cluster.id],
|
|
395
|
+
optionalServerClusters: [Groups.Cluster.id /* , ScenesManagement.Cluster.id*/],
|
|
209
396
|
});
|
|
397
|
+
// Custom device types without client clusters (not working in Alexa)
|
|
210
398
|
export const dimmableSwitch = DeviceTypeDefinition({
|
|
211
399
|
name: 'MA-dimmableswitch',
|
|
212
400
|
code: 0x0104,
|
|
213
401
|
deviceClass: DeviceClasses.Simple,
|
|
214
402
|
revision: 3,
|
|
215
403
|
requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
|
|
216
|
-
optionalServerClusters: [Groups.Cluster.id],
|
|
404
|
+
optionalServerClusters: [Groups.Cluster.id /* , ScenesManagement.Cluster.id*/],
|
|
217
405
|
});
|
|
406
|
+
// Custom device types without client clusters (not working in Alexa)
|
|
218
407
|
export const colorTemperatureSwitch = DeviceTypeDefinition({
|
|
219
408
|
name: 'MA-colortemperatureswitch',
|
|
220
409
|
code: 0x0105,
|
|
221
410
|
deviceClass: DeviceClasses.Simple,
|
|
222
411
|
revision: 3,
|
|
223
412
|
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
|
|
224
|
-
optionalServerClusters: [Groups.Cluster.id],
|
|
413
|
+
optionalServerClusters: [Groups.Cluster.id /* , ScenesManagement.Cluster.id*/],
|
|
225
414
|
});
|
|
226
415
|
export const genericSwitch = DeviceTypeDefinition({
|
|
227
416
|
name: 'MA-genericswitch',
|
|
@@ -231,6 +420,11 @@ export const genericSwitch = DeviceTypeDefinition({
|
|
|
231
420
|
requiredServerClusters: [Identify.Cluster.id, Switch.Cluster.id],
|
|
232
421
|
optionalServerClusters: [],
|
|
233
422
|
});
|
|
423
|
+
// Sensor device types
|
|
424
|
+
/**
|
|
425
|
+
* Closed or contact: state true
|
|
426
|
+
* Open or no contact: state false
|
|
427
|
+
*/
|
|
234
428
|
export const contactSensor = DeviceTypeDefinition({
|
|
235
429
|
name: 'MA-contactsensor',
|
|
236
430
|
code: 0x0015,
|
|
@@ -282,6 +476,7 @@ export const humiditySensor = DeviceTypeDefinition({
|
|
|
282
476
|
revision: 2,
|
|
283
477
|
requiredServerClusters: [Identify.Cluster.id, RelativeHumidityMeasurement.Cluster.id],
|
|
284
478
|
});
|
|
479
|
+
// Remark: A Smoke CO Alarm device type SHALL support an instance of a Power Source device type on some endpoint.
|
|
285
480
|
export const smokeCoAlarm = DeviceTypeDefinition({
|
|
286
481
|
name: 'MA-smokeCoAlarm',
|
|
287
482
|
code: 0x0076,
|
|
@@ -335,6 +530,15 @@ export const rainSensor = DeviceTypeDefinition({
|
|
|
335
530
|
requiredServerClusters: [Identify.Cluster.id, BooleanState.Cluster.id],
|
|
336
531
|
optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
|
|
337
532
|
});
|
|
533
|
+
// Closures device types
|
|
534
|
+
/**
|
|
535
|
+
* A Door Lock is a device used to secure a door. It is possible to actuate a door lock either by means of a manual or a remote method.
|
|
536
|
+
* Element Requirements:
|
|
537
|
+
*
|
|
538
|
+
* - AccessControl Attribute Extension
|
|
539
|
+
* - DoorLock Feature User
|
|
540
|
+
* - DoorLock Attribute AlarmMask
|
|
541
|
+
*/
|
|
338
542
|
export const doorLockDevice = DeviceTypeDefinition({
|
|
339
543
|
name: 'MA-doorLock',
|
|
340
544
|
code: 0xa,
|
|
@@ -351,6 +555,15 @@ export const coverDevice = DeviceTypeDefinition({
|
|
|
351
555
|
requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
|
|
352
556
|
optionalServerClusters: [Groups.Cluster.id],
|
|
353
557
|
});
|
|
558
|
+
// HVAC device types
|
|
559
|
+
/**
|
|
560
|
+
* A Thermostat device is capable of having either built-in or separate sensors for temperature,
|
|
561
|
+
* humidity or occupancy. It allows the desired temperature to be set either remotely or locally. The
|
|
562
|
+
* thermostat is capable of sending heating and/or cooling requirement notifications to a heating/cooling
|
|
563
|
+
* unit (for example, an indoor air handler) or is capable of including a mechanism to control a
|
|
564
|
+
* heating or cooling unit directly.
|
|
565
|
+
*
|
|
566
|
+
*/
|
|
354
567
|
export const thermostatDevice = DeviceTypeDefinition({
|
|
355
568
|
name: 'MA-thermostat',
|
|
356
569
|
code: 0x301,
|
|
@@ -359,6 +572,25 @@ export const thermostatDevice = DeviceTypeDefinition({
|
|
|
359
572
|
requiredServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
|
|
360
573
|
optionalServerClusters: [Groups.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, EnergyPreference.Cluster.id],
|
|
361
574
|
});
|
|
575
|
+
/**
|
|
576
|
+
* A Fan device is typically standalone or mounted on a ceiling or wall and is used to circulate air in a room.
|
|
577
|
+
* Remark: it may have a thermostat device type.
|
|
578
|
+
* Additional device types MAY also be included in device compositions.
|
|
579
|
+
* Element Requirements:
|
|
580
|
+
* The FanControl cluster must have the FanModeSequence attribute.
|
|
581
|
+
*
|
|
582
|
+
* The On/Off cluster is independent from the Fan Control Cluster’s FanMode attribute, which also
|
|
583
|
+
* includes an Off setting.
|
|
584
|
+
* If the FanMode attribute of the Fan Control cluster is set to a value other than Off when the OnOff
|
|
585
|
+
* attribute of the On/Off cluster transitions from TRUE to FALSE, it may be desirable to restore the
|
|
586
|
+
* FanMode, SpeedSetting and PercentSetting attribute values of the Fan Control cluster when the OnOff
|
|
587
|
+
* attribute of the On/Off cluster later transitions from FALSE to TRUE. If the FanMode is set to Off when
|
|
588
|
+
* the device is turned off, this information is lost, as the SpeedSetting and PercentSetting will be set to
|
|
589
|
+
* zero. Using the On/Off cluster alongside the Fan Control cluster allows the FanMode, SpeedSetting and
|
|
590
|
+
* PercentSetting to remain unchanged when the device is turned off. In this case, the On/Off cluster
|
|
591
|
+
* would be set to Off, and the SpeedCurrent and PercentCurrent set to zero, without changing FanMode,
|
|
592
|
+
* SpeedSetting and PercentSetting.
|
|
593
|
+
*/
|
|
362
594
|
export const fanDevice = DeviceTypeDefinition({
|
|
363
595
|
name: 'MA-fan',
|
|
364
596
|
code: 0x2b,
|
|
@@ -367,6 +599,35 @@ export const fanDevice = DeviceTypeDefinition({
|
|
|
367
599
|
requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, FanControl.Cluster.id],
|
|
368
600
|
optionalServerClusters: [OnOff.Cluster.id],
|
|
369
601
|
});
|
|
602
|
+
/**
|
|
603
|
+
* An Air Purifier is a standalone device that is designed to clean the air in a room.
|
|
604
|
+
* It is a device that has a fan to control the air speed while it is operating. Optionally, it can report on
|
|
605
|
+
* the condition of its filters.
|
|
606
|
+
*
|
|
607
|
+
* Remark:
|
|
608
|
+
* An Air Purifier MAY expose elements of its functionality through one or more additional device
|
|
609
|
+
* types on different endpoints. All devices used in compositions SHALL adhere to the disambiguation
|
|
610
|
+
* requirements of the System Model. Other device types, not explicitly listed in the table, MAY also be
|
|
611
|
+
* included in device compositions but are not considered part of the core functionality of the device.
|
|
612
|
+
* 0x0301 Thermostat O
|
|
613
|
+
* 0x0302 Temperature Sensor O
|
|
614
|
+
* 0x0307 Humidity Sensor O
|
|
615
|
+
* 0x002C Air Quality Sensor O
|
|
616
|
+
*
|
|
617
|
+
* Cluster Restrictions:
|
|
618
|
+
* The On/Off cluster is independent from the Fan Control Cluster’s FanMode attribute, which also
|
|
619
|
+
* includes an Off setting.
|
|
620
|
+
* If the FanMode attribute of the Fan Control cluster is set to a value other than Off when the OnOff
|
|
621
|
+
* attribute of the On/Off cluster transitions from TRUE to FALSE, it may be desirable to restore the
|
|
622
|
+
* FanMode, SpeedSetting and PercentSetting attribute values of the Fan Control cluster when the OnOff
|
|
623
|
+
* attribute of the On/Off cluster later transitions from FALSE to TRUE. If the FanMode is set to Off when
|
|
624
|
+
* the device is turned off, this information is lost, as the SpeedSetting and PercentSetting will be set to
|
|
625
|
+
* zero. Using the On/Off cluster alongside the Fan Control cluster allows the FanMode, SpeedSetting and
|
|
626
|
+
* PercentSetting to remain unchanged when the device is turned off. In this case, the On/Off cluster
|
|
627
|
+
* would be set to Off, and the SpeedCurrent and PercentCurrent set to zero, without changing FanMode,
|
|
628
|
+
* SpeedSetting and PercentSetting.
|
|
629
|
+
*
|
|
630
|
+
*/
|
|
370
631
|
export const airPurifier = DeviceTypeDefinition({
|
|
371
632
|
name: 'MA-airPurifier',
|
|
372
633
|
code: 0x2d,
|
|
@@ -375,6 +636,7 @@ export const airPurifier = DeviceTypeDefinition({
|
|
|
375
636
|
requiredServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
|
|
376
637
|
optionalServerClusters: [Groups.Cluster.id, OnOff.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
|
|
377
638
|
});
|
|
639
|
+
// Generic device types
|
|
378
640
|
export const modeSelect = DeviceTypeDefinition({
|
|
379
641
|
name: 'MA-modeselect',
|
|
380
642
|
code: 0x27,
|
|
@@ -382,6 +644,37 @@ export const modeSelect = DeviceTypeDefinition({
|
|
|
382
644
|
revision: 1,
|
|
383
645
|
requiredServerClusters: [ModeSelect.Cluster.id],
|
|
384
646
|
});
|
|
647
|
+
/**
|
|
648
|
+
* This device type aggregates endpoints as a collection. Clusters on the endpoint indicating this
|
|
649
|
+
* device type provide functionality for the collection of descendant endpoints present in the PartsList
|
|
650
|
+
* of the endpoint’s descriptor, for example the Actions cluster.
|
|
651
|
+
*
|
|
652
|
+
* Endpoint Composition:
|
|
653
|
+
* An Aggregator endpoint’s Descriptor cluster PartsList attribute SHALL list the collection of all endpoints
|
|
654
|
+
* aggregated by the Aggregator device type, i.e. the full-family pattern defined in the System Model specification.
|
|
655
|
+
*
|
|
656
|
+
* Disambiguation:
|
|
657
|
+
* If the Duplicate condition applies to child endpoints of an Aggregator endpoint that represent multiple
|
|
658
|
+
* independent bridged devices, the endpoints SHOULD make available metadata to allow a
|
|
659
|
+
* client to disambiguate distinct bridged devices with an overlap in application device types.
|
|
660
|
+
*
|
|
661
|
+
* Typically this is done using the NodeLabel attribute of the Bridged Device Basic Information cluster
|
|
662
|
+
* - thus reusing the naming information which the bridge already has to allow disambiguation to the
|
|
663
|
+
* user when using a direct user interface to the bridge.
|
|
664
|
+
*
|
|
665
|
+
* Actions cluster (9.14 Matter specification):
|
|
666
|
+
* If a Bridge has (such) information on topology or logical grouping, it SHOULD expose such information
|
|
667
|
+
* in the EndpointLists attribute of an Actions cluster (the ActionLists of which MAY be empty if
|
|
668
|
+
* no actions are exposed). 9.12 Matter specification
|
|
669
|
+
*
|
|
670
|
+
* 9.12.5. New features for Bridged Devices
|
|
671
|
+
* Bridged Devices can have their software updated independently of the Bridge, through Bridge Manufacturer-
|
|
672
|
+
* specific means. These updates MAY result in one or more changes to their capabilities,
|
|
673
|
+
* such as supported clusters and/or attributes, for an endpoint. Like every Matter Node, every endpoint
|
|
674
|
+
* on the Bridge’s Node contains a Descriptor cluster that contains attributes for the device types
|
|
675
|
+
* (DeviceTypeList), endpoints (PartsList) and supported clusters (ServerList and ClientList). Nodes
|
|
676
|
+
* that wish to be notified of such changes SHOULD monitor changes of these attributes.
|
|
677
|
+
*/
|
|
385
678
|
export const aggregator = DeviceTypeDefinition({
|
|
386
679
|
name: 'MA-aggregator',
|
|
387
680
|
code: 0x000e,
|
|
@@ -391,6 +684,29 @@ export const aggregator = DeviceTypeDefinition({
|
|
|
391
684
|
optionalServerClusters: [Actions.Cluster.id, Identify.Cluster.id, CommissionerControl.Cluster.id],
|
|
392
685
|
});
|
|
393
686
|
export const bridge = aggregator;
|
|
687
|
+
// Robotic device types
|
|
688
|
+
/**
|
|
689
|
+
* A Robotic Vacuum Cleaner is a device that is capable of cleaning floors and other surfaces
|
|
690
|
+
* in a home or office environment. It is typically a mobile device that can navigate around
|
|
691
|
+
* obstacles and can be controlled remotely.
|
|
692
|
+
*
|
|
693
|
+
* Cluster Usage:
|
|
694
|
+
* The RVC Operational State cluster’s OperationalState attribute SHALL be updated according to the
|
|
695
|
+
* state of the device, and therefore it SHOULD be used for monitoring purposes.
|
|
696
|
+
*
|
|
697
|
+
* To attempt starting a cleaning operation, the RVC Run Mode cluster can be sent a ChangeToMode
|
|
698
|
+
* command with the NewMode field set to a mode that has the Cleaning mode tag associated with it.
|
|
699
|
+
*
|
|
700
|
+
* To attempt stopping a cleaning operation, the RVC Run Mode cluster can be sent a ChangeToMode
|
|
701
|
+
* command with the NewMode field set to a mode that has the Idle mode tag associated with it.
|
|
702
|
+
*
|
|
703
|
+
* To attempt pausing a cleaning operation, the RVC Operational State cluster can be sent a Pause command.
|
|
704
|
+
*
|
|
705
|
+
* To attempt resuming a cleaning operation, the RVC Operational State cluster can be sent a Resume
|
|
706
|
+
* command.
|
|
707
|
+
*
|
|
708
|
+
*
|
|
709
|
+
*/
|
|
394
710
|
export const roboticVacuumCleaner = DeviceTypeDefinition({
|
|
395
711
|
name: 'MA-roboticvacuumcleaner',
|
|
396
712
|
code: 0x74,
|
|
@@ -399,6 +715,11 @@ export const roboticVacuumCleaner = DeviceTypeDefinition({
|
|
|
399
715
|
requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
|
|
400
716
|
optionalServerClusters: [RvcCleanMode.Cluster.id, ServiceArea.Cluster.id],
|
|
401
717
|
});
|
|
718
|
+
// Appliances device types
|
|
719
|
+
/**
|
|
720
|
+
* Cluster Restrictions:
|
|
721
|
+
* On/Off Cluster: the DF (Dead Front) feature is required
|
|
722
|
+
*/
|
|
402
723
|
export const laundryWasher = DeviceTypeDefinition({
|
|
403
724
|
name: 'MA-laundrywasher',
|
|
404
725
|
code: 0x73,
|
|
@@ -407,6 +728,13 @@ export const laundryWasher = DeviceTypeDefinition({
|
|
|
407
728
|
requiredServerClusters: [OperationalState.Cluster.id],
|
|
408
729
|
optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryWasherControls.Cluster.id, TemperatureControl.Cluster.id],
|
|
409
730
|
});
|
|
731
|
+
/**
|
|
732
|
+
* A refrigerator represents a device that contains one or more cabinets that are capable of chilling or freezing food.
|
|
733
|
+
* A Refrigerator SHALL be composed of at least one endpoint with the Temperature Controlled Cabinet device type.
|
|
734
|
+
*
|
|
735
|
+
* Device Type Requirements:
|
|
736
|
+
* 0x0071 Temperature Controlled Cabinet
|
|
737
|
+
*/
|
|
410
738
|
export const refrigerator = DeviceTypeDefinition({
|
|
411
739
|
name: 'MA-refrigerator',
|
|
412
740
|
code: 0x70,
|
|
@@ -415,6 +743,23 @@ export const refrigerator = DeviceTypeDefinition({
|
|
|
415
743
|
requiredServerClusters: [Identify.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id, RefrigeratorAlarm.Cluster.id],
|
|
416
744
|
optionalServerClusters: [],
|
|
417
745
|
});
|
|
746
|
+
/**
|
|
747
|
+
* A Room Air Conditioner is a device with the primary function of controlling the air temperature in a single room.
|
|
748
|
+
*
|
|
749
|
+
* A Room Air Conditioner MAY have zero or more of each device type listed in this table subject to
|
|
750
|
+
* the conformance column of the table. All devices used in compositions SHALL adhere to the disambiguation
|
|
751
|
+
* requirements of the System Model. Additional device types not listed in this table MAY also be included in device compositions.
|
|
752
|
+
* 0x0302 Temperature Sensor O
|
|
753
|
+
* 0x0307 Humidity Sensor O
|
|
754
|
+
*
|
|
755
|
+
* Remark:
|
|
756
|
+
* The DF (Dead Front) feature is required for the On/Off cluster in this device type:
|
|
757
|
+
* - Thermostat LocalTemperature null
|
|
758
|
+
* - Temperature Measurement MeasuredValue null
|
|
759
|
+
* - Relative Humidity Measurement MeasuredValue null
|
|
760
|
+
* - Fan Control SpeedSetting null
|
|
761
|
+
* - Fan Control PercentSetting null
|
|
762
|
+
*/
|
|
418
763
|
export const airConditioner = DeviceTypeDefinition({
|
|
419
764
|
name: 'MA-airConditioner',
|
|
420
765
|
code: 0x72,
|
|
@@ -423,12 +768,22 @@ export const airConditioner = DeviceTypeDefinition({
|
|
|
423
768
|
requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, Thermostat.Cluster.id],
|
|
424
769
|
optionalServerClusters: [
|
|
425
770
|
Groups.Cluster.id,
|
|
771
|
+
/* ScenesManagement.Cluster.id,*/
|
|
426
772
|
FanControl.Cluster.id,
|
|
427
773
|
ThermostatUserInterfaceConfiguration.Cluster.id,
|
|
428
774
|
TemperatureMeasurement.Cluster.id,
|
|
429
775
|
RelativeHumidityMeasurement.Cluster.id,
|
|
430
776
|
],
|
|
431
777
|
});
|
|
778
|
+
/**
|
|
779
|
+
* A Temperature Controlled Cabinet only exists composed as part of another device type. It represents
|
|
780
|
+
* a single cabinet that is capable of having its temperature controlled. Such a cabinet may be
|
|
781
|
+
* chilling or freezing food, for example as part of a refrigerator, freezer, wine chiller, or other similar
|
|
782
|
+
* device. Equally, such a cabinet may be warming or heating food, for example as part of an oven,
|
|
783
|
+
* range, or similar device.
|
|
784
|
+
* Conditions:
|
|
785
|
+
* Cooler The device has cooling functionality.
|
|
786
|
+
*/
|
|
432
787
|
export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
|
|
433
788
|
name: 'MA-temperaturecontrolledcabinetcooler',
|
|
434
789
|
code: 0x71,
|
|
@@ -437,6 +792,15 @@ export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
|
|
|
437
792
|
requiredServerClusters: [TemperatureControl.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id],
|
|
438
793
|
optionalServerClusters: [TemperatureMeasurement.Cluster.id],
|
|
439
794
|
});
|
|
795
|
+
/**
|
|
796
|
+
* A Temperature Controlled Cabinet only exists composed as part of another device type. It represents
|
|
797
|
+
* a single cabinet that is capable of having its temperature controlled. Such a cabinet may be
|
|
798
|
+
* chilling or freezing food, for example as part of a refrigerator, freezer, wine chiller, or other similar
|
|
799
|
+
* device. Equally, such a cabinet may be warming or heating food, for example as part of an oven,
|
|
800
|
+
* range, or similar device.
|
|
801
|
+
* Conditions:
|
|
802
|
+
* Heater The device has heating functionality.
|
|
803
|
+
*/
|
|
440
804
|
export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
|
|
441
805
|
name: 'MA-temperaturecontrolledcabinetheater',
|
|
442
806
|
code: 0x71,
|
|
@@ -445,6 +809,10 @@ export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
|
|
|
445
809
|
requiredServerClusters: [TemperatureControl.Cluster.id, OvenMode.Cluster.id, OvenCavityOperationalState.Cluster.id],
|
|
446
810
|
optionalServerClusters: [TemperatureMeasurement.Cluster.id],
|
|
447
811
|
});
|
|
812
|
+
/**
|
|
813
|
+
* Cluster Restrictions:
|
|
814
|
+
* On/Off Cluster: the DF (Dead Front) feature is required
|
|
815
|
+
*/
|
|
448
816
|
export const dishwasher = DeviceTypeDefinition({
|
|
449
817
|
name: 'MA-dishwasher',
|
|
450
818
|
code: 0x75,
|
|
@@ -453,6 +821,10 @@ export const dishwasher = DeviceTypeDefinition({
|
|
|
453
821
|
requiredServerClusters: [OperationalState.Cluster.id],
|
|
454
822
|
optionalServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, TemperatureControl.Cluster.id, DishwasherMode.Cluster.id, DishwasherAlarm.Cluster.id],
|
|
455
823
|
});
|
|
824
|
+
/**
|
|
825
|
+
* Cluster Restrictions:
|
|
826
|
+
* On/Off Cluster: the DF (Dead Front) feature is required
|
|
827
|
+
*/
|
|
456
828
|
export const laundryDryer = DeviceTypeDefinition({
|
|
457
829
|
name: 'MA-laundrydryer',
|
|
458
830
|
code: 0x7c,
|
|
@@ -461,6 +833,13 @@ export const laundryDryer = DeviceTypeDefinition({
|
|
|
461
833
|
requiredServerClusters: [OperationalState.Cluster.id],
|
|
462
834
|
optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryDryerControls.Cluster.id, TemperatureControl.Cluster.id],
|
|
463
835
|
});
|
|
836
|
+
/**
|
|
837
|
+
* A Cook Surface device type represents a heating object on a cooktop or other similar device. It
|
|
838
|
+
* SHALL only be used when composed as part of another device type (cooktop).
|
|
839
|
+
*
|
|
840
|
+
* Cluster Restrictions:
|
|
841
|
+
* The OffOnly feature is required for the On/Off cluster in this device type due to safety requirements.
|
|
842
|
+
*/
|
|
464
843
|
export const cookSurface = DeviceTypeDefinition({
|
|
465
844
|
name: 'MA-cooksurface',
|
|
466
845
|
code: 0x77,
|
|
@@ -469,6 +848,18 @@ export const cookSurface = DeviceTypeDefinition({
|
|
|
469
848
|
requiredServerClusters: [TemperatureControl.Cluster.id, TemperatureMeasurement.Cluster.id],
|
|
470
849
|
optionalServerClusters: [OnOff.Cluster.id],
|
|
471
850
|
});
|
|
851
|
+
/**
|
|
852
|
+
* A cooktop is a cooking surface that heats food either by transferring currents from an electromagnetic
|
|
853
|
+
* field located below the glass surface directly to the magnetic induction cookware placed
|
|
854
|
+
* above or through traditional gas or electric burners.
|
|
855
|
+
*
|
|
856
|
+
* Device Type Requirements:
|
|
857
|
+
* A Cooktop SHALL be composed of zero or more endpoints with the Cook Surface device type as defined by the conformance below.
|
|
858
|
+
* 0x0077 Cook Surface min 1 O
|
|
859
|
+
*
|
|
860
|
+
* Cluster Restrictions:
|
|
861
|
+
* The OffOnly feature is required for the On/Off cluster in this device type due to safety requirements.
|
|
862
|
+
*/
|
|
472
863
|
export const cooktop = DeviceTypeDefinition({
|
|
473
864
|
name: 'MA-cooktop',
|
|
474
865
|
code: 0x78,
|
|
@@ -477,6 +868,15 @@ export const cooktop = DeviceTypeDefinition({
|
|
|
477
868
|
requiredServerClusters: [OnOff.Cluster.id],
|
|
478
869
|
optionalServerClusters: [Identify.Cluster.id],
|
|
479
870
|
});
|
|
871
|
+
/**
|
|
872
|
+
* An oven represents a device that contains one or more cabinets, and optionally a single cooktop, that are all capable of heating food.
|
|
873
|
+
* An oven is always defined via endpoint composition.
|
|
874
|
+
* Conditions:
|
|
875
|
+
* An Oven SHALL have the Heater condition applied to at least one endpoint containing the Temperature Control Cluster.
|
|
876
|
+
* Device Type Requirements:
|
|
877
|
+
* 0x0071 Temperature Controlled Cabinet min 1
|
|
878
|
+
* 0x0078 Cooktop
|
|
879
|
+
*/
|
|
480
880
|
export const oven = DeviceTypeDefinition({
|
|
481
881
|
name: 'MA-oven',
|
|
482
882
|
code: 0x7b,
|
|
@@ -485,6 +885,18 @@ export const oven = DeviceTypeDefinition({
|
|
|
485
885
|
requiredServerClusters: [Identify.Cluster.id],
|
|
486
886
|
optionalServerClusters: [],
|
|
487
887
|
});
|
|
888
|
+
/**
|
|
889
|
+
* An Extractor Hood is a device that is generally installed above a cooking surface in residential kitchens.
|
|
890
|
+
* Additional device types not listed in this table MAY also be included in device compositions.
|
|
891
|
+
* Device Type Requirements:
|
|
892
|
+
* 0x0100+ On/Off Light+ O
|
|
893
|
+
*
|
|
894
|
+
*
|
|
895
|
+
* Element Requirements:
|
|
896
|
+
* 0x0202 Fan Control Feature Rocking X
|
|
897
|
+
* 0x0202 Fan Control Feature Wind X
|
|
898
|
+
* 0x0202 Fan Control Feature AirflowDirection X
|
|
899
|
+
*/
|
|
488
900
|
export const extractorHood = DeviceTypeDefinition({
|
|
489
901
|
name: 'MA-extractorhood',
|
|
490
902
|
code: 0x7a,
|
|
@@ -493,6 +905,12 @@ export const extractorHood = DeviceTypeDefinition({
|
|
|
493
905
|
requiredServerClusters: [FanControl.Cluster.id],
|
|
494
906
|
optionalServerClusters: [Identify.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
|
|
495
907
|
});
|
|
908
|
+
/**
|
|
909
|
+
* A Microwave Oven is a device with the primary function of heating foods and beverages using a magnetron.
|
|
910
|
+
* A Microwave Oven is a device which at a minimum is capable of being started and stopped and of setting a power level.
|
|
911
|
+
* A Microwave Oven MAY also support additional capabilities via endpoint composition.
|
|
912
|
+
*
|
|
913
|
+
*/
|
|
496
914
|
export const microwaveOven = DeviceTypeDefinition({
|
|
497
915
|
name: 'MA-microwaveoven',
|
|
498
916
|
code: 0x79,
|
|
@@ -501,3 +919,4 @@ export const microwaveOven = DeviceTypeDefinition({
|
|
|
501
919
|
requiredServerClusters: [OperationalState.Cluster.id, MicrowaveOvenMode.Cluster.id, MicrowaveOvenControl.Cluster.id],
|
|
502
920
|
optionalServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
|
|
503
921
|
});
|
|
922
|
+
//# sourceMappingURL=matterbridgeDeviceTypes.js.map
|