diff --git a/lib/extension/homeassistant.ts b/lib/extension/homeassistant.ts index 36cb596cbb..56b86f82e4 100644 --- a/lib/extension/homeassistant.ts +++ b/lib/extension/homeassistant.ts @@ -170,8 +170,8 @@ export default class HomeAssistant extends Extension { } if (hasColorTemp) { - const colorTemps = exposes.map((expose) => expose.features - .filter(isNumericExposeFeature).find((e) => e.name === 'color_temp')); + const colorTemps = exposes.map((expose) => expose.features.find((e) => e.name === 'color_temp')) + .filter((e) => e).filter(isNumericExposeFeature); const max = Math.min(...colorTemps.map((e) => e.value_max)); const min = Math.max(...colorTemps.map((e) => e.value_min)); discoveryEntry.discovery_payload.max_mireds = max; diff --git a/lib/extension/otaUpdate.ts b/lib/extension/otaUpdate.ts index 8556b7e33f..fd0f3dd33f 100644 --- a/lib/extension/otaUpdate.ts +++ b/lib/extension/otaUpdate.ts @@ -79,7 +79,7 @@ export default class OTAUpdate extends Extension { logger.debug(`Device '${data.device.name}' requested OTA`); const automaticOTACheckDisabled = settings.get().ota.disable_automatic_update_check; - let supportsOTA = data.device.definition.hasOwnProperty('ota'); + let supportsOTA = !!data.device.definition.ota; if (supportsOTA && !automaticOTACheckDisabled) { // When a device does a next image request, it will usually do it a few times after each other // with only 10 - 60 seconds inbetween. It doesn't make sense to check for a new update diff --git a/scripts/generateNewSupportedDevices.js b/scripts/generateNewSupportedDevices.js deleted file mode 100644 index 433123b5ab..0000000000 --- a/scripts/generateNewSupportedDevices.js +++ /dev/null @@ -1,12 +0,0 @@ -const fs = require('fs'); -const filename = process.argv[2]; -const text = fs.readFileSync(filename, 'utf8'); -const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters'); - - -for (const line of text.split('\n')) { - const [modelNumber, user] = line.split(',').map((t) => t.trim()); - const model = zigbeeHerdsmanConverters.devices.find((d) => d.model === modelNumber); - if (!model) throw new Error(`${line} does not exist`); - console.log(`- \`${modelNumber}\` ${model.vendor} ${model.description} (${user})`); -} diff --git a/test/externalConverters.test.js b/test/externalConverters.test.js index 9fecd17874..5775910ba3 100644 --- a/test/externalConverters.test.js +++ b/test/externalConverters.test.js @@ -10,9 +10,9 @@ const flushPromises = require('./lib/flushPromises'); const path = require('path'); const fs = require('fs'); -zigbeeHerdsmanConverters.addDeviceDefinition = jest.fn(); +zigbeeHerdsmanConverters.addDefinition = jest.fn(); -const mocksClear = [zigbeeHerdsmanConverters.addDeviceDefinition, zigbeeHerdsman.permitJoin, +const mocksClear = [zigbeeHerdsmanConverters.addDefinition, zigbeeHerdsman.permitJoin, mockExit, MQTT.end, zigbeeHerdsman.stop, logger.debug, MQTT.publish, MQTT.connect, zigbeeHerdsman.devices.bulb_color.removeFromNetwork, zigbeeHerdsman.devices.bulb.removeFromNetwork, logger.error, @@ -67,15 +67,15 @@ describe('Loads external converters', () => { it('Does not load external converters', async () => { settings.set(['external_converters'], []); await resetExtension(); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledTimes(0); + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledTimes(0); }); it('Loads external converters', async () => { fs.copyFileSync(path.join(__dirname, 'assets', 'mock-external-converter.js'), path.join(data.mockDir, 'mock-external-converter.js')); settings.set(['external_converters'], ['mock-external-converter.js']); await resetExtension(); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledTimes(1); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledWith({ + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledTimes(1); + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledWith({ mock: true, zigbeeModel: ['external_converter_device'], vendor: 'external', @@ -91,8 +91,8 @@ describe('Loads external converters', () => { fs.copyFileSync(path.join(__dirname, 'assets', 'mock-external-converter-multiple.js'), path.join(data.mockDir, 'mock-external-converter-multiple.js')); settings.set(['external_converters'], ['mock-external-converter-multiple.js']); await resetExtension(); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledTimes(2); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenNthCalledWith(1, { + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledTimes(2); + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenNthCalledWith(1, { mock: 1, model: 'external_converters_device_1', zigbeeModel: ['external_converter_device_1'], @@ -102,7 +102,7 @@ describe('Loads external converters', () => { toZigbee: [], exposes: [] }); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenNthCalledWith(2, { + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenNthCalledWith(2, { mock: 2, model: 'external_converters_device_2', zigbeeModel: ['external_converter_device_2'], @@ -117,8 +117,8 @@ describe('Loads external converters', () => { it('Loads external converters from package', async () => { settings.set(['external_converters'], ['mock-external-converter-module']); await resetExtension(); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledTimes(1); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledWith({ + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledTimes(1); + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledWith({ mock: true }); }); @@ -126,11 +126,11 @@ describe('Loads external converters', () => { it('Loads multiple external converters from package', async () => { settings.set(['external_converters'], ['mock-multiple-external-converter-module']); await resetExtension(); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenCalledTimes(2); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenNthCalledWith(1, { + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenCalledTimes(2); + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenNthCalledWith(1, { mock: 1 }); - expect(zigbeeHerdsmanConverters.addDeviceDefinition).toHaveBeenNthCalledWith(2, { + expect(zigbeeHerdsmanConverters.addDefinition).toHaveBeenNthCalledWith(2, { mock: 2 }); }); diff --git a/test/group.test.js b/test/group.test.js index d3fa863611..2259cf20c2 100644 --- a/test/group.test.js +++ b/test/group.test.js @@ -41,7 +41,7 @@ describe('Groups', () => { settings.reRead(); MQTT.publish.mockClear(); zigbeeHerdsman.groups.gledopto_group.command.mockClear(); - zigbeeHerdsmanConverters.toZigbeeConverters.__clearStore__(); + zigbeeHerdsmanConverters.toZigbee.__clearStore__(); controller.state.state = {}; }) diff --git a/test/homeassistant.test.js b/test/homeassistant.test.js index b91d12ccba..3ae1e8ca62 100644 --- a/test/homeassistant.test.js +++ b/test/homeassistant.test.js @@ -51,7 +51,7 @@ describe('HomeAssistant extension', () => { it('Should not have duplicate type/object_ids in a mapping', () => { const duplicated = []; - require('zigbee-herdsman-converters').devices.forEach((d) => { + require('zigbee-herdsman-converters').definitions.forEach((d) => { const exposes = typeof d.exposes == 'function' ? d.exposes() : d.exposes; const device = {definition: d, isDevice: () => true, options: {}, exposes: () => exposes, zh: {endpoints: []}}; const configs = extension.getConfigs(device); diff --git a/test/onEvent.test.js b/test/onEvent.test.js index be6903aa45..853124a800 100644 --- a/test/onEvent.test.js +++ b/test/onEvent.test.js @@ -76,6 +76,6 @@ describe('On event', () => { await zigbeeHerdsman.events.deviceAnnounce({device}); await flushPromises(); expect(zigbeeHerdsmanConverters.onEvent).toHaveBeenCalledTimes(1); - expect(zigbeeHerdsmanConverters.onEvent).toHaveBeenCalledWith('deviceAnnounce', {device}, device, settings.getDevice(device.ieeeAddr), {}); + expect(zigbeeHerdsmanConverters.onEvent).toHaveBeenCalledWith('deviceAnnounce', {device}, device); }); }); diff --git a/test/publish.test.js b/test/publish.test.js index 4fdf344132..8b3927d450 100644 --- a/test/publish.test.js +++ b/test/publish.test.js @@ -50,7 +50,7 @@ describe('Publish', () => { g.command.mockClear(); }); - zigbeeHerdsmanConverters.toZigbeeConverters.__clearStore__(); + zigbeeHerdsmanConverters.toZigbee.__clearStore__(); }); afterAll(async () => { @@ -1343,7 +1343,7 @@ describe('Publish', () => { await MQTT.events.message('zigbee2mqtt/bulb_color/set', stringify({state: 'ON', brightness: 20, transition: 0.0})); await flushPromises(); - zigbeeHerdsmanConverters.toZigbeeConverters.__clearStore__(); + zigbeeHerdsmanConverters.toZigbee.__clearStore__(); await MQTT.events.message('zigbee2mqtt/bulb_color/set', stringify({"state": "ON", "transition": 1.0})); await flushPromises();