diff --git a/lib/extension/availability.ts b/lib/extension/availability.ts index 2865e3b1..e8e5a4c4 100644 --- a/lib/extension/availability.ts +++ b/lib/extension/availability.ts @@ -18,7 +18,8 @@ export default class Availability extends Extension { } const key = this.isActiveDevice(device) ? 'active' : 'passive'; - const value = settings.get().availability[key]?.timeout; + let value = settings.get().availability?.[key]?.timeout; + if (value == null) value = key == 'active' ? 10 : 1500; return utils.minutes(value); } diff --git a/lib/util/settings.ts b/lib/util/settings.ts index ba3c54f9..b1fb10ba 100644 --- a/lib/util/settings.ts +++ b/lib/util/settings.ts @@ -138,7 +138,7 @@ function loadSettingsWithDefaults(): void { } if (_settingsWithDefaults.availability || _settingsWithDefaults.advanced?.availability_timeout) { - const defaults = {active: {timeout: 10}, passive: {timeout: 1500}}; + const defaults = {}; const s = typeof _settingsWithDefaults.availability === 'object' ? _settingsWithDefaults.availability : {}; // @ts-ignore _settingsWithDefaults.availability = {}; diff --git a/test/availability.test.js b/test/availability.test.js index 6afaa862..76651556 100644 --- a/test/availability.test.js +++ b/test/availability.test.js @@ -227,6 +227,17 @@ describe('Availability', () => { expect(devices.bulb_color.ping).toHaveBeenCalledTimes(0); }); + it('Should to enable availabilty for just one device', async () => { + settings.set(['availability'], false); + settings.set(['devices', devices.bulb_color.ieeeAddr, 'availability'], true); + + await resetExtension(); + MQTT.publish.mockClear(); + + await advancedTime(utils.minutes(11)); + expect(devices.bulb_color.ping).toHaveBeenCalledTimes(1); + }); + it('Should retrieve device state when it reconnects', async () => { MQTT.publish.mockClear();