node-switchbot 4.0.0-beta.0 → 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.
Files changed (157) hide show
  1. package/dist/devices/base.d.ts +59 -5
  2. package/dist/devices/base.d.ts.map +1 -1
  3. package/dist/devices/base.js +280 -28
  4. package/dist/devices/base.js.map +1 -1
  5. package/dist/settings.d.ts +6 -0
  6. package/dist/settings.d.ts.map +1 -1
  7. package/dist/settings.js +6 -0
  8. package/dist/settings.js.map +1 -1
  9. package/dist/switchbot.d.ts +7 -0
  10. package/dist/switchbot.d.ts.map +1 -1
  11. package/dist/switchbot.js +92 -32
  12. package/dist/switchbot.js.map +1 -1
  13. package/dist/types/index.d.ts +12 -0
  14. package/dist/types/index.d.ts.map +1 -1
  15. package/dist/types/index.js.map +1 -1
  16. package/dist/utils/circuit-breaker.d.ts +98 -0
  17. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  18. package/dist/utils/circuit-breaker.js +187 -0
  19. package/dist/utils/circuit-breaker.js.map +1 -0
  20. package/dist/utils/connection-tracker.d.ts +66 -0
  21. package/dist/utils/connection-tracker.d.ts.map +1 -0
  22. package/dist/utils/connection-tracker.js +184 -0
  23. package/dist/utils/connection-tracker.js.map +1 -0
  24. package/dist/utils/fallback-handler.d.ts +68 -0
  25. package/dist/utils/fallback-handler.d.ts.map +1 -0
  26. package/dist/utils/fallback-handler.js +131 -0
  27. package/dist/utils/fallback-handler.js.map +1 -0
  28. package/dist/utils/index.d.ts +4 -0
  29. package/dist/utils/index.d.ts.map +1 -1
  30. package/dist/utils/index.js +5 -0
  31. package/dist/utils/index.js.map +1 -1
  32. package/dist/utils/retry.d.ts +55 -0
  33. package/dist/utils/retry.d.ts.map +1 -0
  34. package/dist/utils/retry.js +95 -0
  35. package/dist/utils/retry.js.map +1 -0
  36. package/docs/assets/hierarchy.js +1 -1
  37. package/docs/assets/search.js +1 -1
  38. package/docs/classes/APIError.html +2 -2
  39. package/docs/classes/APINotAvailableError.html +2 -2
  40. package/docs/classes/BLEConnection.html +9 -9
  41. package/docs/classes/BLENotAvailableError.html +2 -2
  42. package/docs/classes/BLEScanner.html +8 -8
  43. package/docs/classes/CommandFailedError.html +2 -2
  44. package/docs/classes/ConnectionTimeoutError.html +2 -2
  45. package/docs/classes/DeviceManager.html +13 -13
  46. package/docs/classes/DeviceNotFoundError.html +2 -2
  47. package/docs/classes/DiscoveryError.html +2 -2
  48. package/docs/classes/OpenAPIClient.html +24 -24
  49. package/docs/classes/SwitchBot.html +12 -11
  50. package/docs/classes/SwitchBotDevice.html +33 -15
  51. package/docs/classes/SwitchBotError.html +2 -2
  52. package/docs/classes/ValidationError.html +2 -2
  53. package/docs/classes/WoAirPurifier.html +36 -18
  54. package/docs/classes/WoAirPurifierTable.html +36 -18
  55. package/docs/classes/WoBlindTilt.html +38 -20
  56. package/docs/classes/WoBulb.html +37 -19
  57. package/docs/classes/WoCeilingLight.html +37 -19
  58. package/docs/classes/WoContact.html +32 -14
  59. package/docs/classes/WoCurtain.html +36 -18
  60. package/docs/classes/WoHand.html +35 -17
  61. package/docs/classes/WoHub2.html +32 -14
  62. package/docs/classes/WoHub3.html +32 -14
  63. package/docs/classes/WoHumi.html +36 -18
  64. package/docs/classes/WoHumi2.html +36 -18
  65. package/docs/classes/WoIOSensorTH.html +32 -14
  66. package/docs/classes/WoKeypad.html +32 -14
  67. package/docs/classes/WoLeak.html +32 -14
  68. package/docs/classes/WoPlugMiniJP.html +35 -17
  69. package/docs/classes/WoPlugMiniUS.html +35 -17
  70. package/docs/classes/WoPresence.html +32 -14
  71. package/docs/classes/WoRelaySwitch1.html +35 -17
  72. package/docs/classes/WoRelaySwitch1PM.html +35 -17
  73. package/docs/classes/WoRemote.html +32 -14
  74. package/docs/classes/WoSensorTH.html +32 -14
  75. package/docs/classes/WoSensorTHPlus.html +32 -14
  76. package/docs/classes/WoSensorTHPro.html +32 -14
  77. package/docs/classes/WoSensorTHProCO2.html +32 -14
  78. package/docs/classes/WoSmartLock.html +34 -16
  79. package/docs/classes/WoSmartLockPro.html +35 -17
  80. package/docs/classes/WoStrip.html +37 -19
  81. package/docs/enums/LogLevel.html +2 -2
  82. package/docs/enums/SwitchBotBLEModel.html +2 -2
  83. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  84. package/docs/functions/updateBaseURL.html +1 -1
  85. package/docs/hierarchy.html +1 -1
  86. package/docs/interfaces/APICommandRequest.html +2 -2
  87. package/docs/interfaces/APICommandResponse.html +2 -2
  88. package/docs/interfaces/APIDevice.html +2 -2
  89. package/docs/interfaces/APIDeviceStatus.html +2 -2
  90. package/docs/interfaces/APIErrorResponse.html +2 -2
  91. package/docs/interfaces/APIResponse.html +2 -2
  92. package/docs/interfaces/AirPurifierCommands.html +2 -2
  93. package/docs/interfaces/AirPurifierServiceData.html +5 -5
  94. package/docs/interfaces/AirPurifierStatus.html +7 -7
  95. package/docs/interfaces/BLEAdvertisement.html +2 -2
  96. package/docs/interfaces/BLEScanOptions.html +5 -5
  97. package/docs/interfaces/BLEServiceData.html +5 -5
  98. package/docs/interfaces/BlindTiltCommands.html +2 -2
  99. package/docs/interfaces/BlindTiltServiceData.html +5 -5
  100. package/docs/interfaces/BlindTiltStatus.html +6 -6
  101. package/docs/interfaces/BotCommands.html +2 -2
  102. package/docs/interfaces/BotServiceData.html +5 -5
  103. package/docs/interfaces/BotStatus.html +6 -6
  104. package/docs/interfaces/BulbCommands.html +2 -2
  105. package/docs/interfaces/BulbServiceData.html +5 -5
  106. package/docs/interfaces/BulbStatus.html +6 -6
  107. package/docs/interfaces/CeilingLightCommands.html +2 -2
  108. package/docs/interfaces/CeilingLightServiceData.html +5 -5
  109. package/docs/interfaces/CeilingLightStatus.html +6 -6
  110. package/docs/interfaces/CommandResult.html +6 -6
  111. package/docs/interfaces/ContactServiceData.html +5 -5
  112. package/docs/interfaces/ContactStatus.html +6 -6
  113. package/docs/interfaces/CurtainCommands.html +2 -2
  114. package/docs/interfaces/CurtainServiceData.html +5 -5
  115. package/docs/interfaces/CurtainStatus.html +6 -6
  116. package/docs/interfaces/DeviceInfo.html +13 -13
  117. package/docs/interfaces/DeviceListResponse.html +2 -2
  118. package/docs/interfaces/DeviceStatus.html +6 -6
  119. package/docs/interfaces/DiscoveryOptions.html +7 -7
  120. package/docs/interfaces/HubServiceData.html +5 -5
  121. package/docs/interfaces/HubStatus.html +6 -6
  122. package/docs/interfaces/HumidifierCommands.html +2 -2
  123. package/docs/interfaces/HumidifierServiceData.html +6 -6
  124. package/docs/interfaces/HumidifierStatus.html +6 -6
  125. package/docs/interfaces/KeypadStatus.html +6 -6
  126. package/docs/interfaces/LeakServiceData.html +5 -5
  127. package/docs/interfaces/LeakStatus.html +6 -6
  128. package/docs/interfaces/LockCommands.html +2 -2
  129. package/docs/interfaces/LockServiceData.html +6 -6
  130. package/docs/interfaces/LockStatus.html +6 -6
  131. package/docs/interfaces/MeterServiceData.html +5 -5
  132. package/docs/interfaces/MeterStatus.html +6 -6
  133. package/docs/interfaces/MotionServiceData.html +5 -5
  134. package/docs/interfaces/MotionStatus.html +6 -6
  135. package/docs/interfaces/PlugCommands.html +2 -2
  136. package/docs/interfaces/PlugServiceData.html +5 -5
  137. package/docs/interfaces/PlugStatus.html +6 -6
  138. package/docs/interfaces/PresenceServiceData.html +5 -5
  139. package/docs/interfaces/PresenceStatus.html +6 -6
  140. package/docs/interfaces/RelaySwitchCommands.html +2 -2
  141. package/docs/interfaces/RelaySwitchServiceData.html +5 -5
  142. package/docs/interfaces/RelaySwitchStatus.html +6 -6
  143. package/docs/interfaces/RemoteStatus.html +6 -6
  144. package/docs/interfaces/SceneListResponse.html +2 -2
  145. package/docs/interfaces/StripCommands.html +2 -2
  146. package/docs/interfaces/StripServiceData.html +5 -5
  147. package/docs/interfaces/StripStatus.html +6 -6
  148. package/docs/interfaces/SwitchBotConfig.html +21 -9
  149. package/docs/interfaces/WebhookConfig.html +2 -2
  150. package/docs/interfaces/WebhookDetails.html +2 -2
  151. package/docs/interfaces/WebhookQueryResponse.html +2 -2
  152. package/docs/interfaces/WebhookSetupResponse.html +2 -2
  153. package/docs/types/ConnectionType.html +1 -1
  154. package/docs/types/PhysicalDeviceType.html +1 -1
  155. package/docs/types/VirtualDeviceType.html +1 -1
  156. package/docs/variables/urls.html +1 -1
  157. package/package.json +2 -2
@@ -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
- * Send a command with automatic BLE/API fallback
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;AAEhG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,YAAY;IAQtD,SAAS,CAAC,IAAI,EAAE,UAAU;IAP5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAA;IACvC,SAAS,CAAC,SAAS,CAAC,EAAE,aAAa,CAAA;IACnC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,mBAAmB,EAAE,cAAc,CAAA;gBAGjC,IAAI,EAAE,UAAU,EAC1B,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,SAAS,CAAC,EAAE,aAAa,CAAA;QACzB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,mBAAmB,CAAC,EAAE,cAAc,CAAA;QACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;KACb;IAWR;;OAEG;IACH,OAAO,IAAI,UAAU;IAIrB;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,MAAM,IAAI,MAAM,GAAG,SAAS;IAI5B;;OAEG;IACH,mBAAmB,IAAI,cAAc,GAAG,SAAS;IAIjD;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAE3C;;OAEG;cACa,cAAc,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCtG;;OAEG;cACa,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAkCxF;;OAEG;cACa,WAAW,CACzB,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,EACjD,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,GAAG,GACjB,OAAO,CAAC,aAAa,CAAC;IAoCzB;;OAEG;cACa,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAgB5C;;OAEG;cACa,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAgB5C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAK9C;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAKlD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAI3C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,MAAM,CAAQ;gBAEV,QAAQ,CAAC,EAAE,MAAM;IAK7B;;OAEG;IACH,GAAG,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAYlC;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAajC;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIlD;;OAEG;IACH,IAAI,IAAI,eAAe,EAAE;IAIzB;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE;IAIhD;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIlD;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,MAAM,IAAI,MAAM,EAAE;IAIlB;;OAEG;IACH,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;CAG5C"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"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"}
@@ -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
- try {
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
- try {
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
- * Send a command with automatic BLE/API fallback
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
- // Try preferred connection first
146
- if (this.preferredConnection === 'ble') {
147
- const bleResult = await this.sendBLECommand(bleCommand);
148
- if (bleResult.success) {
149
- return bleResult;
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
- // Fallback to API if enabled
152
- if (this.enableFallback && this.hasAPI()) {
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
- // Prefer API
161
- const apiResult = await this.sendAPICommand(apiCommand, apiParameter);
162
- if (apiResult.success) {
163
- return apiResult;
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
- // Fallback to BLE if enabled
166
- if (this.enableFallback && this.hasBLE()) {
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
@@ -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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"}
@@ -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
@@ -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;;;;;;;;CAQX,CAAA;AAEV;;GAEG;AACH,eAAO,MAAM,QAAQ,SAA+B,CAAA;AACpD,eAAO,MAAM,aAAa,SAAW,CAAA"}
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