From 054892641bca7b596817d33f72ae159694856290 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Sat, 2 Feb 2019 17:58:38 +0100 Subject: [PATCH] Check availability for new devices. #775 --- lib/controller.js | 4 ++-- .../{deviceAvailability.js => availability.js} | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) rename lib/extension/{deviceAvailability.js => availability.js} (94%) diff --git a/lib/controller.js b/lib/controller.js index f59048ee0..0dc75478c 100644 --- a/lib/controller.js +++ b/lib/controller.js @@ -17,7 +17,7 @@ const ExtensionDeviceReceive = require('./extension/deviceReceive'); const ExtensionMarkOnlineXiaomi = require('./extension/markOnlineXiaomi'); const ExtensionBridgeConfig = require('./extension/bridgeConfig'); const ExtensionGroups = require('./extension/groups'); -const ExtensionDeviceAvailability = require('./extension/deviceAvailability'); +const ExtensionAvailability = require('./extension/availability'); const ExtensionBind = require('./extension/bind'); const ExtensionCoordinatorGroup = require('./extension/coordinatorGroup'); const ExtensionReporting = require('./extension/reporting'); @@ -62,7 +62,7 @@ class Controller { } if (settings.get().advanced.availability_timeout) { - this.extensions.push(new ExtensionDeviceAvailability( + this.extensions.push(new ExtensionAvailability( this.zigbee, this.mqtt, this.state, this.publishDeviceState )); } diff --git a/lib/extension/deviceAvailability.js b/lib/extension/availability.js similarity index 94% rename from lib/extension/deviceAvailability.js rename to lib/extension/availability.js index d29237213..13aee06db 100644 --- a/lib/extension/deviceAvailability.js +++ b/lib/extension/availability.js @@ -12,10 +12,9 @@ const pingableDevices = [ const toZigbeeCandidates = ['state']; /** - * This extensions set availability based on optionally polling router devices - * and optionally check device publish with attribute reporting + * This extensions pings devices to check if they are online. */ -class DeviceAvailabilityHandler { +class Availability { constructor(zigbee, mqtt, state, publishDeviceState) { this.zigbee = zigbee; this.mqtt = mqtt; @@ -132,6 +131,9 @@ class DeviceAvailabilityHandler { // When a message is received and the device is marked as offline, mark it online. if (this.state.hasOwnProperty(device.ieeeAddr) && !this.state[device.ieeeAddr]) { this.publishAvailability(device.ieeeAddr, true); + } else if (!this.state.hasOwnProperty(device.ieeeAddr)) { + // A new device has been connected + this.publishAvailability(device.ieeeAddr, true); } this.setTimer(device.ieeeAddr); @@ -139,4 +141,4 @@ class DeviceAvailabilityHandler { } } -module.exports = DeviceAvailabilityHandler; +module.exports = Availability;