diff --git a/lib/util/utils.js b/lib/util/utils.js index 0fbccf69a..e6e73edfb 100644 --- a/lib/util/utils.js +++ b/lib/util/utils.js @@ -92,7 +92,10 @@ function getZigbee2mqttVersion(callback) { module.exports = { millisecondsToSeconds: (milliseconds) => milliseconds / 1000, secondsToMilliseconds: (seconds) => seconds * 1000, - isXiaomiDevice: (device) => device.modelId !== 'lumi.router' && xiaomiManufacturerID.includes(device.manufId), + isXiaomiDevice: (device) => { + return device.modelId !== 'lumi.router' && xiaomiManufacturerID.includes(device.manufId) && + (!device.manufName || !device.manufName.startsWith('Trust')); + }, isIkeaTradfriDevice: (device) => ikeaTradfriManufacturerID.includes(device.manufId), isRouter: (device) => device.type === 'Router', isBatteryPowered: (device) => device.powerSource && device.powerSource === 'Battery', diff --git a/test/utils.test.js b/test/utils.test.js new file mode 100644 index 000000000..49142ef5f --- /dev/null +++ b/test/utils.test.js @@ -0,0 +1,20 @@ +const utils = require('../lib/util/utils.js'); + +describe('Utils', () => { + describe('Is xiaomi device', () => { + it('Identify xiaomi device', () => { + const device = {type: 'Router', manufId: 4151, manufName: 'Xiaomi'}; + expect(true).toBe(utils.isXiaomiDevice(device)); + }); + + it('Identify xiaomi device without manufName', () => { + const device = {type: 'Router', manufId: 4447}; + expect(true).toBe(utils.isXiaomiDevice(device)); + }); + + it('Identify xiaomi device with different manufName', () => { + const device = {type: 'Router', manufId: 4151, manufName: 'Trust International B.V.\u0000'}; + expect(false).toBe(utils.isXiaomiDevice(device)); + }); + }); +});