diff --git a/lib/extension/homeassistant.js b/lib/extension/homeassistant.js index 99c7c2321..f5611387e 100644 --- a/lib/extension/homeassistant.js +++ b/lib/extension/homeassistant.js @@ -586,8 +586,10 @@ class HomeAssistant extends Extension { configs = JSON.parse(JSON.stringify(configs)); if (resolvedEntity.settings.homeassistant) { + const s = resolvedEntity.settings.homeassistant; + configs = configs.filter((config) => !s.hasOwnProperty(config.object_id) || s[config.object_id] != null); configs.forEach((config) => { - const configOverride = resolvedEntity.settings.homeassistant[config.object_id]; + const configOverride = s[config.object_id]; if (configOverride) { config.object_id = configOverride.object_id || config.object_id; config.type = configOverride.type || config.type; diff --git a/test/homeassistant.test.js b/test/homeassistant.test.js index e10f7f7fa..bc3219b9d 100644 --- a/test/homeassistant.test.js +++ b/test/homeassistant.test.js @@ -529,6 +529,24 @@ describe('HomeAssistant extension', () => { expect(topics).not.toContain('homeassistant/sensor/0x0017880104e45522/temperature/config') }); + it('Shouldnt discover sensor when set to null', async () => { + logger.error.mockClear(); + settings.set(['devices', '0x0017880104e45522'], { + homeassistant: {humidity: null}, + friendly_name: 'weather_sensor', + retain: false, + }) + + controller = new Controller(false); + await controller.start(); + + await flushPromises(); + + const topics = MQTT.publish.mock.calls.map((c) => c[0]); + expect(topics).not.toContain('homeassistant/sensor/0x0017880104e45522/humidity/config') + expect(topics).toContain('homeassistant/sensor/0x0017880104e45522/temperature/config') + }); + it('Should discover devices with fan', async () => { controller = new Controller(false); await controller.start();