@zwave-js/cc 10.19.0 → 10.21.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.
Files changed (56) hide show
  1. package/build/cc/BarrierOperatorCC.d.ts +2 -1
  2. package/build/cc/BarrierOperatorCC.d.ts.map +1 -1
  3. package/build/cc/BarrierOperatorCC.js +76 -15
  4. package/build/cc/BarrierOperatorCC.js.map +1 -1
  5. package/build/cc/BasicCC.d.ts +5 -1
  6. package/build/cc/BasicCC.d.ts.map +1 -1
  7. package/build/cc/BasicCC.js +52 -48
  8. package/build/cc/BasicCC.js.map +1 -1
  9. package/build/cc/BinarySwitchCC.d.ts +2 -1
  10. package/build/cc/BinarySwitchCC.d.ts.map +1 -1
  11. package/build/cc/BinarySwitchCC.js +43 -46
  12. package/build/cc/BinarySwitchCC.js.map +1 -1
  13. package/build/cc/ColorSwitchCC.js +3 -3
  14. package/build/cc/ColorSwitchCC.js.map +1 -1
  15. package/build/cc/ConfigurationCC.d.ts +48 -37
  16. package/build/cc/ConfigurationCC.d.ts.map +1 -1
  17. package/build/cc/ConfigurationCC.js +244 -165
  18. package/build/cc/ConfigurationCC.js.map +1 -1
  19. package/build/cc/EnergyProductionCC.d.ts +7 -1
  20. package/build/cc/EnergyProductionCC.d.ts.map +1 -1
  21. package/build/cc/EnergyProductionCC.js +19 -5
  22. package/build/cc/EnergyProductionCC.js.map +1 -1
  23. package/build/cc/IndicatorCC.d.ts +3 -0
  24. package/build/cc/IndicatorCC.d.ts.map +1 -1
  25. package/build/cc/IndicatorCC.js +3 -0
  26. package/build/cc/IndicatorCC.js.map +1 -1
  27. package/build/cc/IrrigationCC.d.ts +7 -0
  28. package/build/cc/IrrigationCC.d.ts.map +1 -1
  29. package/build/cc/IrrigationCC.js +7 -0
  30. package/build/cc/IrrigationCC.js.map +1 -1
  31. package/build/cc/MeterCC.d.ts +6 -0
  32. package/build/cc/MeterCC.d.ts.map +1 -1
  33. package/build/cc/MeterCC.js +6 -0
  34. package/build/cc/MeterCC.js.map +1 -1
  35. package/build/cc/MultilevelSwitchCC.d.ts +13 -1
  36. package/build/cc/MultilevelSwitchCC.d.ts.map +1 -1
  37. package/build/cc/MultilevelSwitchCC.js +83 -76
  38. package/build/cc/MultilevelSwitchCC.js.map +1 -1
  39. package/build/cc/ScheduleEntryLockCC.d.ts +1 -0
  40. package/build/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  41. package/build/cc/ScheduleEntryLockCC.js.map +1 -1
  42. package/build/cc/WindowCoveringCC.d.ts +28 -78
  43. package/build/cc/WindowCoveringCC.d.ts.map +1 -1
  44. package/build/cc/WindowCoveringCC.js +136 -188
  45. package/build/cc/WindowCoveringCC.js.map +1 -1
  46. package/build/cc/ZWavePlusCC.d.ts +1 -2
  47. package/build/cc/ZWavePlusCC.d.ts.map +1 -1
  48. package/build/cc/ZWavePlusCC.js +68 -15
  49. package/build/cc/ZWavePlusCC.js.map +1 -1
  50. package/build/lib/API.d.ts +18 -2
  51. package/build/lib/API.d.ts.map +1 -1
  52. package/build/lib/API.js +13 -4
  53. package/build/lib/API.js.map +1 -1
  54. package/build/lib/Values.d.ts +2 -0
  55. package/build/lib/Values.d.ts.map +1 -1
  56. package/package.json +6 -6
@@ -1,96 +1,34 @@
1
1
  /// <reference types="node" />
2
2
  import { CommandClasses, Duration, Maybe, MessageOrCCLogEntry, SupervisionResult } from "@zwave-js/core";
3
3
  import type { ZWaveApplicationHost, ZWaveHost } from "@zwave-js/host";
4
- import { CCAPI, PollValueImplementation, POLL_VALUE, SetValueImplementation, SET_VALUE } from "../lib/API";
4
+ import { CCAPI, PollValueImplementation, POLL_VALUE, SetValueImplementation, SetValueImplementationHooksFactory, SET_VALUE, SET_VALUE_HOOKS } from "../lib/API";
5
5
  import { CCCommandOptions, CommandClass, type CommandClassDeserializationOptions } from "../lib/CommandClass";
6
6
  import { LevelChangeDirection, WindowCoveringCommand, WindowCoveringParameter } from "../lib/_Types";
7
7
  export declare const WindowCoveringCCValues: Readonly<{
8
- tiltClose99: ((parameter: WindowCoveringParameter) => {
8
+ levelChangeDown: ((parameter: WindowCoveringParameter) => {
9
9
  readonly meta: {
10
- readonly label: `Close Left - ${string}` | `Close Down - ${string}`;
11
- readonly ccSpecific: {
12
- readonly parameter: WindowCoveringParameter;
13
- };
10
+ readonly label: `${string} - ${string}`;
14
11
  readonly valueChangeOptions: readonly ["transitionDuration"];
15
- readonly readable: false;
16
- readonly type: "boolean";
17
- readonly writeable: true;
18
- };
19
- readonly id: {
20
- commandClass: (typeof CommandClasses)["Window Covering"];
21
- property: "close99";
22
- propertyKey: WindowCoveringParameter;
23
- };
24
- readonly endpoint: (endpoint?: number | undefined) => {
25
- readonly commandClass: (typeof CommandClasses)["Window Covering"];
26
- readonly endpoint: number;
27
- readonly property: "close99";
28
- readonly propertyKey: WindowCoveringParameter;
29
- };
30
- }) & {
31
- is: (valueId: import("@zwave-js/core").ValueID) => boolean;
32
- readonly options: {
33
- readonly internal: false;
34
- readonly minVersion: 1;
35
- readonly secret: false;
36
- readonly stateful: true;
37
- readonly supportsEndpoints: true;
38
- readonly autoCreate: true;
39
- };
40
- };
41
- tiltClose0: ((parameter: WindowCoveringParameter) => {
42
- readonly meta: {
43
- readonly label: `Close Right - ${string}` | `Close Up - ${string}`;
44
- readonly ccSpecific: {
45
- readonly parameter: WindowCoveringParameter;
12
+ readonly states: {
13
+ readonly true: "Start";
14
+ readonly false: "Stop";
46
15
  };
47
- readonly valueChangeOptions: readonly ["transitionDuration"];
48
- readonly readable: false;
49
- readonly type: "boolean";
50
- readonly writeable: true;
51
- };
52
- readonly id: {
53
- commandClass: (typeof CommandClasses)["Window Covering"];
54
- property: "close0";
55
- propertyKey: WindowCoveringParameter;
56
- };
57
- readonly endpoint: (endpoint?: number | undefined) => {
58
- readonly commandClass: (typeof CommandClasses)["Window Covering"];
59
- readonly endpoint: number;
60
- readonly property: "close0";
61
- readonly propertyKey: WindowCoveringParameter;
62
- };
63
- }) & {
64
- is: (valueId: import("@zwave-js/core").ValueID) => boolean;
65
- readonly options: {
66
- readonly internal: false;
67
- readonly minVersion: 1;
68
- readonly secret: false;
69
- readonly stateful: true;
70
- readonly supportsEndpoints: true;
71
- readonly autoCreate: true;
72
- };
73
- };
74
- positionClose: ((parameter: WindowCoveringParameter) => {
75
- readonly meta: {
76
- readonly label: `Close - ${string}`;
77
16
  readonly ccSpecific: {
78
17
  readonly parameter: WindowCoveringParameter;
79
18
  };
80
- readonly valueChangeOptions: readonly ["transitionDuration"];
81
19
  readonly readable: false;
82
20
  readonly type: "boolean";
83
21
  readonly writeable: true;
84
22
  };
85
23
  readonly id: {
86
24
  commandClass: (typeof CommandClasses)["Window Covering"];
87
- property: "close";
25
+ property: "levelChangeDown";
88
26
  propertyKey: WindowCoveringParameter;
89
27
  };
90
28
  readonly endpoint: (endpoint?: number | undefined) => {
91
29
  readonly commandClass: (typeof CommandClasses)["Window Covering"];
92
30
  readonly endpoint: number;
93
- readonly property: "close";
31
+ readonly property: "levelChangeDown";
94
32
  readonly propertyKey: WindowCoveringParameter;
95
33
  };
96
34
  }) & {
@@ -104,26 +42,30 @@ export declare const WindowCoveringCCValues: Readonly<{
104
42
  readonly autoCreate: true;
105
43
  };
106
44
  };
107
- open: ((parameter: WindowCoveringParameter) => {
45
+ levelChangeUp: ((parameter: WindowCoveringParameter) => {
108
46
  readonly meta: {
109
- readonly label: `Open - ${string}`;
47
+ readonly label: `${string} - ${string}`;
48
+ readonly valueChangeOptions: readonly ["transitionDuration"];
49
+ readonly states: {
50
+ readonly true: "Start";
51
+ readonly false: "Stop";
52
+ };
110
53
  readonly ccSpecific: {
111
54
  readonly parameter: WindowCoveringParameter;
112
55
  };
113
- readonly valueChangeOptions: readonly ["transitionDuration"];
114
56
  readonly readable: false;
115
57
  readonly type: "boolean";
116
58
  readonly writeable: true;
117
59
  };
118
60
  readonly id: {
119
61
  commandClass: (typeof CommandClasses)["Window Covering"];
120
- property: "open";
62
+ property: "levelChangeUp";
121
63
  propertyKey: WindowCoveringParameter;
122
64
  };
123
65
  readonly endpoint: (endpoint?: number | undefined) => {
124
66
  readonly commandClass: (typeof CommandClasses)["Window Covering"];
125
67
  readonly endpoint: number;
126
- readonly property: "open";
68
+ readonly property: "levelChangeUp";
127
69
  readonly propertyKey: WindowCoveringParameter;
128
70
  };
129
71
  }) & {
@@ -171,12 +113,16 @@ export declare const WindowCoveringCCValues: Readonly<{
171
113
  };
172
114
  targetValue: ((parameter: WindowCoveringParameter) => {
173
115
  readonly meta: {
116
+ readonly label: `Target value - ${string}`;
117
+ readonly writeable: boolean;
118
+ readonly states: {
119
+ [x: number]: string;
120
+ };
121
+ readonly allowManualEntry: boolean;
174
122
  readonly ccSpecific: {
175
123
  readonly parameter: WindowCoveringParameter;
176
124
  };
177
125
  readonly valueChangeOptions: readonly ["transitionDuration"];
178
- readonly label: `Target value - ${string}`;
179
- readonly writeable: boolean;
180
126
  readonly max: 99;
181
127
  readonly min: 0;
182
128
  readonly type: "number";
@@ -206,10 +152,13 @@ export declare const WindowCoveringCCValues: Readonly<{
206
152
  };
207
153
  currentValue: ((parameter: WindowCoveringParameter) => {
208
154
  readonly meta: {
155
+ readonly label: `Current value - ${string}`;
156
+ readonly states: {
157
+ [x: number]: string;
158
+ };
209
159
  readonly ccSpecific: {
210
160
  readonly parameter: WindowCoveringParameter;
211
161
  };
212
- readonly label: `Current value - ${string}`;
213
162
  readonly writeable: false;
214
163
  readonly max: 99;
215
164
  readonly min: 0;
@@ -267,6 +216,7 @@ export declare const WindowCoveringCCValues: Readonly<{
267
216
  export declare class WindowCoveringCCAPI extends CCAPI {
268
217
  supportsCommand(cmd: WindowCoveringCommand): Maybe<boolean>;
269
218
  protected [SET_VALUE]: SetValueImplementation;
219
+ protected [SET_VALUE_HOOKS]: SetValueImplementationHooksFactory;
270
220
  protected [POLL_VALUE]: PollValueImplementation;
271
221
  getSupported(): Promise<readonly WindowCoveringParameter[] | undefined>;
272
222
  get(parameter: WindowCoveringParameter): Promise<Pick<WindowCoveringCCReport, "duration" | "currentValue" | "targetValue"> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"WindowCoveringCC.d.ts","sourceRoot":"","sources":["../../src/cc/WindowCoveringCC.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WindowCoveringCC.d.ts","sourceRoot":"","sources":["../../src/cc/WindowCoveringCC.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
- var _a, _b;
8
+ var _a, _b, _c;
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.WindowCoveringCCStopLevelChange = exports.WindowCoveringCCStartLevelChange = exports.WindowCoveringCCSet = exports.WindowCoveringCCGet = exports.WindowCoveringCCReport = exports.WindowCoveringCCSupportedGet = exports.WindowCoveringCCSupportedReport = exports.WindowCoveringCC = exports.WindowCoveringCCAPI = exports.WindowCoveringCCValues = void 0;
11
11
  function __assertType(argName, typeName, boundHasError) {
@@ -109,60 +109,42 @@ const CommandClass_1 = require("../lib/CommandClass");
109
109
  const CommandClassDecorators_1 = require("../lib/CommandClassDecorators");
110
110
  const Values_1 = require("../lib/Values");
111
111
  const _Types_1 = require("../lib/_Types");
112
- function parameterToMetadataStates(parameter, isTargetValue) {
112
+ function parameterToMetadataStates(parameter) {
113
113
  switch (parameter) {
114
114
  case _Types_1.WindowCoveringParameter["Vertical Slats Angle (no position)"]:
115
- if (isTargetValue)
116
- return undefined;
117
- return {
118
- 0: "Closing (right)",
119
- 50: "Opening",
120
- 99: "Closing (left)",
121
- };
122
115
  case _Types_1.WindowCoveringParameter["Vertical Slats Angle"]:
123
116
  return {
124
- 0: "Closed (right)",
117
+ 0: "Closed (right inside)",
125
118
  50: "Open",
126
- 99: "Closed (left)",
119
+ 99: "Closed (left inside)",
127
120
  };
128
121
  case _Types_1.WindowCoveringParameter["Horizontal Slats Angle (no position)"]:
129
- if (isTargetValue)
130
- return undefined;
131
- return {
132
- 0: "Closing (up)",
133
- 50: "Opening",
134
- 99: "Closing (down)",
135
- };
136
122
  case _Types_1.WindowCoveringParameter["Horizontal Slats Angle"]:
137
123
  return {
138
- 0: "Closed (up)",
124
+ 0: "Closed (up inside)",
139
125
  50: "Open",
140
- 99: "Closed (down)",
126
+ 99: "Closed (down inside)",
141
127
  };
142
128
  }
143
- if (parameter % 2 === 1) {
144
- // Odd-numbered parameters have position support
145
- return {
146
- 0: "Closed",
147
- 99: "Open",
148
- };
149
- }
150
- else {
151
- if (isTargetValue)
152
- return undefined;
153
- return {
154
- 0: "Closing",
155
- 99: "Opening",
156
- };
157
- }
129
+ return {
130
+ 0: "Closed",
131
+ 99: "Open",
132
+ };
158
133
  }
159
- function isTiltParameter(parameter) {
160
- return (parameter === _Types_1.WindowCoveringParameter["Vertical Slats Angle"] ||
161
- parameter ===
162
- _Types_1.WindowCoveringParameter["Vertical Slats Angle (no position)"] ||
163
- parameter === _Types_1.WindowCoveringParameter["Horizontal Slats Angle"] ||
164
- parameter ===
165
- _Types_1.WindowCoveringParameter["Horizontal Slats Angle (no position)"]);
134
+ function parameterToLevelChangeLabel(parameter, direction) {
135
+ switch (parameter) {
136
+ // For angle control, both directions are closed, so we specify it explicitly
137
+ case _Types_1.WindowCoveringParameter["Vertical Slats Angle (no position)"]:
138
+ case _Types_1.WindowCoveringParameter["Vertical Slats Angle"]:
139
+ return `Change tilt (${direction === "up" ? "left inside" : "right inside"})`;
140
+ case _Types_1.WindowCoveringParameter["Horizontal Slats Angle (no position)"]:
141
+ case _Types_1.WindowCoveringParameter["Horizontal Slats Angle"]:
142
+ // Horizontal slats refer to the position of the inner side of the slats
143
+ // where a high level (99) actually means they face down
144
+ return `Change tilt (${direction === "up" ? "down inside" : "up inside"})`;
145
+ }
146
+ // For all other parameters, refer to the amount of light that is let in
147
+ return direction === "up" ? "Open" : "Close";
166
148
  }
167
149
  exports.WindowCoveringCCValues = Object.freeze({
168
150
  ...Values_1.V.defineStaticCCValues(core_1.CommandClasses["Window Covering"], {
@@ -171,27 +153,24 @@ exports.WindowCoveringCCValues = Object.freeze({
171
153
  }),
172
154
  ...Values_1.V.defineDynamicCCValues(core_1.CommandClasses["Window Covering"], {
173
155
  ...Values_1.V.dynamicPropertyAndKeyWithName("currentValue", "currentValue", (parameter) => parameter, ({ property, propertyKey }) => property === "currentValue" && typeof propertyKey === "number", (parameter) => {
174
- const states = parameterToMetadataStates(parameter, false);
175
156
  return {
176
157
  ...core_1.ValueMetadata.ReadOnlyLevel,
177
158
  label: `Current value - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
178
- ...(states ? { states } : {}),
179
- ccSpecific: {
180
- parameter,
181
- },
159
+ states: parameterToMetadataStates(parameter),
160
+ ccSpecific: { parameter },
182
161
  };
183
162
  }),
184
163
  ...Values_1.V.dynamicPropertyAndKeyWithName("targetValue", "targetValue", (parameter) => parameter, ({ property, propertyKey }) => property === "targetValue" && typeof propertyKey === "number", (parameter) => {
185
- const states = parameterToMetadataStates(parameter, false);
164
+ // Only odd-numbered parameters have position support and are writable
165
+ const writeable = parameter % 2 === 1;
186
166
  return {
187
167
  ...core_1.ValueMetadata.Level,
188
168
  label: `Target value - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
189
169
  // Only odd-numbered parameters have position support and are writable
190
170
  writeable: parameter % 2 === 1,
191
- ...(states ? { states } : {}),
192
- ccSpecific: {
193
- parameter,
194
- },
171
+ states: parameterToMetadataStates(parameter),
172
+ allowManualEntry: writeable,
173
+ ccSpecific: { parameter },
195
174
  valueChangeOptions: ["transitionDuration"],
196
175
  };
197
176
  }),
@@ -202,63 +181,33 @@ exports.WindowCoveringCCValues = Object.freeze({
202
181
  parameter,
203
182
  },
204
183
  })),
205
- // Convenience values to control the different parameters
206
- // Open all parameters
207
- ...Values_1.V.dynamicPropertyAndKeyWithName("open", "open", (parameter) => parameter, ({ property, propertyKey }) => property === "open" && typeof propertyKey === "number", (parameter) => ({
208
- ...core_1.ValueMetadata.WriteOnlyBoolean,
209
- label: `Open - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
210
- ccSpecific: {
211
- parameter,
212
- },
213
- valueChangeOptions: ["transitionDuration"],
214
- })),
215
- // Close positional parameters
216
- ...Values_1.V.dynamicPropertyAndKeyWithName("positionClose", "close", (parameter) => parameter, ({ property, propertyKey }) => property === "close" &&
217
- typeof propertyKey === "number" &&
218
- !isTiltParameter(propertyKey), (parameter) => ({
219
- ...core_1.ValueMetadata.WriteOnlyBoolean,
220
- label: `Close - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
221
- ccSpecific: {
222
- parameter,
223
- },
224
- valueChangeOptions: ["transitionDuration"],
225
- })),
226
- // Close vertical slats to the right, horizontal to the top
227
- ...Values_1.V.dynamicPropertyAndKeyWithName("tiltClose0", "close0", (parameter) => parameter, ({ property, propertyKey }) => property === "close0" &&
228
- typeof propertyKey === "number" &&
229
- isTiltParameter(propertyKey), (parameter) => {
230
- const direction = parameter ===
231
- _Types_1.WindowCoveringParameter["Vertical Slats Angle"] ||
232
- parameter ===
233
- _Types_1.WindowCoveringParameter["Vertical Slats Angle (no position)"]
234
- ? "Right"
235
- : "Up";
184
+ ...Values_1.V.dynamicPropertyAndKeyWithName("levelChangeUp",
185
+ // The direction refers to the change in level, not the physical location
186
+ "levelChangeUp", (parameter) => parameter, ({ property, propertyKey }) => property === "levelChangeUp" && typeof propertyKey === "number", (parameter) => {
236
187
  return {
237
188
  ...core_1.ValueMetadata.WriteOnlyBoolean,
238
- label: `Close ${direction} - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
239
- ccSpecific: {
240
- parameter,
241
- },
189
+ label: `${parameterToLevelChangeLabel(parameter, "up")} - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
242
190
  valueChangeOptions: ["transitionDuration"],
191
+ states: {
192
+ true: "Start",
193
+ false: "Stop",
194
+ },
195
+ ccSpecific: { parameter },
243
196
  };
244
197
  }),
245
- // Close vertical slats to the left, horizontal to the bottom
246
- ...Values_1.V.dynamicPropertyAndKeyWithName("tiltClose99", "close99", (parameter) => parameter, ({ property, propertyKey }) => property === "close99" &&
247
- typeof propertyKey === "number" &&
248
- isTiltParameter(propertyKey), (parameter) => {
249
- const direction = parameter ===
250
- _Types_1.WindowCoveringParameter["Vertical Slats Angle"] ||
251
- parameter ===
252
- _Types_1.WindowCoveringParameter["Vertical Slats Angle (no position)"]
253
- ? "Left"
254
- : "Down";
198
+ ...Values_1.V.dynamicPropertyAndKeyWithName("levelChangeDown",
199
+ // The direction refers to the change in level, not the physical location
200
+ "levelChangeDown", (parameter) => parameter, ({ property, propertyKey }) => property === "levelChangeDown" &&
201
+ typeof propertyKey === "number", (parameter) => {
255
202
  return {
256
203
  ...core_1.ValueMetadata.WriteOnlyBoolean,
257
- label: `Close ${direction} - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
258
- ccSpecific: {
259
- parameter,
260
- },
204
+ label: `${parameterToLevelChangeLabel(parameter, "down")} - ${(0, safe_1.getEnumMemberName)(_Types_1.WindowCoveringParameter, parameter)}`,
261
205
  valueChangeOptions: ["transitionDuration"],
206
+ states: {
207
+ true: "Start",
208
+ false: "Stop",
209
+ },
210
+ ccSpecific: { parameter },
262
211
  };
263
212
  }),
264
213
  }),
@@ -272,7 +221,6 @@ let WindowCoveringCCAPI = class WindowCoveringCCAPI extends API_1.CCAPI {
272
221
  property,
273
222
  propertyKey,
274
223
  };
275
- let targetValue;
276
224
  if (exports.WindowCoveringCCValues.targetValue.is(valueId)) {
277
225
  if (typeof propertyKey !== "number" ||
278
226
  // Only odd-numbered parameters have position support and are writable
@@ -282,92 +230,98 @@ let WindowCoveringCCAPI = class WindowCoveringCCAPI extends API_1.CCAPI {
282
230
  if (typeof value !== "number") {
283
231
  (0, API_1.throwWrongValueType)(this.ccId, property, "number", typeof value);
284
232
  }
285
- targetValue = value;
233
+ const parameter = propertyKey;
234
+ const duration = core_1.Duration.from(options?.transitionDuration);
235
+ return this.set([{ parameter, value }], duration);
286
236
  }
287
- else if (
288
- // Opening a positional parameter is the same as closing a tilt parameter to one side (99)
289
- (exports.WindowCoveringCCValues.open.is(valueId) &&
290
- !isTiltParameter(propertyKey)) ||
291
- exports.WindowCoveringCCValues.tiltClose99.is(valueId)) {
292
- if (!value) {
293
- (0, API_1.throwWrongValueType)(this.ccId, property, "true", typeof value);
237
+ else if (exports.WindowCoveringCCValues.levelChangeUp.is(valueId) ||
238
+ exports.WindowCoveringCCValues.levelChangeDown.is(valueId)) {
239
+ if (typeof value !== "boolean") {
240
+ (0, API_1.throwWrongValueType)(this.ccId, property, "boolean", typeof value);
294
241
  }
295
- targetValue = 99;
296
- }
297
- else if (
298
- // Opening a tilt parameter means setting it to 50
299
- exports.WindowCoveringCCValues.open.is(valueId) &&
300
- isTiltParameter(propertyKey)) {
301
- if (!value) {
302
- (0, API_1.throwWrongValueType)(this.ccId, property, "true", typeof value);
242
+ const parameter = propertyKey;
243
+ const direction = exports.WindowCoveringCCValues.levelChangeUp.is(valueId)
244
+ ? "up"
245
+ : "down";
246
+ if (value) {
247
+ // Perform the level change
248
+ const duration = core_1.Duration.from(options?.transitionDuration);
249
+ return this.startLevelChange(parameter, direction, duration);
303
250
  }
304
- targetValue = 50;
305
- }
306
- else if (exports.WindowCoveringCCValues.positionClose.is(valueId) ||
307
- exports.WindowCoveringCCValues.tiltClose0.is(valueId)) {
308
- if (!value) {
309
- (0, API_1.throwWrongValueType)(this.ccId, property, "true", typeof value);
251
+ else {
252
+ return this.stopLevelChange(parameter);
310
253
  }
311
- // Closing a positional parameter is the same as closing a tilt parameter to the other side
312
- targetValue = 0;
313
254
  }
314
255
  else {
315
256
  (0, API_1.throwUnsupportedProperty)(this.ccId, property);
316
257
  }
317
- const parameter = propertyKey;
318
- const currentValueValueId = exports.WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);
319
- const targetValueValueId = exports.WindowCoveringCCValues.targetValue(parameter).endpoint(this.endpoint.index);
320
- // If we have set the value via one of the convenience properties,
321
- // we need to update the targetValue value ID
322
- if (targetValue !== value) {
323
- this.tryGetValueDB()?.setValue(targetValueValueId, targetValue);
324
- }
325
- const duration = core_1.Duration.from(options?.transitionDuration);
326
- // Window Covering commands may take some time to be executed.
327
- // Therefore we try to supervise the command execution and delay the
328
- // optimistic update until the final result is received.
329
- const result = await this.withOptions({
330
- requestStatusUpdates: true,
331
- onUpdate: (update) => {
332
- if (update.status === core_1.SupervisionStatus.Success) {
333
- this.tryGetValueDB()?.setValue(currentValueValueId, targetValue);
334
- }
335
- else if (update.status === core_1.SupervisionStatus.Fail) {
336
- // The transition failed, so now we don't know the status
337
- // Refresh the current value
338
- // eslint-disable-next-line @typescript-eslint/no-empty-function
339
- void this.get(parameter).catch(() => { });
340
- }
341
- },
342
- }).set([{ parameter: propertyKey, value: targetValue }], duration);
343
- // If the command did not fail, assume that it succeeded and update the currentValue accordingly
344
- // so UIs have immediate feedback
345
- const shouldUpdateOptimistically =
346
- // For unsupervised commands, make the choice to update optimistically dependent on the driver options
347
- (!this.applHost.options.disableOptimisticValueUpdate &&
348
- result == undefined) ||
349
- ((0, core_1.isSupervisionResult)(result) &&
350
- result.status === core_1.SupervisionStatus.Success);
351
- if (this.isSinglecast()) {
352
- // Only update currentValue for valid target values
353
- if (shouldUpdateOptimistically &&
354
- targetValue >= 0 &&
355
- targetValue <= 99) {
356
- this.tryGetValueDB()?.setValue(currentValueValueId, targetValue);
357
- }
358
- // Verify the current value after a delay, unless...
359
- // ...the command was supervised and successful
360
- // ...and we know the actual value
361
- if (!(0, core_1.supervisedCommandSucceeded)(result)) {
362
- this.schedulePoll({
363
- property: currentValueValueId.property,
364
- propertyKey: currentValueValueId.propertyKey,
365
- }, targetValue, { duration });
366
- }
258
+ };
259
+ this[_b] = ({ property, propertyKey }, value, options) => {
260
+ const valueId = {
261
+ commandClass: this.ccId,
262
+ property,
263
+ propertyKey,
264
+ };
265
+ if (exports.WindowCoveringCCValues.targetValue.is(valueId)) {
266
+ if (typeof propertyKey !== "number")
267
+ return;
268
+ const parameter = propertyKey;
269
+ const duration = core_1.Duration.from(options?.transitionDuration);
270
+ const currentValueValueId = exports.WindowCoveringCCValues.currentValue(parameter).endpoint(this.endpoint.index);
271
+ return {
272
+ // Window Covering commands may take some time to be executed.
273
+ // Therefore we try to supervise the command execution and delay the
274
+ // optimistic update until the final result is received.
275
+ supervisionDelayedUpdates: true,
276
+ supervisionOnSuccess: () => {
277
+ this.tryGetValueDB()?.setValue(currentValueValueId, value);
278
+ },
279
+ supervisionOnFailure: async () => {
280
+ // The transition failed, so now we don't know the status - refresh the current value
281
+ try {
282
+ await this.get(parameter);
283
+ }
284
+ catch {
285
+ // ignore
286
+ }
287
+ },
288
+ optimisticallyUpdateRelatedValues: () => {
289
+ // Only update currentValue for valid target values
290
+ if (typeof value === "number" &&
291
+ value >= 0 &&
292
+ value <= 99) {
293
+ if (this.isSinglecast()) {
294
+ this.tryGetValueDB()?.setValue(currentValueValueId, value);
295
+ }
296
+ else if (this.isMulticast()) {
297
+ // Figure out which nodes were affected by this command
298
+ const affectedNodes = this.endpoint.node.physicalNodes.filter((node) => node
299
+ .getEndpoint(this.endpoint.index)
300
+ ?.supportsCC(this.ccId));
301
+ // and optimistically update the currentValue
302
+ for (const node of affectedNodes) {
303
+ this.applHost
304
+ .tryGetValueDB(node.id)
305
+ ?.setValue(currentValueValueId, value);
306
+ }
307
+ }
308
+ }
309
+ },
310
+ verifyChanges: () => {
311
+ if (this.isSinglecast()) {
312
+ // We query currentValue instead of targetValue to make sure that unsolicited updates cancel the scheduled poll
313
+ this.schedulePoll(currentValueValueId, value, {
314
+ duration,
315
+ });
316
+ }
317
+ else {
318
+ // For multicasts, do not schedule a refresh - this could cause a LOT of traffic
319
+ }
320
+ },
321
+ };
367
322
  }
368
- return result;
369
323
  };
370
- this[_b] = async ({ property, propertyKey, }) => {
324
+ this[_c] = async ({ property, propertyKey, }) => {
371
325
  switch (property) {
372
326
  case "currentValue":
373
327
  case "targetValue":
@@ -454,7 +408,7 @@ let WindowCoveringCCAPI = class WindowCoveringCCAPI extends API_1.CCAPI {
454
408
  return this.applHost.sendCommand(cc, this.commandOptions);
455
409
  }
456
410
  };
457
- _a = API_1.SET_VALUE, _b = API_1.POLL_VALUE;
411
+ _a = API_1.SET_VALUE, _b = API_1.SET_VALUE_HOOKS, _c = API_1.POLL_VALUE;
458
412
  WindowCoveringCCAPI = __decorate([
459
413
  (0, CommandClassDecorators_1.API)(core_1.CommandClasses["Window Covering"])
460
414
  ], WindowCoveringCCAPI);
@@ -493,15 +447,9 @@ ${supported
493
447
  this.setMetadata(applHost, exports.WindowCoveringCCValues.currentValue(param));
494
448
  this.setMetadata(applHost, exports.WindowCoveringCCValues.targetValue(param));
495
449
  this.setMetadata(applHost, exports.WindowCoveringCCValues.duration(param));
496
- // Convenience values
497
- this.setMetadata(applHost, exports.WindowCoveringCCValues.open(param));
498
- if (isTiltParameter(param)) {
499
- this.setMetadata(applHost, exports.WindowCoveringCCValues.tiltClose0(param));
500
- this.setMetadata(applHost, exports.WindowCoveringCCValues.tiltClose99(param));
501
- }
502
- else {
503
- this.setMetadata(applHost, exports.WindowCoveringCCValues.positionClose(param));
504
- }
450
+ // Level change values
451
+ this.setMetadata(applHost, exports.WindowCoveringCCValues.levelChangeUp(param));
452
+ this.setMetadata(applHost, exports.WindowCoveringCCValues.levelChangeDown(param));
505
453
  // And for the odd parameters (with position support), query the position
506
454
  if (param % 2 === 1) {
507
455
  applHost.controllerLog.logNode(node.id, {