From 1ac22e35d4b4e6dbe90fd0e9c9016d30483b00c5 Mon Sep 17 00:00:00 2001 From: Donavan Becker Date: Sat, 7 Sep 2024 21:52:20 -0500 Subject: [PATCH] Roller Shade to Curtain --- src/platform.ts | 104 +++++++++++++++--------------------------------- 1 file changed, 32 insertions(+), 72 deletions(-) diff --git a/src/platform.ts b/src/platform.ts index 84c3f697..2e007ec9 100644 --- a/src/platform.ts +++ b/src/platform.ts @@ -692,8 +692,8 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin { 'Contact Sensor': this.createContact.bind(this), 'Curtain': this.createCurtain.bind(this), 'Curtain3': this.createCurtain.bind(this), + 'Roller Shade': this.createCurtain.bind(this), 'Blind Tilt': this.createBlindTilt.bind(this), - 'Roller Shade': this.createBlindTilt.bind(this), 'Plug': this.createPlug.bind(this), 'Plug Mini (US)': this.createPlug.bind(this), 'Plug Mini (JP)': this.createPlug.bind(this), @@ -2534,80 +2534,40 @@ export class SwitchBotPlatform implements DynamicPlatformPlugin { async registerDevice(device: device & devicesConfig) { device.connectionType = await this.connectionType(device) let registerDevice: boolean - if (!device.hide_device && device.connectionType === 'BLE/OpenAPI') { - switch (device.deviceType) { - case 'Curtain': - case 'Curtain3': - case 'Blind Tilt': - registerDevice = await this.registerCurtains(device) - await this.debugWarnLog(`Device: ${device.deviceName} ${device.deviceType} registerDevice: ${registerDevice}`) - break - default: - registerDevice = true - await this.debugWarnLog(`Device: ${device.deviceName} registerDevice: ${registerDevice}`) - } - if (registerDevice === true) { - await this.debugWarnLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will display in HomeKit`) - } else { - await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will not display in HomeKit`) - } - } else if (!device.hide_device && device.deviceId && device.configDeviceType && device.configDeviceName && device.connectionType === 'BLE') { - switch (device.deviceType) { - case 'Curtain': - case 'Curtain3': - case 'Blind Tilt': - registerDevice = await this.registerCurtains(device) - await this.debugWarnLog(`Device: ${device.deviceName} ${device.deviceType} registerDevice: ${registerDevice}`) - break - default: - registerDevice = true - await this.debugWarnLog(`Device: ${device.deviceName} registerDevice: ${registerDevice}`) - } - if (registerDevice === true) { - await this.debugWarnLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will display in HomeKit`) - } else { - await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will not display in HomeKit`) - } - } else if (!device.hide_device && device.connectionType === 'OpenAPI') { - switch (device.deviceType) { - case 'Curtain': - case 'Curtain3': - case 'Blind Tilt': - registerDevice = await this.registerCurtains(device) - await this.debugWarnLog(`Device: ${device.deviceName} ${device.deviceType} registerDevice: ${registerDevice}`) - break - default: - registerDevice = true - await this.debugWarnLog(`Device: ${device.deviceName} registerDevice: ${registerDevice}`) - } - if (registerDevice === true) { - await this.debugWarnLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will display in HomeKit`) - } else { - await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will not display in HomeKit`) - } - } else if (!device.hide_device && device.connectionType === 'Disabled') { - switch (device.deviceType) { - case 'Curtain': - case 'Curtain3': - case 'Blind Tilt': - registerDevice = await this.registerCurtains(device) - await this.debugWarnLog(`Device: ${device.deviceName} ${device.deviceType} registerDevice: ${registerDevice}`) - break - default: - registerDevice = true - await this.debugWarnLog(`Device: ${device.deviceName} registerDevice: ${registerDevice}`) - } - await this.debugWarnLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will continue to display in HomeKit`) - } else if (!device.connectionType && !device.hide_device) { - registerDevice = false - await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will not display in HomeKit`) - } else if (device.hide_device) { - registerDevice = false - await this.debugErrorLog(`Device: ${device.deviceName} hide_device: ${device.hide_device}, will not display in HomeKit`) + + const shouldRegister = !device.hide_device && (device.connectionType === 'BLE/OpenAPI' || (device.deviceId && device.configDeviceType && device.configDeviceName && device.connectionType === 'BLE') || device.connectionType === 'OpenAPI' || device.connectionType === 'Disabled') + + if (shouldRegister) { + registerDevice = await this.handleDeviceRegistration(device) } else { registerDevice = false - await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, hide_device: ${device.hide_device}, will not display in HomeKit`) + await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, hide_device: ${device.hide_device}, will not display in HomeKit`) } + + return registerDevice + } + + async handleDeviceRegistration(device: device & devicesConfig): Promise { + let registerDevice: boolean + + switch (device.deviceType) { + case 'Curtain': + case 'Curtain3': + case 'Blind Tilt': + registerDevice = await this.registerCurtains(device) + await this.debugWarnLog(`Device: ${device.deviceName} ${device.deviceType} registerDevice: ${registerDevice}`) + break + default: + registerDevice = true + await this.debugWarnLog(`Device: ${device.deviceName} registerDevice: ${registerDevice}`) + } + + if (registerDevice) { + await this.debugWarnLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will display in HomeKit`) + } else { + await this.debugErrorLog(`Device: ${device.deviceName} connectionType: ${device.connectionType}, will not display in HomeKit`) + } + return registerDevice }