matterbridge 3.3.7 → 3.3.8-dev-20251115-920acfc

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