From d0e66ed1da30c3aaedd3a8cb4772ba46a2812691 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Tue, 16 Apr 2019 17:56:28 +0200 Subject: [PATCH] Only setup reporting for non battery powered routers. #1064 --- lib/extension/deviceReport.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/lib/extension/deviceReport.js b/lib/extension/deviceReport.js index 35345a14e..dbc07b419 100644 --- a/lib/extension/deviceReport.js +++ b/lib/extension/deviceReport.js @@ -1,6 +1,7 @@ const zigbeeShepherdConverters = require('zigbee-shepherd-converters'); const logger = require('../util/logger'); const CC2530Router = zigbeeShepherdConverters.devices.find((d) => d.model === 'CC2530.ROUTER'); +const utils = require('../util/utils'); const candidates = { 'genOnOff': { @@ -82,14 +83,20 @@ class DeviceReport { }); } - onZigbeeStarted() { - this.zigbee.getAllClients().forEach((device) => { - const mappedDevice = zigbeeShepherdConverters.findByZigbeeModel(device.modelId); + shouldSetupReporting(device) { + return utils.isRouter(device) && !utils.isBatteryPowered(device); + } - if (mappedDevice) { - this.setupReporting(mappedDevice, device); - } - }); + onZigbeeStarted() { + this.zigbee.getAllClients() + .filter((d) => this.shouldSetupReporting(d)) + .forEach((device) => { + const mappedDevice = zigbeeShepherdConverters.findByZigbeeModel(device.modelId); + + if (mappedDevice) { + this.setupReporting(mappedDevice, device); + } + }); } onZigbeeMessage(message, device, mappedDevice) { @@ -98,7 +105,8 @@ class DeviceReport { // Ikea TRADFRI tend to forget their reporting after powered off. // Re-setup reporting. // https://github.com/Koenkk/zigbee2mqtt/issues/966 - if (device && mappedDevice && ['endDeviceAnnce', 'devIncoming'].includes(message.type)) { + if (device && mappedDevice && ['endDeviceAnnce', 'devIncoming'].includes(message.type) && + this.shouldSetupReporting(device)) { this.setupReporting(mappedDevice, device); } }