zigbee-clusters 2.6.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ // Auto-generated TypeScript definitions for zigbee-clusters
2
+ // Generated by scripts/generate-types.js
3
+
1
4
  import * as EventEmitter from "events";
2
5
 
3
6
  type EndpointDescriptor = {
@@ -10,294 +13,987 @@ type ConstructorOptions = {
10
13
  endpointDescriptors: EndpointDescriptor[];
11
14
  sendFrame: (endpointId: number, clusterId: number, frame: Buffer) => Promise<void>;
12
15
  };
13
- interface ZCLNodeCluster extends EventEmitter {
14
- /**
15
- * Command which requests the remote cluster to report its generated commands. Generated
16
- * commands are commands which may be sent by the remote cluster.
17
- *
18
- * TODO: handle the case where `lastResponse===false`. It might be possible that there are
19
- * more commands to be reported than can be transmitted in one report (in practice very
20
- * unlikely though). If `lastResponse===false` invoke `discoverCommandsGenerated` again
21
- * starting from the index where the previous invocation stopped (`maxResults`).
22
- *
23
- * TODO: The manufacturer-specific sub-field SHALL be set to 0 to discover standard commands
24
- * in a ZigBee cluster or 1 to discover manufacturer-specific commands in either a standard or
25
- * a manufacturer-specific cluster. A manufacturer ID in this field of 0xffff (wildcard) will
26
- * discover any manufacture- specific
27
- * commands.
28
- *
29
- * @param {object} [opts=]
30
- * @param {number} [opts.startValue=0]
31
- * @param {number} [opts.maxResults=250]
32
- * @returns {Promise<number[]>}
33
- */
34
- discoverCommandsGenerated({
35
- startValue,
36
- maxResults,
37
- }?: {
16
+
17
+ export interface ZCLNodeCluster extends EventEmitter {
18
+ discoverCommandsGenerated(opts?: {
38
19
  startValue?: number;
39
20
  maxResults?: number;
40
21
  }): Promise<number[]>;
41
- /**
42
- * Command which requests the remote cluster to report its received commands. Received
43
- * commands are commands which may be received by the remote cluster.
44
- *
45
- * TODO: handle the case where `lastResponse===false`. It might be possible that there are
46
- * more commands to be reported than can be transmitted in one report (in practice very
47
- * unlikely though). If `lastResponse===false` invoke `discoverCommandsGenerated` again
48
- * starting from the index where the previous invocation stopped (`maxResults`).
49
- *
50
- * TODO: The manufacturer-specific sub-field SHALL be set to 0 to discover standard commands
51
- * in a ZigBee cluster or 1 to discover manufacturer-specific commands in either a standard or
52
- * a manufacturer-specific cluster. A manufacturer ID in this field of 0xffff (wildcard) will
53
- * discover any manufacture- specific commands.
54
- *
55
- * @param {object} [opts=]
56
- * @param {number} [opts.startValue=0]
57
- * @param {number} [opts.maxResults=255]
58
- * @returns {Promise<number[]>}
59
- */
60
- discoverCommandsReceived({
61
- startValue,
62
- maxResults,
63
- }?: {
22
+
23
+ discoverCommandsReceived(opts?: {
64
24
  startValue?: number;
65
25
  maxResults?: number;
66
26
  }): Promise<number[]>;
67
- /**
68
- * Command which reads a given set of attributes from the remote cluster.
69
- * Note: do not mix regular and manufacturer specific attributes.
70
- * @param {string[]} attributeNames
71
- * @param {{timeout: number}} [opts=]
72
- * @returns {Promise<Object.<string, unknown>>} - Object with values (e.g. `{ onOff: true }`)
73
- */
27
+
74
28
  readAttributes(
75
29
  attributeNames: string[],
76
- opts?: {
77
- timeout: number;
78
- }
79
- ): Promise<{
80
- [x: string]: unknown;
81
- }>;
82
- /**
83
- * Command which writes a given set of attribute key-value pairs to the remote cluster.
84
- * Note: do not mix regular and manufacturer specific attributes.
85
- * @param {object} attributes - Object with attribute names as keys and their values (e.g. `{
86
- * onOff: true, fakeAttributeName: 10 }`.
87
- * @returns {Promise<*|{attributes: *}>}
88
- */
89
- writeAttributes(attributes?: object): Promise<
90
- | any
91
- | {
92
- attributes: any;
93
- }
94
- >;
95
- /**
96
- * Command which configures attribute reporting for the given `attributes` on the remote cluster.
97
- * Note: do not mix regular and manufacturer specific attributes.
98
- * @param {object} attributes - Attribute reporting configuration (e.g. `{ onOff: {
99
- * minInterval: 0, maxInterval: 300, minChange: 1 } }`)
100
- * @returns {Promise<void>}
101
- */
30
+ opts?: { timeout?: number }
31
+ ): Promise<{ [x: string]: unknown }>;
32
+
33
+ writeAttributes(attributes?: object): Promise<void>;
34
+
102
35
  configureReporting(attributes?: object): Promise<void>;
103
- /**
104
- * @typedef {object} ReadReportingConfiguration
105
- * @property {ZCLDataTypes.enum8Status} status
106
- * @property {'reported'|'received'} direction
107
- * @property {number} attributeId
108
- * @property {ZCLDataType.id} [attributeDataType]
109
- * @property {number} [minInterval]
110
- * @property {number} [maxInterval]
111
- * @property {number} [minChange]
112
- * @property {number} [timeoutPeriod]
113
- */
114
- /**
115
- * Command which retrieves the reporting configurations for the given `attributes` from the
116
- * remote cluster. Currently this only takes the 'reported' into account, this represents the
117
- * reports the remote cluster would sent out, instead of receive (which is likely the most
118
- * interesting).
119
- * Note: do not mix regular and manufacturer specific attributes.
120
- * @param {Array} attributes - Array with number/strings (either attribute id, or attribute name).
121
- * @returns {Promise<ReadReportingConfiguration[]>} - Returns array with
122
- * ReadReportingConfiguration objects per attribute.
123
- */
124
- readReportingConfiguration(attributes?: any[]): Promise<
125
- {
126
- status: any;
127
- direction: "reported" | "received";
128
- attributeId: number;
129
- attributeDataType?: number;
130
- minInterval?: number;
131
- maxInterval?: number;
132
- minChange?: number;
133
- timeoutPeriod?: number;
134
- }[]
135
- >;
136
- /**
137
- * Command which discovers the implemented attributes on the remote cluster.
138
- *
139
- * TODO: handle the case where `lastResponse===false`. It might be possible that there are
140
- * more commands to be reported than can be transmitted in one report (in practice very
141
- * unlikely though). If `lastResponse===false` invoke `discoverCommandsGenerated` again
142
- * starting from the index where the previous invocation stopped (`maxResults`).
143
- *
144
- * TODO: The manufacturer specific sub-field SHALL be set to 0 to discover standard attributes
145
- * in a ZigBee cluster or 1 to discover manufacturer specific attributes in either a standard
146
- * or a manufacturer specific cluster.
147
- *
148
- * @returns {Promise<Array>} - Array with string or number values (depending on if the
149
- * attribute
150
- * is implemented in zigbee-clusters or not).
151
- */
152
- discoverAttributes(): Promise<any[]>;
153
- /**
154
- * Command which discovers the implemented attributes on the remote cluster, the difference with
155
- * `discoverAttributes` is that this command also reports the access control field of the
156
- * attribute (whether it is readable/writable/reportable).
157
- *
158
- * TODO: handle the case where `lastResponse===false`. It might be possible that there are
159
- * more commands to be reported than can be transmitted in one report (in practice very
160
- * unlikely though). If `lastResponse===false` invoke `discoverCommandsGenerated` again
161
- * starting from the index where the previous invocation stopped (`maxResults`).
162
- *
163
- * TODO: The manufacturer-specific sub-field SHALL be set to 0 to discover standard attributes
164
- * in a ZigBee cluster or 1 to discover manufacturer-specific attributes in either a standard
165
- * or a manufacturer- specific cluster. A manufacturer ID in this field of 0xffff (wildcard)
166
- * will discover any manufacture-specific attributes.
167
- *
168
- * @returns {Promise<Array>} - Returns an array with objects with attribute names as keys and
169
- * following object as values: `{name: string, id: number, acl: { readable: boolean, writable:
170
- * boolean, reportable: boolean } }`. Note that `name` is optional based on whether the
171
- * attribute is implemented in zigbee-clusters.
172
- */
173
- discoverAttributesExtended(): Promise<any[]>;
174
- }
175
-
176
- interface BasicCluster extends ZCLNodeCluster {
36
+
37
+ readReportingConfiguration(attributes?: (string | number)[]): Promise<{
38
+ status: string;
39
+ direction: 'reported' | 'received';
40
+ attributeId: number;
41
+ attributeDataType?: number;
42
+ minInterval?: number;
43
+ maxInterval?: number;
44
+ minChange?: number;
45
+ timeoutPeriod?: number;
46
+ }[]>;
47
+
48
+ discoverAttributes(): Promise<(string | number)[]>;
49
+
50
+ discoverAttributesExtended(): Promise<{
51
+ name?: string;
52
+ id: number;
53
+ acl: { readable: boolean; writable: boolean; reportable: boolean };
54
+ }[]>;
55
+ }
56
+
57
+ export interface AlarmsCluster extends ZCLNodeCluster {
58
+ resetAllAlarms(): Promise<void>;
59
+ getAlarm(): Promise<void>;
60
+ resetAlarmLog(): Promise<void>;
61
+ }
62
+
63
+ export interface AnalogInputClusterAttributes {
64
+ description?: string;
65
+ maxPresentValue?: number;
66
+ minPresentValue?: number;
67
+ outOfService?: boolean;
68
+ presentValue?: number;
69
+ reliability?: 'noFaultDetected' | 'noSensor' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'noOutput' | 'unreliableOther' | 'processError' | 'configurationError';
70
+ resolution?: number;
71
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
72
+ applicationType?: number;
73
+ }
74
+
75
+ export interface AnalogInputCluster extends ZCLNodeCluster {
76
+ readAttributes<K extends 'description' | 'maxPresentValue' | 'minPresentValue' | 'outOfService' | 'presentValue' | 'reliability' | 'resolution' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<AnalogInputClusterAttributes, K>>;
77
+ writeAttributes(attributes: Partial<AnalogInputClusterAttributes>): Promise<void>;
78
+ }
79
+
80
+ export interface AnalogOutputClusterAttributes {
81
+ description?: string;
82
+ maxPresentValue?: number;
83
+ minPresentValue?: number;
84
+ outOfService?: boolean;
85
+ presentValue?: number;
86
+ reliability?: 'noFaultDetected' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'unreliableOther' | 'processError' | 'configurationError';
87
+ relinquishDefault?: number;
88
+ resolution?: number;
89
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
90
+ applicationType?: number;
91
+ }
92
+
93
+ export interface AnalogOutputCluster extends ZCLNodeCluster {
94
+ readAttributes<K extends 'description' | 'maxPresentValue' | 'minPresentValue' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'resolution' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<AnalogOutputClusterAttributes, K>>;
95
+ writeAttributes(attributes: Partial<AnalogOutputClusterAttributes>): Promise<void>;
96
+ }
97
+
98
+ export interface AnalogValueClusterAttributes {
99
+ description?: string;
100
+ outOfService?: boolean;
101
+ presentValue?: number;
102
+ reliability?: 'noFaultDetected' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'unreliableOther' | 'processError' | 'configurationError';
103
+ relinquishDefault?: number;
104
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
105
+ applicationType?: number;
106
+ }
107
+
108
+ export interface AnalogValueCluster extends ZCLNodeCluster {
109
+ readAttributes<K extends 'description' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<AnalogValueClusterAttributes, K>>;
110
+ writeAttributes(attributes: Partial<AnalogValueClusterAttributes>): Promise<void>;
111
+ }
112
+
113
+ export interface BallastConfigurationClusterAttributes {
114
+ physicalMinLevel?: number;
115
+ physicalMaxLevel?: number;
116
+ ballastStatus?: Partial<{ nonOperational: boolean; lampNotInSocket: boolean }>;
117
+ minLevel?: number;
118
+ maxLevel?: number;
119
+ powerOnLevel?: number;
120
+ powerOnFadeTime?: number;
121
+ intrinsicBallastFactor?: number;
122
+ ballastFactorAdjustment?: number;
123
+ lampQuantity?: number;
124
+ lampType?: string;
125
+ lampManufacturer?: string;
126
+ lampRatedHours?: number;
127
+ lampBurnHours?: number;
128
+ lampAlarmMode?: Partial<{ lampBurnHours: boolean }>;
129
+ lampBurnHoursTripPoint?: number;
130
+ }
131
+
132
+ export interface BallastConfigurationCluster extends ZCLNodeCluster {
133
+ readAttributes<K extends 'physicalMinLevel' | 'physicalMaxLevel' | 'ballastStatus' | 'minLevel' | 'maxLevel' | 'powerOnLevel' | 'powerOnFadeTime' | 'intrinsicBallastFactor' | 'ballastFactorAdjustment' | 'lampQuantity' | 'lampType' | 'lampManufacturer' | 'lampRatedHours' | 'lampBurnHours' | 'lampAlarmMode' | 'lampBurnHoursTripPoint'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BallastConfigurationClusterAttributes, K>>;
134
+ writeAttributes(attributes: Partial<BallastConfigurationClusterAttributes>): Promise<void>;
135
+ }
136
+
137
+ export interface BasicClusterAttributes {
138
+ zclVersion?: number;
139
+ appVersion?: number;
140
+ stackVersion?: number;
141
+ hwVersion?: number;
142
+ manufacturerName?: string;
143
+ modelId?: string;
144
+ dateCode?: string;
145
+ powerSource?: 'unknown' | 'mains' | 'mains3phase' | 'battery' | 'dc' | 'emergencyMains' | 'emergencyTransfer';
146
+ appProfileVersion?: number;
147
+ locationDesc?: string;
148
+ physicalEnv?: 'Unspecified' | 'Atrium' | 'Bar' | 'Courtyard' | 'Bathroom' | 'Bedroom' | 'BilliardRoom' | 'UtilityRoom' | 'Cellar' | 'StorageCloset' | 'Theater' | 'Office' | 'Deck' | 'Den' | 'DiningRoom' | 'ElectricalRoom' | 'Elevator' | 'Entry' | 'FamilyRoom' | 'MainFloor' | 'Upstairs' | 'Downstairs' | 'Basement' | 'Gallery' | 'GameRoom' | 'Garage' | 'Gym' | 'Hallway' | 'House' | 'Kitchen' | 'LaundryRoom' | 'Library' | 'MasterBedroom' | 'MudRoom' | 'Nursery' | 'Pantry' | 'Outside' | 'Pool' | 'Porch' | 'SewingRoom' | 'SittingRoom' | 'Stairway' | 'Yard' | 'Attic' | 'HotTub' | 'LivingRoom' | 'Sauna' | 'Workshop' | 'GuestBedroom' | 'GuestBath' | 'PowderRoom' | 'BackYard' | 'FrontYard' | 'Patio' | 'Driveway' | 'SunRoom' | 'Spa' | 'Whirlpool' | 'Shed' | 'EquipmentStorage' | 'HobbyRoom' | 'Fountain' | 'Pond' | 'ReceptionRoom' | 'BreakfastRoom' | 'Nook' | 'Garden' | 'Balcony' | 'PanicRoom' | 'Terrace' | 'Roof' | 'Toilet' | 'ToiletMain' | 'OutsideToilet' | 'ShowerRoom' | 'Study' | 'FrontGarden' | 'BackGarden' | 'Kettle' | 'Television' | 'Stove' | 'Microwave' | 'Toaster' | 'Vacuum' | 'Appliance' | 'FrontDoor' | 'BackDoor' | 'FridgeDoor' | 'MedicationCabinetDoor' | 'WardrobeDoor' | 'FrontCupboardDoor' | 'OtherDoor' | 'WaitingRoom' | 'TriageRoom' | 'DoctorsOffice' | 'PatientsPrivateRoom' | 'ConsultationRoom' | 'NurseStation' | 'Ward' | 'Corridor' | 'OperatingTheatre' | 'DentalSurgeryRoom' | 'MedicalImagingRoom' | 'DecontaminationRoom' | 'Unknown';
149
+ deviceEnabled?: boolean;
150
+ alarmMask?: Partial<{ hardwareFault: boolean; softwareFault: boolean }>;
151
+ disableLocalConfig?: Partial<{ factoryResetDisabled: boolean; configurationDisabled: boolean }>;
152
+ swBuildId?: string;
153
+ }
154
+
155
+ export interface BasicCluster extends ZCLNodeCluster {
156
+ readAttributes<K extends 'zclVersion' | 'appVersion' | 'stackVersion' | 'hwVersion' | 'manufacturerName' | 'modelId' | 'dateCode' | 'powerSource' | 'appProfileVersion' | 'locationDesc' | 'physicalEnv' | 'deviceEnabled' | 'alarmMask' | 'disableLocalConfig' | 'swBuildId'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BasicClusterAttributes, K>>;
157
+ writeAttributes(attributes: Partial<BasicClusterAttributes>): Promise<void>;
177
158
  factoryReset(): Promise<void>;
178
159
  }
179
160
 
180
- interface PowerConfigurationCluster extends ZCLNodeCluster {}
161
+ export interface BinaryInputClusterAttributes {
162
+ activeText?: string;
163
+ description?: string;
164
+ inactiveText?: string;
165
+ outOfService?: boolean;
166
+ polarity?: 'normal' | 'reverse';
167
+ presentValue?: boolean;
168
+ reliability?: 'noFaultDetected' | 'noSensor' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'noOutput' | 'unreliableOther' | 'processError' | 'configurationError';
169
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
170
+ applicationType?: number;
171
+ }
181
172
 
182
- interface OnOffCluster extends ZCLNodeCluster {
183
- setOn(): Promise<void>;
173
+ export interface BinaryInputCluster extends ZCLNodeCluster {
174
+ readAttributes<K extends 'activeText' | 'description' | 'inactiveText' | 'outOfService' | 'polarity' | 'presentValue' | 'reliability' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BinaryInputClusterAttributes, K>>;
175
+ writeAttributes(attributes: Partial<BinaryInputClusterAttributes>): Promise<void>;
176
+ }
177
+
178
+ export interface BinaryOutputClusterAttributes {
179
+ activeText?: string;
180
+ description?: string;
181
+ inactiveText?: string;
182
+ minimumOffTime?: number;
183
+ minimumOnTime?: number;
184
+ outOfService?: boolean;
185
+ polarity?: 'normal' | 'reverse';
186
+ presentValue?: boolean;
187
+ reliability?: 'noFaultDetected' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'unreliableOther' | 'processError' | 'configurationError';
188
+ relinquishDefault?: boolean;
189
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
190
+ applicationType?: number;
191
+ }
192
+
193
+ export interface BinaryOutputCluster extends ZCLNodeCluster {
194
+ readAttributes<K extends 'activeText' | 'description' | 'inactiveText' | 'minimumOffTime' | 'minimumOnTime' | 'outOfService' | 'polarity' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BinaryOutputClusterAttributes, K>>;
195
+ writeAttributes(attributes: Partial<BinaryOutputClusterAttributes>): Promise<void>;
196
+ }
197
+
198
+ export interface BinaryValueClusterAttributes {
199
+ activeText?: string;
200
+ description?: string;
201
+ inactiveText?: string;
202
+ minimumOffTime?: number;
203
+ minimumOnTime?: number;
204
+ outOfService?: boolean;
205
+ polarity?: 'normal' | 'reverse';
206
+ presentValue?: boolean;
207
+ reliability?: 'noFaultDetected' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'unreliableOther' | 'processError' | 'configurationError';
208
+ relinquishDefault?: boolean;
209
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
210
+ applicationType?: number;
211
+ }
212
+
213
+ export interface BinaryValueCluster extends ZCLNodeCluster {
214
+ readAttributes<K extends 'activeText' | 'description' | 'inactiveText' | 'minimumOffTime' | 'minimumOnTime' | 'outOfService' | 'polarity' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BinaryValueClusterAttributes, K>>;
215
+ writeAttributes(attributes: Partial<BinaryValueClusterAttributes>): Promise<void>;
216
+ }
217
+
218
+ export interface ColorControlClusterAttributes {
219
+ currentHue?: number;
220
+ currentSaturation?: number;
221
+ currentX?: number;
222
+ currentY?: number;
223
+ colorTemperatureMireds?: number;
224
+ colorMode?: 'currentHueAndCurrentSaturation' | 'currentXAndCurrentY' | 'colorTemperatureMireds';
225
+ colorCapabilities?: Partial<{ hueAndSaturation: boolean; enhancedHue: boolean; colorLoop: boolean; xy: boolean; colorTemperature: boolean }>;
226
+ colorTempPhysicalMinMireds?: number;
227
+ colorTempPhysicalMaxMireds?: number;
228
+ }
229
+
230
+ export interface ColorControlCluster extends ZCLNodeCluster {
231
+ readAttributes<K extends 'currentHue' | 'currentSaturation' | 'currentX' | 'currentY' | 'colorTemperatureMireds' | 'colorMode' | 'colorCapabilities' | 'colorTempPhysicalMinMireds' | 'colorTempPhysicalMaxMireds'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<ColorControlClusterAttributes, K>>;
232
+ writeAttributes(attributes: Partial<ColorControlClusterAttributes>): Promise<void>;
233
+ moveToHue(args: { hue: number; direction: 'shortestDistance' | 'longestDistance' | 'up' | 'down'; transitionTime: number }): Promise<void>;
234
+ moveToSaturation(args: { saturation: number; transitionTime: number }): Promise<void>;
235
+ moveToHueAndSaturation(args: { hue: number; saturation: number; transitionTime: number }): Promise<void>;
236
+ moveToColor(args: { colorX: number; colorY: number; transitionTime: number }): Promise<void>;
237
+ moveToColorTemperature(args: { colorTemperature: number; transitionTime: number }): Promise<void>;
238
+ }
239
+
240
+ export interface DehumidificationControlCluster extends ZCLNodeCluster {
241
+ }
242
+
243
+ export interface DeviceTemperatureClusterAttributes {
244
+ currentTemperature?: number;
245
+ minTempExperienced?: number;
246
+ maxTempExperienced?: number;
247
+ overTempTotalDwell?: number;
248
+ deviceTempAlarmMask?: Partial<{ deviceTemperatureTooLow: boolean; deviceTemperatureTooHigh: boolean }>;
249
+ lowTempThreshold?: number;
250
+ highTempThreshold?: number;
251
+ lowTempDwellTripPoint?: number;
252
+ highTempDwellTripPoint?: number;
253
+ }
254
+
255
+ export interface DeviceTemperatureCluster extends ZCLNodeCluster {
256
+ readAttributes<K extends 'currentTemperature' | 'minTempExperienced' | 'maxTempExperienced' | 'overTempTotalDwell' | 'deviceTempAlarmMask' | 'lowTempThreshold' | 'highTempThreshold' | 'lowTempDwellTripPoint' | 'highTempDwellTripPoint'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<DeviceTemperatureClusterAttributes, K>>;
257
+ writeAttributes(attributes: Partial<DeviceTemperatureClusterAttributes>): Promise<void>;
258
+ }
259
+
260
+ export interface DiagnosticsCluster extends ZCLNodeCluster {
261
+ }
262
+
263
+ export interface DoorLockClusterAttributes {
264
+ lockState?: 'notFullyLocked' | 'locked' | 'unlocked' | 'undefined';
265
+ lockType?: 'deadBolt' | 'magnetic' | 'other' | 'mortise' | 'rim' | 'latchBolt' | 'cylindricalLock' | 'tubularLock' | 'interconnectedLock' | 'deadLatch' | 'doorFurniture';
266
+ actuatorEnabled?: boolean;
267
+ doorState?: 'open' | 'closed' | 'errorJammed' | 'errorForcedOpen' | 'errorUnspecified' | 'undefined';
268
+ doorOpenEvents?: number;
269
+ doorClosedEvents?: number;
270
+ openPeriod?: number;
271
+ numberOfLogRecordsSupported?: number;
272
+ numberOfTotalUsersSupported?: number;
273
+ numberOfPINUsersSupported?: number;
274
+ numberOfRFIDUsersSupported?: number;
275
+ numberOfWeekDaySchedulesSupportedPerUser?: number;
276
+ numberOfYearDaySchedulesSupportedPerUser?: number;
277
+ numberOfHolidaySchedulesSupported?: number;
278
+ maxPINCodeLength?: number;
279
+ minPINCodeLength?: number;
280
+ maxRFIDCodeLength?: number;
281
+ minRFIDCodeLength?: number;
282
+ enableLogging?: boolean;
283
+ language?: string;
284
+ ledSettings?: number;
285
+ autoRelockTime?: number;
286
+ soundVolume?: number;
287
+ operatingMode?: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage';
288
+ supportedOperatingModes?: Partial<{ normal: boolean; vacation: boolean; privacy: boolean; noRFLockOrUnlock: boolean; passage: boolean }>;
289
+ defaultConfigurationRegister?: Partial<{ enableLocalProgramming: boolean; keypadInterfaceDefaultAccess: boolean; rfInterfaceDefaultAccess: boolean; reserved3: boolean; reserved4: boolean; soundEnabled: boolean; autoRelockTimeSet: boolean; ledSettingsSet: boolean }>;
290
+ enableLocalProgramming?: boolean;
291
+ enableOneTouchLocking?: boolean;
292
+ enableInsideStatusLED?: boolean;
293
+ enablePrivacyModeButton?: boolean;
294
+ wrongCodeEntryLimit?: number;
295
+ userCodeTemporaryDisableTime?: number;
296
+ sendPINOverTheAir?: boolean;
297
+ requirePINforRFOperation?: boolean;
298
+ securityLevel?: 'network' | 'apsSecurity';
299
+ alarmMask?: Partial<{ deadboltJammed: boolean; lockResetToFactoryDefaults: boolean; reserved2: boolean; rfModulePowerCycled: boolean; tamperAlarmWrongCodeEntryLimit: boolean; tamperAlarmFrontEscutcheonRemoved: boolean; forcedDoorOpenUnderDoorLockedCondition: boolean }>;
300
+ keypadOperationEventMask?: Partial<{ unknownOrManufacturerSpecificKeypadOperationEvent: boolean; lockSourceKeypad: boolean; unlockSourceKeypad: boolean; lockSourceKeypadErrorInvalidPIN: boolean; lockSourceKeypadErrorInvalidSchedule: boolean; unlockSourceKeypadErrorInvalidCode: boolean; unlockSourceKeypadErrorInvalidSchedule: boolean; nonAccessUserOperationEventSourceKeypad: boolean }>;
301
+ rfOperationEventMask?: Partial<{ unknownOrManufacturerSpecificKeypadOperationEvent: boolean; lockSourceRF: boolean; unlockSourceRF: boolean; lockSourceRFErrorInvalidCode: boolean; lockSourceRFErrorInvalidSchedule: boolean; unlockSourceRFErrorInvalidCode: boolean; unlockSourceRFErrorInvalidSchedule: boolean }>;
302
+ manualOperationEventMask?: Partial<{ unknownOrManufacturerSpecificManualOperationEvent: boolean; thumbturnLock: boolean; thumbturnUnlock: boolean; oneTouchLock: boolean; keyLock: boolean; keyUnlock: boolean; autoLock: boolean; scheduleLock: boolean; scheduleUnlock: boolean; manualLock: boolean; manualUnlock: boolean }>;
303
+ rfidOperationEventMask?: Partial<{ unknownOrManufacturerSpecificKeypadOperationEvent: boolean; lockSourceRFID: boolean; unlockSourceRFID: boolean; lockSourceRFIDErrorInvalidRFIDID: boolean; lockSourceRFIDErrorInvalidSchedule: boolean; unlockSourceRFIDErrorInvalidRFIDID: boolean; unlockSourceRFIDErrorInvalidSchedule: boolean }>;
304
+ keypadProgrammingEventMask?: Partial<{ unknownOrManufacturerSpecificKeypadProgrammingEvent: boolean; masterCodeChanged: boolean; pinCodeAdded: boolean; pinCodeDeleted: boolean; pinCodeChanged: boolean }>;
305
+ rfProgrammingEventMask?: Partial<{ unknownOrManufacturerSpecificRFProgrammingEvent: boolean; reserved1: boolean; pinCodeAdded: boolean; pinCodeDeleted: boolean; pinCodeChanged: boolean; rfidCodeAdded: boolean; rfidCodeDeleted: boolean }>;
306
+ rfidProgrammingEventMask?: Partial<{ unknownOrManufacturerSpecificRFIDProgrammingEvent: boolean; rfidCodeAdded: boolean; rfidCodeDeleted: boolean }>;
307
+ }
308
+
309
+ export interface DoorLockCluster extends ZCLNodeCluster {
310
+ readAttributes<K extends 'lockState' | 'lockType' | 'actuatorEnabled' | 'doorState' | 'doorOpenEvents' | 'doorClosedEvents' | 'openPeriod' | 'numberOfLogRecordsSupported' | 'numberOfTotalUsersSupported' | 'numberOfPINUsersSupported' | 'numberOfRFIDUsersSupported' | 'numberOfWeekDaySchedulesSupportedPerUser' | 'numberOfYearDaySchedulesSupportedPerUser' | 'numberOfHolidaySchedulesSupported' | 'maxPINCodeLength' | 'minPINCodeLength' | 'maxRFIDCodeLength' | 'minRFIDCodeLength' | 'enableLogging' | 'language' | 'ledSettings' | 'autoRelockTime' | 'soundVolume' | 'operatingMode' | 'supportedOperatingModes' | 'defaultConfigurationRegister' | 'enableLocalProgramming' | 'enableOneTouchLocking' | 'enableInsideStatusLED' | 'enablePrivacyModeButton' | 'wrongCodeEntryLimit' | 'userCodeTemporaryDisableTime' | 'sendPINOverTheAir' | 'requirePINforRFOperation' | 'securityLevel' | 'alarmMask' | 'keypadOperationEventMask' | 'rfOperationEventMask' | 'manualOperationEventMask' | 'rfidOperationEventMask' | 'keypadProgrammingEventMask' | 'rfProgrammingEventMask' | 'rfidProgrammingEventMask'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<DoorLockClusterAttributes, K>>;
311
+ writeAttributes(attributes: Partial<DoorLockClusterAttributes>): Promise<void>;
312
+ lockDoor(args?: { pinCode?: Buffer }): Promise<{ status: number }>;
313
+ unlockDoor(args?: { pinCode?: Buffer }): Promise<{ status: number }>;
314
+ toggle(args?: { pinCode?: Buffer }): Promise<{ status: number }>;
315
+ unlockWithTimeout(args: { timeout: number; pinCode?: Buffer }): Promise<{ status: number }>;
316
+ getLogRecord(args: { logIndex: number }): Promise<{ logEntryId: number; timestamp: number; eventType: number; source: number; eventIdOrAlarmCode: number; userId: number; pin: Buffer }>;
317
+ setPINCode(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; pinCode?: Buffer }): Promise<{ status: number }>;
318
+ getPINCode(args: { userId: number }): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; pinCode: Buffer }>;
319
+ clearPINCode(args: { userId: number }): Promise<{ status: number }>;
320
+ clearAllPINCodes(): Promise<{ status: number }>;
321
+ setUserStatus(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported' }): Promise<{ status: number }>;
322
+ getUserStatus(args: { userId: number }): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported' }>;
323
+ setWeekDaySchedule(args: { scheduleId: number; userId: number; daysMask: Partial<{ sunday: boolean; monday: boolean; tuesday: boolean; wednesday: boolean; thursday: boolean; friday: boolean; saturday: boolean }>; startHour: number; startMinute: number; endHour: number; endMinute: number }): Promise<{ status: number }>;
324
+ getWeekDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ scheduleId: number; userId: number; status: number; daysMask: Partial<{ sunday: boolean; monday: boolean; tuesday: boolean; wednesday: boolean; thursday: boolean; friday: boolean; saturday: boolean }>; startHour: number; startMinute: number; endHour: number; endMinute: number }>;
325
+ clearWeekDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ status: number }>;
326
+ setYearDaySchedule(args: { scheduleId: number; userId: number; localStartTime: number; localEndTime: number }): Promise<{ status: number }>;
327
+ getYearDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ scheduleId: number; userId: number; status: number; localStartTime: number; localEndTime: number }>;
328
+ clearYearDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ status: number }>;
329
+ setHolidaySchedule(args: { holidayScheduleId: number; localStartTime: number; localEndTime: number; operatingModeDuringHoliday: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage' }): Promise<{ status: number }>;
330
+ getHolidaySchedule(args: { holidayScheduleId: number }): Promise<{ holidayScheduleId: number; status: number; localStartTime: number; localEndTime: number; operatingMode: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage' }>;
331
+ clearHolidaySchedule(args: { holidayScheduleId: number }): Promise<{ status: number }>;
332
+ setUserType(args: { userId: number; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported' }): Promise<{ status: number }>;
333
+ getUserType(args: { userId: number }): Promise<{ userId: number; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported' }>;
334
+ setRFIDCode(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; rfidCode?: Buffer }): Promise<{ status: number }>;
335
+ getRFIDCode(args: { userId: number }): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; rfidCode: Buffer }>;
336
+ clearRFIDCode(args: { userId: number }): Promise<{ status: number }>;
337
+ clearAllRFIDCodes(): Promise<{ status: number }>;
338
+ operationEventNotification(args: { operationEventSource: number; operationEventCode: number; userId: number; pin?: Buffer; zigBeeLocalTime: number; data?: Buffer }): Promise<void>;
339
+ programmingEventNotification(args: { programEventSource: number; programEventCode: number; userId: number; pin?: Buffer; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; zigBeeLocalTime: number; data?: Buffer }): Promise<void>;
340
+ }
341
+
342
+ export interface ElectricalMeasurementClusterAttributes {
343
+ measurementType?: Partial<{ activeMeasurementAC: boolean; reactiveMeasurementAC: boolean; apparentMeasurementAC: boolean; phaseAMeasurement: boolean; phaseBMeasurement: boolean; phaseCMeasurement: boolean; dcMeasurement: boolean; harmonicsMeasurement: boolean; powerQualityMeasurement: boolean }>;
344
+ acFrequency?: number;
345
+ measuredPhase1stHarmonicCurrent?: number;
346
+ acFrequencyMultiplier?: number;
347
+ acFrequencyDivisor?: number;
348
+ phaseHarmonicCurrentMultiplier?: number;
349
+ rmsVoltage?: number;
350
+ rmsCurrent?: number;
351
+ activePower?: number;
352
+ reactivePower?: number;
353
+ acVoltageMultiplier?: number;
354
+ acVoltageDivisor?: number;
355
+ acCurrentMultiplier?: number;
356
+ acCurrentDivisor?: number;
357
+ acPowerMultiplier?: number;
358
+ acPowerDivisor?: number;
359
+ acAlarmsMask?: Partial<{ voltageOverload: boolean; currentOverload: boolean; activePowerOverload: boolean; reactivePowerOverload: boolean; averageRMSOverVoltage: boolean; averageRMSUnderVoltage: boolean; rmsExtremeOverVoltage: boolean; rmsExtremeUnderVoltage: boolean; rmsVoltageSag: boolean; rmsVoltageSwell: boolean }>;
360
+ acVoltageOverload?: number;
361
+ acCurrentOverload?: number;
362
+ acActivePowerOverload?: number;
363
+ }
364
+
365
+ export interface ElectricalMeasurementCluster extends ZCLNodeCluster {
366
+ readAttributes<K extends 'measurementType' | 'acFrequency' | 'measuredPhase1stHarmonicCurrent' | 'acFrequencyMultiplier' | 'acFrequencyDivisor' | 'phaseHarmonicCurrentMultiplier' | 'rmsVoltage' | 'rmsCurrent' | 'activePower' | 'reactivePower' | 'acVoltageMultiplier' | 'acVoltageDivisor' | 'acCurrentMultiplier' | 'acCurrentDivisor' | 'acPowerMultiplier' | 'acPowerDivisor' | 'acAlarmsMask' | 'acVoltageOverload' | 'acCurrentOverload' | 'acActivePowerOverload'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<ElectricalMeasurementClusterAttributes, K>>;
367
+ writeAttributes(attributes: Partial<ElectricalMeasurementClusterAttributes>): Promise<void>;
368
+ }
369
+
370
+ export interface FanControlCluster extends ZCLNodeCluster {
371
+ }
372
+
373
+ export interface FlowMeasurementClusterAttributes {
374
+ measuredValue?: number;
375
+ minMeasuredValue?: number;
376
+ maxMeasuredValue?: number;
377
+ tolerance?: number;
378
+ }
379
+
380
+ export interface FlowMeasurementCluster extends ZCLNodeCluster {
381
+ readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<FlowMeasurementClusterAttributes, K>>;
382
+ writeAttributes(attributes: Partial<FlowMeasurementClusterAttributes>): Promise<void>;
383
+ }
384
+
385
+ export interface GroupsClusterAttributes {
386
+ nameSupport?: Partial<{ groupNames: boolean }>;
387
+ }
388
+
389
+ export interface GroupsCluster extends ZCLNodeCluster {
390
+ readAttributes<K extends 'nameSupport'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<GroupsClusterAttributes, K>>;
391
+ writeAttributes(attributes: Partial<GroupsClusterAttributes>): Promise<void>;
392
+ addGroup(args: { groupId: number; groupName: string }): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number }>;
393
+ viewGroup(args: { groupId: number }): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number; groupNames: string }>;
394
+ getGroupMembership(args: { groupIds: number[] }): Promise<{ capacity: number; groups: number[] }>;
395
+ removeGroup(args: { groupId: number }): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number }>;
396
+ removeAllGroups(): Promise<void>;
397
+ addGroupIfIdentify(args: { groupId: number; groupName: string }): Promise<void>;
398
+ }
399
+
400
+ export interface IasACECluster extends ZCLNodeCluster {
401
+ }
402
+
403
+ export interface IasWDCluster extends ZCLNodeCluster {
404
+ }
405
+
406
+ export interface IasZoneClusterAttributes {
407
+ zoneState?: 'notEnrolled' | 'enrolled';
408
+ zoneType?: 'standardCIE' | 'motionSensor' | 'contactSwitch' | 'fireSensor' | 'waterSensor' | 'cabonMonoxideSensor' | 'personalEmergencyDevice' | 'vibrationMovementSensor' | 'remoteControl' | 'keyfob' | 'keypad' | 'standardWarningDevice' | 'glassBreakSensor' | 'securityRepeater' | 'invalidZoneType';
409
+ zoneStatus?: Partial<{ alarm1: boolean; alarm2: boolean; tamper: boolean; battery: boolean; supervisionReports: boolean; restoreReports: boolean; trouble: boolean; acMains: boolean; test: boolean; batteryDefect: boolean }>;
410
+ iasCIEAddress?: string;
411
+ zoneId?: number;
412
+ }
413
+
414
+ export interface IasZoneCluster extends ZCLNodeCluster {
415
+ readAttributes<K extends 'zoneState' | 'zoneType' | 'zoneStatus' | 'iasCIEAddress' | 'zoneId'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IasZoneClusterAttributes, K>>;
416
+ writeAttributes(attributes: Partial<IasZoneClusterAttributes>): Promise<void>;
417
+ zoneStatusChangeNotification(args: { zoneStatus: Partial<{ alarm1: boolean; alarm2: boolean; tamper: boolean; battery: boolean; supervisionReports: boolean; restoreReports: boolean; trouble: boolean; acMains: boolean; test: boolean; batteryDefect: boolean }>; extendedStatus: number; zoneId: number; delay: number }): Promise<void>;
418
+ zoneEnrollResponse(args: { enrollResponseCode: 'success' | 'notSupported' | 'noEnrollPermit' | 'tooManyZones'; zoneId: number }): Promise<void>;
419
+ zoneEnrollRequest(args: { zoneType: 'standard' | 'motionSensor' | 'contactSwitch' | 'fireSensor' | 'waterSensor' | 'carbonMonoxideSensor' | 'personalEmergencyDevice' | 'vibrationMovementSensor' | 'remoteControl' | 'keyFob' | 'keyPad' | 'standardWarningDevice' | 'glassBreakSensor' | 'securityRepeater' | 'invalid'; manufacturerCode: number }): Promise<void>;
420
+ initiateNormalOperationMode(): Promise<void>;
421
+ }
422
+
423
+ export interface IdentifyClusterAttributes {
424
+ identifyTime?: number;
425
+ }
426
+
427
+ export interface IdentifyCluster extends ZCLNodeCluster {
428
+ readAttributes<K extends 'identifyTime'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IdentifyClusterAttributes, K>>;
429
+ writeAttributes(attributes: Partial<IdentifyClusterAttributes>): Promise<void>;
430
+ identify(args: { identifyTime: number }): Promise<void>;
431
+ identifyQuery(): Promise<{ timeout: number }>;
432
+ triggerEffect(args: { effectIdentifier: 'blink' | 'breathe' | 'okay' | 'channelChange' | 'finish' | 'stop'; effectVariant: number }): Promise<void>;
433
+ }
434
+
435
+ export interface IlluminanceLevelSensingClusterAttributes {
436
+ levelStatus?: 'illuminanceOnTarget' | 'illuminanceBelowTarget' | 'illuminanceAboveTarget';
437
+ lightSensorType?: 'photodiode' | 'cmos' | 'unknown';
438
+ illuminanceTargetLevel?: number;
439
+ }
440
+
441
+ export interface IlluminanceLevelSensingCluster extends ZCLNodeCluster {
442
+ readAttributes<K extends 'levelStatus' | 'lightSensorType' | 'illuminanceTargetLevel'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IlluminanceLevelSensingClusterAttributes, K>>;
443
+ writeAttributes(attributes: Partial<IlluminanceLevelSensingClusterAttributes>): Promise<void>;
444
+ }
445
+
446
+ export interface IlluminanceMeasurementClusterAttributes {
447
+ measuredValue?: number;
448
+ minMeasuredValue?: number;
449
+ maxMeasuredValue?: number;
450
+ tolerance?: number;
451
+ lightSensorType?: 'photodiode' | 'cmos' | 'unknown';
452
+ }
453
+
454
+ export interface IlluminanceMeasurementCluster extends ZCLNodeCluster {
455
+ readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance' | 'lightSensorType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IlluminanceMeasurementClusterAttributes, K>>;
456
+ writeAttributes(attributes: Partial<IlluminanceMeasurementClusterAttributes>): Promise<void>;
457
+ }
458
+
459
+ export interface LevelControlClusterAttributes {
460
+ currentLevel?: number;
461
+ remainingTime?: number;
462
+ onOffTransitionTime?: number;
463
+ onLevel?: number;
464
+ onTransitionTime?: number;
465
+ offTransitionTime?: number;
466
+ defaultMoveRate?: number;
467
+ }
468
+
469
+ export interface LevelControlCluster extends ZCLNodeCluster {
470
+ readAttributes<K extends 'currentLevel' | 'remainingTime' | 'onOffTransitionTime' | 'onLevel' | 'onTransitionTime' | 'offTransitionTime' | 'defaultMoveRate'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<LevelControlClusterAttributes, K>>;
471
+ writeAttributes(attributes: Partial<LevelControlClusterAttributes>): Promise<void>;
472
+ moveToLevel(args: { level: number; transitionTime: number }): Promise<void>;
473
+ move(args: { moveMode: 'up' | 'down'; rate: number }): Promise<void>;
474
+ step(args: { mode: 'up' | 'down'; stepSize: number; transitionTime: number }): Promise<void>;
475
+ stop(): Promise<void>;
476
+ moveToLevelWithOnOff(args: { level: number; transitionTime: number }): Promise<void>;
477
+ moveWithOnOff(args: { moveMode: 'up' | 'down'; rate: number }): Promise<void>;
478
+ stepWithOnOff(args: { mode: 'up' | 'down'; stepSize: number; transitionTime: number }): Promise<void>;
479
+ stopWithOnOff(): Promise<void>;
480
+ }
481
+
482
+ export interface MeteringClusterAttributes {
483
+ currentSummationDelivered?: number;
484
+ currentSummationReceived?: number;
485
+ currentMaxDemandDelivered?: number;
486
+ currentMaxDemandReceived?: number;
487
+ dftSummation?: number;
488
+ dailyFreezeTime?: number;
489
+ powerFactor?: number;
490
+ readingSnapShotTime?: number;
491
+ currentMaxDemandDeliveredTime?: number;
492
+ currentMaxDemandReceivedTime?: number;
493
+ defaultUpdatePeriod?: number;
494
+ fastPollUpdatePeriod?: number;
495
+ currentBlockPeriodConsumptionDelivered?: number;
496
+ dailyConsumptionTarget?: number;
497
+ currentBlock?: unknown;
498
+ profileIntervalPeriod?: unknown;
499
+ currentTier1SummationDelivered?: number;
500
+ currentTier1SummationReceived?: number;
501
+ currentTier2SummationDelivered?: number;
502
+ currentTier2SummationReceived?: number;
503
+ currentTier3SummationDelivered?: number;
504
+ currentTier3SummationReceived?: number;
505
+ currentTier4SummationDelivered?: number;
506
+ currentTier4SummationReceived?: number;
507
+ status?: unknown;
508
+ remainingBatteryLife?: number;
509
+ hoursInOperation?: number;
510
+ hoursInFault?: number;
511
+ extendedStatus?: unknown;
512
+ unitOfMeasure?: unknown;
513
+ multiplier?: number;
514
+ divisor?: number;
515
+ summationFormatting?: unknown;
516
+ demandFormatting?: unknown;
517
+ historicalConsumptionFormatting?: unknown;
518
+ meteringDeviceType?: unknown;
519
+ siteId?: Buffer;
520
+ meterSerialNumber?: Buffer;
521
+ energyCarrierUnitOfMeasure?: unknown;
522
+ energyCarrierSummationFormatting?: unknown;
523
+ energyCarrierDemandFormatting?: unknown;
524
+ temperatureUnitOfMeasure?: unknown;
525
+ temperatureFormatting?: unknown;
526
+ moduleSerialNumber?: Buffer;
527
+ operatingTariffLabelDelivered?: Buffer;
528
+ operatingTariffLabelReceived?: Buffer;
529
+ customerIdNumber?: Buffer;
530
+ alternativeUnitOfMeasure?: unknown;
531
+ alternativeDemandFormatting?: unknown;
532
+ alternativeConsumptionFormatting?: unknown;
533
+ instantaneousDemand?: number;
534
+ currentDayConsumptionDelivered?: number;
535
+ currentDayConsumptionReceived?: number;
536
+ previousDayConsumptionDelivered?: number;
537
+ previousDayConsumptionReceived?: number;
538
+ currentPartialProfileIntervalStartTimeDelivered?: number;
539
+ currentPartialProfileIntervalStartTimeReceived?: number;
540
+ currentPartialProfileIntervalValueDelivered?: number;
541
+ currentPartialProfileIntervalValueReceived?: number;
542
+ currentDayMaxPressure?: number;
543
+ currentDayMinPressure?: number;
544
+ previousDayMaxPressure?: number;
545
+ previousDayMinPressure?: number;
546
+ currentDayMaxDemand?: number;
547
+ previousDayMaxDemand?: number;
548
+ currentMonthMaxDemand?: number;
549
+ currentYearMaxDemand?: number;
550
+ currentDayMaxEnergyCarrierDemand?: number;
551
+ previousDayMaxEnergyCarrierDemand?: number;
552
+ currentMonthMaxEnergyCarrierDemand?: number;
553
+ currentMonthMinEnergyCarrierDemand?: number;
554
+ currentYearMaxEnergyCarrierDemand?: number;
555
+ currentYearMinEnergyCarrierDemand?: number;
556
+ maxNumberOfPeriodsDelivered?: number;
557
+ currentDemandDelivered?: number;
558
+ demandLimit?: number;
559
+ demandIntegrationPeriod?: number;
560
+ numberOfDemandSubintervals?: number;
561
+ demandLimitArmDuration?: number;
562
+ currentNoTierBlock1SummationDelivered?: number;
563
+ currentNoTierBlock2SummationDelivered?: number;
564
+ currentNoTierBlock3SummationDelivered?: number;
565
+ currentNoTierBlock4SummationDelivered?: number;
566
+ currentNoTierBlock5SummationDelivered?: number;
567
+ currentNoTierBlock6SummationDelivered?: number;
568
+ currentNoTierBlock7SummationDelivered?: number;
569
+ currentNoTierBlock8SummationDelivered?: number;
570
+ currentNoTierBlock9SummationDelivered?: number;
571
+ currentNoTierBlock10SummationDelivered?: number;
572
+ currentNoTierBlock11SummationDelivered?: number;
573
+ currentNoTierBlock12SummationDelivered?: number;
574
+ currentNoTierBlock13SummationDelivered?: number;
575
+ currentNoTierBlock14SummationDelivered?: number;
576
+ currentNoTierBlock15SummationDelivered?: number;
577
+ currentNoTierBlock16SummationDelivered?: number;
578
+ currentTier1Block1SummationDelivered?: number;
579
+ currentTier1Block2SummationDelivered?: number;
580
+ currentTier1Block3SummationDelivered?: number;
581
+ currentTier1Block4SummationDelivered?: number;
582
+ currentTier1Block5SummationDelivered?: number;
583
+ currentTier1Block6SummationDelivered?: number;
584
+ currentTier1Block7SummationDelivered?: number;
585
+ currentTier1Block8SummationDelivered?: number;
586
+ currentTier1Block9SummationDelivered?: number;
587
+ currentTier1Block10SummationDelivered?: number;
588
+ currentTier1Block11SummationDelivered?: number;
589
+ currentTier1Block12SummationDelivered?: number;
590
+ currentTier1Block13SummationDelivered?: number;
591
+ currentTier1Block14SummationDelivered?: number;
592
+ currentTier1Block15SummationDelivered?: number;
593
+ currentTier1Block16SummationDelivered?: number;
594
+ currentTier2Block1SummationDelivered?: number;
595
+ currentTier2Block2SummationDelivered?: number;
596
+ currentTier2Block3SummationDelivered?: number;
597
+ currentTier2Block4SummationDelivered?: number;
598
+ currentTier2Block5SummationDelivered?: number;
599
+ currentTier2Block6SummationDelivered?: number;
600
+ currentTier2Block7SummationDelivered?: number;
601
+ currentTier2Block8SummationDelivered?: number;
602
+ currentTier2Block9SummationDelivered?: number;
603
+ currentTier2Block10SummationDelivered?: number;
604
+ currentTier2Block11SummationDelivered?: number;
605
+ currentTier2Block12SummationDelivered?: number;
606
+ currentTier2Block13SummationDelivered?: number;
607
+ currentTier2Block14SummationDelivered?: number;
608
+ currentTier2Block15SummationDelivered?: number;
609
+ currentTier2Block16SummationDelivered?: number;
610
+ currentTier3Block1SummationDelivered?: number;
611
+ currentTier3Block2SummationDelivered?: number;
612
+ currentTier3Block3SummationDelivered?: number;
613
+ currentTier3Block4SummationDelivered?: number;
614
+ currentTier3Block5SummationDelivered?: number;
615
+ currentTier3Block6SummationDelivered?: number;
616
+ currentTier3Block7SummationDelivered?: number;
617
+ currentTier3Block8SummationDelivered?: number;
618
+ currentTier3Block9SummationDelivered?: number;
619
+ currentTier3Block10SummationDelivered?: number;
620
+ currentTier3Block11SummationDelivered?: number;
621
+ currentTier3Block12SummationDelivered?: number;
622
+ currentTier3Block13SummationDelivered?: number;
623
+ currentTier3Block14SummationDelivered?: number;
624
+ currentTier3Block15SummationDelivered?: number;
625
+ currentTier3Block16SummationDelivered?: number;
626
+ currentTier4Block1SummationDelivered?: number;
627
+ currentTier4Block2SummationDelivered?: number;
628
+ currentTier4Block3SummationDelivered?: number;
629
+ currentTier4Block4SummationDelivered?: number;
630
+ currentTier4Block5SummationDelivered?: number;
631
+ currentTier4Block6SummationDelivered?: number;
632
+ currentTier4Block7SummationDelivered?: number;
633
+ currentTier4Block8SummationDelivered?: number;
634
+ currentTier4Block9SummationDelivered?: number;
635
+ currentTier4Block10SummationDelivered?: number;
636
+ currentTier4Block11SummationDelivered?: number;
637
+ currentTier4Block12SummationDelivered?: number;
638
+ currentTier4Block13SummationDelivered?: number;
639
+ currentTier4Block14SummationDelivered?: number;
640
+ currentTier4Block15SummationDelivered?: number;
641
+ currentTier4Block16SummationDelivered?: number;
642
+ genericAlarmMask?: unknown;
643
+ electricityAlarmMask?: unknown;
644
+ genericFlowPressureAlarmMask?: unknown;
645
+ waterSpecificAlarmMask?: unknown;
646
+ heatAndCoolingSpecificAlarmMask?: unknown;
647
+ gasSpecificAlarmMask?: unknown;
648
+ extendedGenericAlarmMask?: unknown;
649
+ manufacturerAlarmMask?: unknown;
650
+ currentNoTierBlock1SummationReceived?: number;
651
+ currentNoTierBlock2SummationReceived?: number;
652
+ currentNoTierBlock3SummationReceived?: number;
653
+ currentNoTierBlock4SummationReceived?: number;
654
+ currentNoTierBlock5SummationReceived?: number;
655
+ currentNoTierBlock6SummationReceived?: number;
656
+ currentNoTierBlock7SummationReceived?: number;
657
+ currentNoTierBlock8SummationReceived?: number;
658
+ currentNoTierBlock9SummationReceived?: number;
659
+ currentNoTierBlock10SummationReceived?: number;
660
+ currentNoTierBlock11SummationReceived?: number;
661
+ currentNoTierBlock12SummationReceived?: number;
662
+ currentNoTierBlock13SummationReceived?: number;
663
+ currentNoTierBlock14SummationReceived?: number;
664
+ currentNoTierBlock15SummationReceived?: number;
665
+ currentNoTierBlock16SummationReceived?: number;
666
+ billToDateDelivered?: number;
667
+ billToDateTimeStampDelivered?: number;
668
+ projectedBillDelivered?: number;
669
+ projectedBillTimeStampDelivered?: number;
670
+ billDeliveredTrailingDigit?: unknown;
671
+ billToDateReceived?: number;
672
+ billToDateTimeStampReceived?: number;
673
+ projectedBillReceived?: number;
674
+ projectedBillTimeStampReceived?: number;
675
+ billReceivedTrailingDigit?: unknown;
676
+ proposedChangeSupplyImplementationTime?: number;
677
+ proposedChangeSupplyStatus?: unknown;
678
+ uncontrolledFlowThreshold?: number;
679
+ uncontrolledFlowThresholdUnitOfMeasure?: unknown;
680
+ uncontrolledFlowMultiplier?: number;
681
+ uncontrolledFlowDivisor?: number;
682
+ flowStabilisationPeriod?: number;
683
+ flowMeasurementPeriod?: number;
684
+ }
685
+
686
+ export interface MeteringCluster extends ZCLNodeCluster {
687
+ readAttributes<K extends 'currentSummationDelivered' | 'currentSummationReceived' | 'currentMaxDemandDelivered' | 'currentMaxDemandReceived' | 'dftSummation' | 'dailyFreezeTime' | 'powerFactor' | 'readingSnapShotTime' | 'currentMaxDemandDeliveredTime' | 'currentMaxDemandReceivedTime' | 'defaultUpdatePeriod' | 'fastPollUpdatePeriod' | 'currentBlockPeriodConsumptionDelivered' | 'dailyConsumptionTarget' | 'currentBlock' | 'profileIntervalPeriod' | 'currentTier1SummationDelivered' | 'currentTier1SummationReceived' | 'currentTier2SummationDelivered' | 'currentTier2SummationReceived' | 'currentTier3SummationDelivered' | 'currentTier3SummationReceived' | 'currentTier4SummationDelivered' | 'currentTier4SummationReceived' | 'status' | 'remainingBatteryLife' | 'hoursInOperation' | 'hoursInFault' | 'extendedStatus' | 'unitOfMeasure' | 'multiplier' | 'divisor' | 'summationFormatting' | 'demandFormatting' | 'historicalConsumptionFormatting' | 'meteringDeviceType' | 'siteId' | 'meterSerialNumber' | 'energyCarrierUnitOfMeasure' | 'energyCarrierSummationFormatting' | 'energyCarrierDemandFormatting' | 'temperatureUnitOfMeasure' | 'temperatureFormatting' | 'moduleSerialNumber' | 'operatingTariffLabelDelivered' | 'operatingTariffLabelReceived' | 'customerIdNumber' | 'alternativeUnitOfMeasure' | 'alternativeDemandFormatting' | 'alternativeConsumptionFormatting' | 'instantaneousDemand' | 'currentDayConsumptionDelivered' | 'currentDayConsumptionReceived' | 'previousDayConsumptionDelivered' | 'previousDayConsumptionReceived' | 'currentPartialProfileIntervalStartTimeDelivered' | 'currentPartialProfileIntervalStartTimeReceived' | 'currentPartialProfileIntervalValueDelivered' | 'currentPartialProfileIntervalValueReceived' | 'currentDayMaxPressure' | 'currentDayMinPressure' | 'previousDayMaxPressure' | 'previousDayMinPressure' | 'currentDayMaxDemand' | 'previousDayMaxDemand' | 'currentMonthMaxDemand' | 'currentYearMaxDemand' | 'currentDayMaxEnergyCarrierDemand' | 'previousDayMaxEnergyCarrierDemand' | 'currentMonthMaxEnergyCarrierDemand' | 'currentMonthMinEnergyCarrierDemand' | 'currentYearMaxEnergyCarrierDemand' | 'currentYearMinEnergyCarrierDemand' | 'maxNumberOfPeriodsDelivered' | 'currentDemandDelivered' | 'demandLimit' | 'demandIntegrationPeriod' | 'numberOfDemandSubintervals' | 'demandLimitArmDuration' | 'currentNoTierBlock1SummationDelivered' | 'currentNoTierBlock2SummationDelivered' | 'currentNoTierBlock3SummationDelivered' | 'currentNoTierBlock4SummationDelivered' | 'currentNoTierBlock5SummationDelivered' | 'currentNoTierBlock6SummationDelivered' | 'currentNoTierBlock7SummationDelivered' | 'currentNoTierBlock8SummationDelivered' | 'currentNoTierBlock9SummationDelivered' | 'currentNoTierBlock10SummationDelivered' | 'currentNoTierBlock11SummationDelivered' | 'currentNoTierBlock12SummationDelivered' | 'currentNoTierBlock13SummationDelivered' | 'currentNoTierBlock14SummationDelivered' | 'currentNoTierBlock15SummationDelivered' | 'currentNoTierBlock16SummationDelivered' | 'currentTier1Block1SummationDelivered' | 'currentTier1Block2SummationDelivered' | 'currentTier1Block3SummationDelivered' | 'currentTier1Block4SummationDelivered' | 'currentTier1Block5SummationDelivered' | 'currentTier1Block6SummationDelivered' | 'currentTier1Block7SummationDelivered' | 'currentTier1Block8SummationDelivered' | 'currentTier1Block9SummationDelivered' | 'currentTier1Block10SummationDelivered' | 'currentTier1Block11SummationDelivered' | 'currentTier1Block12SummationDelivered' | 'currentTier1Block13SummationDelivered' | 'currentTier1Block14SummationDelivered' | 'currentTier1Block15SummationDelivered' | 'currentTier1Block16SummationDelivered' | 'currentTier2Block1SummationDelivered' | 'currentTier2Block2SummationDelivered' | 'currentTier2Block3SummationDelivered' | 'currentTier2Block4SummationDelivered' | 'currentTier2Block5SummationDelivered' | 'currentTier2Block6SummationDelivered' | 'currentTier2Block7SummationDelivered' | 'currentTier2Block8SummationDelivered' | 'currentTier2Block9SummationDelivered' | 'currentTier2Block10SummationDelivered' | 'currentTier2Block11SummationDelivered' | 'currentTier2Block12SummationDelivered' | 'currentTier2Block13SummationDelivered' | 'currentTier2Block14SummationDelivered' | 'currentTier2Block15SummationDelivered' | 'currentTier2Block16SummationDelivered' | 'currentTier3Block1SummationDelivered' | 'currentTier3Block2SummationDelivered' | 'currentTier3Block3SummationDelivered' | 'currentTier3Block4SummationDelivered' | 'currentTier3Block5SummationDelivered' | 'currentTier3Block6SummationDelivered' | 'currentTier3Block7SummationDelivered' | 'currentTier3Block8SummationDelivered' | 'currentTier3Block9SummationDelivered' | 'currentTier3Block10SummationDelivered' | 'currentTier3Block11SummationDelivered' | 'currentTier3Block12SummationDelivered' | 'currentTier3Block13SummationDelivered' | 'currentTier3Block14SummationDelivered' | 'currentTier3Block15SummationDelivered' | 'currentTier3Block16SummationDelivered' | 'currentTier4Block1SummationDelivered' | 'currentTier4Block2SummationDelivered' | 'currentTier4Block3SummationDelivered' | 'currentTier4Block4SummationDelivered' | 'currentTier4Block5SummationDelivered' | 'currentTier4Block6SummationDelivered' | 'currentTier4Block7SummationDelivered' | 'currentTier4Block8SummationDelivered' | 'currentTier4Block9SummationDelivered' | 'currentTier4Block10SummationDelivered' | 'currentTier4Block11SummationDelivered' | 'currentTier4Block12SummationDelivered' | 'currentTier4Block13SummationDelivered' | 'currentTier4Block14SummationDelivered' | 'currentTier4Block15SummationDelivered' | 'currentTier4Block16SummationDelivered' | 'genericAlarmMask' | 'electricityAlarmMask' | 'genericFlowPressureAlarmMask' | 'waterSpecificAlarmMask' | 'heatAndCoolingSpecificAlarmMask' | 'gasSpecificAlarmMask' | 'extendedGenericAlarmMask' | 'manufacturerAlarmMask' | 'currentNoTierBlock1SummationReceived' | 'currentNoTierBlock2SummationReceived' | 'currentNoTierBlock3SummationReceived' | 'currentNoTierBlock4SummationReceived' | 'currentNoTierBlock5SummationReceived' | 'currentNoTierBlock6SummationReceived' | 'currentNoTierBlock7SummationReceived' | 'currentNoTierBlock8SummationReceived' | 'currentNoTierBlock9SummationReceived' | 'currentNoTierBlock10SummationReceived' | 'currentNoTierBlock11SummationReceived' | 'currentNoTierBlock12SummationReceived' | 'currentNoTierBlock13SummationReceived' | 'currentNoTierBlock14SummationReceived' | 'currentNoTierBlock15SummationReceived' | 'currentNoTierBlock16SummationReceived' | 'billToDateDelivered' | 'billToDateTimeStampDelivered' | 'projectedBillDelivered' | 'projectedBillTimeStampDelivered' | 'billDeliveredTrailingDigit' | 'billToDateReceived' | 'billToDateTimeStampReceived' | 'projectedBillReceived' | 'projectedBillTimeStampReceived' | 'billReceivedTrailingDigit' | 'proposedChangeSupplyImplementationTime' | 'proposedChangeSupplyStatus' | 'uncontrolledFlowThreshold' | 'uncontrolledFlowThresholdUnitOfMeasure' | 'uncontrolledFlowMultiplier' | 'uncontrolledFlowDivisor' | 'flowStabilisationPeriod' | 'flowMeasurementPeriod'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MeteringClusterAttributes, K>>;
688
+ writeAttributes(attributes: Partial<MeteringClusterAttributes>): Promise<void>;
689
+ }
690
+
691
+ export interface MultistateInputClusterAttributes {
692
+ description?: string;
693
+ numberOfStates?: number;
694
+ outOfService?: boolean;
695
+ presentValue?: number;
696
+ reliability?: 'noFaultDetected' | 'noSensor' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'noOutput' | 'unreliableOther' | 'processError' | 'multiStateFault' | 'configurationError';
697
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
698
+ applicationType?: number;
699
+ }
700
+
701
+ export interface MultistateInputCluster extends ZCLNodeCluster {
702
+ readAttributes<K extends 'description' | 'numberOfStates' | 'outOfService' | 'presentValue' | 'reliability' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MultistateInputClusterAttributes, K>>;
703
+ writeAttributes(attributes: Partial<MultistateInputClusterAttributes>): Promise<void>;
704
+ }
705
+
706
+ export interface MultistateOutputClusterAttributes {
707
+ description?: string;
708
+ numberOfStates?: number;
709
+ outOfService?: boolean;
710
+ presentValue?: number;
711
+ reliability?: 'noFaultDetected' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'unreliableOther' | 'processError' | 'multiStateFault' | 'configurationError';
712
+ relinquishDefault?: number;
713
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
714
+ applicationType?: number;
715
+ }
716
+
717
+ export interface MultistateOutputCluster extends ZCLNodeCluster {
718
+ readAttributes<K extends 'description' | 'numberOfStates' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MultistateOutputClusterAttributes, K>>;
719
+ writeAttributes(attributes: Partial<MultistateOutputClusterAttributes>): Promise<void>;
720
+ }
721
+
722
+ export interface MultistateValueClusterAttributes {
723
+ description?: string;
724
+ numberOfStates?: number;
725
+ outOfService?: boolean;
726
+ presentValue?: number;
727
+ reliability?: 'noFaultDetected' | 'noSensor' | 'overRange' | 'underRange' | 'openLoop' | 'shortedLoop' | 'noOutput' | 'unreliableOther' | 'processError' | 'multiStateFault' | 'configurationError';
728
+ relinquishDefault?: number;
729
+ statusFlags?: Partial<{ inAlarm: boolean; fault: boolean; overridden: boolean; outOfService: boolean }>;
730
+ applicationType?: number;
731
+ }
732
+
733
+ export interface MultistateValueCluster extends ZCLNodeCluster {
734
+ readAttributes<K extends 'description' | 'numberOfStates' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MultistateValueClusterAttributes, K>>;
735
+ writeAttributes(attributes: Partial<MultistateValueClusterAttributes>): Promise<void>;
736
+ }
737
+
738
+ export interface OccupancySensingClusterAttributes {
739
+ occupancy?: Partial<{ occupied: boolean }>;
740
+ occupancySensorType?: 'pir' | 'ultrasonic' | 'pirAndUltrasonic' | 'physicalContact';
741
+ occupancySensorTypeBitmap?: Partial<{ pir: boolean; ultrasonic: boolean; physicalContact: boolean }>;
742
+ pirOccupiedToUnoccupiedDelay?: number;
743
+ pirUnoccupiedToOccupiedDelay?: number;
744
+ pirUnoccupiedToOccupiedThreshold?: number;
745
+ ultrasonicOccupiedToUnoccupiedDelay?: number;
746
+ ultrasonicUnoccupiedToOccupiedDelay?: number;
747
+ ultrasonicUnoccupiedToOccupiedThreshold?: number;
748
+ physicalContactOccupiedToUnoccupiedDelay?: number;
749
+ physicalContactUnoccupiedToOccupiedDelay?: number;
750
+ physicalContactUnoccupiedToOccupiedThreshold?: number;
751
+ }
752
+
753
+ export interface OccupancySensingCluster extends ZCLNodeCluster {
754
+ readAttributes<K extends 'occupancy' | 'occupancySensorType' | 'occupancySensorTypeBitmap' | 'pirOccupiedToUnoccupiedDelay' | 'pirUnoccupiedToOccupiedDelay' | 'pirUnoccupiedToOccupiedThreshold' | 'ultrasonicOccupiedToUnoccupiedDelay' | 'ultrasonicUnoccupiedToOccupiedDelay' | 'ultrasonicUnoccupiedToOccupiedThreshold' | 'physicalContactOccupiedToUnoccupiedDelay' | 'physicalContactUnoccupiedToOccupiedDelay' | 'physicalContactUnoccupiedToOccupiedThreshold'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<OccupancySensingClusterAttributes, K>>;
755
+ writeAttributes(attributes: Partial<OccupancySensingClusterAttributes>): Promise<void>;
756
+ }
757
+
758
+ export interface OnOffClusterAttributes {
759
+ onOff?: boolean;
760
+ onTime?: number;
761
+ offWaitTime?: number;
762
+ }
763
+
764
+ export interface OnOffCluster extends ZCLNodeCluster {
765
+ readAttributes<K extends 'onOff' | 'onTime' | 'offWaitTime'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<OnOffClusterAttributes, K>>;
766
+ writeAttributes(attributes: Partial<OnOffClusterAttributes>): Promise<void>;
184
767
  setOff(): Promise<void>;
768
+ setOn(): Promise<void>;
185
769
  toggle(): Promise<void>;
186
- offWithEffect({
187
- effectIdentifier,
188
- effectVariant,
189
- }: {
190
- effectIdentifier: number;
191
- effectVariant: number;
192
- }): Promise<void>;
770
+ offWithEffect(args: { effectIdentifier: number; effectVariant: number }): Promise<void>;
193
771
  onWithRecallGlobalScene(): Promise<void>;
194
- onWithTimedOff({
195
- onOffControl,
196
- onTime,
197
- offWaitTime,
198
- }: {
199
- onOffControl: number;
200
- onTime: number;
201
- offWaitTime: number;
202
- }): Promise<void>;
203
- }
204
-
205
- interface LevelControlCluster extends ZCLNodeCluster {
206
- moveToLevel({ level, transitionTime }: { level: number; transitionTime: number }): Promise<void>;
207
- move({ moveMode, rate }: { moveMode: "up" | "down"; rate: number }): Promise<void>;
208
- step({
209
- moveMode,
210
- stepSize,
211
- transitionTime,
212
- }: {
213
- moveMode: "up" | "down";
214
- stepSize: number;
215
- transitionTime: number;
216
- }): Promise<void>;
217
- moveToLevelWithOnOff({
218
- level,
219
- transitionTime,
220
- }: {
221
- level: number;
222
- transitionTime: number;
223
- }): Promise<void>;
224
- moveWithOnOff({ moveMode, rate }: { moveMode: "up" | "down"; rate: number }): Promise<void>;
225
- stepWithOnOff({
226
- moveMode,
227
- stepSize,
228
- transitionTime,
229
- }: {
230
- moveMode: "up" | "down";
231
- stepSize: number;
232
- transitionTime: number;
233
- }): Promise<void>;
234
- stopWithOnOff(): Promise<void>;
772
+ onWithTimedOff(args: { onOffControl: number; onTime: number; offWaitTime: number }): Promise<void>;
773
+ }
774
+
775
+ export interface OnOffSwitchCluster extends ZCLNodeCluster {
776
+ }
777
+
778
+ export interface OtaCluster extends ZCLNodeCluster {
235
779
  }
236
780
 
237
- interface ColorControlCluster extends ZCLNodeCluster {
238
- moveToHue({
239
- hue,
240
- direction,
241
- transitionTime,
242
- }: {
243
- hue: number;
244
- direction: "shortestDistance" | "longestDistance" | "up" | "down";
245
- transitionTime: number;
246
- }): Promise<void>;
247
- moveToSaturation({
248
- saturation,
249
- transitionTime,
250
- }: {
251
- saturation: number;
252
- transitionTime: number;
253
- }): Promise<void>;
254
- moveToHueAndSaturation({
255
- hue,
256
- saturation,
257
- transitionTime,
258
- }: {
259
- hue: number;
260
- saturation: number;
261
- transitionTime: number;
262
- }): Promise<void>;
263
- moveToColor({
264
- colorX,
265
- colorY,
266
- transitionTime,
267
- }: {
268
- colorX: number;
269
- colorY: number;
270
- transitionTime: number;
271
- }): Promise<void>;
272
- moveToColorTemperature({
273
- colorTemperature,
274
- transitionTime,
275
- }: {
276
- colorTemperature: number;
277
- transitionTime: number;
278
- }): Promise<void>;
279
- }
280
-
281
- interface MeteringCluster extends ZCLNodeCluster {}
282
-
283
- interface ElectricalMeasurementCluster extends ZCLNodeCluster {}
284
-
285
- interface PollControlCluster extends ZCLNodeCluster {
781
+ export interface PollControlClusterAttributes {
782
+ checkInInterval?: number;
783
+ longPollInterval?: number;
784
+ shortPollInterval?: number;
785
+ fastPollTimeout?: number;
786
+ checkInIntervalMin?: number;
787
+ longPollIntervalMin?: number;
788
+ fastPollTimeoutMax?: number;
789
+ }
790
+
791
+ export interface PollControlCluster extends ZCLNodeCluster {
792
+ readAttributes<K extends 'checkInInterval' | 'longPollInterval' | 'shortPollInterval' | 'fastPollTimeout' | 'checkInIntervalMin' | 'longPollIntervalMin' | 'fastPollTimeoutMax'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<PollControlClusterAttributes, K>>;
793
+ writeAttributes(attributes: Partial<PollControlClusterAttributes>): Promise<void>;
286
794
  fastPollStop(): Promise<void>;
287
- setLongPollInterval(opts: { newLongPollInterval: number }): Promise<void>;
288
- setShortPollInterval(opts: { newShortPollInterval: number }): Promise<void>;
795
+ setLongPollInterval(args: { newLongPollInterval: number }): Promise<void>;
796
+ setShortPollInterval(args: { newShortPollInterval: number }): Promise<void>;
797
+ }
798
+
799
+ export interface PowerConfigurationClusterAttributes {
800
+ batteryVoltage?: number;
801
+ batteryPercentageRemaining?: number;
802
+ batterySize?: 'noBattery' | 'builtIn' | 'other' | 'AA' | 'AAA' | 'C' | 'D' | 'CR2' | 'CR123A' | 'unknown';
803
+ batteryQuantity?: number;
804
+ batteryRatedVoltage?: number;
805
+ batteryVoltageMinThreshold?: number;
806
+ batteryAlarmState?: Partial<{ batteryThresholdBatterySource1: boolean; batteryThreshold1BatterySource1: boolean; batteryThreshold2BatterySource1: boolean; batteryThreshold3BatterySource1: boolean; reserved4: boolean; reserved5: boolean; reserved6: boolean; reserved7: boolean; reserved8: boolean; reserved9: boolean; batteryThresholdBatterySource2: boolean; batteryThreshold1BatterySource2: boolean; batteryThreshold2BatterySource2: boolean; batteryThreshold3BatterySource2: boolean; reserved14: boolean; reserved15: boolean; reserved16: boolean; reserved17: boolean; reserved18: boolean; reserved19: boolean; batteryThresholdBatterySource3: boolean; batteryThreshold1BatterySource3: boolean; batteryThreshold2BatterySource3: boolean; batteryThreshold3BatterySource3: boolean; reserved24: boolean; reserved25: boolean; reserved26: boolean; reserved27: boolean; reserved28: boolean; reserved29: boolean; mainsPowerSupplyLostUnavailable: boolean }>;
807
+ }
808
+
809
+ export interface PowerConfigurationCluster extends ZCLNodeCluster {
810
+ readAttributes<K extends 'batteryVoltage' | 'batteryPercentageRemaining' | 'batterySize' | 'batteryQuantity' | 'batteryRatedVoltage' | 'batteryVoltageMinThreshold' | 'batteryAlarmState'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<PowerConfigurationClusterAttributes, K>>;
811
+ writeAttributes(attributes: Partial<PowerConfigurationClusterAttributes>): Promise<void>;
289
812
  }
290
813
 
291
- type ZCLNodeEndpoint = {
292
- clusters: {
293
- onOff?: OnOffCluster;
294
- levelControl?: LevelControlCluster;
295
- colorControl?: ColorControlCluster;
814
+ export interface PowerProfileCluster extends ZCLNodeCluster {
815
+ }
816
+
817
+ export interface PressureMeasurementClusterAttributes {
818
+ measuredValue?: number;
819
+ minMeasuredValue?: number;
820
+ maxMeasuredValue?: number;
821
+ tolerance?: number;
822
+ scaledValue?: number;
823
+ minScaledValue?: number;
824
+ maxScaledValue?: number;
825
+ scaledTolerance?: number;
826
+ scale?: number;
827
+ }
828
+
829
+ export interface PressureMeasurementCluster extends ZCLNodeCluster {
830
+ readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance' | 'scaledValue' | 'minScaledValue' | 'maxScaledValue' | 'scaledTolerance' | 'scale'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<PressureMeasurementClusterAttributes, K>>;
831
+ writeAttributes(attributes: Partial<PressureMeasurementClusterAttributes>): Promise<void>;
832
+ }
833
+
834
+ export interface PumpConfigurationAndControlCluster extends ZCLNodeCluster {
835
+ }
836
+
837
+ export interface RelativeHumidityClusterAttributes {
838
+ measuredValue?: number;
839
+ minMeasuredValue?: number;
840
+ maxMeasuredValue?: number;
841
+ tolerance?: number;
842
+ }
843
+
844
+ export interface RelativeHumidityCluster extends ZCLNodeCluster {
845
+ readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<RelativeHumidityClusterAttributes, K>>;
846
+ writeAttributes(attributes: Partial<RelativeHumidityClusterAttributes>): Promise<void>;
847
+ }
848
+
849
+ export interface ScenesCluster extends ZCLNodeCluster {
850
+ }
851
+
852
+ export interface ShadeConfigurationCluster extends ZCLNodeCluster {
853
+ }
854
+
855
+ export interface TemperatureMeasurementClusterAttributes {
856
+ measuredValue?: number;
857
+ minMeasuredValue?: number;
858
+ maxMeasuredValue?: number;
859
+ }
860
+
861
+ export interface TemperatureMeasurementCluster extends ZCLNodeCluster {
862
+ readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<TemperatureMeasurementClusterAttributes, K>>;
863
+ writeAttributes(attributes: Partial<TemperatureMeasurementClusterAttributes>): Promise<void>;
864
+ }
865
+
866
+ export interface ThermostatClusterAttributes {
867
+ localTemperature?: number;
868
+ outdoorTemperature?: number;
869
+ occupancy?: Partial<{ occupied: boolean }>;
870
+ absMinHeatSetpointLimit?: number;
871
+ absMaxHeatSetpointLimit?: number;
872
+ absMinCoolSetpointLimit?: number;
873
+ absMaxCoolSetpointLimit?: number;
874
+ pICoolingDemand?: number;
875
+ pIHeatingDemand?: number;
876
+ localTemperatureCalibration?: number;
877
+ occupiedCoolingSetpoint?: number;
878
+ occupiedHeatingSetpoint?: number;
879
+ unoccupiedCoolingSetpoint?: number;
880
+ unoccupiedHeatingSetpoint?: number;
881
+ minHeatSetpointLimit?: number;
882
+ maxHeatSetpointLimit?: number;
883
+ minCoolSetpointLimit?: number;
884
+ maxCoolSetpointLimit?: number;
885
+ minSetpointDeadBand?: number;
886
+ remoteSensing?: Partial<{ localTemperature: boolean; outdoorTemperature: boolean; occupancy: boolean }>;
887
+ controlSequenceOfOperation?: 'cooling' | 'coolingWithReheat' | 'heating' | 'heatingWithReheat' | 'coolingAndHeating4Pipes' | 'coolingAndHeating4PipesWithReheat';
888
+ systemMode?: 'off' | 'auto' | 'cool' | 'heat' | 'emergencyHeating' | 'precooling' | 'fanOnly' | 'dry' | 'sleep';
889
+ alarmMask?: Partial<{ initializationFailure: boolean; hardwareFailure: boolean; selfCalibrationFailure: boolean }>;
890
+ }
891
+
892
+ export interface ThermostatCluster extends ZCLNodeCluster {
893
+ readAttributes<K extends 'localTemperature' | 'outdoorTemperature' | 'occupancy' | 'absMinHeatSetpointLimit' | 'absMaxHeatSetpointLimit' | 'absMinCoolSetpointLimit' | 'absMaxCoolSetpointLimit' | 'pICoolingDemand' | 'pIHeatingDemand' | 'localTemperatureCalibration' | 'occupiedCoolingSetpoint' | 'occupiedHeatingSetpoint' | 'unoccupiedCoolingSetpoint' | 'unoccupiedHeatingSetpoint' | 'minHeatSetpointLimit' | 'maxHeatSetpointLimit' | 'minCoolSetpointLimit' | 'maxCoolSetpointLimit' | 'minSetpointDeadBand' | 'remoteSensing' | 'controlSequenceOfOperation' | 'systemMode' | 'alarmMask'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<ThermostatClusterAttributes, K>>;
894
+ writeAttributes(attributes: Partial<ThermostatClusterAttributes>): Promise<void>;
895
+ setSetpoint(args: { mode: 'heat' | 'cool' | 'both'; amount: number }): Promise<void>;
896
+ }
897
+
898
+ export interface TimeCluster extends ZCLNodeCluster {
899
+ }
900
+
901
+ export interface TouchlinkCluster extends ZCLNodeCluster {
902
+ getGroups(args: { startIdx: number }): Promise<{ total: number; startIndex: number; groups: unknown[] }>;
903
+ }
904
+
905
+ export interface WindowCoveringClusterAttributes {
906
+ windowCoveringType?: 'rollershade' | 'rollershade2Motor' | 'rollershadeExterior' | 'rollershadeExterior2Motor' | 'drapery' | 'awning' | 'shutter' | 'tiltBlindTiltOnly' | 'tiltBlindLiftAndTilt' | 'projectorScreen';
907
+ physicalClosedLimitLift?: number;
908
+ physicalClosedLimitTilt?: number;
909
+ currentPositionLift?: number;
910
+ currentPositionTilt?: number;
911
+ numberofActuationsLift?: number;
912
+ numberofActuationsTilt?: number;
913
+ configStatus?: Partial<{ operational: boolean; online: boolean; reversalLiftCommands: boolean; controlLift: boolean; controlTilt: boolean; encoderLift: boolean; encoderTilt: boolean; reserved: boolean }>;
914
+ currentPositionLiftPercentage?: number;
915
+ currentPositionTiltPercentage?: number;
916
+ installedOpenLimitLift?: number;
917
+ installedClosedLimitLift?: number;
918
+ installedOpenLimitTilt?: number;
919
+ installedClosedLimitTilt?: number;
920
+ velocityLift?: number;
921
+ accelerationTimeLift?: number;
922
+ decelerationTimeLift?: number;
923
+ mode?: Partial<{ motorDirectionReversed: boolean; calibrationMode: boolean; maintenanceMode: boolean; ledFeedback: boolean }>;
924
+ intermediateSetpointsLift?: Buffer;
925
+ intermediateSetpointsTilt?: Buffer;
926
+ }
927
+
928
+ export interface WindowCoveringCluster extends ZCLNodeCluster {
929
+ readAttributes<K extends 'windowCoveringType' | 'physicalClosedLimitLift' | 'physicalClosedLimitTilt' | 'currentPositionLift' | 'currentPositionTilt' | 'numberofActuationsLift' | 'numberofActuationsTilt' | 'configStatus' | 'currentPositionLiftPercentage' | 'currentPositionTiltPercentage' | 'installedOpenLimitLift' | 'installedClosedLimitLift' | 'installedOpenLimitTilt' | 'installedClosedLimitTilt' | 'velocityLift' | 'accelerationTimeLift' | 'decelerationTimeLift' | 'mode' | 'intermediateSetpointsLift' | 'intermediateSetpointsTilt'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<WindowCoveringClusterAttributes, K>>;
930
+ writeAttributes(attributes: Partial<WindowCoveringClusterAttributes>): Promise<void>;
931
+ upOpen(): Promise<void>;
932
+ downClose(): Promise<void>;
933
+ stop(): Promise<void>;
934
+ goToLiftValue(args: { liftValue: number }): Promise<void>;
935
+ goToLiftPercentage(args: { percentageLiftValue: number }): Promise<void>;
936
+ goToTiltValue(args: { tiltValue: number }): Promise<void>;
937
+ goToTiltPercentage(args: { percentageTiltValue: number }): Promise<void>;
938
+ }
939
+
940
+ /** Type-safe cluster registry */
941
+ export interface ClusterRegistry {
942
+ alarms?: AlarmsCluster;
943
+ analogInput?: AnalogInputCluster;
944
+ analogOutput?: AnalogOutputCluster;
945
+ analogValue?: AnalogValueCluster;
946
+ ballastConfiguration?: BallastConfigurationCluster;
947
+ basic?: BasicCluster;
948
+ binaryInput?: BinaryInputCluster;
949
+ binaryOutput?: BinaryOutputCluster;
950
+ binaryValue?: BinaryValueCluster;
951
+ colorControl?: ColorControlCluster;
952
+ dehumidificationControl?: DehumidificationControlCluster;
953
+ deviceTemperature?: DeviceTemperatureCluster;
954
+ diagnostics?: DiagnosticsCluster;
955
+ doorLock?: DoorLockCluster;
956
+ electricalMeasurement?: ElectricalMeasurementCluster;
957
+ fanControl?: FanControlCluster;
958
+ flowMeasurement?: FlowMeasurementCluster;
959
+ groups?: GroupsCluster;
960
+ iasACE?: IasACECluster;
961
+ iasWD?: IasWDCluster;
962
+ iasZone?: IasZoneCluster;
963
+ identify?: IdentifyCluster;
964
+ illuminanceLevelSensing?: IlluminanceLevelSensingCluster;
965
+ illuminanceMeasurement?: IlluminanceMeasurementCluster;
966
+ levelControl?: LevelControlCluster;
967
+ metering?: MeteringCluster;
968
+ multistateInput?: MultistateInputCluster;
969
+ multistateOutput?: MultistateOutputCluster;
970
+ multistateValue?: MultistateValueCluster;
971
+ occupancySensing?: OccupancySensingCluster;
972
+ onOff?: OnOffCluster;
973
+ onOffSwitch?: OnOffSwitchCluster;
974
+ ota?: OtaCluster;
975
+ pollControl?: PollControlCluster;
976
+ powerConfiguration?: PowerConfigurationCluster;
977
+ powerProfile?: PowerProfileCluster;
978
+ pressureMeasurement?: PressureMeasurementCluster;
979
+ pumpConfigurationAndControl?: PumpConfigurationAndControlCluster;
980
+ relativeHumidity?: RelativeHumidityCluster;
981
+ scenes?: ScenesCluster;
982
+ shadeConfiguration?: ShadeConfigurationCluster;
983
+ temperatureMeasurement?: TemperatureMeasurementCluster;
984
+ thermostat?: ThermostatCluster;
985
+ time?: TimeCluster;
986
+ touchlink?: TouchlinkCluster;
987
+ windowCovering?: WindowCoveringCluster;
988
+ }
989
+
990
+ export type ZCLNodeEndpoint = {
991
+ clusters: ClusterRegistry & {
296
992
  [clusterName: string]: ZCLNodeCluster | undefined;
297
993
  };
298
994
  };
299
995
 
300
- interface ZCLNode {
996
+ export interface ZCLNode {
301
997
  endpoints: { [endpointId: number | string]: ZCLNodeEndpoint };
302
998
  handleFrame: (
303
999
  endpointId: number,
@@ -308,16 +1004,57 @@ interface ZCLNode {
308
1004
  }
309
1005
 
310
1006
  declare module "zigbee-clusters" {
311
- export var ZCLNode: {
1007
+ export const ZCLNode: {
312
1008
  new (options: ConstructorOptions): ZCLNode;
313
1009
  };
314
1010
  export const CLUSTER: {
315
- [key: string]: { ID: number; NAME: string; ATTRIBUTES: any; COMMANDS: any };
1011
+ [key: string]: { ID: number; NAME: string; ATTRIBUTES: unknown; COMMANDS: unknown };
316
1012
  };
317
- export var ZCLNodeCluster;
318
- export var BasicCluster;
319
- export var OnOffCluster;
320
- export var LevelControlCluster;
321
- export var ColorControlCluster;
322
- export var PowerConfigurationCluster;
323
- }
1013
+ export { ZCLNodeCluster };
1014
+ export const AlarmsCluster: AlarmsCluster;
1015
+ export const AnalogInputCluster: AnalogInputCluster;
1016
+ export const AnalogOutputCluster: AnalogOutputCluster;
1017
+ export const AnalogValueCluster: AnalogValueCluster;
1018
+ export const BallastConfigurationCluster: BallastConfigurationCluster;
1019
+ export const BasicCluster: BasicCluster;
1020
+ export const BinaryInputCluster: BinaryInputCluster;
1021
+ export const BinaryOutputCluster: BinaryOutputCluster;
1022
+ export const BinaryValueCluster: BinaryValueCluster;
1023
+ export const ColorControlCluster: ColorControlCluster;
1024
+ export const DehumidificationControlCluster: DehumidificationControlCluster;
1025
+ export const DeviceTemperatureCluster: DeviceTemperatureCluster;
1026
+ export const DiagnosticsCluster: DiagnosticsCluster;
1027
+ export const DoorLockCluster: DoorLockCluster;
1028
+ export const ElectricalMeasurementCluster: ElectricalMeasurementCluster;
1029
+ export const FanControlCluster: FanControlCluster;
1030
+ export const FlowMeasurementCluster: FlowMeasurementCluster;
1031
+ export const GroupsCluster: GroupsCluster;
1032
+ export const IasACECluster: IasACECluster;
1033
+ export const IasWDCluster: IasWDCluster;
1034
+ export const IasZoneCluster: IasZoneCluster;
1035
+ export const IdentifyCluster: IdentifyCluster;
1036
+ export const IlluminanceLevelSensingCluster: IlluminanceLevelSensingCluster;
1037
+ export const IlluminanceMeasurementCluster: IlluminanceMeasurementCluster;
1038
+ export const LevelControlCluster: LevelControlCluster;
1039
+ export const MeteringCluster: MeteringCluster;
1040
+ export const MultistateInputCluster: MultistateInputCluster;
1041
+ export const MultistateOutputCluster: MultistateOutputCluster;
1042
+ export const MultistateValueCluster: MultistateValueCluster;
1043
+ export const OccupancySensingCluster: OccupancySensingCluster;
1044
+ export const OnOffCluster: OnOffCluster;
1045
+ export const OnOffSwitchCluster: OnOffSwitchCluster;
1046
+ export const OtaCluster: OtaCluster;
1047
+ export const PollControlCluster: PollControlCluster;
1048
+ export const PowerConfigurationCluster: PowerConfigurationCluster;
1049
+ export const PowerProfileCluster: PowerProfileCluster;
1050
+ export const PressureMeasurementCluster: PressureMeasurementCluster;
1051
+ export const PumpConfigurationAndControlCluster: PumpConfigurationAndControlCluster;
1052
+ export const RelativeHumidityCluster: RelativeHumidityCluster;
1053
+ export const ScenesCluster: ScenesCluster;
1054
+ export const ShadeConfigurationCluster: ShadeConfigurationCluster;
1055
+ export const TemperatureMeasurementCluster: TemperatureMeasurementCluster;
1056
+ export const ThermostatCluster: ThermostatCluster;
1057
+ export const TimeCluster: TimeCluster;
1058
+ export const TouchlinkCluster: TouchlinkCluster;
1059
+ export const WindowCoveringCluster: WindowCoveringCluster;
1060
+ }