Check availability for new devices. #775

This commit is contained in:
Koen Kanters
2019-02-02 17:58:38 +01:00
parent 189c0f360e
commit 054892641b
2 changed files with 8 additions and 6 deletions
+2 -2
View File
@@ -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
));
}
@@ -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;