matterbridge 3.0.7 → 3.0.8-dev-20250622-f9e44a2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/bin/matterbridge +2 -0
  3. package/dist/cli.js +5 -66
  4. package/dist/clusters/export.js +0 -2
  5. package/dist/defaultConfigSchema.js +0 -23
  6. package/dist/deviceManager.js +2 -95
  7. package/dist/devices/export.js +0 -2
  8. package/dist/evse.js +9 -65
  9. package/dist/frontend.js +47 -383
  10. package/dist/globalMatterbridge.js +0 -20
  11. package/dist/helpers.js +4 -52
  12. package/dist/index.js +2 -29
  13. package/dist/laundryWasher.js +7 -92
  14. package/dist/logger/export.js +0 -1
  15. package/dist/matter/behaviors.js +0 -2
  16. package/dist/matter/clusters.js +0 -2
  17. package/dist/matter/devices.js +0 -2
  18. package/dist/matter/endpoints.js +0 -2
  19. package/dist/matter/export.js +0 -2
  20. package/dist/matter/types.js +0 -2
  21. package/dist/matterbridge.js +53 -755
  22. package/dist/matterbridgeAccessoryPlatform.js +0 -34
  23. package/dist/matterbridgeBehaviors.js +1 -54
  24. package/dist/matterbridgeDeviceTypes.js +15 -578
  25. package/dist/matterbridgeDynamicPlatform.js +0 -34
  26. package/dist/matterbridgeEndpoint.js +45 -1000
  27. package/dist/matterbridgeEndpointHelpers.js +12 -206
  28. package/dist/matterbridgePlatform.js +13 -224
  29. package/dist/matterbridgeTypes.js +0 -24
  30. package/dist/pluginManager.js +4 -270
  31. package/dist/roboticVacuumCleaner.js +9 -84
  32. package/dist/shelly.js +9 -156
  33. package/dist/storage/export.js +0 -1
  34. package/dist/update.js +0 -53
  35. package/dist/utils/colorUtils.js +2 -205
  36. package/dist/utils/commandLine.js +0 -53
  37. package/dist/utils/copyDirectory.js +1 -37
  38. package/dist/utils/createDirectory.js +0 -31
  39. package/dist/utils/createZip.js +2 -42
  40. package/dist/utils/deepCopy.js +0 -38
  41. package/dist/utils/deepEqual.js +1 -71
  42. package/dist/utils/export.js +0 -1
  43. package/dist/utils/hex.js +0 -57
  44. package/dist/utils/isvalid.js +0 -100
  45. package/dist/utils/network.js +6 -77
  46. package/dist/utils/spawn.js +0 -16
  47. package/dist/utils/wait.js +10 -58
  48. package/dist/waterHeater.js +5 -65
  49. package/frontend/build/matterbridge 1250x1250.png +0 -0
  50. package/frontend/build/matterbridge 624x624.png +0 -0
  51. package/frontend/package-lock.json +19176 -0
  52. package/frontend/package.json +79 -0
  53. package/frontend/public/Shelly.svg +1 -0
  54. package/frontend/public/bmc-button.svg +22 -0
  55. package/frontend/public/discord.svg +5 -0
  56. package/frontend/public/favicon.ico +0 -0
  57. package/frontend/public/index.html +19 -0
  58. package/frontend/public/manifest.json +15 -0
  59. package/frontend/public/matter.png +0 -0
  60. package/frontend/public/matterbridge 1250x1250.png +0 -0
  61. package/frontend/public/matterbridge 32x32.png +0 -0
  62. package/frontend/public/matterbridge 624x624.png +0 -0
  63. package/frontend/public/matterbridge 64x64.png +0 -0
  64. package/frontend/public/matterbridge.svg +50 -0
  65. package/frontend/public/robots.txt +3 -0
  66. package/npm-shrinkwrap.json +27 -36
  67. package/package.json +2 -3
  68. package/dist/cli.d.ts +0 -29
  69. package/dist/cli.d.ts.map +0 -1
  70. package/dist/cli.js.map +0 -1
  71. package/dist/clusters/export.d.ts +0 -2
  72. package/dist/clusters/export.d.ts.map +0 -1
  73. package/dist/clusters/export.js.map +0 -1
  74. package/dist/defaultConfigSchema.d.ts +0 -27
  75. package/dist/defaultConfigSchema.d.ts.map +0 -1
  76. package/dist/defaultConfigSchema.js.map +0 -1
  77. package/dist/deviceManager.d.ts +0 -114
  78. package/dist/deviceManager.d.ts.map +0 -1
  79. package/dist/deviceManager.js.map +0 -1
  80. package/dist/devices/export.d.ts +0 -5
  81. package/dist/devices/export.d.ts.map +0 -1
  82. package/dist/devices/export.js.map +0 -1
  83. package/dist/evse.d.ts +0 -67
  84. package/dist/evse.d.ts.map +0 -1
  85. package/dist/evse.js.map +0 -1
  86. package/dist/frontend.d.ts +0 -256
  87. package/dist/frontend.d.ts.map +0 -1
  88. package/dist/frontend.js.map +0 -1
  89. package/dist/globalMatterbridge.d.ts +0 -32
  90. package/dist/globalMatterbridge.d.ts.map +0 -1
  91. package/dist/globalMatterbridge.js.map +0 -1
  92. package/dist/helpers.d.ts +0 -47
  93. package/dist/helpers.d.ts.map +0 -1
  94. package/dist/helpers.js.map +0 -1
  95. package/dist/index.d.ts +0 -37
  96. package/dist/index.d.ts.map +0 -1
  97. package/dist/index.js.map +0 -1
  98. package/dist/laundryWasher.d.ts +0 -243
  99. package/dist/laundryWasher.d.ts.map +0 -1
  100. package/dist/laundryWasher.js.map +0 -1
  101. package/dist/logger/export.d.ts +0 -2
  102. package/dist/logger/export.d.ts.map +0 -1
  103. package/dist/logger/export.js.map +0 -1
  104. package/dist/matter/behaviors.d.ts +0 -2
  105. package/dist/matter/behaviors.d.ts.map +0 -1
  106. package/dist/matter/behaviors.js.map +0 -1
  107. package/dist/matter/clusters.d.ts +0 -2
  108. package/dist/matter/clusters.d.ts.map +0 -1
  109. package/dist/matter/clusters.js.map +0 -1
  110. package/dist/matter/devices.d.ts +0 -2
  111. package/dist/matter/devices.d.ts.map +0 -1
  112. package/dist/matter/devices.js.map +0 -1
  113. package/dist/matter/endpoints.d.ts +0 -2
  114. package/dist/matter/endpoints.d.ts.map +0 -1
  115. package/dist/matter/endpoints.js.map +0 -1
  116. package/dist/matter/export.d.ts +0 -5
  117. package/dist/matter/export.d.ts.map +0 -1
  118. package/dist/matter/export.js.map +0 -1
  119. package/dist/matter/types.d.ts +0 -3
  120. package/dist/matter/types.d.ts.map +0 -1
  121. package/dist/matter/types.js.map +0 -1
  122. package/dist/matterbridge.d.ts +0 -445
  123. package/dist/matterbridge.d.ts.map +0 -1
  124. package/dist/matterbridge.js.map +0 -1
  125. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -40
  126. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  127. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  128. package/dist/matterbridgeBehaviors.d.ts +0 -1333
  129. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  130. package/dist/matterbridgeBehaviors.js.map +0 -1
  131. package/dist/matterbridgeDeviceTypes.d.ts +0 -644
  132. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  133. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  134. package/dist/matterbridgeDynamicPlatform.d.ts +0 -40
  135. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  136. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  137. package/dist/matterbridgeEndpoint.d.ts +0 -1145
  138. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  139. package/dist/matterbridgeEndpoint.js.map +0 -1
  140. package/dist/matterbridgeEndpointHelpers.d.ts +0 -3083
  141. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  142. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  143. package/dist/matterbridgePlatform.d.ts +0 -290
  144. package/dist/matterbridgePlatform.d.ts.map +0 -1
  145. package/dist/matterbridgePlatform.js.map +0 -1
  146. package/dist/matterbridgeTypes.d.ts +0 -196
  147. package/dist/matterbridgeTypes.d.ts.map +0 -1
  148. package/dist/matterbridgeTypes.js.map +0 -1
  149. package/dist/pluginManager.d.ts +0 -273
  150. package/dist/pluginManager.d.ts.map +0 -1
  151. package/dist/pluginManager.js.map +0 -1
  152. package/dist/roboticVacuumCleaner.d.ts +0 -102
  153. package/dist/roboticVacuumCleaner.d.ts.map +0 -1
  154. package/dist/roboticVacuumCleaner.js.map +0 -1
  155. package/dist/shelly.d.ts +0 -161
  156. package/dist/shelly.d.ts.map +0 -1
  157. package/dist/shelly.js.map +0 -1
  158. package/dist/storage/export.d.ts +0 -2
  159. package/dist/storage/export.d.ts.map +0 -1
  160. package/dist/storage/export.js.map +0 -1
  161. package/dist/update.d.ts +0 -58
  162. package/dist/update.d.ts.map +0 -1
  163. package/dist/update.js.map +0 -1
  164. package/dist/utils/colorUtils.d.ts +0 -61
  165. package/dist/utils/colorUtils.d.ts.map +0 -1
  166. package/dist/utils/colorUtils.js.map +0 -1
  167. package/dist/utils/commandLine.d.ts +0 -58
  168. package/dist/utils/commandLine.d.ts.map +0 -1
  169. package/dist/utils/commandLine.js.map +0 -1
  170. package/dist/utils/copyDirectory.d.ts +0 -32
  171. package/dist/utils/copyDirectory.d.ts.map +0 -1
  172. package/dist/utils/copyDirectory.js.map +0 -1
  173. package/dist/utils/createDirectory.d.ts +0 -32
  174. package/dist/utils/createDirectory.d.ts.map +0 -1
  175. package/dist/utils/createDirectory.js.map +0 -1
  176. package/dist/utils/createZip.d.ts +0 -38
  177. package/dist/utils/createZip.d.ts.map +0 -1
  178. package/dist/utils/createZip.js.map +0 -1
  179. package/dist/utils/deepCopy.d.ts +0 -31
  180. package/dist/utils/deepCopy.d.ts.map +0 -1
  181. package/dist/utils/deepCopy.js.map +0 -1
  182. package/dist/utils/deepEqual.d.ts +0 -53
  183. package/dist/utils/deepEqual.d.ts.map +0 -1
  184. package/dist/utils/deepEqual.js.map +0 -1
  185. package/dist/utils/export.d.ts +0 -12
  186. package/dist/utils/export.d.ts.map +0 -1
  187. package/dist/utils/export.js.map +0 -1
  188. package/dist/utils/hex.d.ts +0 -48
  189. package/dist/utils/hex.d.ts.map +0 -1
  190. package/dist/utils/hex.js.map +0 -1
  191. package/dist/utils/isvalid.d.ts +0 -102
  192. package/dist/utils/isvalid.d.ts.map +0 -1
  193. package/dist/utils/isvalid.js.map +0 -1
  194. package/dist/utils/network.d.ts +0 -69
  195. package/dist/utils/network.d.ts.map +0 -1
  196. package/dist/utils/network.js.map +0 -1
  197. package/dist/utils/spawn.d.ts +0 -12
  198. package/dist/utils/spawn.d.ts.map +0 -1
  199. package/dist/utils/spawn.js.map +0 -1
  200. package/dist/utils/wait.d.ts +0 -52
  201. package/dist/utils/wait.d.ts.map +0 -1
  202. package/dist/utils/wait.js.map +0 -1
  203. package/dist/waterHeater.d.ts +0 -90
  204. package/dist/waterHeater.d.ts.map +0 -1
  205. package/dist/waterHeater.js.map +0 -1
  206. package/tsconfig.jest.json +0 -8
  207. package/tsconfig.production.json +0 -13
@@ -1,28 +1,4 @@
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
24
1
  import { DeviceTypeId } from '@matter/main';
25
- // @matter clusters
26
2
  import { BooleanState } from '@matter/main/clusters/boolean-state';
27
3
  import { BooleanStateConfiguration } from '@matter/main/clusters/boolean-state-configuration';
28
4
  import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
@@ -92,42 +68,15 @@ import { OtaSoftwareUpdateRequestor } from '@matter/main/clusters/ota-software-u
92
68
  import { EnergyEvse, EnergyEvseMode, OtaSoftwareUpdateProvider, WaterHeaterManagement, WaterHeaterMode } from '@matter/main/clusters';
93
69
  export var DeviceClasses;
94
70
  (function (DeviceClasses) {
95
- /** Node device type. */
96
71
  DeviceClasses["Node"] = "Node";
97
- /**
98
- * Application device type.
99
- * Application devices types are typically the most datatype endpoints on a node and in the network.
100
- */
101
72
  DeviceClasses["App"] = "App";
102
- /**
103
- * Utility device type.
104
- * A Utility device type supports configuration and settings.
105
- */
106
73
  DeviceClasses["Utility"] = "Utility";
107
- /**
108
- * Simple device type.
109
- * A Simple device type supports local control that is persistent, independent, and unsupervised.
110
- */
111
74
  DeviceClasses["Simple"] = "Simple";
112
- /**
113
- * Dynamic device type.
114
- * A Dynamic device type supports intelligent and supervisory services, such as commissioning,
115
- * monitoring, trend analysis, scheduling and central management. A dynamic device type is an
116
- * application device type.
117
- */
118
75
  DeviceClasses["Dynamic"] = "Dynamic";
119
- /** There exists a client application cluster on the endpoint. */
120
76
  DeviceClasses["Client"] = "Client";
121
- /** There exists a server application cluster on the endpoint. */
122
77
  DeviceClasses["Server"] = "Server";
123
- /** The device type is composed of 2 or more device types. */
124
78
  DeviceClasses["Composed"] = "Composed";
125
- /** The endpoint and at least one of its sibling endpoints have an overlap in application device type(s). */
126
79
  DeviceClasses["Duplicate"] = "Duplicate";
127
- /**
128
- * The endpoint represents a Bridged Device, for which information about the state of
129
- * its power source is available to the Bridge
130
- */
131
80
  DeviceClasses["BridgedPowerSourceInfo"] = "BridgedPowerSourceInfo";
132
81
  })(DeviceClasses || (DeviceClasses = {}));
133
82
  export const DeviceTypeDefinition = ({ name, code, deviceClass, revision, requiredServerClusters = [], optionalServerClusters = [], requiredClientClusters = [], optionalClientClusters = [], }) => ({
@@ -140,7 +89,6 @@ export const DeviceTypeDefinition = ({ name, code, deviceClass, revision, requir
140
89
  requiredClientClusters,
141
90
  optionalClientClusters,
142
91
  });
143
- // Chapter 2. Utility device types
144
92
  export const powerSource = DeviceTypeDefinition({
145
93
  name: 'MA-powerSource',
146
94
  code: 0x0011,
@@ -169,27 +117,6 @@ export const OTAProvider = DeviceTypeDefinition({
169
117
  requiredClientClusters: [OtaSoftwareUpdateRequestor.Cluster.id],
170
118
  optionalClientClusters: [],
171
119
  });
172
- /**
173
- 2.5.3. Conditions
174
- Please see the Base Device Type definition for conformance tags.
175
- This device type SHALL only be used for Nodes which have a device type of Bridge.
176
-
177
- 2.5.5. Cluster Requirements
178
- Each endpoint supporting this device type SHALL include these clusters based on the conformance
179
- defined below.
180
- - 0x0039 Bridged Device Basic Information Server
181
-
182
- 2.5.6. Endpoint Composition
183
- • A Bridged Node endpoint SHALL support one of the following composition patterns:
184
- ◦ Separate Endpoints: All application device types are supported on separate endpoints, and
185
- not on the Bridged Node endpoint. The Bridged Node endpoint’s Descriptor cluster PartsList
186
- attribute SHALL indicate a list of all endpoints representing the functionality of the bridged
187
- device, including the endpoints supporting the application device types, i.e. the full-family
188
- pattern defined in the System Model specification.
189
- ◦ One Endpoint: Both the Bridged Node and one or more application device types are sup
190
- ported on the same endpoint (following application device type rules). Endpoint composi
191
- tion SHALL conform to the application device type(s) definition
192
- */
193
120
  export const bridgedNode = DeviceTypeDefinition({
194
121
  name: 'MA-bridgedNode',
195
122
  code: 0x0013,
@@ -198,17 +125,6 @@ export const bridgedNode = DeviceTypeDefinition({
198
125
  requiredServerClusters: [BridgedDeviceBasicInformation.Cluster.id],
199
126
  optionalServerClusters: [PowerSource.Cluster.id, EcosystemInformation.Cluster.id, AdministratorCommissioning.Cluster.id],
200
127
  });
201
- /**
202
- * An Electrical Sensor device measures the electrical power and/or energy being imported and/or
203
- * exported.
204
- * It is a utility device type that provides information about the electrical power and/or energy
205
- * consumption and generation.
206
- *
207
- * 2.6.3. Device Type Requirements
208
- * Electrical measurements made by either the Electrical Power Measurement cluster, the Electrical
209
- * Energy Measurement cluster, or both SHALL apply to the endpoints indicated by the Power Topology
210
- * cluster.
211
- */
212
128
  export const electricalSensor = DeviceTypeDefinition({
213
129
  name: 'MA-electricalSensor',
214
130
  code: 0x0510,
@@ -217,10 +133,6 @@ export const electricalSensor = DeviceTypeDefinition({
217
133
  requiredServerClusters: [PowerTopology.Cluster.id],
218
134
  optionalServerClusters: [ElectricalPowerMeasurement.Cluster.id, ElectricalEnergyMeasurement.Cluster.id],
219
135
  });
220
- /**
221
- * A Device Energy Management device provides reporting and optionally adjustment of the electrical
222
- * power planned on being consumed or produced by the device.
223
- */
224
136
  export const deviceEnergyManagement = DeviceTypeDefinition({
225
137
  name: 'MA-deviceEnergyManagement',
226
138
  code: 0x050d,
@@ -229,194 +141,77 @@ export const deviceEnergyManagement = DeviceTypeDefinition({
229
141
  requiredServerClusters: [DeviceEnergyManagement.Cluster.id],
230
142
  optionalServerClusters: [DeviceEnergyManagementMode.Cluster.id],
231
143
  });
232
- // Chapter 4. Lightning device types
233
- /**
234
- * Element Requirements:
235
- * - Identify Command TriggerEffect
236
- * - Scenes Management Command CopyScene
237
- * - On/Off Feature Lighting
238
- * - Level Control Feature OnOff
239
- * - Level Control Feature Lighting
240
- * - Level Control Attribute CurrentLevel 1 to 254
241
- * - Level Control Attribute MinLevel 1
242
- * - Level Control Attribute MaxLevel 254
243
- */
244
144
  export const onOffLight = DeviceTypeDefinition({
245
145
  name: 'MA-onofflight',
246
146
  code: 0x0100,
247
147
  deviceClass: DeviceClasses.Simple,
248
148
  revision: 3,
249
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id],
149
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
250
150
  optionalServerClusters: [LevelControl.Cluster.id],
251
151
  });
252
- /**
253
- * Element Requirements:
254
- * - Identify Command TriggerEffect
255
- * - Scenes Management Command CopyScene
256
- * - On/Off Feature Lighting
257
- * - Level Control Feature OnOff
258
- * - Level Control Feature Lighting
259
- * - Level Control Attribute CurrentLevel 1 to 254
260
- * - Level Control Attribute MinLevel 1
261
- * - Level Control Attribute MaxLevel 254
262
- */
263
152
  export const dimmableLight = DeviceTypeDefinition({
264
153
  name: 'MA-dimmablelight',
265
154
  code: 0x0101,
266
155
  deviceClass: DeviceClasses.Simple,
267
156
  revision: 3,
268
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
157
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
269
158
  optionalServerClusters: [],
270
159
  });
271
- /**
272
- * Element Requirements:
273
- * - Identify Command TriggerEffect
274
- * - Scenes Management Command CopyScene
275
- * - On/Off Feature Lighting
276
- * - Level Control Feature OnOff
277
- * - Level Control Feature Lighting
278
- * - Level Control Attribute CurrentLevel 1 to 254
279
- * - Level Control Attribute MinLevel 1
280
- * - Level Control Attribute MaxLevel 254
281
- * - Color Control Feature ColorTemperature
282
- * - Color Control Attribute RemainingTime
283
- */
284
160
  export const colorTemperatureLight = DeviceTypeDefinition({
285
161
  name: 'MA-colortemperaturelight',
286
162
  code: 0x010c,
287
163
  deviceClass: DeviceClasses.Simple,
288
164
  revision: 4,
289
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
165
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
290
166
  optionalServerClusters: [],
291
167
  });
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
- * - Color Control Feature XY
303
- * - Color Control Feature ColorTemperature
304
- * - Color Control Attribute RemainingTime
305
- */
306
168
  export const extendedColorLight = DeviceTypeDefinition({
307
169
  name: 'MA-extendedcolorlight',
308
170
  code: 0x010d,
309
171
  deviceClass: DeviceClasses.Simple,
310
172
  revision: 4,
311
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
173
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
312
174
  optionalServerClusters: [],
313
175
  });
314
- // Chapter 5. Smart plugs/Outlets and other Actuators device types
315
- /**
316
- * Element Requirements:
317
- * - Identify Command TriggerEffect
318
- * - Scenes Management Command CopyScene
319
- * - On/Off Feature Lighting
320
- * - Level Control Feature OnOff
321
- * - Level Control Feature Lighting
322
- * - Level Control Attribute CurrentLevel 1 to 254
323
- * - Level Control Attribute MinLevel 1
324
- * - Level Control Attribute MaxLevel 254
325
- */
326
176
  export const onOffOutlet = DeviceTypeDefinition({
327
177
  name: 'MA-onoffpluginunit',
328
178
  code: 0x010a,
329
179
  deviceClass: DeviceClasses.Simple,
330
180
  revision: 3,
331
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id],
181
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
332
182
  optionalServerClusters: [LevelControl.Cluster.id],
333
183
  });
334
- /**
335
- * Element Requirements:
336
- * - Identify Command TriggerEffect
337
- * - Scenes Management Command CopyScene
338
- * - On/Off Feature Lighting
339
- * - Level Control Feature OnOff
340
- * - Level Control Feature Lighting
341
- * - Level Control Attribute CurrentLevel 1 to 254
342
- * - Level Control Attribute MinLevel 1
343
- * - Level Control Attribute MaxLevel 254
344
- */
345
184
  export const dimmableOutlet = DeviceTypeDefinition({
346
185
  name: 'MA-dimmablepluginunit',
347
186
  code: 0x010b,
348
187
  deviceClass: DeviceClasses.Simple,
349
188
  revision: 4,
350
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
189
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
351
190
  optionalServerClusters: [],
352
191
  });
353
- /**
354
- * A Mounted On/Off Control is a fixed device that provides power to another device that is plugged
355
- * into it, and is capable of switching that provided power on or off.
356
- * It is a simple device type that does not require any client clusters.
357
- * Element Requirements:
358
- * - Identify Command TriggerEffect
359
- * - Scenes Management Command CopyScene
360
- * - On/Off Feature Lighting
361
- * - Level Control Feature OnOff
362
- * - Level Control Feature Lighting
363
- * - Level Control Attribute CurrentLevel 1 to 254
364
- * - Level Control Attribute MinLevel 1
365
- * - Level Control Attribute MaxLevel 254
366
- */
367
192
  export const onOffMountedSwitch = DeviceTypeDefinition({
368
193
  name: 'MA-onoffmountedswitch',
369
194
  code: 0x010f,
370
195
  deviceClass: DeviceClasses.Simple,
371
196
  revision: 1,
372
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id],
197
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
373
198
  optionalServerClusters: [LevelControl.Cluster.id],
374
199
  });
375
- /**
376
- * A Mounted Dimmable Load Control is a fixed device that provides power to another device that is
377
- * plugged into it, and is capable of being switched on or off and have its level adjusted. The Mounted
378
- * Dimmable Load Control is typically used to control a conventional non-communicating light
379
- * through its mains connection using phase cutting.
380
- * It is a simple device type that does not require any client clusters.
381
- * Element Requirements:
382
- * - Identify Command TriggerEffect
383
- * - Scenes Management Command CopyScene
384
- * - On/Off Feature Lighting
385
- * - Level Control Feature OnOff
386
- * - Level Control Feature Lighting
387
- * - Level Control Attribute CurrentLevel 1 to 254
388
- * - Level Control Attribute MinLevel 1
389
- * - Level Control Attribute MaxLevel 254
390
- */
391
200
  export const dimmableMountedSwitch = DeviceTypeDefinition({
392
201
  name: 'MA-dimmablemountedswitch',
393
202
  code: 0x0110,
394
203
  deviceClass: DeviceClasses.Simple,
395
204
  revision: 1,
396
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
205
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
397
206
  optionalServerClusters: [],
398
207
  });
399
- /**
400
- * Remark:
401
- * On/Off Cluster:
402
- * - Off If the pump is powered on, store the current level then immediately power it off.
403
- * - 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,
404
- * move immediately to the maximum level allowed for the pump.
405
- * - 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.
406
- *
407
- * LevelControl cluster:
408
- * Level Setpoint Meaning
409
- * 0 N/A Pump is stopped,
410
- * 1–200 Level / 2 (0.5–100.0%) Pump setpoint in percent
411
- * 201–255 100.0% Pump setpoint is 100.0%
412
- */
413
208
  export const pumpDevice = DeviceTypeDefinition({
414
209
  name: 'MA-pump',
415
210
  code: 0x303,
416
211
  deviceClass: DeviceClasses.Simple,
417
212
  revision: 3,
418
213
  requiredServerClusters: [OnOff.Cluster.id, PumpConfigurationAndControl.Cluster.id, Identify.Cluster.id],
419
- optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, /* ScenesManagement.Cluster.id, */ TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
214
+ optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
420
215
  });
421
216
  export const waterValve = DeviceTypeDefinition({
422
217
  name: 'MA-waterValve',
@@ -426,33 +221,29 @@ export const waterValve = DeviceTypeDefinition({
426
221
  requiredServerClusters: [Identify.Cluster.id, ValveConfigurationAndControl.Cluster.id],
427
222
  optionalServerClusters: [FlowMeasurement.Cluster.id],
428
223
  });
429
- // Chapter 6. Switches and Controls device types
430
- // Custom device types without client clusters (not working in Alexa)
431
224
  export const onOffSwitch = DeviceTypeDefinition({
432
225
  name: 'MA-onoffswitch',
433
226
  code: 0x0103,
434
227
  deviceClass: DeviceClasses.Simple,
435
228
  revision: 3,
436
229
  requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id],
437
- optionalServerClusters: [Groups.Cluster.id /* , ScenesManagement.Cluster.id*/],
230
+ optionalServerClusters: [Groups.Cluster.id],
438
231
  });
439
- // Custom device types without client clusters (not working in Alexa)
440
232
  export const dimmableSwitch = DeviceTypeDefinition({
441
233
  name: 'MA-dimmableswitch',
442
234
  code: 0x0104,
443
235
  deviceClass: DeviceClasses.Simple,
444
236
  revision: 3,
445
237
  requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
446
- optionalServerClusters: [Groups.Cluster.id /* , ScenesManagement.Cluster.id*/],
238
+ optionalServerClusters: [Groups.Cluster.id],
447
239
  });
448
- // Custom device types without client clusters (not working in Alexa)
449
240
  export const colorTemperatureSwitch = DeviceTypeDefinition({
450
241
  name: 'MA-colortemperatureswitch',
451
242
  code: 0x0105,
452
243
  deviceClass: DeviceClasses.Simple,
453
244
  revision: 3,
454
245
  requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
455
- optionalServerClusters: [Groups.Cluster.id /* , ScenesManagement.Cluster.id*/],
246
+ optionalServerClusters: [Groups.Cluster.id],
456
247
  });
457
248
  export const genericSwitch = DeviceTypeDefinition({
458
249
  name: 'MA-genericswitch',
@@ -462,11 +253,6 @@ export const genericSwitch = DeviceTypeDefinition({
462
253
  requiredServerClusters: [Identify.Cluster.id, Switch.Cluster.id],
463
254
  optionalServerClusters: [],
464
255
  });
465
- // Chapter 7. Sensor device types
466
- /**
467
- * Closed or contact: state true
468
- * Open or no contact: state false
469
- */
470
256
  export const contactSensor = DeviceTypeDefinition({
471
257
  name: 'MA-contactsensor',
472
258
  code: 0x0015,
@@ -518,7 +304,6 @@ export const humiditySensor = DeviceTypeDefinition({
518
304
  revision: 2,
519
305
  requiredServerClusters: [Identify.Cluster.id, RelativeHumidityMeasurement.Cluster.id],
520
306
  });
521
- // Remark: A Smoke CO Alarm device type SHALL support an instance of a Power Source device type on some endpoint.
522
307
  export const smokeCoAlarm = DeviceTypeDefinition({
523
308
  name: 'MA-smokeCoAlarm',
524
309
  code: 0x0076,
@@ -572,15 +357,6 @@ export const rainSensor = DeviceTypeDefinition({
572
357
  requiredServerClusters: [Identify.Cluster.id, BooleanState.Cluster.id],
573
358
  optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
574
359
  });
575
- // Closures device types
576
- /**
577
- * 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.
578
- * Element Requirements:
579
- *
580
- * - AccessControl Attribute Extension
581
- * - DoorLock Feature User
582
- * - DoorLock Attribute AlarmMask
583
- */
584
360
  export const doorLockDevice = DeviceTypeDefinition({
585
361
  name: 'MA-doorLock',
586
362
  code: 0xa,
@@ -597,15 +373,6 @@ export const coverDevice = DeviceTypeDefinition({
597
373
  requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
598
374
  optionalServerClusters: [Groups.Cluster.id],
599
375
  });
600
- // HVAC device types
601
- /**
602
- * A Thermostat device is capable of having either built-in or separate sensors for temperature,
603
- * humidity or occupancy. It allows the desired temperature to be set either remotely or locally. The
604
- * thermostat is capable of sending heating and/or cooling requirement notifications to a heating/cooling
605
- * unit (for example, an indoor air handler) or is capable of including a mechanism to control a
606
- * heating or cooling unit directly.
607
- *
608
- */
609
376
  export const thermostatDevice = DeviceTypeDefinition({
610
377
  name: 'MA-thermostat',
611
378
  code: 0x301,
@@ -614,25 +381,6 @@ export const thermostatDevice = DeviceTypeDefinition({
614
381
  requiredServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
615
382
  optionalServerClusters: [Groups.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, EnergyPreference.Cluster.id],
616
383
  });
617
- /**
618
- * A Fan device is typically standalone or mounted on a ceiling or wall and is used to circulate air in a room.
619
- * Remark: it may have a thermostat device type.
620
- * Additional device types MAY also be included in device compositions.
621
- * Element Requirements:
622
- * The FanControl cluster must have the FanModeSequence attribute.
623
- *
624
- * The On/Off cluster is independent from the Fan Control Cluster’s FanMode attribute, which also
625
- * includes an Off setting.
626
- * If the FanMode attribute of the Fan Control cluster is set to a value other than Off when the OnOff
627
- * attribute of the On/Off cluster transitions from TRUE to FALSE, it may be desirable to restore the
628
- * FanMode, SpeedSetting and PercentSetting attribute values of the Fan Control cluster when the OnOff
629
- * attribute of the On/Off cluster later transitions from FALSE to TRUE. If the FanMode is set to Off when
630
- * the device is turned off, this information is lost, as the SpeedSetting and PercentSetting will be set to
631
- * zero. Using the On/Off cluster alongside the Fan Control cluster allows the FanMode, SpeedSetting and
632
- * PercentSetting to remain unchanged when the device is turned off. In this case, the On/Off cluster
633
- * would be set to Off, and the SpeedCurrent and PercentCurrent set to zero, without changing FanMode,
634
- * SpeedSetting and PercentSetting.
635
- */
636
384
  export const fanDevice = DeviceTypeDefinition({
637
385
  name: 'MA-fan',
638
386
  code: 0x2b,
@@ -641,35 +389,6 @@ export const fanDevice = DeviceTypeDefinition({
641
389
  requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, FanControl.Cluster.id],
642
390
  optionalServerClusters: [OnOff.Cluster.id],
643
391
  });
644
- /**
645
- * An Air Purifier is a standalone device that is designed to clean the air in a room.
646
- * It is a device that has a fan to control the air speed while it is operating. Optionally, it can report on
647
- * the condition of its filters.
648
- *
649
- * Remark:
650
- * An Air Purifier MAY expose elements of its functionality through one or more additional device
651
- * types on different endpoints. All devices used in compositions SHALL adhere to the disambiguation
652
- * requirements of the System Model. Other device types, not explicitly listed in the table, MAY also be
653
- * included in device compositions but are not considered part of the core functionality of the device.
654
- * 0x0301 Thermostat O
655
- * 0x0302 Temperature Sensor O
656
- * 0x0307 Humidity Sensor O
657
- * 0x002C Air Quality Sensor O
658
- *
659
- * Cluster Restrictions:
660
- * The On/Off cluster is independent from the Fan Control Cluster’s FanMode attribute, which also
661
- * includes an Off setting.
662
- * If the FanMode attribute of the Fan Control cluster is set to a value other than Off when the OnOff
663
- * attribute of the On/Off cluster transitions from TRUE to FALSE, it may be desirable to restore the
664
- * FanMode, SpeedSetting and PercentSetting attribute values of the Fan Control cluster when the OnOff
665
- * attribute of the On/Off cluster later transitions from FALSE to TRUE. If the FanMode is set to Off when
666
- * the device is turned off, this information is lost, as the SpeedSetting and PercentSetting will be set to
667
- * zero. Using the On/Off cluster alongside the Fan Control cluster allows the FanMode, SpeedSetting and
668
- * PercentSetting to remain unchanged when the device is turned off. In this case, the On/Off cluster
669
- * would be set to Off, and the SpeedCurrent and PercentCurrent set to zero, without changing FanMode,
670
- * SpeedSetting and PercentSetting.
671
- *
672
- */
673
392
  export const airPurifier = DeviceTypeDefinition({
674
393
  name: 'MA-airPurifier',
675
394
  code: 0x2d,
@@ -678,7 +397,6 @@ export const airPurifier = DeviceTypeDefinition({
678
397
  requiredServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
679
398
  optionalServerClusters: [Groups.Cluster.id, OnOff.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
680
399
  });
681
- // Generic device types
682
400
  export const modeSelect = DeviceTypeDefinition({
683
401
  name: 'MA-modeselect',
684
402
  code: 0x27,
@@ -686,37 +404,6 @@ export const modeSelect = DeviceTypeDefinition({
686
404
  revision: 1,
687
405
  requiredServerClusters: [ModeSelect.Cluster.id],
688
406
  });
689
- /**
690
- * This device type aggregates endpoints as a collection. Clusters on the endpoint indicating this
691
- * device type provide functionality for the collection of descendant endpoints present in the PartsList
692
- * of the endpoint’s descriptor, for example the Actions cluster.
693
- *
694
- * Endpoint Composition:
695
- * An Aggregator endpoint’s Descriptor cluster PartsList attribute SHALL list the collection of all endpoints
696
- * aggregated by the Aggregator device type, i.e. the full-family pattern defined in the System Model specification.
697
- *
698
- * Disambiguation:
699
- * If the Duplicate condition applies to child endpoints of an Aggregator endpoint that represent multiple
700
- * independent bridged devices, the endpoints SHOULD make available metadata to allow a
701
- * client to disambiguate distinct bridged devices with an overlap in application device types.
702
- *
703
- * Typically this is done using the NodeLabel attribute of the Bridged Device Basic Information cluster
704
- * - thus reusing the naming information which the bridge already has to allow disambiguation to the
705
- * user when using a direct user interface to the bridge.
706
- *
707
- * Actions cluster (9.14 Matter specification):
708
- * If a Bridge has (such) information on topology or logical grouping, it SHOULD expose such information
709
- * in the EndpointLists attribute of an Actions cluster (the ActionLists of which MAY be empty if
710
- * no actions are exposed). 9.12 Matter specification
711
- *
712
- * 9.12.5. New features for Bridged Devices
713
- * Bridged Devices can have their software updated independently of the Bridge, through Bridge Manufacturer-
714
- * specific means. These updates MAY result in one or more changes to their capabilities,
715
- * such as supported clusters and/or attributes, for an endpoint. Like every Matter Node, every endpoint
716
- * on the Bridge’s Node contains a Descriptor cluster that contains attributes for the device types
717
- * (DeviceTypeList), endpoints (PartsList) and supported clusters (ServerList and ClientList). Nodes
718
- * that wish to be notified of such changes SHOULD monitor changes of these attributes.
719
- */
720
407
  export const aggregator = DeviceTypeDefinition({
721
408
  name: 'MA-aggregator',
722
409
  code: 0x000e,
@@ -726,29 +413,6 @@ export const aggregator = DeviceTypeDefinition({
726
413
  optionalServerClusters: [Actions.Cluster.id, Identify.Cluster.id, CommissionerControl.Cluster.id],
727
414
  });
728
415
  export const bridge = aggregator;
729
- // Robotic device types
730
- /**
731
- * A Robotic Vacuum Cleaner is a device that is capable of cleaning floors and other surfaces
732
- * in a home or office environment. It is typically a mobile device that can navigate around
733
- * obstacles and can be controlled remotely.
734
- *
735
- * Cluster Usage:
736
- * The RVC Operational State cluster’s OperationalState attribute SHALL be updated according to the
737
- * state of the device, and therefore it SHOULD be used for monitoring purposes.
738
- *
739
- * To attempt starting a cleaning operation, the RVC Run Mode cluster can be sent a ChangeToMode
740
- * command with the NewMode field set to a mode that has the Cleaning mode tag associated with it.
741
- *
742
- * To attempt stopping a cleaning operation, the RVC Run Mode cluster can be sent a ChangeToMode
743
- * command with the NewMode field set to a mode that has the Idle mode tag associated with it.
744
- *
745
- * To attempt pausing a cleaning operation, the RVC Operational State cluster can be sent a Pause command.
746
- *
747
- * To attempt resuming a cleaning operation, the RVC Operational State cluster can be sent a Resume
748
- * command.
749
- *
750
- *
751
- */
752
416
  export const roboticVacuumCleaner = DeviceTypeDefinition({
753
417
  name: 'MA-roboticvacuumcleaner',
754
418
  code: 0x74,
@@ -757,11 +421,6 @@ export const roboticVacuumCleaner = DeviceTypeDefinition({
757
421
  requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
758
422
  optionalServerClusters: [RvcCleanMode.Cluster.id, ServiceArea.Cluster.id],
759
423
  });
760
- // Chapter 13. Appliances device types
761
- /**
762
- * Cluster Restrictions:
763
- * On/Off Cluster: the DF (Dead Front) feature is required
764
- */
765
424
  export const laundryWasher = DeviceTypeDefinition({
766
425
  name: 'MA-laundrywasher',
767
426
  code: 0x73,
@@ -770,13 +429,6 @@ export const laundryWasher = DeviceTypeDefinition({
770
429
  requiredServerClusters: [OperationalState.Cluster.id],
771
430
  optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryWasherControls.Cluster.id, TemperatureControl.Cluster.id],
772
431
  });
773
- /**
774
- * A refrigerator represents a device that contains one or more cabinets that are capable of chilling or freezing food.
775
- * A Refrigerator SHALL be composed of at least one endpoint with the Temperature Controlled Cabinet device type.
776
- *
777
- * Device Type Requirements:
778
- * 0x0071 Temperature Controlled Cabinet
779
- */
780
432
  export const refrigerator = DeviceTypeDefinition({
781
433
  name: 'MA-refrigerator',
782
434
  code: 0x70,
@@ -785,23 +437,6 @@ export const refrigerator = DeviceTypeDefinition({
785
437
  requiredServerClusters: [Identify.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id, RefrigeratorAlarm.Cluster.id],
786
438
  optionalServerClusters: [],
787
439
  });
788
- /**
789
- * A Room Air Conditioner is a device with the primary function of controlling the air temperature in a single room.
790
- *
791
- * A Room Air Conditioner MAY have zero or more of each device type listed in this table subject to
792
- * the conformance column of the table. All devices used in compositions SHALL adhere to the disambiguation
793
- * requirements of the System Model. Additional device types not listed in this table MAY also be included in device compositions.
794
- * 0x0302 Temperature Sensor O
795
- * 0x0307 Humidity Sensor O
796
- *
797
- * Remark:
798
- * The DF (Dead Front) feature is required for the On/Off cluster in this device type:
799
- * - Thermostat LocalTemperature null
800
- * - Temperature Measurement MeasuredValue null
801
- * - Relative Humidity Measurement MeasuredValue null
802
- * - Fan Control SpeedSetting null
803
- * - Fan Control PercentSetting null
804
- */
805
440
  export const airConditioner = DeviceTypeDefinition({
806
441
  name: 'MA-airConditioner',
807
442
  code: 0x72,
@@ -810,22 +445,12 @@ export const airConditioner = DeviceTypeDefinition({
810
445
  requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, Thermostat.Cluster.id],
811
446
  optionalServerClusters: [
812
447
  Groups.Cluster.id,
813
- /* ScenesManagement.Cluster.id,*/
814
448
  FanControl.Cluster.id,
815
449
  ThermostatUserInterfaceConfiguration.Cluster.id,
816
450
  TemperatureMeasurement.Cluster.id,
817
451
  RelativeHumidityMeasurement.Cluster.id,
818
452
  ],
819
453
  });
820
- /**
821
- * A Temperature Controlled Cabinet only exists composed as part of another device type. It represents
822
- * a single cabinet that is capable of having its temperature controlled. Such a cabinet may be
823
- * chilling or freezing food, for example as part of a refrigerator, freezer, wine chiller, or other similar
824
- * device. Equally, such a cabinet may be warming or heating food, for example as part of an oven,
825
- * range, or similar device.
826
- * Conditions:
827
- * Cooler The device has cooling functionality.
828
- */
829
454
  export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
830
455
  name: 'MA-temperaturecontrolledcabinetcooler',
831
456
  code: 0x71,
@@ -834,15 +459,6 @@ export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
834
459
  requiredServerClusters: [TemperatureControl.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id],
835
460
  optionalServerClusters: [TemperatureMeasurement.Cluster.id],
836
461
  });
837
- /**
838
- * A Temperature Controlled Cabinet only exists composed as part of another device type. It represents
839
- * a single cabinet that is capable of having its temperature controlled. Such a cabinet may be
840
- * chilling or freezing food, for example as part of a refrigerator, freezer, wine chiller, or other similar
841
- * device. Equally, such a cabinet may be warming or heating food, for example as part of an oven,
842
- * range, or similar device.
843
- * Conditions:
844
- * Heater The device has heating functionality.
845
- */
846
462
  export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
847
463
  name: 'MA-temperaturecontrolledcabinetheater',
848
464
  code: 0x71,
@@ -851,10 +467,6 @@ export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
851
467
  requiredServerClusters: [TemperatureControl.Cluster.id, OvenMode.Cluster.id, OvenCavityOperationalState.Cluster.id],
852
468
  optionalServerClusters: [TemperatureMeasurement.Cluster.id],
853
469
  });
854
- /**
855
- * Cluster Restrictions:
856
- * On/Off Cluster: the DF (Dead Front) feature is required
857
- */
858
470
  export const dishwasher = DeviceTypeDefinition({
859
471
  name: 'MA-dishwasher',
860
472
  code: 0x75,
@@ -863,10 +475,6 @@ export const dishwasher = DeviceTypeDefinition({
863
475
  requiredServerClusters: [OperationalState.Cluster.id],
864
476
  optionalServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, TemperatureControl.Cluster.id, DishwasherMode.Cluster.id, DishwasherAlarm.Cluster.id],
865
477
  });
866
- /**
867
- * Cluster Restrictions:
868
- * On/Off Cluster: the DF (Dead Front) feature is required
869
- */
870
478
  export const laundryDryer = DeviceTypeDefinition({
871
479
  name: 'MA-laundrydryer',
872
480
  code: 0x7c,
@@ -875,13 +483,6 @@ export const laundryDryer = DeviceTypeDefinition({
875
483
  requiredServerClusters: [OperationalState.Cluster.id],
876
484
  optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryDryerControls.Cluster.id, TemperatureControl.Cluster.id],
877
485
  });
878
- /**
879
- * A Cook Surface device type represents a heating object on a cooktop or other similar device. It
880
- * SHALL only be used when composed as part of another device type (cooktop).
881
- *
882
- * Cluster Restrictions:
883
- * The OffOnly feature is required for the On/Off cluster in this device type due to safety requirements.
884
- */
885
486
  export const cookSurface = DeviceTypeDefinition({
886
487
  name: 'MA-cooksurface',
887
488
  code: 0x77,
@@ -890,18 +491,6 @@ export const cookSurface = DeviceTypeDefinition({
890
491
  requiredServerClusters: [TemperatureControl.Cluster.id, TemperatureMeasurement.Cluster.id],
891
492
  optionalServerClusters: [OnOff.Cluster.id],
892
493
  });
893
- /**
894
- * A cooktop is a cooking surface that heats food either by transferring currents from an electromagnetic
895
- * field located below the glass surface directly to the magnetic induction cookware placed
896
- * above or through traditional gas or electric burners.
897
- *
898
- * Device Type Requirements:
899
- * A Cooktop SHALL be composed of zero or more endpoints with the Cook Surface device type as defined by the conformance below.
900
- * 0x0077 Cook Surface min 1 O
901
- *
902
- * Cluster Restrictions:
903
- * The OffOnly feature is required for the On/Off cluster in this device type due to safety requirements.
904
- */
905
494
  export const cooktop = DeviceTypeDefinition({
906
495
  name: 'MA-cooktop',
907
496
  code: 0x78,
@@ -910,15 +499,6 @@ export const cooktop = DeviceTypeDefinition({
910
499
  requiredServerClusters: [OnOff.Cluster.id],
911
500
  optionalServerClusters: [Identify.Cluster.id],
912
501
  });
913
- /**
914
- * An oven represents a device that contains one or more cabinets, and optionally a single cooktop, that are all capable of heating food.
915
- * An oven is always defined via endpoint composition.
916
- * Conditions:
917
- * An Oven SHALL have the Heater condition applied to at least one endpoint containing the Temperature Control Cluster.
918
- * Device Type Requirements:
919
- * 0x0071 Temperature Controlled Cabinet min 1
920
- * 0x0078 Cooktop
921
- */
922
502
  export const oven = DeviceTypeDefinition({
923
503
  name: 'MA-oven',
924
504
  code: 0x7b,
@@ -927,18 +507,6 @@ export const oven = DeviceTypeDefinition({
927
507
  requiredServerClusters: [Identify.Cluster.id],
928
508
  optionalServerClusters: [],
929
509
  });
930
- /**
931
- * An Extractor Hood is a device that is generally installed above a cooking surface in residential kitchens.
932
- * Additional device types not listed in this table MAY also be included in device compositions.
933
- * Device Type Requirements:
934
- * 0x0100+ On/Off Light+ O
935
- *
936
- *
937
- * Element Requirements:
938
- * 0x0202 Fan Control Feature Rocking X
939
- * 0x0202 Fan Control Feature Wind X
940
- * 0x0202 Fan Control Feature AirflowDirection X
941
- */
942
510
  export const extractorHood = DeviceTypeDefinition({
943
511
  name: 'MA-extractorhood',
944
512
  code: 0x7a,
@@ -947,12 +515,6 @@ export const extractorHood = DeviceTypeDefinition({
947
515
  requiredServerClusters: [FanControl.Cluster.id],
948
516
  optionalServerClusters: [Identify.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
949
517
  });
950
- /**
951
- * A Microwave Oven is a device with the primary function of heating foods and beverages using a magnetron.
952
- * A Microwave Oven is a device which at a minimum is capable of being started and stopped and of setting a power level.
953
- * A Microwave Oven MAY also support additional capabilities via endpoint composition.
954
- *
955
- */
956
518
  export const microwaveOven = DeviceTypeDefinition({
957
519
  name: 'MA-microwaveoven',
958
520
  code: 0x79,
@@ -961,26 +523,6 @@ export const microwaveOven = DeviceTypeDefinition({
961
523
  requiredServerClusters: [OperationalState.Cluster.id, MicrowaveOvenMode.Cluster.id, MicrowaveOvenControl.Cluster.id],
962
524
  optionalServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
963
525
  });
964
- // Chapter 14. Energy Device Types
965
- /**
966
- * An EVSE (Electric Vehicle Supply Equipment) is a device that allows an EV (Electric Vehicle) to be
967
- * connected to the mains electricity supply to allow it to be charged (or discharged in case of Vehicle
968
- * to Grid / Vehicle to Home applications).
969
- *
970
- * 14.1.5. Device Type Requirements
971
- * An EVSE SHALL be composed of at least one endpoint with device types as defined by the conformance
972
- * below. There MAY be more endpoints with other device types existing in the EVSE.
973
- * ID Name Constraint Conformance
974
- * 0x0011 Power Source min 1 M
975
- * 0x0510 Electrical Sensor min 1 M
976
- * 0x050D Device Energy Management min 1 M
977
- *
978
- * The Electrical Sensor device SHALL include both the Electrical Energy Measurement and Electrical
979
- * Power Measurement clusters, measuring the total energy and power of the EVSE.
980
- *
981
- * The Device Energy Management cluster included in the Device Energy Management device SHALL
982
- * support the Power Forecast Reporting (PFR) feature.
983
- */
984
526
  export const evse = DeviceTypeDefinition({
985
527
  name: 'MA-evse',
986
528
  code: 0x050c,
@@ -989,39 +531,6 @@ export const evse = DeviceTypeDefinition({
989
531
  requiredServerClusters: [EnergyEvse.Cluster.id, EnergyEvseMode.Cluster.id],
990
532
  optionalServerClusters: [Identify.Cluster.id, TemperatureMeasurement.Cluster.id],
991
533
  });
992
- /**
993
- * A water heater is a device that is generally installed in properties to heat water for showers, baths etc.
994
- * A Water Heater is always defined via endpoint composition.
995
- *
996
- * 14.2.5. Device Type Requirements
997
- * A Water Heater SHALL be composed of at least one endpoint with device types as defined by the
998
- * conformance below. There MAY be more endpoints with other device types existing in the Water Heater.
999
- * ID Name Constraint Conformance
1000
- * 0x0011 Power Source O
1001
- * 0x0302 Temperature Sensor O
1002
- * 0x0510 Electrical Sensor desc
1003
- * 0x050D Device Energy Management O
1004
- *
1005
- * 14.2.7. Element Requirements
1006
- * 0x0201 Thermostat Feature Heating M
1007
- *
1008
- * The Energy Management feature of the Water Heater cluster SHALL be supported if the Device
1009
- * Energy Management device type is included.
1010
- * If Off is a supported SystemMode in the Thermostat cluster, setting the SystemMode of the Thermostat
1011
- * cluster to Off SHALL set the CurrentMode attribute of the Water Heater Mode cluster to a mode
1012
- * having the Off mode tag value and vice versa.
1013
- * At least one entry in the SupportedModes attribute of the Water Heater Mode cluster SHALL
1014
- * include the Timed mode tag in the ModeTags field list.
1015
- *
1016
- * WaterHeaterMode Cluster
1017
- * 9.6.6.1. SupportedModes Attribute
1018
- * At least one entry in the SupportedModes attribute SHALL include the Manual mode tag in the
1019
- * ModeTags field list.
1020
- * At least one entry in the SupportedModes attribute SHALL include the Off mode tag in the ModeTags
1021
- * field list.
1022
- * An entry in the SupportedModes attribute that includes one of an Off, Manual, or Timed tag SHALL
1023
- * NOT also include an additional instance of any one of these tag types.
1024
- */
1025
534
  export const waterHeater = DeviceTypeDefinition({
1026
535
  name: 'MA-waterheater',
1027
536
  code: 0x050f,
@@ -1030,99 +539,27 @@ export const waterHeater = DeviceTypeDefinition({
1030
539
  requiredServerClusters: [Thermostat.Cluster.id, WaterHeaterManagement.Cluster.id, WaterHeaterMode.Cluster.id],
1031
540
  optionalServerClusters: [Identify.Cluster.id],
1032
541
  });
1033
- /**
1034
- * A Solar Power device is a device that allows a solar panel array, which can optionally be comprised
1035
- * of a set parallel strings of solar panels, and its associated controller and, if appropriate, inverter, to
1036
- * be monitored and controlled by an Energy Management System.
1037
- *
1038
- * 14.3.5. Device Type Requirements
1039
- * A Solar Power device SHALL be composed of at least one endpoint with device types as defined by
1040
- * the conformance below. There MAY be more endpoints with additional instances of these device
1041
- * types or additional device types existing in the Solar Power device.
1042
- *
1043
- * ID Name Constraint Conformance
1044
- * 0x0011 Power Source min 1 M
1045
- * 0x0510 Electrical Sensor min 1 M
1046
- * 0x050D Device Energy Management O
1047
- * 0x0302 Temperature Sensor O
1048
- *
1049
- * 14.3.5.1. Cluster Requirements on Composing Device Types
1050
- *
1051
- * 0x0011 Power Source 0x002F Power Source Feature Wired M
1052
- * 0x0011 Power Source 0x001D Descriptor Feature TagList M
1053
- * 0x0510 Electrical Sensor 0x0090 Electrical Power Measurement M
1054
- * 0x0510 Electrical Sensor 0x0090 Electrical Power Measurement Attribute Voltage M
1055
- * 0x0510 Electrical Sensor 0x0090 Electrical Power Measurement Attribute ActiveCurrent M
1056
- * 0x0510 Electrical Sensor 0x0091 Electrical Energy Measurement M
1057
- * 0x0510 Electrical Sensor 0x0091 Electrical Energy Measurement Feature ExportedEnergy M
1058
- * 0x050D Device Energy Management 0x0098 Device Energy Management Feature PowerAdjustment M
1059
- * 0x0302 Temperature Sensor 0x001D Descriptor Feature TagList M
1060
- */
1061
542
  export const solarPower = DeviceTypeDefinition({
1062
543
  name: 'MA-solarpower',
1063
544
  code: 0x0017,
1064
545
  deviceClass: DeviceClasses.Simple,
1065
546
  revision: 1,
1066
- requiredServerClusters: [], // See 14.3.5.1. Cluster Requirements on Composing Device Types
547
+ requiredServerClusters: [],
1067
548
  optionalServerClusters: [Identify.Cluster.id],
1068
549
  });
1069
- /**
1070
- * A Battery Storage device is a device that allows a DC battery, which can optionally be comprised of
1071
- * a set parallel strings of battery packs and associated controller, and an AC inverter, to be monitored
1072
- * and controlled by an Energy Management System in order to manage the peaks and troughs of supply
1073
- * and demand, and/or to optimize cost of the energy consumed in premises. It is not intended to
1074
- * be used for a UPS directly supplying a set of appliances, nor for portable battery storage devices.
1075
- *
1076
- * 14.4.5. Device Type Requirements
1077
- * A Battery Storage device SHALL be composed of at least one endpoint with device types as defined by
1078
- * the conformance below. There MAY be more endpoints with additional instances of these device
1079
- * types or additional device types existing in the Battery Storage device.
1080
- * ID Name Constraint Conformance
1081
- * 0x0011 Power Source min 1 M
1082
- * 0x0510 Electrical Sensor min 1 M
1083
- * 0x050D Device Energy Management M
1084
- * 0x0302 Temperature Sensor O
1085
- * 0x0017 Solar Power O
1086
- *
1087
- * See 14.4.5.1. Cluster Requirements on Composing Device Types
1088
- */
1089
550
  export const batteryStorage = DeviceTypeDefinition({
1090
551
  name: 'MA-batterystorage',
1091
552
  code: 0x0018,
1092
553
  deviceClass: DeviceClasses.Simple,
1093
554
  revision: 1,
1094
- requiredServerClusters: [], // See 14.4.5.1. Cluster Requirements on Composing Device Types
555
+ requiredServerClusters: [],
1095
556
  optionalServerClusters: [Identify.Cluster.id],
1096
557
  });
1097
- /**
1098
- * A Heat Pump device is a device that uses electrical energy to heat either spaces or water tanks using
1099
- * ground, water or air as the heat source. These typically can heat the air or can pump water via central
1100
- * heating radiators or underfloor heating systems. It is typical to also heat hot water and store
1101
- * the heat in a hot water tank.
1102
- *
1103
- * 14.5.1. Heat Pump Architecture
1104
- * A Heat Pump device is always defined via endpoint composition.
1105
- *
1106
- * 14.5.5. Device Type Requirements
1107
- * A Heat Pump device SHALL be composed of at least one endpoint with device types as defined by
1108
- * the conformance below. There MAY be more endpoints with additional instances of these device
1109
- * types or additional device types existing in the Heat Pump device.
1110
- * ID Name Constraint Conformance
1111
- * 0x0011 Power Source M
1112
- * 0x0510 Electrical Sensor min 1 M
1113
- * 0x050D Device Energy Management M
1114
- * 0x0301 Thermostat O
1115
- * 0x050f Water Heater O
1116
- * 0x0302 Temperature Sensor O
1117
- *
1118
- * See 14.5.5.1. Cluster Requirements on Composing Device Types
1119
- */
1120
558
  export const heatPump = DeviceTypeDefinition({
1121
559
  name: 'MA-heatpump',
1122
560
  code: 0x0309,
1123
561
  deviceClass: DeviceClasses.Simple,
1124
562
  revision: 1,
1125
- requiredServerClusters: [], // See 14.5.5.1. Cluster Requirements on Composing Device Types
563
+ requiredServerClusters: [],
1126
564
  optionalServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
1127
565
  });
1128
- //# sourceMappingURL=matterbridgeDeviceTypes.js.map