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.
- 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 +7 -0
- package/dist/switchbot.d.ts.map +1 -1
- package/dist/switchbot.js +92 -32
- 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 +12 -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 +2 -2
package/dist/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
package/dist/switchbot.d.ts
CHANGED
|
@@ -22,6 +22,7 @@ export declare class SwitchBot extends EventEmitter {
|
|
|
22
22
|
private initialize;
|
|
23
23
|
/**
|
|
24
24
|
* Discover devices (BLE + OpenAPI)
|
|
25
|
+
* BLE discovery runs first, then API discovery to enable proper device matching
|
|
25
26
|
*/
|
|
26
27
|
discover(options?: DiscoveryOptions): Promise<SwitchBotDevice[]>;
|
|
27
28
|
/**
|
|
@@ -38,8 +39,14 @@ export declare class SwitchBot extends EventEmitter {
|
|
|
38
39
|
private discoverAPI;
|
|
39
40
|
/**
|
|
40
41
|
* Handle API device discovery
|
|
42
|
+
* Tries to match with existing BLE devices and combines them into one entry
|
|
41
43
|
*/
|
|
42
44
|
private handleAPIDiscovery;
|
|
45
|
+
/**
|
|
46
|
+
* Find matching BLE device for an API device
|
|
47
|
+
* Returns a BLE device if a good match is found
|
|
48
|
+
*/
|
|
49
|
+
private findMatchingBLEDevice;
|
|
43
50
|
/**
|
|
44
51
|
* Create device instance
|
|
45
52
|
*/
|
package/dist/switchbot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAkB,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAiB,UAAU,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAwEjD;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,SAAS,CAAC,CAAe;IACjC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,GAAE,eAAoB;
|
|
1
|
+
{"version":3,"file":"switchbot.d.ts","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAkB,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAiB,UAAU,EAAE,MAAM,UAAU,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAwEjD;;GAEG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,SAAS,CAAC,CAAe;IACjC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,WAAW,CAAQ;gBAEf,MAAM,GAAE,eAAoB;IA4BxC;;OAEG;IACH,OAAO,CAAC,UAAU;IAgDlB;;;OAGG;IACG,QAAQ,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkC1E;;OAEG;YACW,WAAW;IAuBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;OAEG;YACW,WAAW;IAkBzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiD1B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAuC7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,IAAI,OAAO,IAAI,aAAa,CAE3B;IAED;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,SAAS;IAIvC;;OAEG;IACH,YAAY,IAAI,aAAa,GAAG,SAAS;IAIzC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,eAAe,CAAC;IAItC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAUlC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAc/B"}
|
package/dist/switchbot.js
CHANGED
|
@@ -93,6 +93,12 @@ export class SwitchBot extends EventEmitter {
|
|
|
93
93
|
enableFallback: config.enableFallback ?? DEFAULTS.enableFallback,
|
|
94
94
|
logLevel: config.logLevel ?? DEFAULTS.logLevel,
|
|
95
95
|
noble: config.noble,
|
|
96
|
+
enableConnectionIntelligence: config.enableConnectionIntelligence ?? true,
|
|
97
|
+
enableCircuitBreaker: config.enableCircuitBreaker ?? true,
|
|
98
|
+
enableRetry: config.enableRetry ?? true,
|
|
99
|
+
maxRetryAttempts: config.maxRetryAttempts ?? 3,
|
|
100
|
+
retryInitialDelayMs: config.retryInitialDelayMs ?? 100,
|
|
101
|
+
retryMaxDelayMs: config.retryMaxDelayMs ?? 5000,
|
|
96
102
|
};
|
|
97
103
|
this.logger = new Logger('SwitchBot', this.config.logLevel);
|
|
98
104
|
this.deviceManager = new DeviceManager(this.config.logLevel);
|
|
@@ -143,6 +149,7 @@ export class SwitchBot extends EventEmitter {
|
|
|
143
149
|
}
|
|
144
150
|
/**
|
|
145
151
|
* Discover devices (BLE + OpenAPI)
|
|
152
|
+
* BLE discovery runs first, then API discovery to enable proper device matching
|
|
146
153
|
*/
|
|
147
154
|
async discover(options = {}) {
|
|
148
155
|
if (!this.initialized) {
|
|
@@ -150,19 +157,20 @@ export class SwitchBot extends EventEmitter {
|
|
|
150
157
|
}
|
|
151
158
|
const { scanBLE = !!this.bleScanner, fetchAPI = !!this.apiClient, timeout = this.config.scanTimeout, } = options;
|
|
152
159
|
this.logger.info('Starting device discovery', { scanBLE, fetchAPI });
|
|
153
|
-
|
|
154
|
-
// BLE discovery
|
|
160
|
+
// BLE discovery first (sequential)
|
|
155
161
|
if (scanBLE && this.bleScanner) {
|
|
156
|
-
|
|
162
|
+
this.logger.info('Step 1: Starting BLE discovery...');
|
|
163
|
+
await this.discoverBLE(timeout);
|
|
164
|
+
this.logger.info('Step 1: BLE discovery complete');
|
|
157
165
|
}
|
|
158
|
-
// API discovery
|
|
166
|
+
// API discovery second (sequential)
|
|
159
167
|
if (fetchAPI && this.apiClient) {
|
|
160
|
-
|
|
168
|
+
this.logger.info('Step 2: Starting API discovery...');
|
|
169
|
+
await this.discoverAPI();
|
|
170
|
+
this.logger.info('Step 2: API discovery complete');
|
|
161
171
|
}
|
|
162
|
-
// Wait for all discoveries
|
|
163
|
-
await Promise.allSettled(discoveries);
|
|
164
172
|
const devices = this.deviceManager.list();
|
|
165
|
-
this.logger.info(`Discovery complete: ${devices.length} devices found`);
|
|
173
|
+
this.logger.info(`Discovery complete: ${devices.length} unique devices found`);
|
|
166
174
|
this.emit('discovery-complete', devices);
|
|
167
175
|
return devices;
|
|
168
176
|
}
|
|
@@ -247,42 +255,86 @@ export class SwitchBot extends EventEmitter {
|
|
|
247
255
|
}
|
|
248
256
|
/**
|
|
249
257
|
* Handle API device discovery
|
|
258
|
+
* Tries to match with existing BLE devices and combines them into one entry
|
|
250
259
|
*/
|
|
251
260
|
handleAPIDiscovery(apiDevice) {
|
|
252
261
|
const { deviceId, deviceName, deviceType, enableCloudService, hubDeviceId, version } = apiDevice;
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
version,
|
|
262
|
-
cloudServiceEnabled: enableCloudService,
|
|
263
|
-
};
|
|
264
|
-
// Check if device already exists (may have been discovered via BLE)
|
|
265
|
-
let device = this.deviceManager.get(info.id);
|
|
266
|
-
if (device) {
|
|
267
|
-
// Update existing device info
|
|
268
|
-
device.updateInfo({
|
|
262
|
+
this.logger.debug(`Processing API device: ${deviceName} (${deviceId}, type: ${deviceType})`);
|
|
263
|
+
// Try to find matching BLE device
|
|
264
|
+
// Strategy: look for BLE devices of the same type that haven't been fully populated yet
|
|
265
|
+
const matchedBLEDevice = this.findMatchingBLEDevice(deviceType, deviceName);
|
|
266
|
+
if (matchedBLEDevice) {
|
|
267
|
+
// Update existing BLE device with API information
|
|
268
|
+
const deviceId_internal = matchedBLEDevice.getId();
|
|
269
|
+
matchedBLEDevice.updateInfo({
|
|
269
270
|
name: deviceName,
|
|
270
|
-
connectionTypes: [...new Set([...
|
|
271
|
+
connectionTypes: [...new Set([...matchedBLEDevice.getInfo().connectionTypes, 'api'])],
|
|
271
272
|
hubDeviceId,
|
|
272
273
|
version,
|
|
273
274
|
cloudServiceEnabled: enableCloudService,
|
|
274
275
|
});
|
|
275
|
-
this.logger.
|
|
276
|
+
this.logger.info(`Matched API device to existing BLE device: ${deviceName} (${deviceId_internal})`);
|
|
277
|
+
this.emit('device-updated', matchedBLEDevice);
|
|
276
278
|
}
|
|
277
279
|
else {
|
|
278
|
-
//
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
280
|
+
// No matching BLE device found, create new API-only device
|
|
281
|
+
const info = {
|
|
282
|
+
id: deviceId,
|
|
283
|
+
name: deviceName,
|
|
284
|
+
deviceType,
|
|
285
|
+
connectionTypes: ['api'],
|
|
286
|
+
activeConnection: undefined,
|
|
287
|
+
hubDeviceId,
|
|
288
|
+
version,
|
|
289
|
+
cloudServiceEnabled: enableCloudService,
|
|
290
|
+
};
|
|
291
|
+
// Check if device already exists (shouldn't happen but safety check)
|
|
292
|
+
let device = this.deviceManager.get(info.id);
|
|
293
|
+
if (!device) {
|
|
294
|
+
device = this.createDevice(info);
|
|
295
|
+
if (device) {
|
|
296
|
+
this.deviceManager.add(device);
|
|
297
|
+
this.emit('device-discovered', device);
|
|
298
|
+
this.logger.info(`Discovered ${deviceName} via API only (${deviceId})`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Find matching BLE device for an API device
|
|
305
|
+
* Returns a BLE device if a good match is found
|
|
306
|
+
*/
|
|
307
|
+
findMatchingBLEDevice(apiDeviceType, apiDeviceName) {
|
|
308
|
+
// Get all BLE devices
|
|
309
|
+
const bleDevices = this.deviceManager.list().filter((device) => {
|
|
310
|
+
const info = device.getInfo();
|
|
311
|
+
return info.connectionTypes.includes('ble') && !info.connectionTypes.includes('api');
|
|
312
|
+
});
|
|
313
|
+
// Try exact device type match first
|
|
314
|
+
const typeMatches = bleDevices.filter(device => device.getDeviceType() === apiDeviceType);
|
|
315
|
+
if (typeMatches.length === 1) {
|
|
316
|
+
// If only one device of this type, it's likely a match
|
|
317
|
+
this.logger.debug(`Found exact type match for ${apiDeviceType}`);
|
|
318
|
+
return typeMatches[0];
|
|
319
|
+
}
|
|
320
|
+
if (typeMatches.length > 1) {
|
|
321
|
+
// If multiple devices of same type, try to match by name similarity
|
|
322
|
+
const nameMatch = typeMatches.find((device) => {
|
|
323
|
+
const devName = device.getName();
|
|
324
|
+
// Simple name comparison (could be enhanced)
|
|
325
|
+
return devName === apiDeviceName || devName.includes(apiDeviceName) || apiDeviceName.includes(devName);
|
|
326
|
+
});
|
|
327
|
+
if (nameMatch) {
|
|
328
|
+
this.logger.debug(`Found name match for ${apiDeviceName}`);
|
|
329
|
+
return nameMatch;
|
|
330
|
+
}
|
|
331
|
+
// No good name match, return the first one as fallback for single device
|
|
332
|
+
// (better to merge than to duplicate)
|
|
333
|
+
if (typeMatches.length === 1) {
|
|
334
|
+
return typeMatches[0];
|
|
284
335
|
}
|
|
285
336
|
}
|
|
337
|
+
return undefined;
|
|
286
338
|
}
|
|
287
339
|
/**
|
|
288
340
|
* Create device instance
|
|
@@ -303,6 +355,14 @@ export class SwitchBot extends EventEmitter {
|
|
|
303
355
|
bleConnection: this.bleConnection,
|
|
304
356
|
apiClient: this.apiClient,
|
|
305
357
|
enableFallback: this.config.enableFallback,
|
|
358
|
+
enableConnectionIntelligence: this.config.enableConnectionIntelligence,
|
|
359
|
+
enableCircuitBreaker: this.config.enableCircuitBreaker,
|
|
360
|
+
enableRetry: this.config.enableRetry,
|
|
361
|
+
retryConfig: {
|
|
362
|
+
maxAttempts: this.config.maxRetryAttempts,
|
|
363
|
+
initialDelayMs: this.config.retryInitialDelayMs,
|
|
364
|
+
maxDelayMs: this.config.retryMaxDelayMs,
|
|
365
|
+
},
|
|
306
366
|
logLevel: this.config.logLevel,
|
|
307
367
|
});
|
|
308
368
|
}
|
package/dist/switchbot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switchbot.js","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"switchbot.js","sourceRoot":"","sources":["../src/switchbot.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -32,6 +32,18 @@ export interface SwitchBotConfig {
|
|
|
32
32
|
logLevel?: LogLevel;
|
|
33
33
|
/** Noble instance (optional - for custom BLE configuration) */
|
|
34
34
|
noble?: any;
|
|
35
|
+
/** Enable intelligent connection selection based on success history (default: true) */
|
|
36
|
+
enableConnectionIntelligence?: boolean;
|
|
37
|
+
/** Enable circuit breaker for connection reliability (default: true) */
|
|
38
|
+
enableCircuitBreaker?: boolean;
|
|
39
|
+
/** Enable automatic retry with exponential backoff (default: true) */
|
|
40
|
+
enableRetry?: boolean;
|
|
41
|
+
/** Maximum retry attempts per command (default: 3) */
|
|
42
|
+
maxRetryAttempts?: number;
|
|
43
|
+
/** Initial retry delay in milliseconds (default: 100) */
|
|
44
|
+
retryInitialDelayMs?: number;
|
|
45
|
+
/** Maximum retry delay in milliseconds (default: 5000) */
|
|
46
|
+
retryMaxDelayMs?: number;
|
|
35
47
|
}
|
|
36
48
|
/**
|
|
37
49
|
* Device discovery options
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAyHD,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit breaker states
|
|
3
|
+
*/
|
|
4
|
+
export declare enum CircuitBreakerState {
|
|
5
|
+
CLOSED = "CLOSED",// Normal operation
|
|
6
|
+
OPEN = "OPEN",// Failing, reject requests
|
|
7
|
+
HALF_OPEN = "HALF_OPEN"
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Circuit breaker configuration
|
|
11
|
+
*/
|
|
12
|
+
export interface CircuitBreakerConfig {
|
|
13
|
+
/** Failure threshold (0-1) to open circuit (default: 0.5) */
|
|
14
|
+
failureThreshold?: number;
|
|
15
|
+
/** Minimum number of requests before checking threshold (default: 5) */
|
|
16
|
+
minRequests?: number;
|
|
17
|
+
/** Time to wait before attempting recovery in milliseconds (default: 30000) */
|
|
18
|
+
resetTimeoutMs?: number;
|
|
19
|
+
/** Maximum number of requests in half-open state (default: 1) */
|
|
20
|
+
maxHalfOpenRequests?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Circuit breaker statistics
|
|
24
|
+
*/
|
|
25
|
+
export interface CircuitBreakerStats {
|
|
26
|
+
state: CircuitBreakerState;
|
|
27
|
+
successCount: number;
|
|
28
|
+
failureCount: number;
|
|
29
|
+
successRate: number;
|
|
30
|
+
totalRequests: number;
|
|
31
|
+
lastFailureTime?: Date;
|
|
32
|
+
lastRecoveryTime?: Date;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Circuit breaker for managing connection reliability
|
|
36
|
+
*/
|
|
37
|
+
export declare class CircuitBreaker {
|
|
38
|
+
private name;
|
|
39
|
+
private state;
|
|
40
|
+
private successCount;
|
|
41
|
+
private failureCount;
|
|
42
|
+
private halfOpenAttempts;
|
|
43
|
+
private lastFailureTime?;
|
|
44
|
+
private lastRecoveryTime?;
|
|
45
|
+
private resetTimer?;
|
|
46
|
+
private logger;
|
|
47
|
+
private config;
|
|
48
|
+
constructor(name: string, config?: CircuitBreakerConfig, logLevel?: number);
|
|
49
|
+
/**
|
|
50
|
+
* Record a successful operation
|
|
51
|
+
*/
|
|
52
|
+
recordSuccess(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Record a failed operation
|
|
55
|
+
*/
|
|
56
|
+
recordFailure(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Check if circuit should open based on failure rate
|
|
59
|
+
*/
|
|
60
|
+
private shouldOpen;
|
|
61
|
+
/**
|
|
62
|
+
* Transition to CLOSED state (recovered)
|
|
63
|
+
*/
|
|
64
|
+
private transitionToClosed;
|
|
65
|
+
/**
|
|
66
|
+
* Transition to OPEN state (failing)
|
|
67
|
+
*/
|
|
68
|
+
private transitionToOpen;
|
|
69
|
+
/**
|
|
70
|
+
* Check if the circuit allows operations
|
|
71
|
+
*/
|
|
72
|
+
canExecute(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Mark that we tried to execute in half-open state
|
|
75
|
+
*/
|
|
76
|
+
markHalfOpenAttempt(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get current state
|
|
79
|
+
*/
|
|
80
|
+
getState(): CircuitBreakerState;
|
|
81
|
+
/**
|
|
82
|
+
* Get current failure rate (0-1)
|
|
83
|
+
*/
|
|
84
|
+
getFailureRate(): number;
|
|
85
|
+
/**
|
|
86
|
+
* Get statistics
|
|
87
|
+
*/
|
|
88
|
+
getStats(): CircuitBreakerStats;
|
|
89
|
+
/**
|
|
90
|
+
* Reset circuit breaker (for testing)
|
|
91
|
+
*/
|
|
92
|
+
reset(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Cleanup
|
|
95
|
+
*/
|
|
96
|
+
cleanup(): void;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,oBAAY,mBAAmB;IAC7B,MAAM,WAAW,CAAE,mBAAmB;IACtC,IAAI,SAAS,CAAE,2BAA2B;IAC1C,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,mBAAmB,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,IAAI,CAAA;IACtB,gBAAgB,CAAC,EAAE,IAAI,CAAA;CACxB;AAED;;GAEG;AACH,qBAAa,cAAc;IAYvB,OAAO,CAAC,IAAI;IAXd,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,gBAAgB,CAAI;IAC5B,OAAO,CAAC,eAAe,CAAC,CAAM;IAC9B,OAAO,CAAC,gBAAgB,CAAC,CAAM;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAgB;IACnC,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,MAAM,CAAgC;gBAGpC,IAAI,EAAE,MAAM,EACpB,MAAM,GAAE,oBAAyB,EACjC,QAAQ,CAAC,EAAE,MAAM;IAYnB;;OAEG;IACH,aAAa,IAAI,IAAI;IAUrB;;OAEG;IACH,aAAa,IAAI,IAAI;IAmBrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAWlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,UAAU,IAAI,OAAO;IAarB;;OAEG;IACH,mBAAmB,IAAI,IAAI;IAM3B;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAI/B;;OAEG;IACH,cAAc,IAAI,MAAM;IAKxB;;OAEG;IACH,QAAQ,IAAI,mBAAmB;IAc/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAeb;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/* Copyright(C) 2024-2026, donavanbecker (https://github.com/donavanbecker). All rights reserved.
|
|
2
|
+
*
|
|
3
|
+
* utils/circuit-breaker.ts: SwitchBot v4.0.0 - Circuit Breaker Pattern
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from './index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Circuit breaker states
|
|
8
|
+
*/
|
|
9
|
+
export var CircuitBreakerState;
|
|
10
|
+
(function (CircuitBreakerState) {
|
|
11
|
+
CircuitBreakerState["CLOSED"] = "CLOSED";
|
|
12
|
+
CircuitBreakerState["OPEN"] = "OPEN";
|
|
13
|
+
CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN";
|
|
14
|
+
})(CircuitBreakerState || (CircuitBreakerState = {}));
|
|
15
|
+
/**
|
|
16
|
+
* Circuit breaker for managing connection reliability
|
|
17
|
+
*/
|
|
18
|
+
export class CircuitBreaker {
|
|
19
|
+
name;
|
|
20
|
+
state = CircuitBreakerState.CLOSED;
|
|
21
|
+
successCount = 0;
|
|
22
|
+
failureCount = 0;
|
|
23
|
+
halfOpenAttempts = 0;
|
|
24
|
+
lastFailureTime;
|
|
25
|
+
lastRecoveryTime;
|
|
26
|
+
resetTimer;
|
|
27
|
+
logger;
|
|
28
|
+
config;
|
|
29
|
+
constructor(name, config = {}, logLevel) {
|
|
30
|
+
this.name = name;
|
|
31
|
+
this.config = {
|
|
32
|
+
failureThreshold: config.failureThreshold ?? 0.5,
|
|
33
|
+
minRequests: config.minRequests ?? 5,
|
|
34
|
+
resetTimeoutMs: config.resetTimeoutMs ?? 30000,
|
|
35
|
+
maxHalfOpenRequests: config.maxHalfOpenRequests ?? 1,
|
|
36
|
+
};
|
|
37
|
+
this.logger = new Logger(`CircuitBreaker:${name}`, logLevel);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Record a successful operation
|
|
41
|
+
*/
|
|
42
|
+
recordSuccess() {
|
|
43
|
+
this.successCount++;
|
|
44
|
+
if (this.state === CircuitBreakerState.HALF_OPEN) {
|
|
45
|
+
// Successful in Half-Open -> recover
|
|
46
|
+
this.logger.info(`${this.name}: circuit recovered (HALF_OPEN -> CLOSED)`);
|
|
47
|
+
this.transitionToClosed();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Record a failed operation
|
|
52
|
+
*/
|
|
53
|
+
recordFailure() {
|
|
54
|
+
this.failureCount++;
|
|
55
|
+
this.lastFailureTime = new Date();
|
|
56
|
+
if (this.state === CircuitBreakerState.CLOSED) {
|
|
57
|
+
// Check if we should open the circuit
|
|
58
|
+
if (this.shouldOpen()) {
|
|
59
|
+
this.logger.warn(`${this.name}: circuit opened - failure rate ${this.getFailureRate().toFixed(2)}`);
|
|
60
|
+
this.transitionToOpen();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (this.state === CircuitBreakerState.HALF_OPEN) {
|
|
64
|
+
// Failed during recovery -> reopen
|
|
65
|
+
this.logger.warn(`${this.name}: circuit reopened (HALF_OPEN -> OPEN)`);
|
|
66
|
+
this.transitionToOpen();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check if circuit should open based on failure rate
|
|
71
|
+
*/
|
|
72
|
+
shouldOpen() {
|
|
73
|
+
const totalRequests = this.successCount + this.failureCount;
|
|
74
|
+
if (totalRequests < this.config.minRequests) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
const failureRate = this.failureCount / totalRequests;
|
|
78
|
+
return failureRate >= this.config.failureThreshold;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Transition to CLOSED state (recovered)
|
|
82
|
+
*/
|
|
83
|
+
transitionToClosed() {
|
|
84
|
+
this.state = CircuitBreakerState.CLOSED;
|
|
85
|
+
this.successCount = 0;
|
|
86
|
+
this.failureCount = 0;
|
|
87
|
+
this.halfOpenAttempts = 0;
|
|
88
|
+
this.lastRecoveryTime = new Date();
|
|
89
|
+
if (this.resetTimer) {
|
|
90
|
+
clearTimeout(this.resetTimer);
|
|
91
|
+
this.resetTimer = undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Transition to OPEN state (failing)
|
|
96
|
+
*/
|
|
97
|
+
transitionToOpen() {
|
|
98
|
+
this.state = CircuitBreakerState.OPEN;
|
|
99
|
+
this.successCount = 0;
|
|
100
|
+
this.failureCount = 0;
|
|
101
|
+
this.halfOpenAttempts = 0;
|
|
102
|
+
// Schedule recovery attempt
|
|
103
|
+
if (this.resetTimer) {
|
|
104
|
+
clearTimeout(this.resetTimer);
|
|
105
|
+
}
|
|
106
|
+
this.resetTimer = setTimeout(() => {
|
|
107
|
+
this.logger.info(`${this.name}: attempting recovery (OPEN -> HALF_OPEN)`);
|
|
108
|
+
this.state = CircuitBreakerState.HALF_OPEN;
|
|
109
|
+
this.halfOpenAttempts = 0;
|
|
110
|
+
}, this.config.resetTimeoutMs);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Check if the circuit allows operations
|
|
114
|
+
*/
|
|
115
|
+
canExecute() {
|
|
116
|
+
if (this.state === CircuitBreakerState.CLOSED) {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
if (this.state === CircuitBreakerState.HALF_OPEN) {
|
|
120
|
+
return this.halfOpenAttempts < this.config.maxHalfOpenRequests;
|
|
121
|
+
}
|
|
122
|
+
// OPEN state
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Mark that we tried to execute in half-open state
|
|
127
|
+
*/
|
|
128
|
+
markHalfOpenAttempt() {
|
|
129
|
+
if (this.state === CircuitBreakerState.HALF_OPEN) {
|
|
130
|
+
this.halfOpenAttempts++;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get current state
|
|
135
|
+
*/
|
|
136
|
+
getState() {
|
|
137
|
+
return this.state;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get current failure rate (0-1)
|
|
141
|
+
*/
|
|
142
|
+
getFailureRate() {
|
|
143
|
+
const total = this.successCount + this.failureCount;
|
|
144
|
+
return total === 0 ? 0 : this.failureCount / total;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get statistics
|
|
148
|
+
*/
|
|
149
|
+
getStats() {
|
|
150
|
+
const totalRequests = this.successCount + this.failureCount;
|
|
151
|
+
return {
|
|
152
|
+
state: this.state,
|
|
153
|
+
successCount: this.successCount,
|
|
154
|
+
failureCount: this.failureCount,
|
|
155
|
+
successRate: totalRequests === 0 ? 1 : this.successCount / totalRequests,
|
|
156
|
+
totalRequests,
|
|
157
|
+
lastFailureTime: this.lastFailureTime,
|
|
158
|
+
lastRecoveryTime: this.lastRecoveryTime,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Reset circuit breaker (for testing)
|
|
163
|
+
*/
|
|
164
|
+
reset() {
|
|
165
|
+
this.logger.debug(`${this.name}: reset`);
|
|
166
|
+
this.state = CircuitBreakerState.CLOSED;
|
|
167
|
+
this.successCount = 0;
|
|
168
|
+
this.failureCount = 0;
|
|
169
|
+
this.halfOpenAttempts = 0;
|
|
170
|
+
this.lastFailureTime = undefined;
|
|
171
|
+
this.lastRecoveryTime = undefined;
|
|
172
|
+
if (this.resetTimer) {
|
|
173
|
+
clearTimeout(this.resetTimer);
|
|
174
|
+
this.resetTimer = undefined;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Cleanup
|
|
179
|
+
*/
|
|
180
|
+
cleanup() {
|
|
181
|
+
if (this.resetTimer) {
|
|
182
|
+
clearTimeout(this.resetTimer);
|
|
183
|
+
this.resetTimer = undefined;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utils/circuit-breaker.ts"],"names":[],"mappings":"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"}
|