Skip to content

Commit 2002ac3

Browse files
candeodevelopmentautofix-ci[bot]
authored andcommitted
fix: Candeo: small improvements (Koenkk#9643)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
1 parent 23b3e03 commit 2002ac3

1 file changed

Lines changed: 67 additions & 12 deletions

File tree

src/devices/candeo.ts

Lines changed: 67 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ const ea = exposes.access;
1111
const manufacturerSpecificSwitchTypeClusterCode = 0x1224;
1212
const manufacturerSpecificRotaryRemoteControlClusterCode = 0xff03;
1313
const switchTypeAttribute = 0x8803;
14-
const dataType = 0x20;
15-
const valueMap: {[key: number]: string} = {
14+
const switchTypeDataType = 0x20;
15+
const switchTypeValueMap: {[key: number]: string} = {
1616
0: "momentary",
1717
1: "toggle",
1818
};
19-
const valueLookup: {[key: string]: number} = {
19+
const switchTypeValueLookup: {[key: string]: number} = {
2020
momentary: 0,
2121
toggle: 1,
2222
};
@@ -45,7 +45,7 @@ const fzLocal = {
4545
if (Object.hasOwn(msg.data, switchTypeAttribute)) {
4646
const value = msg.data[switchTypeAttribute];
4747
return {
48-
external_switch_type: valueMap[value] || "unknown",
48+
external_switch_type: switchTypeValueMap[value] || "unknown",
4949
external_switch_type_numeric: value,
5050
};
5151
}
@@ -147,10 +147,10 @@ const tzLocal = {
147147
key: ["external_switch_type"],
148148
convertSet: async (entity, key, value, meta) => {
149149
utils.assertString(value);
150-
const numericValue = valueLookup[value] ?? Number.parseInt(value, 10);
150+
const numericValue = switchTypeValueLookup[value] ?? Number.parseInt(value, 10);
151151
await entity.write(
152152
"genBasic",
153-
{[switchTypeAttribute]: {value: numericValue, type: dataType}},
153+
{[switchTypeAttribute]: {value: numericValue, type: switchTypeDataType}},
154154
{manufacturerCode: manufacturerSpecificSwitchTypeClusterCode},
155155
);
156156
return {state: {external_switch_type: value}};
@@ -175,6 +175,11 @@ export const definitions: DefinitionWithExtend[] = [
175175
const endpoint1 = device.getEndpoint(1);
176176
await endpoint1.write("genOnOff", {16387: {value: 0xff, type: 0x30}});
177177
await endpoint1.read("genOnOff", ["startUpOnOff"]);
178+
await endpoint1.write(
179+
"genBasic",
180+
{[switchTypeAttribute]: {value: switchTypeValueLookup["toggle"], type: switchTypeDataType}},
181+
{manufacturerCode: manufacturerSpecificSwitchTypeClusterCode},
182+
);
178183
await endpoint1.read("genBasic", [switchTypeAttribute], {manufacturerCode: manufacturerSpecificSwitchTypeClusterCode});
179184
},
180185
},
@@ -202,8 +207,17 @@ export const definitions: DefinitionWithExtend[] = [
202207
vendor: "Candeo",
203208
description: "Zigbee micro smart dimmer",
204209
extend: [
205-
m.light({configureReporting: true, levelConfig: {features: ["on_off_transition_time", "on_level", "current_level_startup"]}}),
206-
m.electricityMeter(),
210+
m.light({
211+
configureReporting: true,
212+
levelReportingConfig: {min: 1, max: 3600, change: 1},
213+
levelConfig: {features: ["on_off_transition_time", "on_level", "current_level_startup"]},
214+
}),
215+
m.electricityMeter({
216+
power: {min: 10, max: 600, change: 50},
217+
voltage: {min: 10, max: 600, change: 500},
218+
current: {min: 10, max: 600, change: 500},
219+
energy: {min: 10, max: 1800, change: 360000},
220+
}),
207221
],
208222
fromZigbee: [fzLocal.switch_type, fz.ignore_genOta],
209223
toZigbee: [tzLocal.switch_type],
@@ -218,6 +232,11 @@ export const definitions: DefinitionWithExtend[] = [
218232
await endpoint1.read("genLevelCtrl", ["onOffTransitionTime"]);
219233
await endpoint1.write("genLevelCtrl", {16384: {value: 0xff, type: 0x20}});
220234
await endpoint1.read("genLevelCtrl", ["startUpCurrentLevel"]);
235+
await endpoint1.write(
236+
"genBasic",
237+
{[switchTypeAttribute]: {value: switchTypeValueLookup["momentary"], type: switchTypeDataType}},
238+
{manufacturerCode: manufacturerSpecificSwitchTypeClusterCode},
239+
);
221240
await endpoint1.read("genBasic", [switchTypeAttribute], {manufacturerCode: manufacturerSpecificSwitchTypeClusterCode});
222241
},
223242
},
@@ -227,8 +246,17 @@ export const definitions: DefinitionWithExtend[] = [
227246
vendor: "Candeo",
228247
description: "Zigbee micro smart dimmer",
229248
extend: [
230-
m.light({configureReporting: true, levelConfig: {features: ["on_off_transition_time", "on_level", "current_level_startup"]}}),
231-
m.electricityMeter(),
249+
m.light({
250+
configureReporting: true,
251+
levelReportingConfig: {min: 1, max: 3600, change: 1},
252+
levelConfig: {features: ["on_off_transition_time", "on_level", "current_level_startup"]},
253+
}),
254+
m.electricityMeter({
255+
power: {min: 10, max: 600, change: 50},
256+
voltage: {min: 10, max: 600, change: 500},
257+
current: {min: 10, max: 600, change: 500},
258+
energy: {min: 10, max: 1800, change: 360000},
259+
}),
232260
],
233261
fromZigbee: [fzLocal.switch_type, fz.ignore_genOta],
234262
toZigbee: [tzLocal.switch_type],
@@ -243,6 +271,11 @@ export const definitions: DefinitionWithExtend[] = [
243271
await endpoint1.read("genLevelCtrl", ["onOffTransitionTime"]);
244272
await endpoint1.write("genLevelCtrl", {16384: {value: 0xff, type: 0x20}});
245273
await endpoint1.read("genLevelCtrl", ["startUpCurrentLevel"]);
274+
await endpoint1.write(
275+
"genBasic",
276+
{[switchTypeAttribute]: {value: switchTypeValueLookup["momentary"], type: switchTypeDataType}},
277+
{manufacturerCode: manufacturerSpecificSwitchTypeClusterCode},
278+
);
246279
await endpoint1.read("genBasic", [switchTypeAttribute], {manufacturerCode: manufacturerSpecificSwitchTypeClusterCode});
247280
},
248281
},
@@ -258,6 +291,7 @@ export const definitions: DefinitionWithExtend[] = [
258291
extend: [
259292
m.light({
260293
configureReporting: true,
294+
levelReportingConfig: {min: 1, max: 3600, change: 1},
261295
levelConfig: {features: ["on_level", "current_level_startup"]},
262296
powerOnBehavior: true,
263297
}),
@@ -373,7 +407,12 @@ export const definitions: DefinitionWithExtend[] = [
373407
multiEndpointSkip: ["power", "current", "voltage", "energy"],
374408
}),
375409
m.onOff({endpointNames: ["l1", "l2"]}),
376-
m.electricityMeter(),
410+
m.electricityMeter({
411+
power: {min: 10, max: 600, change: 50},
412+
voltage: {min: 10, max: 600, change: 500},
413+
current: {min: 10, max: 600, change: 500},
414+
energy: {min: 10, max: 1800, change: 360000},
415+
}),
377416
],
378417
fromZigbee: [fzLocal.switch_type, fz.ignore_genOta],
379418
toZigbee: [tzLocal.switch_type],
@@ -387,6 +426,11 @@ export const definitions: DefinitionWithExtend[] = [
387426
await endpoint2.write("genOnOff", {16387: {value: 0xff, type: 0x30}});
388427
await endpoint2.read("genOnOff", [16387]);
389428
const endpoint11 = device.getEndpoint(11);
429+
await endpoint1.write(
430+
"genBasic",
431+
{[switchTypeAttribute]: {value: switchTypeValueLookup["toggle"], type: switchTypeDataType}},
432+
{manufacturerCode: manufacturerSpecificSwitchTypeClusterCode},
433+
);
390434
await endpoint11.read("genBasic", [switchTypeAttribute], {manufacturerCode: manufacturerSpecificSwitchTypeClusterCode});
391435
},
392436
},
@@ -405,7 +449,13 @@ export const definitions: DefinitionWithExtend[] = [
405449
model: "C203",
406450
vendor: "Candeo",
407451
description: "Zigbee micro smart dimmer",
408-
extend: [m.light({configureReporting: true, levelConfig: {features: ["on_off_transition_time", "on_level", "current_level_startup"]}})],
452+
extend: [
453+
m.light({
454+
configureReporting: true,
455+
levelReportingConfig: {min: 1, max: 3600, change: 1},
456+
levelConfig: {features: ["on_off_transition_time", "on_level", "current_level_startup"]},
457+
}),
458+
],
409459
fromZigbee: [fzLocal.switch_type, fz.ignore_genOta],
410460
toZigbee: [tzLocal.switch_type],
411461
exposes: [e.enum("external_switch_type", ea.ALL, ["momentary", "toggle"]).withLabel("External switch type")],
@@ -419,6 +469,11 @@ export const definitions: DefinitionWithExtend[] = [
419469
await endpoint1.read("genLevelCtrl", ["onOffTransitionTime"]);
420470
await endpoint1.write("genLevelCtrl", {16384: {value: 0xff, type: 0x20}});
421471
await endpoint1.read("genLevelCtrl", ["startUpCurrentLevel"]);
472+
await endpoint1.write(
473+
"genBasic",
474+
{[switchTypeAttribute]: {value: switchTypeValueLookup["momentary"], type: switchTypeDataType}},
475+
{manufacturerCode: manufacturerSpecificSwitchTypeClusterCode},
476+
);
422477
await endpoint1.read("genBasic", [switchTypeAttribute], {manufacturerCode: manufacturerSpecificSwitchTypeClusterCode});
423478
},
424479
},

0 commit comments

Comments
 (0)