From b23276f7f3a3a957d7c1c44f6cd2a18cb9bed413 Mon Sep 17 00:00:00 2001 From: Koen Kanters Date: Wed, 20 Nov 2019 19:06:04 +0100 Subject: [PATCH] Re-configure when device rejoins. https://github.com/Koenkk/zigbee-herdsman-converters/issues/758 --- lib/extension/deviceConfigure.js | 6 ++++++ test/deviceConfigure.test.js | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/extension/deviceConfigure.js b/lib/extension/deviceConfigure.js index f8b1cf735..419f1989f 100644 --- a/lib/extension/deviceConfigure.js +++ b/lib/extension/deviceConfigure.js @@ -45,6 +45,12 @@ class DeviceConfigure extends BaseExtension { onZigbeeEvent(type, data, mappedDevice, settingsDevice) { const device = data.device; + + if (type === 'deviceJoined' && device.meta.hasOwnProperty('configured')) { + delete device.meta.configured; + device.save(); + } + if (this.shouldConfigure(device, mappedDevice)) { this.configure(device, mappedDevice, settingsDevice); } diff --git a/test/deviceConfigure.test.js b/test/deviceConfigure.test.js index f666dc719..5fe84bf42 100644 --- a/test/deviceConfigure.test.js +++ b/test/deviceConfigure.test.js @@ -54,6 +54,18 @@ describe('Device receive', () => { expectRemoteConfigured(); }); + it('Should re-configure when device rejoins', async () => { + expectRemoteConfigured(); + const device = zigbeeHerdsman.devices.remote; + const endpoint = device.getEndpoint(1); + await flushPromises(); + mockClear(device); + const payload = {device}; + zigbeeHerdsman.events.deviceJoined(payload); + await flushPromises(); + expectRemoteConfigured(); + }); + it('Should not configure twice', async () => { expectRemoteConfigured(); const device = zigbeeHerdsman.devices.remote;