Skip to content

Commit a228c1c

Browse files
liubotongsKoenkk
andauthored
fix: Sonoff: improve inching control (#8790)
Co-authored-by: Koen Kanters <[email protected]>
1 parent cea6699 commit a228c1c

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

src/devices/sonoff.ts

+24-23
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ const sonoffExtend = {
9494

9595
const tmpTime = Number(Math.round(Number((value[inchingTime as keyof typeof value] * 2).toFixed(1))).toFixed(1));
9696

97-
const payloadValue = [];
97+
const payloadValue: Uint8Array = new Uint8Array(11);
9898
payloadValue[0] = 0x01; // Cmd
9999
payloadValue[1] = 0x17; // SubCmd
100100
payloadValue[2] = 0x07; // Length
@@ -110,8 +110,8 @@ const sonoffExtend = {
110110

111111
payloadValue[5] = 0x00; // Channel
112112

113-
payloadValue[6] = tmpTime; // Timeout
114-
payloadValue[7] = tmpTime >> 8;
113+
payloadValue[6] = tmpTime & 0xff; // Timeout
114+
payloadValue[7] = (tmpTime >> 8) & 0xff;
115115

116116
payloadValue[8] = 0x00; // Reserve
117117
payloadValue[9] = 0x00;
@@ -338,20 +338,21 @@ const sonoffExtend = {
338338
const irrigationInterval: string = 'irrigation_interval';
339339
// logger.debug(`to zigbee cyclic_timed_irrigation ${value[irrigationInterval as keyof typeof value]}`, NS);
340340

341-
const payloadValue = [];
341+
// const payloadValue = [];
342+
const payloadValue: Uint8Array = new Uint8Array(11);
342343
payloadValue[0] = 0x0a;
343344
payloadValue[1] = 0x00;
344-
payloadValue[2] = value[totalNumber as keyof typeof value];
345+
payloadValue[2] = value[totalNumber as keyof typeof value] & 0xff;
345346

346-
payloadValue[3] = value[irrigationDuration as keyof typeof value] >> 24;
347-
payloadValue[4] = value[irrigationDuration as keyof typeof value] >> 16;
348-
payloadValue[5] = value[irrigationDuration as keyof typeof value] >> 8;
349-
payloadValue[6] = value[irrigationDuration as keyof typeof value];
347+
payloadValue[3] = (value[irrigationDuration as keyof typeof value] >> 24) & 0xff;
348+
payloadValue[4] = (value[irrigationDuration as keyof typeof value] >> 16) & 0xff;
349+
payloadValue[5] = (value[irrigationDuration as keyof typeof value] >> 8) & 0xff;
350+
payloadValue[6] = value[irrigationDuration as keyof typeof value] & 0xff;
350351

351-
payloadValue[7] = value[irrigationInterval as keyof typeof value] >> 24;
352-
payloadValue[8] = value[irrigationInterval as keyof typeof value] >> 16;
353-
payloadValue[9] = value[irrigationInterval as keyof typeof value] >> 8;
354-
payloadValue[10] = value[irrigationInterval as keyof typeof value];
352+
payloadValue[7] = (value[irrigationInterval as keyof typeof value] >> 24) & 0xff;
353+
payloadValue[8] = (value[irrigationInterval as keyof typeof value] >> 16) & 0xff;
354+
payloadValue[9] = (value[irrigationInterval as keyof typeof value] >> 8) & 0xff;
355+
payloadValue[10] = value[irrigationInterval as keyof typeof value] & 0xff;
355356

356357
const payload = {[0x5008]: {value: payloadValue, type: 0x42}};
357358
await entity.write('customClusterEwelink', payload, defaultResponseOptions);
@@ -449,20 +450,20 @@ const sonoffExtend = {
449450
const irrigationInterval: string = 'irrigation_interval';
450451
// logger.debug(`to zigbee cyclic_Quantitative_irrigation ${value[irrigationInterval as keyof typeof value]}`, NS);
451452

452-
const payloadValue = [];
453+
const payloadValue: Uint8Array = new Uint8Array(11);
453454
payloadValue[0] = 0x0a;
454455
payloadValue[1] = 0x00;
455-
payloadValue[2] = value[totalNumber as keyof typeof value];
456+
payloadValue[2] = value[totalNumber as keyof typeof value] & 0xff;
456457

457-
payloadValue[3] = value[irrigationCapacity as keyof typeof value] >> 24;
458-
payloadValue[4] = value[irrigationCapacity as keyof typeof value] >> 16;
459-
payloadValue[5] = value[irrigationCapacity as keyof typeof value] >> 8;
460-
payloadValue[6] = value[irrigationCapacity as keyof typeof value];
458+
payloadValue[3] = (value[irrigationCapacity as keyof typeof value] >> 24) & 0xff;
459+
payloadValue[4] = (value[irrigationCapacity as keyof typeof value] >> 16) & 0xff;
460+
payloadValue[5] = (value[irrigationCapacity as keyof typeof value] >> 8) & 0xff;
461+
payloadValue[6] = value[irrigationCapacity as keyof typeof value] & 0xff;
461462

462-
payloadValue[7] = value[irrigationInterval as keyof typeof value] >> 24;
463-
payloadValue[8] = value[irrigationInterval as keyof typeof value] >> 16;
464-
payloadValue[9] = value[irrigationInterval as keyof typeof value] >> 8;
465-
payloadValue[10] = value[irrigationInterval as keyof typeof value];
463+
payloadValue[7] = (value[irrigationInterval as keyof typeof value] >> 24) & 0xff;
464+
payloadValue[8] = (value[irrigationInterval as keyof typeof value] >> 16) & 0xff;
465+
payloadValue[9] = (value[irrigationInterval as keyof typeof value] >> 8) & 0xff;
466+
payloadValue[10] = value[irrigationInterval as keyof typeof value] & 0xff;
466467

467468
const payload = {[0x5009]: {value: payloadValue, type: 0x42}};
468469
await entity.write('customClusterEwelink', payload, defaultResponseOptions);

0 commit comments

Comments
 (0)