Skip to content

Commit 4737a3f

Browse files
committed
fix: Fix too small frames leading to errors for Xiaomi ZNCWWSQ01LM Koenkk/zigbee2mqtt#17148
1 parent 9b764ea commit 4737a3f

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/lib/xiaomi.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,11 @@ export const fromZigbee = {
14961496
Object.entries(msg.data).forEach(([key, value]) => {
14971497
switch (parseInt(key)) {
14981498
case 0xfff1: {
1499+
// @ts-expect-error
1500+
if (value.length < 8) {
1501+
meta.logger.debug(`zigbee-herdsman-converters:aqara_feeder: cannot handle ${value}, frame too small`);
1502+
return;
1503+
}
14991504
// @ts-expect-error
15001505
const attr = value.slice(3, 7);
15011506
// @ts-expect-error
@@ -1555,10 +1560,10 @@ export const fromZigbee = {
15551560
break;
15561561
case 0x080007d1: // ? 64
15571562
case 0x0d090055: // ? 00
1558-
meta.logger.warn(`zigbee-herdsman-converters:aqara_feeder: Unhandled attribute ${attr} = ${val}`);
1563+
meta.logger.debug(`zigbee-herdsman-converters:aqara_feeder: Unhandled attribute ${attr} = ${val}`);
15591564
break;
15601565
default:
1561-
meta.logger.warn(`zigbee-herdsman-converters:aqara_feeder: Unknown attribute ${attr} = ${val}`);
1566+
meta.logger.debug(`zigbee-herdsman-converters:aqara_feeder: Unknown attribute ${attr} = ${val}`);
15621567
}
15631568
break;
15641569
}
@@ -1568,7 +1573,7 @@ export const fromZigbee = {
15681573
meta.logger.debug(`zigbee-herdsman-converters:aqara_feeder: Unhandled key ${key} = ${value}`);
15691574
break;
15701575
default:
1571-
meta.logger.warn(`zigbee-herdsman-converters:aqara_feeder: Unknown key ${key} = ${value}`);
1576+
meta.logger.debug(`zigbee-herdsman-converters:aqara_feeder: Unknown key ${key} = ${value}`);
15721577
}
15731578
});
15741579
return result;

test/xiaomi.test.js

+5
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,11 @@ describe('lib/xiaomi', () => {
258258
const result = fromZigbee.aqara_feeder.convert(null, {data: {'65521': data}}, null, null, {logger: {warn: jest.fn(), debug: jest.fn()}});
259259
expect(result).toStrictEqual({ schedule: [ { days: 'everyday', hour: 1, minute: 1, size: 1 } ] });
260260
});
261+
it.only('Too small frame', () => {
262+
const data = Buffer.from([128,2,2,48]);
263+
const result = fromZigbee.aqara_feeder.convert(null, {data: {'65521': data}}, null, null, {logger: {warn: jest.fn(), debug: jest.fn()}});
264+
expect(result).toStrictEqual({});
265+
});
261266
});
262267
});
263268
});

0 commit comments

Comments
 (0)