matterbridge 3.2.4 → 3.2.5-dev-20250831-732330c

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