From 36e5c62b4f7d7dc3a145fb465c6fc38dbce7085a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Victor=20Hagelb=C3=A4ck?= Date: Wed, 28 Apr 2021 20:07:53 +0200 Subject: [PATCH] Fix for devices without output --- plejd/PlejdApi.js | 67 ++++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/plejd/PlejdApi.js b/plejd/PlejdApi.js index fcc6029..8609bbb 100644 --- a/plejd/PlejdApi.js +++ b/plejd/PlejdApi.js @@ -326,42 +326,49 @@ class PlejdApi { ); } const deviceOutput = outputSettings ? outputSettings.output : 0; - const bleOutputAddress = this.siteDetails.outputAddress[device.deviceId][deviceOutput]; + const outputAddress = this.siteDetails.outputAddress[device.deviceId]; - if (device.traits === TRAITS.NO_LOAD) { - logger.warn( - `Device ${device.title} (${device.deviceId}) has no load configured and will be excluded`, - ); - } else { - const uniqueOutputId = this.deviceRegistry.getUniqueOutputId(device.deviceId, deviceOutput); + if (outputAddress) { + const bleOutputAddress = outputAddress[deviceOutput]; - const plejdDevice = this.siteDetails.plejdDevices.find( - (x) => x.deviceId === device.deviceId, - ); + if (device.traits === TRAITS.NO_LOAD) { + logger.warn( + `Device ${device.title} (${device.deviceId}) has no load configured and will be excluded`, + ); + } else { + const uniqueOutputId = this.deviceRegistry.getUniqueOutputId( + device.deviceId, + deviceOutput, + ); - const dimmable = device.traits === TRAITS.DIMMABLE; - // dimmable = settings.dimCurve !== 'NonDimmable'; + const plejdDevice = this.siteDetails.plejdDevices.find( + (x) => x.deviceId === device.deviceId, + ); - const { name: typeName, type } = this._getDeviceType(plejdDevice); + const dimmable = device.traits === TRAITS.DIMMABLE; + // dimmable = settings.dimCurve !== 'NonDimmable'; - /** @type {import('types/DeviceRegistry').OutputDevice} */ - const outputDevice = { - bleOutputAddress, - deviceId: device.deviceId, - dimmable, - hiddenFromRoomList: device.hiddenFromRoomList, - hiddenFromIntegrations: device.hiddenFromIntegrations, - name: device.title, - output: deviceOutput, - roomId: device.roomId, - state: undefined, - type, - typeName, - version: plejdDevice.firmware.version, - uniqueId: uniqueOutputId, - }; + const { name: typeName, type } = this._getDeviceType(plejdDevice); - this.deviceRegistry.addOutputDevice(outputDevice); + /** @type {import('types/DeviceRegistry').OutputDevice} */ + const outputDevice = { + bleOutputAddress, + deviceId: device.deviceId, + dimmable, + hiddenFromRoomList: device.hiddenFromRoomList, + hiddenFromIntegrations: device.hiddenFromIntegrations, + name: device.title, + output: deviceOutput, + roomId: device.roomId, + state: undefined, + type, + typeName, + version: plejdDevice.firmware.version, + uniqueId: uniqueOutputId, + }; + + this.deviceRegistry.addOutputDevice(outputDevice); + } } // What should we do with inputs?!