matterbridge 2.2.9 → 3.0.0-edge.10

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 (147) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cli.js +6 -38
  3. package/dist/cluster/export.js +0 -2
  4. package/dist/defaultConfigSchema.js +0 -23
  5. package/dist/deviceManager.js +1 -94
  6. package/dist/frontend.js +20 -328
  7. package/dist/index.js +1 -28
  8. package/dist/logger/export.js +0 -1
  9. package/dist/matter/behaviors.js +0 -2
  10. package/dist/matter/clusters.js +0 -2
  11. package/dist/matter/devices.js +0 -2
  12. package/dist/matter/endpoints.js +0 -2
  13. package/dist/matter/export.js +0 -2
  14. package/dist/matter/types.js +0 -2
  15. package/dist/matterbridge.js +104 -761
  16. package/dist/matterbridgeAccessoryPlatform.js +0 -33
  17. package/dist/matterbridgeBehaviors.js +46 -72
  18. package/dist/matterbridgeDeviceTypes.js +249 -233
  19. package/dist/matterbridgeDynamicPlatform.js +0 -33
  20. package/dist/matterbridgeEndpoint.js +85 -759
  21. package/dist/matterbridgeEndpointHelpers.js +30 -136
  22. package/dist/matterbridgePlatform.js +9 -218
  23. package/dist/matterbridgeTypes.js +0 -24
  24. package/dist/pluginManager.js +3 -262
  25. package/dist/shelly.js +6 -146
  26. package/dist/storage/export.js +0 -1
  27. package/dist/update.js +0 -45
  28. package/dist/utils/colorUtils.js +2 -205
  29. package/dist/utils/copyDirectory.js +1 -37
  30. package/dist/utils/createZip.js +2 -42
  31. package/dist/utils/deepCopy.js +0 -40
  32. package/dist/utils/deepEqual.js +1 -65
  33. package/dist/utils/export.js +0 -1
  34. package/dist/utils/isvalid.js +0 -86
  35. package/dist/utils/network.js +5 -76
  36. package/dist/utils/parameter.js +0 -41
  37. package/dist/utils/wait.js +5 -48
  38. package/npm-shrinkwrap.json +289 -351
  39. package/package.json +3 -4
  40. package/dist/cli.d.ts +0 -29
  41. package/dist/cli.d.ts.map +0 -1
  42. package/dist/cli.js.map +0 -1
  43. package/dist/cluster/export.d.ts +0 -2
  44. package/dist/cluster/export.d.ts.map +0 -1
  45. package/dist/cluster/export.js.map +0 -1
  46. package/dist/defaultConfigSchema.d.ts +0 -27
  47. package/dist/defaultConfigSchema.d.ts.map +0 -1
  48. package/dist/defaultConfigSchema.js.map +0 -1
  49. package/dist/deviceManager.d.ts +0 -114
  50. package/dist/deviceManager.d.ts.map +0 -1
  51. package/dist/deviceManager.js.map +0 -1
  52. package/dist/frontend.d.ts +0 -221
  53. package/dist/frontend.d.ts.map +0 -1
  54. package/dist/frontend.js.map +0 -1
  55. package/dist/index.d.ts +0 -35
  56. package/dist/index.d.ts.map +0 -1
  57. package/dist/index.js.map +0 -1
  58. package/dist/logger/export.d.ts +0 -2
  59. package/dist/logger/export.d.ts.map +0 -1
  60. package/dist/logger/export.js.map +0 -1
  61. package/dist/matter/behaviors.d.ts +0 -2
  62. package/dist/matter/behaviors.d.ts.map +0 -1
  63. package/dist/matter/behaviors.js.map +0 -1
  64. package/dist/matter/clusters.d.ts +0 -2
  65. package/dist/matter/clusters.d.ts.map +0 -1
  66. package/dist/matter/clusters.js.map +0 -1
  67. package/dist/matter/devices.d.ts +0 -2
  68. package/dist/matter/devices.d.ts.map +0 -1
  69. package/dist/matter/devices.js.map +0 -1
  70. package/dist/matter/endpoints.d.ts +0 -2
  71. package/dist/matter/endpoints.d.ts.map +0 -1
  72. package/dist/matter/endpoints.js.map +0 -1
  73. package/dist/matter/export.d.ts +0 -5
  74. package/dist/matter/export.d.ts.map +0 -1
  75. package/dist/matter/export.js.map +0 -1
  76. package/dist/matter/types.d.ts +0 -3
  77. package/dist/matter/types.d.ts.map +0 -1
  78. package/dist/matter/types.js.map +0 -1
  79. package/dist/matterbridge.d.ts +0 -425
  80. package/dist/matterbridge.d.ts.map +0 -1
  81. package/dist/matterbridge.js.map +0 -1
  82. package/dist/matterbridgeAccessoryPlatform.d.ts +0 -39
  83. package/dist/matterbridgeAccessoryPlatform.d.ts.map +0 -1
  84. package/dist/matterbridgeAccessoryPlatform.js.map +0 -1
  85. package/dist/matterbridgeBehaviors.d.ts +0 -1056
  86. package/dist/matterbridgeBehaviors.d.ts.map +0 -1
  87. package/dist/matterbridgeBehaviors.js.map +0 -1
  88. package/dist/matterbridgeDeviceTypes.d.ts +0 -178
  89. package/dist/matterbridgeDeviceTypes.d.ts.map +0 -1
  90. package/dist/matterbridgeDeviceTypes.js.map +0 -1
  91. package/dist/matterbridgeDynamicPlatform.d.ts +0 -39
  92. package/dist/matterbridgeDynamicPlatform.d.ts.map +0 -1
  93. package/dist/matterbridgeDynamicPlatform.js.map +0 -1
  94. package/dist/matterbridgeEndpoint.d.ts +0 -867
  95. package/dist/matterbridgeEndpoint.d.ts.map +0 -1
  96. package/dist/matterbridgeEndpoint.js.map +0 -1
  97. package/dist/matterbridgeEndpointHelpers.d.ts +0 -2275
  98. package/dist/matterbridgeEndpointHelpers.d.ts.map +0 -1
  99. package/dist/matterbridgeEndpointHelpers.js.map +0 -1
  100. package/dist/matterbridgePlatform.d.ts +0 -285
  101. package/dist/matterbridgePlatform.d.ts.map +0 -1
  102. package/dist/matterbridgePlatform.js.map +0 -1
  103. package/dist/matterbridgeTypes.d.ts +0 -183
  104. package/dist/matterbridgeTypes.d.ts.map +0 -1
  105. package/dist/matterbridgeTypes.js.map +0 -1
  106. package/dist/pluginManager.d.ts +0 -271
  107. package/dist/pluginManager.d.ts.map +0 -1
  108. package/dist/pluginManager.js.map +0 -1
  109. package/dist/shelly.d.ts +0 -92
  110. package/dist/shelly.d.ts.map +0 -1
  111. package/dist/shelly.js.map +0 -1
  112. package/dist/storage/export.d.ts +0 -2
  113. package/dist/storage/export.d.ts.map +0 -1
  114. package/dist/storage/export.js.map +0 -1
  115. package/dist/update.d.ts +0 -32
  116. package/dist/update.d.ts.map +0 -1
  117. package/dist/update.js.map +0 -1
  118. package/dist/utils/colorUtils.d.ts +0 -61
  119. package/dist/utils/colorUtils.d.ts.map +0 -1
  120. package/dist/utils/colorUtils.js.map +0 -1
  121. package/dist/utils/copyDirectory.d.ts +0 -32
  122. package/dist/utils/copyDirectory.d.ts.map +0 -1
  123. package/dist/utils/copyDirectory.js.map +0 -1
  124. package/dist/utils/createZip.d.ts +0 -38
  125. package/dist/utils/createZip.d.ts.map +0 -1
  126. package/dist/utils/createZip.js.map +0 -1
  127. package/dist/utils/deepCopy.d.ts +0 -31
  128. package/dist/utils/deepCopy.d.ts.map +0 -1
  129. package/dist/utils/deepCopy.js.map +0 -1
  130. package/dist/utils/deepEqual.d.ts +0 -53
  131. package/dist/utils/deepEqual.d.ts.map +0 -1
  132. package/dist/utils/deepEqual.js.map +0 -1
  133. package/dist/utils/export.d.ts +0 -10
  134. package/dist/utils/export.d.ts.map +0 -1
  135. package/dist/utils/export.js.map +0 -1
  136. package/dist/utils/isvalid.d.ts +0 -87
  137. package/dist/utils/isvalid.d.ts.map +0 -1
  138. package/dist/utils/isvalid.js.map +0 -1
  139. package/dist/utils/network.d.ts +0 -69
  140. package/dist/utils/network.d.ts.map +0 -1
  141. package/dist/utils/network.js.map +0 -1
  142. package/dist/utils/parameter.d.ts +0 -44
  143. package/dist/utils/parameter.d.ts.map +0 -1
  144. package/dist/utils/parameter.js.map +0 -1
  145. package/dist/utils/wait.d.ts +0 -43
  146. package/dist/utils/wait.d.ts.map +0 -1
  147. package/dist/utils/wait.js.map +0 -1
@@ -1,28 +1,4 @@
1
- /**
2
- * This file contains the class MatterbridgeDevice.
3
- *
4
- * @file matterbridgeDeviceTypes.ts
5
- * @author Luca Liguori
6
- * @date 2024-11-08
7
- * @version 1.0.0
8
- *
9
- * Copyright 2024, 2025, 2026 Luca Liguori.
10
- *
11
- * Licensed under the Apache License, Version 2.0 (the "License");
12
- * you may not use this file except in compliance with the License.
13
- * You may obtain a copy of the License at
14
- *
15
- * http://www.apache.org/licenses/LICENSE-2.0
16
- *
17
- * Unless required by applicable law or agreed to in writing, software
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
- * See the License for the specific language governing permissions and
21
- * limitations under the License. *
22
- */
23
- // @matter
24
1
  import { DeviceTypeId } from '@matter/main';
25
- // @matter clusters
26
2
  import { BooleanState } from '@matter/main/clusters/boolean-state';
27
3
  import { BooleanStateConfiguration } from '@matter/main/clusters/boolean-state-configuration';
28
4
  import { BridgedDeviceBasicInformation } from '@matter/main/clusters/bridged-device-basic-information';
@@ -34,7 +10,6 @@ import { DoorLock } from '@matter/main/clusters/door-lock';
34
10
  import { ElectricalEnergyMeasurement } from '@matter/main/clusters/electrical-energy-measurement';
35
11
  import { ElectricalPowerMeasurement } from '@matter/main/clusters/electrical-power-measurement';
36
12
  import { FanControl } from '@matter/main/clusters/fan-control';
37
- import { FixedLabel } from '@matter/main/clusters/fixed-label';
38
13
  import { FlowMeasurement } from '@matter/main/clusters/flow-measurement';
39
14
  import { FormaldehydeConcentrationMeasurement } from '@matter/main/clusters/formaldehyde-concentration-measurement';
40
15
  import { Groups } from '@matter/main/clusters/groups';
@@ -56,10 +31,9 @@ import { PumpConfigurationAndControl } from '@matter/main/clusters/pump-configur
56
31
  import { RadonConcentrationMeasurement } from '@matter/main/clusters/radon-concentration-measurement';
57
32
  import { RelativeHumidityMeasurement } from '@matter/main/clusters/relative-humidity-measurement';
58
33
  import { SmokeCoAlarm } from '@matter/main/clusters/smoke-co-alarm';
59
- import { SwitchCluster } from '@matter/main/clusters/switch';
34
+ import { Switch } from '@matter/main/clusters/switch';
60
35
  import { TemperatureMeasurement } from '@matter/main/clusters/temperature-measurement';
61
36
  import { Thermostat } from '@matter/main/clusters/thermostat';
62
- import { TimeSynchronization } from '@matter/main/clusters/time-synchronization';
63
37
  import { TotalVolatileOrganicCompoundsConcentrationMeasurement } from '@matter/main/clusters/total-volatile-organic-compounds-concentration-measurement';
64
38
  import { ValveConfigurationAndControl } from '@matter/main/clusters/valve-configuration-and-control';
65
39
  import { WindowCovering } from '@matter/main/clusters/window-covering';
@@ -70,80 +44,48 @@ import { EnergyPreference } from '@matter/main/clusters/energy-preference';
70
44
  import { RvcRunMode } from '@matter/main/clusters/rvc-run-mode';
71
45
  import { RvcOperationalState } from '@matter/main/clusters/rvc-operational-state';
72
46
  import { RvcCleanMode } from '@matter/main/clusters/rvc-clean-mode';
73
- import { ScenesManagement } from '@matter/main/clusters/scenes-management';
74
47
  import { HepaFilterMonitoring } from '@matter/main/clusters/hepa-filter-monitoring';
75
48
  import { ActivatedCarbonFilterMonitoring } from '@matter/main/clusters/activated-carbon-filter-monitoring';
76
49
  import { DeviceEnergyManagementMode } from '@matter/main/clusters/device-energy-management-mode';
50
+ import { AdministratorCommissioning } from '@matter/main/clusters/administrator-commissioning';
51
+ import { EcosystemInformation } from '@matter/main/clusters/ecosystem-information';
52
+ import { CommissionerControl } from '@matter/main/clusters/commissioner-control';
53
+ import { DishwasherAlarm } from '@matter/main/clusters/dishwasher-alarm';
54
+ import { DishwasherMode } from '@matter/main/clusters/dishwasher-mode';
55
+ import { LaundryDryerControls } from '@matter/main/clusters/laundry-dryer-controls';
56
+ import { LaundryWasherControls } from '@matter/main/clusters/laundry-washer-controls';
57
+ import { LaundryWasherMode } from '@matter/main/clusters/laundry-washer-mode';
58
+ import { MicrowaveOvenControl } from '@matter/main/clusters/microwave-oven-control';
59
+ import { MicrowaveOvenMode } from '@matter/main/clusters/microwave-oven-mode';
60
+ import { OperationalState } from '@matter/main/clusters/operational-state';
61
+ import { OvenCavityOperationalState } from '@matter/main/clusters/oven-cavity-operational-state';
62
+ import { OvenMode } from '@matter/main/clusters/oven-mode';
63
+ import { RefrigeratorAlarm } from '@matter/main/clusters/refrigerator-alarm';
64
+ import { RefrigeratorAndTemperatureControlledCabinetMode } from '@matter/main/clusters/refrigerator-and-temperature-controlled-cabinet-mode';
65
+ import { ServiceArea } from '@matter/main/clusters/service-area';
66
+ import { TemperatureControl } from '@matter/main/clusters/temperature-control';
77
67
  export var DeviceClasses;
78
68
  (function (DeviceClasses) {
79
- /** Node device type. */
80
69
  DeviceClasses["Node"] = "Node";
81
- /**
82
- * Utility device type.
83
- * A Utility device type supports configuration and settings.
84
- */
85
- DeviceClasses["Utility"] = "Utility";
86
- /**
87
- * Application device type.
88
- * Application devices types are typically the most datatype endpoints on a node and in the network.
89
- */
90
70
  DeviceClasses["App"] = "App";
91
- /**
92
- * Simple device type.
93
- * A Simple device type supports local control that is persistent, independent, and unsupervised.
94
- */
71
+ DeviceClasses["Utility"] = "Utility";
95
72
  DeviceClasses["Simple"] = "Simple";
96
- /**
97
- * Dynamic device type.
98
- * A Dynamic device type supports intelligent and supervisory services, such as commissioning,
99
- * monitoring, trend analysis, scheduling and central management. A dynamic device type is an
100
- * application device type.
101
- */
102
73
  DeviceClasses["Dynamic"] = "Dynamic";
103
- /** There exists a client application cluster on the endpoint. */
104
74
  DeviceClasses["Client"] = "Client";
105
- /** There exists a server application cluster on the endpoint. */
106
75
  DeviceClasses["Server"] = "Server";
107
- /** The device type is composed of 2 or more device types. */
108
76
  DeviceClasses["Composed"] = "Composed";
109
- /** Composed device type that is composed of 2 or more endpoints with the same device type. */
110
- DeviceClasses["Multiple"] = "Multiple";
111
- /** The endpoint is an Initiator for Zigbee EZ-Mode Finding & Binding. */
112
- DeviceClasses["EZInitiator"] = "EZ-Initiator";
113
- /** The endpoint is a Target for Zigbee EZ-Mode Finding & Binding. */
114
- DeviceClasses["EZTarget"] = "EZ-Target";
115
- /**
116
- * The endpoint represents a Bridged Device, for which information about the state of
117
- * its power source is available to the Bridge
118
- */
77
+ DeviceClasses["Duplicate"] = "Duplicate";
119
78
  DeviceClasses["BridgedPowerSourceInfo"] = "BridgedPowerSourceInfo";
120
79
  })(DeviceClasses || (DeviceClasses = {}));
121
- export const DeviceTypeDefinition = ({ name, code, deviceClass, superSet, revision, requiredServerClusters = [], optionalServerClusters = [], requiredClientClusters = [], optionalClientClusters = [], unknown = false, }) => ({
80
+ export const DeviceTypeDefinition = ({ name, code, deviceClass, revision, requiredServerClusters = [], optionalServerClusters = [], requiredClientClusters = [], optionalClientClusters = [], }) => ({
122
81
  name,
123
82
  code: DeviceTypeId(code),
124
83
  deviceClass,
125
- superSet,
126
84
  revision,
127
85
  requiredServerClusters,
128
86
  optionalServerClusters,
129
87
  requiredClientClusters,
130
88
  optionalClientClusters,
131
- unknown,
132
- });
133
- // Matter 1.0 and 1.1 device types
134
- export const bridge = DeviceTypeDefinition({
135
- name: 'MA-aggregator',
136
- code: 0x000e,
137
- deviceClass: DeviceClasses.Dynamic,
138
- revision: 1,
139
- optionalServerClusters: [Identify.Cluster.id, Actions.Cluster.id],
140
- });
141
- export const aggregator = DeviceTypeDefinition({
142
- name: 'MA-aggregator',
143
- code: 0x000e,
144
- deviceClass: DeviceClasses.Dynamic,
145
- revision: 1,
146
- optionalServerClusters: [Identify.Cluster.id, Actions.Cluster.id],
147
89
  });
148
90
  export const powerSource = DeviceTypeDefinition({
149
91
  name: 'MA-powerSource',
@@ -153,60 +95,52 @@ export const powerSource = DeviceTypeDefinition({
153
95
  requiredServerClusters: [PowerSource.Cluster.id],
154
96
  optionalServerClusters: [],
155
97
  });
156
- /**
157
- 2.5.3. Conditions
158
- Please see the Base Device Type definition for conformance tags.
159
- This device type SHALL only be used for Nodes which have a device type of Bridge.
160
-
161
- 2.5.6. Endpoint Composition
162
- • A Bridged Node endpoint SHALL support one of the following composition patterns:
163
- ◦ Separate Endpoints: All application device types are supported on separate endpoints, and
164
- not on the Bridged Node endpoint. The Bridged Node endpoint’s Descriptor cluster PartsList
165
- attribute SHALL indicate a list of all endpoints representing the functionality of the bridged
166
- device, including the endpoints supporting the application device types, i.e. the full-family
167
- pattern defined in the System Model specification.
168
- ◦ One Endpoint: Both the Bridged Node and one or more application device types are sup
169
- ported on the same endpoint (following application device type rules). Endpoint composi
170
- tion SHALL conform to the application device type(s) definition
171
- */
172
98
  export const bridgedNode = DeviceTypeDefinition({
173
99
  name: 'MA-bridgedNode',
174
100
  code: 0x0013,
175
101
  deviceClass: DeviceClasses.Utility,
176
- revision: 2,
102
+ revision: 3,
177
103
  requiredServerClusters: [BridgedDeviceBasicInformation.Cluster.id],
178
- optionalServerClusters: [PowerSource.Cluster.id],
104
+ optionalServerClusters: [PowerSource.Cluster.id, EcosystemInformation.Cluster.id, AdministratorCommissioning.Cluster.id],
179
105
  });
180
- export const genericSwitch = DeviceTypeDefinition({
181
- name: 'MA-genericswitch',
182
- code: 0x000f,
183
- deviceClass: DeviceClasses.Simple,
106
+ export const electricalSensor = DeviceTypeDefinition({
107
+ name: 'MA-electricalSensor',
108
+ code: 0x0510,
109
+ deviceClass: DeviceClasses.Utility,
184
110
  revision: 1,
185
- requiredServerClusters: [Identify.Cluster.id, SwitchCluster.id],
186
- optionalServerClusters: [FixedLabel.Cluster.id],
111
+ requiredServerClusters: [PowerTopology.Cluster.id],
112
+ optionalServerClusters: [ElectricalPowerMeasurement.Cluster.id, ElectricalEnergyMeasurement.Cluster.id],
113
+ });
114
+ export const deviceEnergyManagement = DeviceTypeDefinition({
115
+ name: 'MA-deviceEnergyManagement',
116
+ code: 0x050d,
117
+ deviceClass: DeviceClasses.Utility,
118
+ revision: 2,
119
+ requiredServerClusters: [DeviceEnergyManagement.Cluster.id, DeviceEnergyManagementMode.Cluster.id],
120
+ optionalServerClusters: [],
187
121
  });
188
122
  export const onOffLight = DeviceTypeDefinition({
189
123
  name: 'MA-onofflight',
190
124
  code: 0x0100,
191
125
  deviceClass: DeviceClasses.Simple,
192
126
  revision: 3,
193
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id],
194
- optionalServerClusters: [LevelControl.Cluster.id, ColorControl.Cluster.id],
127
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
128
+ optionalServerClusters: [LevelControl.Cluster.id],
195
129
  });
196
130
  export const dimmableLight = DeviceTypeDefinition({
197
131
  name: 'MA-dimmablelight',
198
132
  code: 0x0101,
199
133
  deviceClass: DeviceClasses.Simple,
200
134
  revision: 3,
201
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
202
- optionalServerClusters: [ColorControl.Cluster.id],
135
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
136
+ optionalServerClusters: [],
203
137
  });
204
138
  export const colorTemperatureLight = DeviceTypeDefinition({
205
139
  name: 'MA-colortemperaturelight',
206
140
  code: 0x010c,
207
141
  deviceClass: DeviceClasses.Simple,
208
142
  revision: 4,
209
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
143
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
210
144
  optionalServerClusters: [],
211
145
  });
212
146
  export const extendedColorLight = DeviceTypeDefinition({
@@ -214,7 +148,7 @@ export const extendedColorLight = DeviceTypeDefinition({
214
148
  code: 0x010d,
215
149
  deviceClass: DeviceClasses.Simple,
216
150
  revision: 4,
217
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
151
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
218
152
  optionalServerClusters: [],
219
153
  });
220
154
  export const onOffOutlet = DeviceTypeDefinition({
@@ -222,53 +156,80 @@ export const onOffOutlet = DeviceTypeDefinition({
222
156
  code: 0x010a,
223
157
  deviceClass: DeviceClasses.Simple,
224
158
  revision: 3,
225
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id],
159
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
226
160
  optionalServerClusters: [LevelControl.Cluster.id],
227
161
  });
228
162
  export const dimmableOutlet = DeviceTypeDefinition({
229
163
  name: 'MA-dimmablepluginunit',
230
164
  code: 0x010b,
231
165
  deviceClass: DeviceClasses.Simple,
232
- revision: 3,
233
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
166
+ revision: 4,
167
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
234
168
  optionalServerClusters: [],
235
169
  });
236
- export const doorLockDevice = DeviceTypeDefinition({
237
- name: 'MA-doorLock',
238
- code: 0xa,
170
+ export const onOffMountedSwitch = DeviceTypeDefinition({
171
+ name: 'MA-onoffmountedswitch',
172
+ code: 0x010f,
173
+ deviceClass: DeviceClasses.Simple,
174
+ revision: 1,
175
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id],
176
+ optionalServerClusters: [LevelControl.Cluster.id],
177
+ });
178
+ export const dimmableMountedSwitch = DeviceTypeDefinition({
179
+ name: 'MA-dimmablemountedswitch',
180
+ code: 0x0110,
181
+ deviceClass: DeviceClasses.Simple,
182
+ revision: 1,
183
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
184
+ optionalServerClusters: [],
185
+ });
186
+ export const pumpDevice = DeviceTypeDefinition({
187
+ name: 'MA-pump',
188
+ code: 0x303,
239
189
  deviceClass: DeviceClasses.Simple,
240
190
  revision: 3,
241
- requiredServerClusters: [Identify.Cluster.id, DoorLock.Cluster.id],
242
- optionalServerClusters: [Groups.Cluster.id /* , Scenes.Cluster.id,*/],
191
+ requiredServerClusters: [OnOff.Cluster.id, PumpConfigurationAndControl.Cluster.id, Identify.Cluster.id],
192
+ optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
243
193
  });
244
- export const coverDevice = DeviceTypeDefinition({
245
- name: 'MA-windowCovering',
246
- code: 0x202,
194
+ export const waterValve = DeviceTypeDefinition({
195
+ name: 'MA-waterValve',
196
+ code: 0x42,
197
+ deviceClass: DeviceClasses.Simple,
198
+ revision: 1,
199
+ requiredServerClusters: [Identify.Cluster.id, ValveConfigurationAndControl.Cluster.id],
200
+ optionalServerClusters: [FlowMeasurement.Cluster.id],
201
+ });
202
+ export const onOffSwitch = DeviceTypeDefinition({
203
+ name: 'MA-onoffswitch',
204
+ code: 0x0103,
247
205
  deviceClass: DeviceClasses.Simple,
248
206
  revision: 3,
249
- requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
250
- optionalServerClusters: [Groups.Cluster.id /* , Scenes.Cluster.id,*/],
207
+ requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id],
208
+ optionalServerClusters: [Groups.Cluster.id],
251
209
  });
252
- /**
253
- * Remark: it may have a thermostat device type.
254
- * Additional device types MAY also be included in device compositions.
255
- * The FanControl cluster must have the FanModeSequence attribute.
256
- */
257
- export const fanDevice = DeviceTypeDefinition({
258
- name: 'MA-fan',
259
- code: 0x2b,
210
+ export const dimmableSwitch = DeviceTypeDefinition({
211
+ name: 'MA-dimmableswitch',
212
+ code: 0x0104,
260
213
  deviceClass: DeviceClasses.Simple,
261
- revision: 2,
262
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, FanControl.Cluster.id],
263
- optionalServerClusters: [],
214
+ revision: 3,
215
+ requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id],
216
+ optionalServerClusters: [Groups.Cluster.id],
264
217
  });
265
- export const thermostatDevice = DeviceTypeDefinition({
266
- name: 'MA-thermostat',
267
- code: 0x301,
218
+ export const colorTemperatureSwitch = DeviceTypeDefinition({
219
+ name: 'MA-colortemperatureswitch',
220
+ code: 0x0105,
268
221
  deviceClass: DeviceClasses.Simple,
269
222
  revision: 3,
270
- requiredServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
271
- optionalServerClusters: [Groups.Cluster.id /* , Scenes.Cluster.id,*/, ThermostatUserInterfaceConfiguration.Cluster.id, EnergyPreference.Cluster.id, TimeSynchronization.Cluster.id],
223
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
224
+ optionalServerClusters: [Groups.Cluster.id],
225
+ });
226
+ export const genericSwitch = DeviceTypeDefinition({
227
+ name: 'MA-genericswitch',
228
+ code: 0x000f,
229
+ deviceClass: DeviceClasses.Simple,
230
+ revision: 3,
231
+ requiredServerClusters: [Identify.Cluster.id, Switch.Cluster.id],
232
+ optionalServerClusters: [],
272
233
  });
273
234
  export const contactSensor = DeviceTypeDefinition({
274
235
  name: 'MA-contactsensor',
@@ -276,6 +237,7 @@ export const contactSensor = DeviceTypeDefinition({
276
237
  deviceClass: DeviceClasses.Simple,
277
238
  revision: 2,
278
239
  requiredServerClusters: [Identify.Cluster.id, BooleanState.Cluster.id],
240
+ optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
279
241
  });
280
242
  export const lightSensor = DeviceTypeDefinition({
281
243
  name: 'MA-lightsensor',
@@ -288,8 +250,9 @@ export const occupancySensor = DeviceTypeDefinition({
288
250
  name: 'MA-occupancysensor',
289
251
  code: 0x0107,
290
252
  deviceClass: DeviceClasses.Simple,
291
- revision: 3,
253
+ revision: 4,
292
254
  requiredServerClusters: [Identify.Cluster.id, OccupancySensing.Cluster.id],
255
+ optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
293
256
  });
294
257
  export const temperatureSensor = DeviceTypeDefinition({
295
258
  name: 'MA-tempsensor',
@@ -319,49 +282,14 @@ export const humiditySensor = DeviceTypeDefinition({
319
282
  revision: 2,
320
283
  requiredServerClusters: [Identify.Cluster.id, RelativeHumidityMeasurement.Cluster.id],
321
284
  });
322
- export const modeSelect = DeviceTypeDefinition({
323
- name: 'MA-modeselect',
324
- code: 0x27,
285
+ export const smokeCoAlarm = DeviceTypeDefinition({
286
+ name: 'MA-smokeCoAlarm',
287
+ code: 0x0076,
325
288
  deviceClass: DeviceClasses.Simple,
326
289
  revision: 1,
327
- requiredServerClusters: [ModeSelect.Cluster.id],
328
- });
329
- export const roboticVacuumCleaner = DeviceTypeDefinition({
330
- name: 'MA-roboticvacuumcleaner',
331
- code: 0x74,
332
- deviceClass: DeviceClasses.Simple,
333
- revision: 2,
334
- requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
335
- optionalServerClusters: [RvcCleanMode.Cluster.id],
336
- });
337
- // Custom device types without client clusters (not working in Alexa)
338
- export const onOffSwitch = DeviceTypeDefinition({
339
- name: 'MA-onoffswitch',
340
- code: 0x0103,
341
- deviceClass: DeviceClasses.Simple,
342
- revision: 3,
343
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id],
344
- optionalServerClusters: [LevelControl.Cluster.id, ColorControl.Cluster.id],
345
- });
346
- // Custom device types without client clusters (not working in Alexa)
347
- export const dimmableSwitch = DeviceTypeDefinition({
348
- name: 'MA-dimmableswitch',
349
- code: 0x0104,
350
- deviceClass: DeviceClasses.Simple,
351
- revision: 3,
352
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id],
353
- optionalServerClusters: [ColorControl.Cluster.id],
354
- });
355
- // Custom device types without client clusters (not working in Alexa)
356
- export const colorTemperatureSwitch = DeviceTypeDefinition({
357
- name: 'MA-colortemperatureswitch',
358
- code: 0x0105,
359
- deviceClass: DeviceClasses.Simple,
360
- revision: 3,
361
- requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, /* Scenes.Cluster.id,*/ OnOff.Cluster.id, LevelControl.Cluster.id, ColorControl.Cluster.id],
362
- optionalServerClusters: [],
290
+ requiredServerClusters: [Identify.Cluster.id, SmokeCoAlarm.Cluster.id],
291
+ optionalServerClusters: [Groups.Cluster.id, TemperatureMeasurement.Cluster.id, RelativeHumidityMeasurement.Cluster.id, CarbonMonoxideConcentrationMeasurement.Cluster.id],
363
292
  });
364
- // Matter 1.2 and 1.3 device types
365
293
  export const airQualitySensor = DeviceTypeDefinition({
366
294
  name: 'MA-airQualitySensor',
367
295
  code: 0x002c,
@@ -407,81 +335,169 @@ export const rainSensor = DeviceTypeDefinition({
407
335
  requiredServerClusters: [Identify.Cluster.id, BooleanState.Cluster.id],
408
336
  optionalServerClusters: [BooleanStateConfiguration.Cluster.id],
409
337
  });
410
- // Remark: A Smoke CO Alarm device type SHALL support an instance of a Power Source device type on some endpoint.
411
- export const smokeCoAlarm = DeviceTypeDefinition({
412
- name: 'MA-smokeCoAlarm',
413
- code: 0x0076,
338
+ export const doorLockDevice = DeviceTypeDefinition({
339
+ name: 'MA-doorLock',
340
+ code: 0xa,
414
341
  deviceClass: DeviceClasses.Simple,
415
- revision: 1,
416
- requiredServerClusters: [Identify.Cluster.id, SmokeCoAlarm.Cluster.id],
417
- optionalServerClusters: [Groups.Cluster.id, TemperatureMeasurement.Cluster.id, RelativeHumidityMeasurement.Cluster.id, CarbonMonoxideConcentrationMeasurement.Cluster.id],
342
+ revision: 3,
343
+ requiredServerClusters: [Identify.Cluster.id, DoorLock.Cluster.id],
344
+ optionalServerClusters: [],
418
345
  });
419
- /**
420
- * Remark: LevelControl cluster:
421
- * 0 N/A Pump is stopped,
422
- * 1–200 Level / 2 (0.5–100.0%) Pump setpoint in percent
423
- * 201–255 100.0% Pump setpoint is 100.0%
424
- */
425
- export const pumpDevice = DeviceTypeDefinition({
426
- name: 'MA-pump',
427
- code: 0x303,
346
+ export const coverDevice = DeviceTypeDefinition({
347
+ name: 'MA-windowCovering',
348
+ code: 0x202,
428
349
  deviceClass: DeviceClasses.Simple,
429
350
  revision: 3,
430
- requiredServerClusters: [OnOff.Cluster.id, PumpConfigurationAndControl.Cluster.id, Identify.Cluster.id],
431
- optionalServerClusters: [LevelControl.Cluster.id, Groups.Cluster.id, ScenesManagement.Cluster.id, TemperatureMeasurement.Cluster.id, PressureMeasurement.Cluster.id, FlowMeasurement.Cluster.id],
351
+ requiredServerClusters: [Identify.Cluster.id, WindowCovering.Cluster.id],
352
+ optionalServerClusters: [Groups.Cluster.id],
432
353
  });
433
- export const waterValve = DeviceTypeDefinition({
434
- name: 'MA-waterValve',
435
- code: 0x42,
354
+ export const thermostatDevice = DeviceTypeDefinition({
355
+ name: 'MA-thermostat',
356
+ code: 0x301,
436
357
  deviceClass: DeviceClasses.Simple,
437
- revision: 1,
438
- requiredServerClusters: [Identify.Cluster.id, ValveConfigurationAndControl.Cluster.id],
439
- optionalServerClusters: [FlowMeasurement.Cluster.id],
358
+ revision: 4,
359
+ requiredServerClusters: [Identify.Cluster.id, Thermostat.Cluster.id],
360
+ optionalServerClusters: [Groups.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, EnergyPreference.Cluster.id],
361
+ });
362
+ export const fanDevice = DeviceTypeDefinition({
363
+ name: 'MA-fan',
364
+ code: 0x2b,
365
+ deviceClass: DeviceClasses.Simple,
366
+ revision: 3,
367
+ requiredServerClusters: [Identify.Cluster.id, Groups.Cluster.id, FanControl.Cluster.id],
368
+ optionalServerClusters: [OnOff.Cluster.id],
440
369
  });
441
- /**
442
- * Remark: it may have a Thermostat, Temperature Sensor, Humidity Sensor and an Air Quality Sensor device type.
443
- * Additional device types MAY also be included in device compositions.
444
- */
445
370
  export const airPurifier = DeviceTypeDefinition({
446
371
  name: 'MA-airPurifier',
447
372
  code: 0x2d,
448
373
  deviceClass: DeviceClasses.Simple,
449
- revision: 1,
374
+ revision: 2,
450
375
  requiredServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
451
- optionalServerClusters: [Groups.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
452
- });
453
- /**
454
- * Remark: it may have a temperature sensor and a humidity sensor device.
455
- * Additional device types MAY also be included in device compositions.
456
- * The DF (Dead Front) feature is required for the On/Off cluster in this device type:
457
- * - Thermostat LocalTemperature null
458
- * - Temperature Measurement MeasuredValue null
459
- * - Relative Humidity Measurement MeasuredValue null
460
- * - Fan Control SpeedSetting null
461
- * - Fan Control PercentSetting null
462
- */
376
+ optionalServerClusters: [Groups.Cluster.id, OnOff.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
377
+ });
378
+ export const modeSelect = DeviceTypeDefinition({
379
+ name: 'MA-modeselect',
380
+ code: 0x27,
381
+ deviceClass: DeviceClasses.Simple,
382
+ revision: 1,
383
+ requiredServerClusters: [ModeSelect.Cluster.id],
384
+ });
385
+ export const aggregator = DeviceTypeDefinition({
386
+ name: 'MA-aggregator',
387
+ code: 0x000e,
388
+ deviceClass: DeviceClasses.Dynamic,
389
+ revision: 2,
390
+ requiredServerClusters: [],
391
+ optionalServerClusters: [Actions.Cluster.id, Identify.Cluster.id, CommissionerControl.Cluster.id],
392
+ });
393
+ export const bridge = aggregator;
394
+ export const roboticVacuumCleaner = DeviceTypeDefinition({
395
+ name: 'MA-roboticvacuumcleaner',
396
+ code: 0x74,
397
+ deviceClass: DeviceClasses.Simple,
398
+ revision: 3,
399
+ requiredServerClusters: [Identify.Cluster.id, RvcRunMode.Cluster.id, RvcOperationalState.Cluster.id],
400
+ optionalServerClusters: [RvcCleanMode.Cluster.id, ServiceArea.Cluster.id],
401
+ });
402
+ export const laundryWasher = DeviceTypeDefinition({
403
+ name: 'MA-laundrywasher',
404
+ code: 0x73,
405
+ deviceClass: DeviceClasses.Simple,
406
+ revision: 1,
407
+ requiredServerClusters: [OperationalState.Cluster.id],
408
+ optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryWasherControls.Cluster.id, TemperatureControl.Cluster.id],
409
+ });
410
+ export const refrigerator = DeviceTypeDefinition({
411
+ name: 'MA-refrigerator',
412
+ code: 0x70,
413
+ deviceClass: DeviceClasses.Simple,
414
+ revision: 2,
415
+ requiredServerClusters: [Identify.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id, RefrigeratorAlarm.Cluster.id],
416
+ optionalServerClusters: [],
417
+ });
463
418
  export const airConditioner = DeviceTypeDefinition({
464
419
  name: 'MA-airConditioner',
465
420
  code: 0x72,
466
421
  deviceClass: DeviceClasses.Simple,
467
422
  revision: 2,
468
423
  requiredServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, Thermostat.Cluster.id],
469
- optionalServerClusters: [Groups.Cluster.id, ScenesManagement.Cluster.id, FanControl.Cluster.id, ThermostatUserInterfaceConfiguration.Cluster.id, TemperatureMeasurement.Cluster.id, RelativeHumidityMeasurement.Cluster.id],
424
+ optionalServerClusters: [
425
+ Groups.Cluster.id,
426
+ FanControl.Cluster.id,
427
+ ThermostatUserInterfaceConfiguration.Cluster.id,
428
+ TemperatureMeasurement.Cluster.id,
429
+ RelativeHumidityMeasurement.Cluster.id,
430
+ ],
470
431
  });
471
- export const electricalSensor = DeviceTypeDefinition({
472
- name: 'MA-electricalSensor',
473
- code: 0x0510,
474
- deviceClass: DeviceClasses.Utility,
432
+ export const temperatureControlledCabinetCooler = DeviceTypeDefinition({
433
+ name: 'MA-temperaturecontrolledcabinetcooler',
434
+ code: 0x71,
435
+ deviceClass: DeviceClasses.Simple,
436
+ revision: 3,
437
+ requiredServerClusters: [TemperatureControl.Cluster.id, RefrigeratorAndTemperatureControlledCabinetMode.Cluster.id],
438
+ optionalServerClusters: [TemperatureMeasurement.Cluster.id],
439
+ });
440
+ export const temperatureControlledCabinetHeater = DeviceTypeDefinition({
441
+ name: 'MA-temperaturecontrolledcabinetheater',
442
+ code: 0x71,
443
+ deviceClass: DeviceClasses.Simple,
444
+ revision: 3,
445
+ requiredServerClusters: [TemperatureControl.Cluster.id, OvenMode.Cluster.id, OvenCavityOperationalState.Cluster.id],
446
+ optionalServerClusters: [TemperatureMeasurement.Cluster.id],
447
+ });
448
+ export const dishwasher = DeviceTypeDefinition({
449
+ name: 'MA-dishwasher',
450
+ code: 0x75,
451
+ deviceClass: DeviceClasses.Simple,
475
452
  revision: 1,
476
- requiredServerClusters: [PowerTopology.Cluster.id],
477
- optionalServerClusters: [ElectricalPowerMeasurement.Cluster.id, ElectricalEnergyMeasurement.Cluster.id],
453
+ requiredServerClusters: [OperationalState.Cluster.id],
454
+ optionalServerClusters: [Identify.Cluster.id, OnOff.Cluster.id, TemperatureControl.Cluster.id, DishwasherMode.Cluster.id, DishwasherAlarm.Cluster.id],
478
455
  });
479
- export const deviceEnergyManagement = DeviceTypeDefinition({
480
- name: 'MA-deviceEnergyManagement',
481
- code: 0x050d,
482
- deviceClass: DeviceClasses.Utility,
456
+ export const laundryDryer = DeviceTypeDefinition({
457
+ name: 'MA-laundrydryer',
458
+ code: 0x7c,
459
+ deviceClass: DeviceClasses.Simple,
483
460
  revision: 1,
484
- requiredServerClusters: [DeviceEnergyManagement.Cluster.id, DeviceEnergyManagementMode.Cluster.id],
461
+ requiredServerClusters: [OperationalState.Cluster.id],
462
+ optionalServerClusters: [Identify.Cluster.id, LaundryWasherMode.Cluster.id, OnOff.Cluster.id, LaundryDryerControls.Cluster.id, TemperatureControl.Cluster.id],
463
+ });
464
+ export const cookSurface = DeviceTypeDefinition({
465
+ name: 'MA-cooksurface',
466
+ code: 0x77,
467
+ deviceClass: DeviceClasses.Simple,
468
+ revision: 1,
469
+ requiredServerClusters: [TemperatureControl.Cluster.id, TemperatureMeasurement.Cluster.id],
470
+ optionalServerClusters: [OnOff.Cluster.id],
471
+ });
472
+ export const cooktop = DeviceTypeDefinition({
473
+ name: 'MA-cooktop',
474
+ code: 0x78,
475
+ deviceClass: DeviceClasses.Simple,
476
+ revision: 1,
477
+ requiredServerClusters: [OnOff.Cluster.id],
478
+ optionalServerClusters: [Identify.Cluster.id],
479
+ });
480
+ export const oven = DeviceTypeDefinition({
481
+ name: 'MA-oven',
482
+ code: 0x7b,
483
+ deviceClass: DeviceClasses.Simple,
484
+ revision: 2,
485
+ requiredServerClusters: [Identify.Cluster.id],
485
486
  optionalServerClusters: [],
486
487
  });
487
- //# sourceMappingURL=matterbridgeDeviceTypes.js.map
488
+ export const extractorHood = DeviceTypeDefinition({
489
+ name: 'MA-extractorhood',
490
+ code: 0x7a,
491
+ deviceClass: DeviceClasses.Simple,
492
+ revision: 1,
493
+ requiredServerClusters: [FanControl.Cluster.id],
494
+ optionalServerClusters: [Identify.Cluster.id, HepaFilterMonitoring.Cluster.id, ActivatedCarbonFilterMonitoring.Cluster.id],
495
+ });
496
+ export const microwaveOven = DeviceTypeDefinition({
497
+ name: 'MA-microwaveoven',
498
+ code: 0x79,
499
+ deviceClass: DeviceClasses.Simple,
500
+ revision: 1,
501
+ requiredServerClusters: [OperationalState.Cluster.id, MicrowaveOvenMode.Cluster.id, MicrowaveOvenControl.Cluster.id],
502
+ optionalServerClusters: [Identify.Cluster.id, FanControl.Cluster.id],
503
+ });