diff --git a/lib/extension/deviceConfigure.js b/lib/extension/deviceConfigure.js index 66b07072c..673de2564 100644 --- a/lib/extension/deviceConfigure.js +++ b/lib/extension/deviceConfigure.js @@ -48,6 +48,11 @@ class DeviceConfigure extends BaseExtension { } const mappedDevice = zigbeeHerdsmanConverters.findByZigbeeModel(entity.device.modelID); + if (!mappedDevice.configure) { + logger.warn(`Skipping configure of '${entity.name}', device does not require this.`); + return; + } + this.configure(entity.device, mappedDevice, entity.settings, true); } diff --git a/test/deviceConfigure.test.js b/test/deviceConfigure.test.js index 6a481d3bd..e9cbe2189 100644 --- a/test/deviceConfigure.test.js +++ b/test/deviceConfigure.test.js @@ -105,6 +105,12 @@ describe('Device configure', () => { expect(logger.error).toHaveBeenCalledWith(`Device 'remote_random_non_existing' does not exist`); }); + it('Should skip reconfigure when device does not require this', async () => { + await MQTT.events.message('zigbee2mqtt/bridge/configure', 'bulb'); + await flushPromises(); + expect(logger.warn).toHaveBeenCalledWith(`Skipping configure of 'bulb', device does not require this.`) + }); + it('Should not configure when interviewing', async () => { const device = zigbeeHerdsman.devices.remote; delete device.meta.configured;