From 75718b360e01ed2b9a36bb1c3c7e297a480b0547 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Wed, 17 Apr 2019 20:03:40 +0200 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20identify=20Trust=20device=20as?= =?UTF-8?q?=20Xiaomi=20device.=20https://github.com/Koenkk/zigbee2mqtt/iss?= =?UTF-8?q?ues/1420?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/util/utils.js | 5 ++++- test/utils.test.js | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/utils.test.js 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)); + }); + }); +});