From 8019c7544147cfeb2b6a1049f967817d4b382462 Mon Sep 17 00:00:00 2001 From: Dave Nicolson Date: Sun, 25 Oct 2026 18:51:35 +0100 Subject: [PATCH] Adjust BLE failure log levels --- src/devices/base.ts | 18 ++++++++++-------- src/utils/retry.ts | 6 +++--- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/devices/base.ts b/src/devices/base.ts index b94e143e..28e037a7 100644 --- a/src/devices/base.ts +++ b/src/devices/base.ts @@ -346,9 +346,10 @@ export abstract class SwitchBotDevice extends EventEmitter { try { return await tryBLE() } catch (err) { - this.logger?.warn?.('BLE getStatus failed', err) if (this.enableFallback && this.hasAPI()) { - this.logger?.warn?.('Falling back to API getStatus', err) + this.logger?.debug?.('BLE getStatus failed, falling back to API', err) + } else { + this.logger?.warn?.('BLE getStatus failed', err) } } if (this.enableFallback && this.hasAPI()) { @@ -360,9 +361,10 @@ export abstract class SwitchBotDevice extends EventEmitter { try { return await tryAPI() } catch (err) { - this.logger?.warn?.('API getStatus failed', err) if (this.enableFallback && this.hasBLE()) { - this.logger?.warn?.('Falling back to BLE getStatus', err) + this.logger?.debug?.('API getStatus failed, falling back to BLE', err) + } else { + this.logger?.warn?.('API getStatus failed', err) } } if (this.enableFallback && this.hasBLE()) { @@ -486,7 +488,7 @@ export abstract class SwitchBotDevice extends EventEmitter { this.circuitBreakerBLE.recordFailure() } - this.logger.error('BLE command failed', error) + this.logger.debug('BLE command failed', error) this.emitError({ type: 'ble', error }) return { @@ -565,7 +567,7 @@ export abstract class SwitchBotDevice extends EventEmitter { this.circuitBreakerAPI.recordFailure() } - this.logger.error('API command failed', error) + this.logger.debug('API command failed', error) this.emitError({ type: 'api', error }) return { @@ -728,7 +730,7 @@ export abstract class SwitchBotDevice extends EventEmitter { this.circuitBreakerBLE.recordFailure() } - this.logger.error('Failed to read BLE status', error) + this.logger.debug('Failed to read BLE status', error) throw error } } @@ -797,7 +799,7 @@ export abstract class SwitchBotDevice extends EventEmitter { this.circuitBreakerAPI.recordFailure() } - this.logger.error('Failed to read API status', error) + this.logger.debug('Failed to read API status', error) throw error } } diff --git a/src/utils/retry.ts b/src/utils/retry.ts index 9c1286d8..8a636325 100644 --- a/src/utils/retry.ts +++ b/src/utils/retry.ts @@ -137,14 +137,14 @@ export class RetryExecutor { if (attemptNumber < this.config.maxAttempts && (isDBusError || isBleakRetry || attemptNumber < this.config.maxAttempts)) { // DBus error: always backoff 0.25s (250ms) before normal backoff if (isDBusError) { - this.logger.warn( + this.logger.debug( `${description} DBus error detected on attempt ${attemptNumber}, applying 250ms backoff`, { error: errorMsg }, ) await new Promise(resolve => setTimeout(resolve, 250)) } const delayMs = this.calculateDelay(attemptNumber) - this.logger.warn( + this.logger.debug( `${description} failed on attempt ${attemptNumber}/${this.config.maxAttempts}, retrying in ${delayMs}ms`, { error: errorMsg, @@ -156,7 +156,7 @@ export class RetryExecutor { ) await new Promise(resolve => setTimeout(resolve, delayMs)) } else { - this.logger.error( + this.logger.debug( `${description} failed after ${attemptNumber} attempts`, { error: errorMsg,