node-switchbot 4.0.0-beta.1 → 4.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/devices/base.d.ts +59 -5
- package/dist/devices/base.d.ts.map +1 -1
- package/dist/devices/base.js +280 -28
- package/dist/devices/base.js.map +1 -1
- package/dist/settings.d.ts +6 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +6 -0
- package/dist/settings.js.map +1 -1
- package/dist/switchbot.d.ts.map +1 -1
- package/dist/switchbot.js +14 -0
- package/dist/switchbot.js.map +1 -1
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/circuit-breaker.d.ts +98 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +187 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/connection-tracker.d.ts +66 -0
- package/dist/utils/connection-tracker.d.ts.map +1 -0
- package/dist/utils/connection-tracker.js +184 -0
- package/dist/utils/connection-tracker.js.map +1 -0
- package/dist/utils/fallback-handler.d.ts +68 -0
- package/dist/utils/fallback-handler.d.ts.map +1 -0
- package/dist/utils/fallback-handler.js +131 -0
- package/dist/utils/fallback-handler.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/retry.d.ts +55 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +95 -0
- package/dist/utils/retry.js.map +1 -0
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/APIError.html +2 -2
- package/docs/classes/APINotAvailableError.html +2 -2
- package/docs/classes/BLEConnection.html +9 -9
- package/docs/classes/BLENotAvailableError.html +2 -2
- package/docs/classes/BLEScanner.html +8 -8
- package/docs/classes/CommandFailedError.html +2 -2
- package/docs/classes/ConnectionTimeoutError.html +2 -2
- package/docs/classes/DeviceManager.html +13 -13
- package/docs/classes/DeviceNotFoundError.html +2 -2
- package/docs/classes/DiscoveryError.html +2 -2
- package/docs/classes/OpenAPIClient.html +24 -24
- package/docs/classes/SwitchBot.html +11 -11
- package/docs/classes/SwitchBotDevice.html +33 -15
- package/docs/classes/SwitchBotError.html +2 -2
- package/docs/classes/ValidationError.html +2 -2
- package/docs/classes/WoAirPurifier.html +36 -18
- package/docs/classes/WoAirPurifierTable.html +36 -18
- package/docs/classes/WoBlindTilt.html +38 -20
- package/docs/classes/WoBulb.html +37 -19
- package/docs/classes/WoCeilingLight.html +37 -19
- package/docs/classes/WoContact.html +32 -14
- package/docs/classes/WoCurtain.html +36 -18
- package/docs/classes/WoHand.html +35 -17
- package/docs/classes/WoHub2.html +32 -14
- package/docs/classes/WoHub3.html +32 -14
- package/docs/classes/WoHumi.html +36 -18
- package/docs/classes/WoHumi2.html +36 -18
- package/docs/classes/WoIOSensorTH.html +32 -14
- package/docs/classes/WoKeypad.html +32 -14
- package/docs/classes/WoLeak.html +32 -14
- package/docs/classes/WoPlugMiniJP.html +35 -17
- package/docs/classes/WoPlugMiniUS.html +35 -17
- package/docs/classes/WoPresence.html +32 -14
- package/docs/classes/WoRelaySwitch1.html +35 -17
- package/docs/classes/WoRelaySwitch1PM.html +35 -17
- package/docs/classes/WoRemote.html +32 -14
- package/docs/classes/WoSensorTH.html +32 -14
- package/docs/classes/WoSensorTHPlus.html +32 -14
- package/docs/classes/WoSensorTHPro.html +32 -14
- package/docs/classes/WoSensorTHProCO2.html +32 -14
- package/docs/classes/WoSmartLock.html +34 -16
- package/docs/classes/WoSmartLockPro.html +35 -17
- package/docs/classes/WoStrip.html +37 -19
- package/docs/enums/LogLevel.html +2 -2
- package/docs/enums/SwitchBotBLEModel.html +2 -2
- package/docs/enums/SwitchBotBLEModelName.html +2 -2
- package/docs/functions/updateBaseURL.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/interfaces/APICommandRequest.html +2 -2
- package/docs/interfaces/APICommandResponse.html +2 -2
- package/docs/interfaces/APIDevice.html +2 -2
- package/docs/interfaces/APIDeviceStatus.html +2 -2
- package/docs/interfaces/APIErrorResponse.html +2 -2
- package/docs/interfaces/APIResponse.html +2 -2
- package/docs/interfaces/AirPurifierCommands.html +2 -2
- package/docs/interfaces/AirPurifierServiceData.html +5 -5
- package/docs/interfaces/AirPurifierStatus.html +7 -7
- package/docs/interfaces/BLEAdvertisement.html +2 -2
- package/docs/interfaces/BLEScanOptions.html +5 -5
- package/docs/interfaces/BLEServiceData.html +5 -5
- package/docs/interfaces/BlindTiltCommands.html +2 -2
- package/docs/interfaces/BlindTiltServiceData.html +5 -5
- package/docs/interfaces/BlindTiltStatus.html +6 -6
- package/docs/interfaces/BotCommands.html +2 -2
- package/docs/interfaces/BotServiceData.html +5 -5
- package/docs/interfaces/BotStatus.html +6 -6
- package/docs/interfaces/BulbCommands.html +2 -2
- package/docs/interfaces/BulbServiceData.html +5 -5
- package/docs/interfaces/BulbStatus.html +6 -6
- package/docs/interfaces/CeilingLightCommands.html +2 -2
- package/docs/interfaces/CeilingLightServiceData.html +5 -5
- package/docs/interfaces/CeilingLightStatus.html +6 -6
- package/docs/interfaces/CommandResult.html +6 -6
- package/docs/interfaces/ContactServiceData.html +5 -5
- package/docs/interfaces/ContactStatus.html +6 -6
- package/docs/interfaces/CurtainCommands.html +2 -2
- package/docs/interfaces/CurtainServiceData.html +5 -5
- package/docs/interfaces/CurtainStatus.html +6 -6
- package/docs/interfaces/DeviceInfo.html +13 -13
- package/docs/interfaces/DeviceListResponse.html +2 -2
- package/docs/interfaces/DeviceStatus.html +6 -6
- package/docs/interfaces/DiscoveryOptions.html +7 -7
- package/docs/interfaces/HubServiceData.html +5 -5
- package/docs/interfaces/HubStatus.html +6 -6
- package/docs/interfaces/HumidifierCommands.html +2 -2
- package/docs/interfaces/HumidifierServiceData.html +6 -6
- package/docs/interfaces/HumidifierStatus.html +6 -6
- package/docs/interfaces/KeypadStatus.html +6 -6
- package/docs/interfaces/LeakServiceData.html +5 -5
- package/docs/interfaces/LeakStatus.html +6 -6
- package/docs/interfaces/LockCommands.html +2 -2
- package/docs/interfaces/LockServiceData.html +6 -6
- package/docs/interfaces/LockStatus.html +6 -6
- package/docs/interfaces/MeterServiceData.html +5 -5
- package/docs/interfaces/MeterStatus.html +6 -6
- package/docs/interfaces/MotionServiceData.html +5 -5
- package/docs/interfaces/MotionStatus.html +6 -6
- package/docs/interfaces/PlugCommands.html +2 -2
- package/docs/interfaces/PlugServiceData.html +5 -5
- package/docs/interfaces/PlugStatus.html +6 -6
- package/docs/interfaces/PresenceServiceData.html +5 -5
- package/docs/interfaces/PresenceStatus.html +6 -6
- package/docs/interfaces/RelaySwitchCommands.html +2 -2
- package/docs/interfaces/RelaySwitchServiceData.html +5 -5
- package/docs/interfaces/RelaySwitchStatus.html +6 -6
- package/docs/interfaces/RemoteStatus.html +6 -6
- package/docs/interfaces/SceneListResponse.html +2 -2
- package/docs/interfaces/StripCommands.html +2 -2
- package/docs/interfaces/StripServiceData.html +5 -5
- package/docs/interfaces/StripStatus.html +6 -6
- package/docs/interfaces/SwitchBotConfig.html +21 -9
- package/docs/interfaces/WebhookConfig.html +2 -2
- package/docs/interfaces/WebhookDetails.html +2 -2
- package/docs/interfaces/WebhookQueryResponse.html +2 -2
- package/docs/interfaces/WebhookSetupResponse.html +2 -2
- package/docs/types/ConnectionType.html +1 -1
- package/docs/types/PhysicalDeviceType.html +1 -1
- package/docs/types/VirtualDeviceType.html +1 -1
- package/docs/variables/urls.html +1 -1
- package/package.json +1 -1
package/dist/devices/base.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { OpenAPIClient } from '../api.js';
|
|
2
2
|
import type { BLEConnection } from '../ble.js';
|
|
3
3
|
import type { CommandResult, ConnectionType, DeviceInfo, DeviceStatus } from '../types/index.js';
|
|
4
|
+
import type { CircuitBreakerConfig, FallbackHandler, FallbackHandlerOptions, RetryConfig } from '../utils/index.js';
|
|
4
5
|
import { Buffer } from 'node:buffer';
|
|
5
6
|
import { EventEmitter } from 'node:events';
|
|
6
|
-
import { Logger } from '../utils/index.js';
|
|
7
|
+
import { CircuitBreaker, ConnectionTracker, FallbackHandlerManager, Logger, RetryExecutor } from '../utils/index.js';
|
|
7
8
|
/**
|
|
8
9
|
* Base class for all SwitchBot devices
|
|
9
|
-
* Provides hybrid BLE/API functionality with automatic fallback
|
|
10
|
+
* Provides hybrid BLE/API functionality with automatic fallback, circuit breaker, and connection intelligence
|
|
10
11
|
*/
|
|
11
12
|
export declare abstract class SwitchBotDevice extends EventEmitter {
|
|
12
13
|
protected info: DeviceInfo;
|
|
@@ -15,11 +16,24 @@ export declare abstract class SwitchBotDevice extends EventEmitter {
|
|
|
15
16
|
protected apiClient?: OpenAPIClient;
|
|
16
17
|
protected enableFallback: boolean;
|
|
17
18
|
protected preferredConnection: ConnectionType;
|
|
19
|
+
protected connectionTracker: ConnectionTracker;
|
|
20
|
+
protected circuitBreakerBLE: CircuitBreaker;
|
|
21
|
+
protected circuitBreakerAPI: CircuitBreaker;
|
|
22
|
+
protected fallbackHandlerManager: FallbackHandlerManager;
|
|
23
|
+
protected retryExecutor: RetryExecutor;
|
|
24
|
+
protected enableConnectionIntelligence: boolean;
|
|
25
|
+
protected enableCircuitBreaker: boolean;
|
|
26
|
+
protected enableRetry: boolean;
|
|
18
27
|
constructor(info: DeviceInfo, options?: {
|
|
19
28
|
bleConnection?: BLEConnection;
|
|
20
29
|
apiClient?: OpenAPIClient;
|
|
21
30
|
enableFallback?: boolean;
|
|
22
31
|
preferredConnection?: ConnectionType;
|
|
32
|
+
enableConnectionIntelligence?: boolean;
|
|
33
|
+
enableCircuitBreaker?: boolean;
|
|
34
|
+
enableRetry?: boolean;
|
|
35
|
+
retryConfig?: RetryConfig;
|
|
36
|
+
circuitBreakerConfig?: CircuitBreakerConfig;
|
|
23
37
|
logLevel?: number;
|
|
24
38
|
});
|
|
25
39
|
/**
|
|
@@ -59,15 +73,19 @@ export declare abstract class SwitchBotDevice extends EventEmitter {
|
|
|
59
73
|
*/
|
|
60
74
|
abstract getStatus(): Promise<DeviceStatus>;
|
|
61
75
|
/**
|
|
62
|
-
* Send a command via BLE
|
|
76
|
+
* Send a command via BLE with circuit breaker and retry logic
|
|
63
77
|
*/
|
|
64
78
|
protected sendBLECommand(command: readonly number[] | number[] | Buffer): Promise<CommandResult>;
|
|
65
79
|
/**
|
|
66
|
-
* Send a command via OpenAPI
|
|
80
|
+
* Send a command via OpenAPI with circuit breaker and retry logic
|
|
67
81
|
*/
|
|
68
82
|
protected sendAPICommand(command: string, parameter?: any): Promise<CommandResult>;
|
|
69
83
|
/**
|
|
70
|
-
*
|
|
84
|
+
* Get best connection type based on intelligence tracking
|
|
85
|
+
*/
|
|
86
|
+
private getBestConnection;
|
|
87
|
+
/**
|
|
88
|
+
* Send a command with automatic BLE/API fallback, circuit breaker, and retry logic
|
|
71
89
|
*/
|
|
72
90
|
protected sendCommand(bleCommand: readonly number[] | number[] | Buffer, apiCommand: string, apiParameter?: any): Promise<CommandResult>;
|
|
73
91
|
/**
|
|
@@ -90,6 +108,42 @@ export declare abstract class SwitchBotDevice extends EventEmitter {
|
|
|
90
108
|
* Enable or disable fallback
|
|
91
109
|
*/
|
|
92
110
|
setFallbackEnabled(enabled: boolean): void;
|
|
111
|
+
/**
|
|
112
|
+
* Enable or disable connection intelligence
|
|
113
|
+
*/
|
|
114
|
+
setConnectionIntelligenceEnabled(enabled: boolean): void;
|
|
115
|
+
/**
|
|
116
|
+
* Enable or disable circuit breaker
|
|
117
|
+
*/
|
|
118
|
+
setCircuitBreakerEnabled(enabled: boolean): void;
|
|
119
|
+
/**
|
|
120
|
+
* Enable or disable retry logic
|
|
121
|
+
*/
|
|
122
|
+
setRetryEnabled(enabled: boolean): void;
|
|
123
|
+
/**
|
|
124
|
+
* Get connection tracker for this device
|
|
125
|
+
*/
|
|
126
|
+
getConnectionTracker(): ConnectionTracker;
|
|
127
|
+
/**
|
|
128
|
+
* Get circuit breaker for BLE
|
|
129
|
+
*/
|
|
130
|
+
getCircuitBreakerBLE(): CircuitBreaker;
|
|
131
|
+
/**
|
|
132
|
+
* Get circuit breaker for API
|
|
133
|
+
*/
|
|
134
|
+
getCircuitBreakerAPI(): CircuitBreaker;
|
|
135
|
+
/**
|
|
136
|
+
* Register a custom fallback handler
|
|
137
|
+
*/
|
|
138
|
+
registerFallbackHandler(handler: FallbackHandler, options?: FallbackHandlerOptions): string;
|
|
139
|
+
/**
|
|
140
|
+
* Unregister a fallback handler
|
|
141
|
+
*/
|
|
142
|
+
unregisterFallbackHandler(id: string): boolean;
|
|
143
|
+
/**
|
|
144
|
+
* Get fallback handler manager
|
|
145
|
+
*/
|
|
146
|
+
getFallbackHandlerManager(): FallbackHandlerManager;
|
|
93
147
|
}
|
|
94
148
|
/**
|
|
95
149
|
* Device Manager for managing multiple devices
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"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"}
|
package/dist/devices/base.js
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
import { Buffer } from 'node:buffer';
|
|
6
6
|
import { EventEmitter } from 'node:events';
|
|
7
7
|
import { APINotAvailableError, BLENotAvailableError } from '../errors.js';
|
|
8
|
-
import { Logger } from '../utils/index.js';
|
|
8
|
+
import { CircuitBreaker, CircuitBreakerState, ConnectionTracker, FallbackHandlerManager, Logger, RetryExecutor, } from '../utils/index.js';
|
|
9
9
|
/**
|
|
10
10
|
* Base class for all SwitchBot devices
|
|
11
|
-
* Provides hybrid BLE/API functionality with automatic fallback
|
|
11
|
+
* Provides hybrid BLE/API functionality with automatic fallback, circuit breaker, and connection intelligence
|
|
12
12
|
*/
|
|
13
13
|
export class SwitchBotDevice extends EventEmitter {
|
|
14
14
|
info;
|
|
@@ -17,6 +17,15 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
17
17
|
apiClient;
|
|
18
18
|
enableFallback;
|
|
19
19
|
preferredConnection;
|
|
20
|
+
// Advanced features
|
|
21
|
+
connectionTracker;
|
|
22
|
+
circuitBreakerBLE;
|
|
23
|
+
circuitBreakerAPI;
|
|
24
|
+
fallbackHandlerManager;
|
|
25
|
+
retryExecutor;
|
|
26
|
+
enableConnectionIntelligence;
|
|
27
|
+
enableCircuitBreaker;
|
|
28
|
+
enableRetry;
|
|
20
29
|
constructor(info, options = {}) {
|
|
21
30
|
super();
|
|
22
31
|
this.info = info;
|
|
@@ -25,6 +34,19 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
25
34
|
this.apiClient = options.apiClient;
|
|
26
35
|
this.enableFallback = options.enableFallback ?? true;
|
|
27
36
|
this.preferredConnection = options.preferredConnection ?? 'ble';
|
|
37
|
+
// Initialize advanced features
|
|
38
|
+
this.enableConnectionIntelligence = options.enableConnectionIntelligence ?? true;
|
|
39
|
+
this.enableCircuitBreaker = options.enableCircuitBreaker ?? true;
|
|
40
|
+
this.enableRetry = options.enableRetry ?? true;
|
|
41
|
+
// Create connection tracker for this device
|
|
42
|
+
this.connectionTracker = new ConnectionTracker(info.id, options.logLevel);
|
|
43
|
+
// Create circuit breakers for each connection type
|
|
44
|
+
this.circuitBreakerBLE = new CircuitBreaker(`${info.deviceType}:${info.id}:BLE`, options.circuitBreakerConfig, options.logLevel);
|
|
45
|
+
this.circuitBreakerAPI = new CircuitBreaker(`${info.deviceType}:${info.id}:API`, options.circuitBreakerConfig, options.logLevel);
|
|
46
|
+
// Create retry executor
|
|
47
|
+
this.retryExecutor = new RetryExecutor(options.retryConfig, options.logLevel);
|
|
48
|
+
// Create fallback handler manager
|
|
49
|
+
this.fallbackHandlerManager = new FallbackHandlerManager(options.logLevel);
|
|
28
50
|
}
|
|
29
51
|
/**
|
|
30
52
|
* Get device information
|
|
@@ -75,7 +97,7 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
75
97
|
return this.info.connectionTypes.includes('api') && !!this.apiClient && this.info.cloudServiceEnabled !== false;
|
|
76
98
|
}
|
|
77
99
|
/**
|
|
78
|
-
* Send a command via BLE
|
|
100
|
+
* Send a command via BLE with circuit breaker and retry logic
|
|
79
101
|
*/
|
|
80
102
|
async sendBLECommand(command) {
|
|
81
103
|
if (!this.hasBLE()) {
|
|
@@ -85,18 +107,57 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
85
107
|
error: 'BLE not available for this device',
|
|
86
108
|
};
|
|
87
109
|
}
|
|
88
|
-
|
|
110
|
+
// Check circuit breaker
|
|
111
|
+
if (this.enableCircuitBreaker && !this.circuitBreakerBLE.canExecute()) {
|
|
112
|
+
const state = this.circuitBreakerBLE.getState();
|
|
113
|
+
if (state === CircuitBreakerState.OPEN) {
|
|
114
|
+
return {
|
|
115
|
+
success: false,
|
|
116
|
+
connectionType: 'ble',
|
|
117
|
+
error: 'BLE circuit breaker is OPEN (too many failures)',
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const executeCommand = async () => {
|
|
89
122
|
this.logger.debug('Sending BLE command', command);
|
|
90
123
|
const buffer = Buffer.isBuffer(command) ? command : Buffer.from(command);
|
|
124
|
+
const startTime = Date.now();
|
|
91
125
|
await this.bleConnection.write(this.info.mac, buffer);
|
|
126
|
+
const latencyMs = Date.now() - startTime;
|
|
127
|
+
// Record success
|
|
128
|
+
if (this.enableConnectionIntelligence) {
|
|
129
|
+
this.connectionTracker.recordSuccess('ble', latencyMs);
|
|
130
|
+
}
|
|
131
|
+
if (this.enableCircuitBreaker) {
|
|
132
|
+
this.circuitBreakerBLE.recordSuccess();
|
|
133
|
+
}
|
|
92
134
|
this.info.activeConnection = 'ble';
|
|
93
135
|
this.emit('command', { type: 'ble', success: true });
|
|
94
136
|
return {
|
|
95
137
|
success: true,
|
|
96
138
|
connectionType: 'ble',
|
|
97
139
|
};
|
|
140
|
+
};
|
|
141
|
+
try {
|
|
142
|
+
if (this.enableRetry) {
|
|
143
|
+
this.circuitBreakerBLE.markHalfOpenAttempt();
|
|
144
|
+
return await this.retryExecutor.executeOrThrow(executeCommand, `BLE command for ${this.info.id}`);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
if (this.enableCircuitBreaker) {
|
|
148
|
+
this.circuitBreakerBLE.markHalfOpenAttempt();
|
|
149
|
+
}
|
|
150
|
+
return await executeCommand();
|
|
151
|
+
}
|
|
98
152
|
}
|
|
99
153
|
catch (error) {
|
|
154
|
+
// Record failure
|
|
155
|
+
if (this.enableConnectionIntelligence) {
|
|
156
|
+
this.connectionTracker.recordFailure('ble');
|
|
157
|
+
}
|
|
158
|
+
if (this.enableCircuitBreaker) {
|
|
159
|
+
this.circuitBreakerBLE.recordFailure();
|
|
160
|
+
}
|
|
100
161
|
this.logger.error('BLE command failed', error);
|
|
101
162
|
this.emit('error', { type: 'ble', error });
|
|
102
163
|
return {
|
|
@@ -107,7 +168,7 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
107
168
|
}
|
|
108
169
|
}
|
|
109
170
|
/**
|
|
110
|
-
* Send a command via OpenAPI
|
|
171
|
+
* Send a command via OpenAPI with circuit breaker and retry logic
|
|
111
172
|
*/
|
|
112
173
|
async sendAPICommand(command, parameter) {
|
|
113
174
|
if (!this.hasAPI()) {
|
|
@@ -117,9 +178,29 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
117
178
|
error: 'API not available for this device',
|
|
118
179
|
};
|
|
119
180
|
}
|
|
120
|
-
|
|
181
|
+
// Check circuit breaker
|
|
182
|
+
if (this.enableCircuitBreaker && !this.circuitBreakerAPI.canExecute()) {
|
|
183
|
+
const state = this.circuitBreakerAPI.getState();
|
|
184
|
+
if (state === CircuitBreakerState.OPEN) {
|
|
185
|
+
return {
|
|
186
|
+
success: false,
|
|
187
|
+
connectionType: 'api',
|
|
188
|
+
error: 'API circuit breaker is OPEN (too many failures)',
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
const executeCommand = async () => {
|
|
121
193
|
this.logger.debug('Sending API command', { command, parameter });
|
|
194
|
+
const startTime = Date.now();
|
|
122
195
|
const response = await this.apiClient.sendCommand(this.info.id, command, parameter);
|
|
196
|
+
const latencyMs = Date.now() - startTime;
|
|
197
|
+
// Record success
|
|
198
|
+
if (this.enableConnectionIntelligence) {
|
|
199
|
+
this.connectionTracker.recordSuccess('api', latencyMs);
|
|
200
|
+
}
|
|
201
|
+
if (this.enableCircuitBreaker) {
|
|
202
|
+
this.circuitBreakerAPI.recordSuccess();
|
|
203
|
+
}
|
|
123
204
|
this.info.activeConnection = 'api';
|
|
124
205
|
this.emit('command', { type: 'api', success: true });
|
|
125
206
|
return {
|
|
@@ -127,8 +208,27 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
127
208
|
connectionType: 'api',
|
|
128
209
|
data: response,
|
|
129
210
|
};
|
|
211
|
+
};
|
|
212
|
+
try {
|
|
213
|
+
if (this.enableRetry) {
|
|
214
|
+
this.circuitBreakerAPI.markHalfOpenAttempt();
|
|
215
|
+
return await this.retryExecutor.executeOrThrow(executeCommand, `API command for ${this.info.id}`);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
if (this.enableCircuitBreaker) {
|
|
219
|
+
this.circuitBreakerAPI.markHalfOpenAttempt();
|
|
220
|
+
}
|
|
221
|
+
return await executeCommand();
|
|
222
|
+
}
|
|
130
223
|
}
|
|
131
224
|
catch (error) {
|
|
225
|
+
// Record failure
|
|
226
|
+
if (this.enableConnectionIntelligence) {
|
|
227
|
+
this.connectionTracker.recordFailure('api');
|
|
228
|
+
}
|
|
229
|
+
if (this.enableCircuitBreaker) {
|
|
230
|
+
this.circuitBreakerAPI.recordFailure();
|
|
231
|
+
}
|
|
132
232
|
this.logger.error('API command failed', error);
|
|
133
233
|
this.emit('error', { type: 'api', error });
|
|
134
234
|
return {
|
|
@@ -139,37 +239,104 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
139
239
|
}
|
|
140
240
|
}
|
|
141
241
|
/**
|
|
142
|
-
*
|
|
242
|
+
* Get best connection type based on intelligence tracking
|
|
243
|
+
*/
|
|
244
|
+
getBestConnection() {
|
|
245
|
+
if (!this.enableConnectionIntelligence) {
|
|
246
|
+
return this.preferredConnection;
|
|
247
|
+
}
|
|
248
|
+
const availableTypes = [];
|
|
249
|
+
if (this.hasBLE()) {
|
|
250
|
+
availableTypes.push('ble');
|
|
251
|
+
}
|
|
252
|
+
if (this.hasAPI()) {
|
|
253
|
+
availableTypes.push('api');
|
|
254
|
+
}
|
|
255
|
+
if (availableTypes.length === 0) {
|
|
256
|
+
return this.preferredConnection;
|
|
257
|
+
}
|
|
258
|
+
// Get best connection based on statistics
|
|
259
|
+
const best = this.connectionTracker.getBestConnection(availableTypes);
|
|
260
|
+
if (best) {
|
|
261
|
+
return best;
|
|
262
|
+
}
|
|
263
|
+
return availableTypes.length > 0 ? availableTypes[0] : this.preferredConnection;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Send a command with automatic BLE/API fallback, circuit breaker, and retry logic
|
|
143
267
|
*/
|
|
144
268
|
async sendCommand(bleCommand, apiCommand, apiParameter) {
|
|
145
|
-
//
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
269
|
+
// Determine connection strategy
|
|
270
|
+
let primaryConnection = this.preferredConnection;
|
|
271
|
+
let secondaryConnection;
|
|
272
|
+
if (this.enableConnectionIntelligence) {
|
|
273
|
+
primaryConnection = this.getBestConnection();
|
|
274
|
+
if (this.preferredConnection === 'ble' && primaryConnection === 'api' && this.hasBLE()) {
|
|
275
|
+
secondaryConnection = 'ble';
|
|
150
276
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
this.logger.warn('BLE failed, falling back to API');
|
|
154
|
-
const apiResult = await this.sendAPICommand(apiCommand, apiParameter);
|
|
155
|
-
return { ...apiResult, usedFallback: true };
|
|
277
|
+
else if (this.preferredConnection === 'api' && primaryConnection === 'ble' && this.hasAPI()) {
|
|
278
|
+
secondaryConnection = 'api';
|
|
156
279
|
}
|
|
157
|
-
return bleResult;
|
|
158
280
|
}
|
|
159
281
|
else {
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
282
|
+
// Fallback based on preferred connection
|
|
283
|
+
if (this.preferredConnection === 'ble' && this.hasBLE()) {
|
|
284
|
+
primaryConnection = 'ble';
|
|
285
|
+
if (this.enableFallback && this.hasAPI()) {
|
|
286
|
+
secondaryConnection = 'api';
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else if (this.preferredConnection === 'api' && this.hasAPI()) {
|
|
290
|
+
primaryConnection = 'api';
|
|
291
|
+
if (this.enableFallback && this.hasBLE()) {
|
|
292
|
+
secondaryConnection = 'ble';
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
else if (this.hasBLE()) {
|
|
296
|
+
primaryConnection = 'ble';
|
|
297
|
+
if (this.enableFallback && this.hasAPI()) {
|
|
298
|
+
secondaryConnection = 'api';
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
primaryConnection = 'api';
|
|
303
|
+
secondaryConnection = undefined;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Try primary connection
|
|
307
|
+
let result;
|
|
308
|
+
let fallbackUsed = false;
|
|
309
|
+
if (primaryConnection === 'ble') {
|
|
310
|
+
result = await this.sendBLECommand(bleCommand);
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
result = await this.sendAPICommand(apiCommand, apiParameter);
|
|
314
|
+
}
|
|
315
|
+
// Try fallback if primary failed and fallback is enabled
|
|
316
|
+
if (!result.success && this.enableFallback && secondaryConnection) {
|
|
317
|
+
fallbackUsed = true;
|
|
318
|
+
this.logger.warn(`${primaryConnection} failed, attempting fallback to ${secondaryConnection}`);
|
|
319
|
+
// Emit fallback event
|
|
320
|
+
const fallbackEvent = {
|
|
321
|
+
deviceId: this.info.id,
|
|
322
|
+
primaryConnection,
|
|
323
|
+
fallbackConnection: secondaryConnection,
|
|
324
|
+
reason: result.error || 'Connection failed',
|
|
325
|
+
timestamp: new Date(),
|
|
326
|
+
totalTimeMs: 0,
|
|
327
|
+
};
|
|
328
|
+
await this.fallbackHandlerManager.emit(fallbackEvent);
|
|
329
|
+
if (secondaryConnection === 'ble') {
|
|
330
|
+
result = await this.sendBLECommand(bleCommand);
|
|
164
331
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
this.logger.warn('API failed, falling back to BLE');
|
|
168
|
-
const bleResult = await this.sendBLECommand(bleCommand);
|
|
169
|
-
return { ...bleResult, usedFallback: true };
|
|
332
|
+
else {
|
|
333
|
+
result = await this.sendAPICommand(apiCommand, apiParameter);
|
|
170
334
|
}
|
|
171
|
-
return apiResult;
|
|
172
335
|
}
|
|
336
|
+
if (fallbackUsed) {
|
|
337
|
+
result.usedFallback = true;
|
|
338
|
+
}
|
|
339
|
+
return result;
|
|
173
340
|
}
|
|
174
341
|
/**
|
|
175
342
|
* Get device status via BLE
|
|
@@ -180,11 +347,25 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
180
347
|
}
|
|
181
348
|
try {
|
|
182
349
|
this.logger.debug('Reading BLE status');
|
|
350
|
+
const startTime = Date.now();
|
|
183
351
|
const data = await this.bleConnection.read(this.info.mac);
|
|
352
|
+
const latencyMs = Date.now() - startTime;
|
|
353
|
+
if (this.enableConnectionIntelligence) {
|
|
354
|
+
this.connectionTracker.recordSuccess('ble', latencyMs);
|
|
355
|
+
}
|
|
356
|
+
if (this.enableCircuitBreaker) {
|
|
357
|
+
this.circuitBreakerBLE.recordSuccess();
|
|
358
|
+
}
|
|
184
359
|
this.info.activeConnection = 'ble';
|
|
185
360
|
return data;
|
|
186
361
|
}
|
|
187
362
|
catch (error) {
|
|
363
|
+
if (this.enableConnectionIntelligence) {
|
|
364
|
+
this.connectionTracker.recordFailure('ble');
|
|
365
|
+
}
|
|
366
|
+
if (this.enableCircuitBreaker) {
|
|
367
|
+
this.circuitBreakerBLE.recordFailure();
|
|
368
|
+
}
|
|
188
369
|
this.logger.error('Failed to read BLE status', error);
|
|
189
370
|
throw error;
|
|
190
371
|
}
|
|
@@ -198,11 +379,25 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
198
379
|
}
|
|
199
380
|
try {
|
|
200
381
|
this.logger.debug('Reading API status');
|
|
382
|
+
const startTime = Date.now();
|
|
201
383
|
const data = await this.apiClient.getStatus(this.info.id);
|
|
384
|
+
const latencyMs = Date.now() - startTime;
|
|
385
|
+
if (this.enableConnectionIntelligence) {
|
|
386
|
+
this.connectionTracker.recordSuccess('api', latencyMs);
|
|
387
|
+
}
|
|
388
|
+
if (this.enableCircuitBreaker) {
|
|
389
|
+
this.circuitBreakerAPI.recordSuccess();
|
|
390
|
+
}
|
|
202
391
|
this.info.activeConnection = 'api';
|
|
203
392
|
return data;
|
|
204
393
|
}
|
|
205
394
|
catch (error) {
|
|
395
|
+
if (this.enableConnectionIntelligence) {
|
|
396
|
+
this.connectionTracker.recordFailure('api');
|
|
397
|
+
}
|
|
398
|
+
if (this.enableCircuitBreaker) {
|
|
399
|
+
this.circuitBreakerAPI.recordFailure();
|
|
400
|
+
}
|
|
206
401
|
this.logger.error('Failed to read API status', error);
|
|
207
402
|
throw error;
|
|
208
403
|
}
|
|
@@ -228,6 +423,63 @@ export class SwitchBotDevice extends EventEmitter {
|
|
|
228
423
|
this.enableFallback = enabled;
|
|
229
424
|
this.logger.info(`Fallback ${enabled ? 'enabled' : 'disabled'}`);
|
|
230
425
|
}
|
|
426
|
+
/**
|
|
427
|
+
* Enable or disable connection intelligence
|
|
428
|
+
*/
|
|
429
|
+
setConnectionIntelligenceEnabled(enabled) {
|
|
430
|
+
this.enableConnectionIntelligence = enabled;
|
|
431
|
+
this.logger.info(`Connection intelligence ${enabled ? 'enabled' : 'disabled'}`);
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Enable or disable circuit breaker
|
|
435
|
+
*/
|
|
436
|
+
setCircuitBreakerEnabled(enabled) {
|
|
437
|
+
this.enableCircuitBreaker = enabled;
|
|
438
|
+
this.logger.info(`Circuit breaker ${enabled ? 'enabled' : 'disabled'}`);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Enable or disable retry logic
|
|
442
|
+
*/
|
|
443
|
+
setRetryEnabled(enabled) {
|
|
444
|
+
this.enableRetry = enabled;
|
|
445
|
+
this.logger.info(`Retry logic ${enabled ? 'enabled' : 'disabled'}`);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Get connection tracker for this device
|
|
449
|
+
*/
|
|
450
|
+
getConnectionTracker() {
|
|
451
|
+
return this.connectionTracker;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Get circuit breaker for BLE
|
|
455
|
+
*/
|
|
456
|
+
getCircuitBreakerBLE() {
|
|
457
|
+
return this.circuitBreakerBLE;
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Get circuit breaker for API
|
|
461
|
+
*/
|
|
462
|
+
getCircuitBreakerAPI() {
|
|
463
|
+
return this.circuitBreakerAPI;
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Register a custom fallback handler
|
|
467
|
+
*/
|
|
468
|
+
registerFallbackHandler(handler, options) {
|
|
469
|
+
return this.fallbackHandlerManager.register(handler, options);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Unregister a fallback handler
|
|
473
|
+
*/
|
|
474
|
+
unregisterFallbackHandler(id) {
|
|
475
|
+
return this.fallbackHandlerManager.unregister(id);
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Get fallback handler manager
|
|
479
|
+
*/
|
|
480
|
+
getFallbackHandlerManager() {
|
|
481
|
+
return this.fallbackHandlerManager;
|
|
482
|
+
}
|
|
231
483
|
}
|
|
232
484
|
/**
|
|
233
485
|
* Device Manager for managing multiple devices
|
package/dist/devices/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"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"}
|
package/dist/settings.d.ts
CHANGED
|
@@ -123,6 +123,12 @@ export declare const DEFAULTS: {
|
|
|
123
123
|
readonly enableBLE: true;
|
|
124
124
|
readonly enableFallback: true;
|
|
125
125
|
readonly baseURL: "https://api.switch-bot.com";
|
|
126
|
+
readonly enableConnectionIntelligence: true;
|
|
127
|
+
readonly enableCircuitBreaker: true;
|
|
128
|
+
readonly enableRetry: true;
|
|
129
|
+
readonly maxRetryAttempts: 3;
|
|
130
|
+
readonly retryInitialDelayMs: 100;
|
|
131
|
+
readonly retryMaxDelayMs: 5000;
|
|
126
132
|
};
|
|
127
133
|
/**
|
|
128
134
|
* Platform detection
|
package/dist/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,gBAAgB,+BAA+B,CAAA;AAC5D,eAAO,MAAM,WAAW,SAAS,CAAA;AAEjC,eAAO,MAAM,IAAI,EAAE;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAMhB,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAClE,eAAO,MAAM,6BAA6B,qCAAqC,CAAA;AAC/E,eAAO,MAAM,8BAA8B,qCAAqC,CAAA;AAGhF,eAAO,MAAM,iBAAiB,yCAAyC,CAAA;AACvE,eAAO,MAAM,eAAe,yCAAyC,CAAA;AACrE,eAAO,MAAM,gBAAgB,yCAAyC,CAAA;AACtE,eAAO,MAAM,gBAAgB,yCAAyC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AACrC,eAAO,MAAM,mBAAmB,QAAQ,CAAA;AACxC,eAAO,MAAM,mBAAmB,OAAO,CAAA;AACvC,eAAO,MAAM,iBAAiB,QAAQ,CAAA;AACtC,eAAO,MAAM,kBAAkB,QAAQ,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoElB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqC1C,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0C1C,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,eAAO,MAAM,gBAAgB,+BAA+B,CAAA;AAC5D,eAAO,MAAM,WAAW,SAAS,CAAA;AAEjC,eAAO,MAAM,IAAI,EAAE;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAMhB,CAAA;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAKtD;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,qCAAqC,CAAA;AAClE,eAAO,MAAM,6BAA6B,qCAAqC,CAAA;AAC/E,eAAO,MAAM,8BAA8B,qCAAqC,CAAA;AAGhF,eAAO,MAAM,iBAAiB,yCAAyC,CAAA;AACvE,eAAO,MAAM,eAAe,yCAAyC,CAAA;AACrE,eAAO,MAAM,gBAAgB,yCAAyC,CAAA;AACtE,eAAO,MAAM,gBAAgB,yCAAyC,CAAA;AAEtE;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AACrC,eAAO,MAAM,mBAAmB,QAAQ,CAAA;AACxC,eAAO,MAAM,mBAAmB,OAAO,CAAA;AACvC,eAAO,MAAM,iBAAiB,QAAQ,CAAA;AACtC,eAAO,MAAM,kBAAkB,QAAQ,CAAA;AAEvC;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoElB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;CAGtB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqC1C,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0C1C,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;CAaa,CAAA;AAElC;;GAEG;AACH,eAAO,MAAM,QAAQ,SAA+B,CAAA;AACpD,eAAO,MAAM,aAAa,SAAW,CAAA"}
|
package/dist/settings.js
CHANGED
|
@@ -221,6 +221,12 @@ export const DEFAULTS = {
|
|
|
221
221
|
enableBLE: true,
|
|
222
222
|
enableFallback: true,
|
|
223
223
|
baseURL: DEFAULT_BASE_URL,
|
|
224
|
+
enableConnectionIntelligence: true,
|
|
225
|
+
enableCircuitBreaker: true,
|
|
226
|
+
enableRetry: true,
|
|
227
|
+
maxRetryAttempts: 3,
|
|
228
|
+
retryInitialDelayMs: 100,
|
|
229
|
+
retryMaxDelayMs: 5000,
|
|
224
230
|
};
|
|
225
231
|
/**
|
|
226
232
|
* Platform detection
|