@switchbot/homebridge-switchbot 5.0.0-beta.116 → 5.0.0-beta.117
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/deviceFactory.d.ts.map +1 -1
- package/dist/deviceFactory.js +4 -2
- package/dist/deviceFactory.js.map +1 -1
- package/dist/homebridge-ui/endpoints/config.d.ts.map +1 -1
- package/dist/homebridge-ui/endpoints/config.js +9 -6
- package/dist/homebridge-ui/endpoints/config.js.map +1 -1
- package/dist/homebridge-ui/public/js/api.d.ts +15 -2
- package/dist/homebridge-ui/public/js/api.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/api.js +99 -99
- package/dist/homebridge-ui/public/js/api.js.map +1 -1
- package/dist/homebridge-ui/public/js/api.ts +105 -97
- package/dist/homebridge-ui/public/js/app.js +342 -200
- package/dist/homebridge-ui/public/js/app.js.map +3 -3
- package/dist/homebridge-ui/public/js/devices.d.ts.map +1 -1
- package/dist/homebridge-ui/public/js/devices.js +4 -3
- package/dist/homebridge-ui/public/js/devices.js.map +1 -1
- package/dist/homebridge-ui/public/js/devices.ts +4 -3
- package/dist/platform.d.ts +4 -1
- package/dist/platform.d.ts.map +1 -1
- package/dist/platform.js +55 -36
- package/dist/platform.js.map +1 -1
- package/docs/variables/default.html +1 -1
- package/package.json +1 -1
- package/src/deviceFactory.ts +6 -3
- package/src/homebridge-ui/endpoints/config.ts +9 -6
- package/src/homebridge-ui/public/js/api.ts +105 -97
- package/src/homebridge-ui/public/js/devices.ts +4 -3
- package/src/platform.ts +57 -35
- package/test/matter-integration.spec.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceFactory.d.ts","sourceRoot":"","sources":["../src/deviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAmCtE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAqGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,qBAAqB,EAAE,SAAS,EAAE,OAAO;;
|
|
1
|
+
{"version":3,"file":"deviceFactory.d.ts","sourceRoot":"","sources":["../src/deviceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAmCtE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAqGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,qBAAqB,EAAE,SAAS,EAAE,OAAO;;2BA2C3E,GAAG;;GAG7B"}
|
package/dist/deviceFactory.js
CHANGED
|
@@ -110,10 +110,12 @@ export async function createDevice(opts, cfg, useMatter) {
|
|
|
110
110
|
const mergedCfg = { ...cfg, _client: client };
|
|
111
111
|
// Pass encryptionKey and keyId to device opts if present
|
|
112
112
|
const deviceOpts = { ...opts };
|
|
113
|
-
if (opts.encryptionKey)
|
|
113
|
+
if (opts.encryptionKey) {
|
|
114
114
|
deviceOpts.encryptionKey = opts.encryptionKey;
|
|
115
|
-
|
|
115
|
+
}
|
|
116
|
+
if (opts.keyId) {
|
|
116
117
|
deviceOpts.keyId = opts.keyId;
|
|
118
|
+
}
|
|
117
119
|
const DeviceCtor = classForType(opts.type);
|
|
118
120
|
const device = new DeviceCtor(deviceOpts, mergedCfg);
|
|
119
121
|
await device.init();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviceFactory.js","sourceRoot":"","sources":["../src/deviceFactory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deviceFactory.js","sourceRoot":"","sources":["../src/deviceFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/homebridge-ui/endpoints/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAU3E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/homebridge-ui/endpoints/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAU3E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,wBAAwB,QAmHvE"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { RequestError } from '@homebridge/plugin-ui-utils';
|
|
2
2
|
import fs from 'node:fs/promises';
|
|
3
|
+
import { isValidDeviceType } from '../../device-types.js';
|
|
3
4
|
import { getAllDevices, getSwitchBotPlatformConfig, SWITCHBOT_PLATFORM_REGEX } from '../utils/config-parser.js';
|
|
4
|
-
import { uiLog } from '../utils/logger.js';
|
|
5
5
|
import { validateAndMigrateDeviceType } from '../utils/device-migration.js';
|
|
6
|
-
import {
|
|
6
|
+
import { uiLog } from '../utils/logger.js';
|
|
7
7
|
export function registerConfigEndpoints(server) {
|
|
8
8
|
/**
|
|
9
9
|
* GET /devices - List all configured devices from Homebridge config
|
|
@@ -80,8 +80,10 @@ export function registerConfigEndpoints(server) {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
catch (e) {
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
84
|
+
uiLog.error(`Error in /devices: ${msg}`);
|
|
85
|
+
// Pass the real error message to the frontend for better diagnostics
|
|
86
|
+
throw new RequestError(msg || 'Failed to read Homebridge config', e);
|
|
85
87
|
}
|
|
86
88
|
});
|
|
87
89
|
/**
|
|
@@ -96,8 +98,9 @@ export function registerConfigEndpoints(server) {
|
|
|
96
98
|
};
|
|
97
99
|
}
|
|
98
100
|
catch (e) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
102
|
+
uiLog.error(`Error in /platform-config: ${msg}`);
|
|
103
|
+
throw new RequestError(msg || 'Failed to read platform config', e);
|
|
101
104
|
}
|
|
102
105
|
});
|
|
103
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/homebridge-ui/endpoints/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAEjC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAC/G,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/homebridge-ui/endpoints/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAC/G,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,MAAM,UAAU,uBAAuB,CAAC,MAAgC;IACtE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAA;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;YACnD,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,MAAM,KAAK,GAON,EAAE,CAAA;YACP,MAAM,kBAAkB,GAA+D,EAAE,CAAA;YAEzF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;YACnE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;oBAC/C,6CAA6C;oBAC7C,IAAI,CAAC,YAAY,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;wBAC1E,SAAQ;oBACV,CAAC;oBAED,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;oBAChC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;wBACxB,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAA;wBAC7B,IAAI,CAAC,EAAE,EAAE,CAAC;4BACR,SAAQ;wBACV,CAAC;wBAED,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAA;wBAC/D,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAA;wBAE/D,uBAAuB;wBACvB,MAAM,SAAS,GAAG,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;wBAC9F,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;wBAEvE,MAAM,WAAW,GAAoB;4BACnC,EAAE;4BACF,IAAI,EAAE,UAAU;4BAChB,IAAI,EAAE,UAAU;4BAChB,oBAAoB,EAAE,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM;4BACtE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS;yBACxC,CAAA;wBAED,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;4BACnC,WAAW,CAAC,qBAAqB,GAAG,iBAAiB,UAAU,GAAG,CAAA;4BAClE,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;gCACnC,WAAW,CAAC,qBAAqB,IAAI,iBAAiB,gBAAgB,CAAC,aAAa,GAAG,CAAA;gCACvF,kBAAkB,CAAC,IAAI,CAAC;oCACtB,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,UAAU;oCAChB,UAAU,EAAE,gBAAgB,CAAC,aAAa;iCAC3C,CAAC,CAAA;4BACJ,CAAC;iCAAM,CAAC;gCACN,kBAAkB,CAAC,IAAI,CAAC;oCACtB,IAAI,EAAE,UAAU;oCAChB,IAAI,EAAE,UAAU;iCACjB,CAAC,CAAA;4BACJ,CAAC;wBACH,CAAC;wBAED,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBACzB,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,oCAAoC;gBACtC,CAAC;YACH,CAAC;YAED,wBAAwB;YACxB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,KAAK,CAAC,IAAI,CACR,SAAS,kBAAkB,CAAC,MAAM,mCAAmC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrM,CAAA;YACH,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,MAAM,eAAe,OAAO,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,MAAM,4BAA4B,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC1K,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,KAAK;gBACX,GAAG,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;aACjF,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtD,KAAK,CAAC,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;YACxC,qEAAqE;YACrE,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,kCAAkC,EAAE,CAAC,CAAC,CAAA;QACtE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,0BAA0B,CAAC,MAAM,CAAC,CAAA;YAC7D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC3C,CAAA;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtD,KAAK,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;YAChD,MAAM,IAAI,YAAY,CAAC,GAAG,IAAI,gCAAgC,EAAE,CAAC,CAAC,CAAA;QACpE,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
import './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validate and auto-correct device types in the config array before saving.
|
|
4
|
+
* Returns an array of errors for devices that cannot be fixed.
|
|
5
|
+
*/
|
|
6
|
+
export declare function validateAndFixDeviceTypes(devices: Array<{
|
|
7
|
+
deviceId: string;
|
|
8
|
+
configDeviceName: string;
|
|
9
|
+
configDeviceType: string;
|
|
10
|
+
}>): {
|
|
11
|
+
deviceId: string;
|
|
12
|
+
name: string;
|
|
13
|
+
type: string;
|
|
14
|
+
}[];
|
|
2
15
|
export declare function syncParentPluginConfigFromDisk(autoSave?: boolean): Promise<boolean>;
|
|
3
16
|
export declare function fetchCredentialStatus(): Promise<any>;
|
|
4
17
|
export declare function saveCredentials(token: string, secret: string): Promise<any>;
|
|
5
18
|
export declare function fetchDevices(): Promise<any[]>;
|
|
6
|
-
export
|
|
19
|
+
export interface DiscoverRequestOptions {
|
|
7
20
|
bleEnabled?: boolean;
|
|
8
21
|
bleScanDurationSeconds?: number;
|
|
9
22
|
bleTimeoutSeconds?: number;
|
|
10
|
-
}
|
|
23
|
+
}
|
|
11
24
|
export declare function discoverDevices(mode?: 'all' | 'ble' | 'openapi', options?: DiscoverRequestOptions): Promise<any[]>;
|
|
12
25
|
export declare function fetchBluetoothStatus(): Promise<{
|
|
13
26
|
available: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/api.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/api.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,CAAA;AAGnB;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC;cAChG,MAAM;UAAQ,MAAM;UAAQ,MAAM;IAgBnE;AAaD,wBAAsB,8BAA8B,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAiDvF;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,CAe1D;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAQjF;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAgBnD;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,wBAAsB,eAAe,CACnC,IAAI,GAAE,KAAK,GAAG,KAAK,GAAG,SAAiB,EACvC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,GAAG,EAAE,CAAC,CAOhB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAU7F;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B,CAAC,CAaD;AAED,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpG,OAAO,CAAC,GAAG,CAAC,CAwBd;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAChH,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,GAAG,CAAC,CAed;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAQjE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,CAQrD"}
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
import { isValidDeviceType, normalizeDeviceType } from '../../../device-types.js';
|
|
2
2
|
import './types.js';
|
|
3
3
|
import { uiLog } from './logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Validate and auto-correct device types in the config array before saving.
|
|
6
|
+
* Returns an array of errors for devices that cannot be fixed.
|
|
7
|
+
*/
|
|
8
|
+
export function validateAndFixDeviceTypes(devices) {
|
|
9
|
+
const errors = [];
|
|
10
|
+
for (const d of devices) {
|
|
11
|
+
if (!isValidDeviceType(d.configDeviceType)) {
|
|
12
|
+
const fixed = normalizeDeviceType(d.configDeviceType);
|
|
13
|
+
if (fixed) {
|
|
14
|
+
d.configDeviceType = fixed;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
errors.push({
|
|
18
|
+
deviceId: d.deviceId,
|
|
19
|
+
name: d.configDeviceName,
|
|
20
|
+
type: d.configDeviceType,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return errors;
|
|
26
|
+
}
|
|
27
|
+
// API wrapper functions for communicating with the Homebridge UI server
|
|
4
28
|
function isSwitchBotPlatformConfig(block) {
|
|
5
29
|
const platformName = String(block?.platform || block?.name || '').toLowerCase();
|
|
6
30
|
return (platformName === 'switchbot'
|
|
@@ -29,6 +53,12 @@ export async function syncParentPluginConfigFromDisk(autoSave = false) {
|
|
|
29
53
|
uiLog.warn('SwitchBot platform block not found in Homebridge plugin config');
|
|
30
54
|
return false;
|
|
31
55
|
}
|
|
56
|
+
// Validate and fix device types before saving
|
|
57
|
+
const errors = validateAndFixDeviceTypes(diskResp.data.devices || []);
|
|
58
|
+
if (errors.length > 0) {
|
|
59
|
+
homebridge.toast?.error?.(`Invalid device types found: ${errors.map(e => `${e.name} (${e.type})`).join(', ')}`);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
32
62
|
pluginConfigBlocks[index] = diskResp.data;
|
|
33
63
|
await homebridge.updatePluginConfig(pluginConfigBlocks);
|
|
34
64
|
// Auto-save to disk if requested - prevents parent UI from overwriting with stale cache
|
|
@@ -60,44 +90,39 @@ export async function fetchCredentialStatus() {
|
|
|
60
90
|
}
|
|
61
91
|
}
|
|
62
92
|
export async function saveCredentials(token, secret) {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
throw new Error(resp?.message || 'Save failed');
|
|
69
|
-
}
|
|
70
|
-
return resp.data || resp;
|
|
71
|
-
}
|
|
72
|
-
catch (e) {
|
|
73
|
-
throw e;
|
|
93
|
+
uiLog.info('Saving credentials...');
|
|
94
|
+
const resp = await homebridge.request('/credentials', { token, secret });
|
|
95
|
+
uiLog.info('Save response:', resp);
|
|
96
|
+
if (!resp || resp.success === false) {
|
|
97
|
+
throw new Error(resp?.message || 'Save failed');
|
|
74
98
|
}
|
|
99
|
+
return resp.data || resp;
|
|
75
100
|
}
|
|
76
101
|
export async function fetchDevices() {
|
|
77
102
|
try {
|
|
78
103
|
const resp = await homebridge.request('/devices', {});
|
|
79
104
|
if (!resp || resp.success === false) {
|
|
80
|
-
|
|
105
|
+
// Prefer backend error message if available
|
|
106
|
+
const backendMsg = resp?.data?.message || resp?.message;
|
|
107
|
+
throw new Error(backendMsg || 'request failed');
|
|
81
108
|
}
|
|
82
109
|
return resp.data || [];
|
|
83
110
|
}
|
|
84
111
|
catch (e) {
|
|
85
|
-
|
|
112
|
+
// Show the real error to the user
|
|
113
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
114
|
+
uiLog.error('Error fetching devices:', msg);
|
|
115
|
+
// Optionally, show a toast or UI error here if needed
|
|
86
116
|
return [];
|
|
87
117
|
}
|
|
88
118
|
}
|
|
89
119
|
export async function discoverDevices(mode = 'all', options) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
throw new Error(resp?.data?.message || 'Discovery failed');
|
|
95
|
-
}
|
|
96
|
-
return resp.data || [];
|
|
97
|
-
}
|
|
98
|
-
catch (e) {
|
|
99
|
-
throw e;
|
|
120
|
+
const resp = await homebridge.request('/discover', { mode, ...options });
|
|
121
|
+
uiLog.info('Discover response:', resp);
|
|
122
|
+
if (!resp || resp.success === false) {
|
|
123
|
+
throw new Error(resp?.data?.message || 'Discovery failed');
|
|
100
124
|
}
|
|
125
|
+
return resp.data || [];
|
|
101
126
|
}
|
|
102
127
|
export async function fetchBluetoothStatus() {
|
|
103
128
|
try {
|
|
@@ -125,95 +150,70 @@ export async function testDeviceConnection(payload) {
|
|
|
125
150
|
};
|
|
126
151
|
}
|
|
127
152
|
export async function addDevice(deviceId, name, type, options) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
payload.address = options.address;
|
|
132
|
-
}
|
|
133
|
-
if (options?.model) {
|
|
134
|
-
payload.model = options.model;
|
|
135
|
-
}
|
|
136
|
-
if (options?.rssi !== undefined && options?.rssi !== null && options?.rssi !== 0) {
|
|
137
|
-
payload.rssi = options.rssi;
|
|
138
|
-
}
|
|
139
|
-
if (options?.encryptionKey) {
|
|
140
|
-
payload.encryptionKey = options.encryptionKey;
|
|
141
|
-
}
|
|
142
|
-
if (options?.keyId) {
|
|
143
|
-
payload.keyId = options.keyId;
|
|
144
|
-
}
|
|
145
|
-
uiLog.info('Adding device to config:', payload);
|
|
146
|
-
const resp = await homebridge.request('/add-device', payload);
|
|
147
|
-
uiLog.info('Add device response:', resp);
|
|
148
|
-
if (!resp || resp.success === false) {
|
|
149
|
-
throw new Error(resp?.data?.message || 'Failed to add device');
|
|
150
|
-
}
|
|
151
|
-
return resp.data || resp;
|
|
153
|
+
const payload = { deviceId, name, type };
|
|
154
|
+
if (options?.address) {
|
|
155
|
+
payload.address = options.address;
|
|
152
156
|
}
|
|
153
|
-
|
|
154
|
-
|
|
157
|
+
if (options?.model) {
|
|
158
|
+
payload.model = options.model;
|
|
159
|
+
}
|
|
160
|
+
if (options?.rssi !== undefined && options?.rssi !== null && options?.rssi !== 0) {
|
|
161
|
+
payload.rssi = options.rssi;
|
|
162
|
+
}
|
|
163
|
+
if (options?.encryptionKey) {
|
|
164
|
+
payload.encryptionKey = options.encryptionKey;
|
|
155
165
|
}
|
|
166
|
+
if (options?.keyId) {
|
|
167
|
+
payload.keyId = options.keyId;
|
|
168
|
+
}
|
|
169
|
+
uiLog.info('Adding device to config:', payload);
|
|
170
|
+
const resp = await homebridge.request('/add-device', payload);
|
|
171
|
+
uiLog.info('Add device response:', resp);
|
|
172
|
+
if (!resp || resp.success === false) {
|
|
173
|
+
throw new Error(resp?.data?.message || 'Failed to add device');
|
|
174
|
+
}
|
|
175
|
+
return resp.data || resp;
|
|
156
176
|
}
|
|
157
177
|
export async function addDevicesInBulk(devices) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
throw new Error(resp?.data?.message || 'Bulk add failed');
|
|
163
|
-
}
|
|
164
|
-
return resp.data || resp;
|
|
165
|
-
}
|
|
166
|
-
catch (e) {
|
|
167
|
-
throw e;
|
|
178
|
+
const resp = await homebridge.request('/add-devices', { devices });
|
|
179
|
+
uiLog.info('Bulk add response:', resp);
|
|
180
|
+
if (!resp || resp.success === false) {
|
|
181
|
+
throw new Error(resp?.data?.message || 'Bulk add failed');
|
|
168
182
|
}
|
|
183
|
+
return resp.data || resp;
|
|
169
184
|
}
|
|
170
185
|
export async function updateDevice(deviceId, configDeviceName, configDeviceType) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
params.configDeviceName = configDeviceName;
|
|
175
|
-
}
|
|
176
|
-
if (configDeviceType) {
|
|
177
|
-
params.configDeviceType = configDeviceType;
|
|
178
|
-
}
|
|
179
|
-
uiLog.info('[Update Device] Sending update request with params:', params);
|
|
180
|
-
const resp = await homebridge.request('/update-device', params);
|
|
181
|
-
uiLog.info('[Update Device] Update response:', resp);
|
|
182
|
-
if (!resp || resp.success === false) {
|
|
183
|
-
throw new Error(resp?.data?.message || 'Failed to update device');
|
|
184
|
-
}
|
|
185
|
-
return resp.data || resp;
|
|
186
|
+
const params = { deviceId };
|
|
187
|
+
if (configDeviceName) {
|
|
188
|
+
params.configDeviceName = configDeviceName;
|
|
186
189
|
}
|
|
187
|
-
|
|
188
|
-
|
|
190
|
+
if (configDeviceType) {
|
|
191
|
+
params.configDeviceType = configDeviceType;
|
|
189
192
|
}
|
|
193
|
+
uiLog.info('[Update Device] Sending update request with params:', params);
|
|
194
|
+
const resp = await homebridge.request('/update-device', params);
|
|
195
|
+
uiLog.info('[Update Device] Update response:', resp);
|
|
196
|
+
if (!resp || resp.success === false) {
|
|
197
|
+
throw new Error(resp?.data?.message || 'Failed to update device');
|
|
198
|
+
}
|
|
199
|
+
return resp.data || resp;
|
|
190
200
|
}
|
|
191
201
|
export async function deleteDevice(deviceId) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
throw new Error(resp?.data?.message || 'Failed to delete device');
|
|
198
|
-
}
|
|
199
|
-
return resp.data || resp;
|
|
200
|
-
}
|
|
201
|
-
catch (e) {
|
|
202
|
-
throw e;
|
|
202
|
+
uiLog.info('Sending delete request for deviceId:', deviceId);
|
|
203
|
+
const resp = await homebridge.request('/delete-device', { deviceId });
|
|
204
|
+
uiLog.info('Delete response:', resp);
|
|
205
|
+
if (!resp || resp.success === false) {
|
|
206
|
+
throw new Error(resp?.data?.message || 'Failed to delete device');
|
|
203
207
|
}
|
|
208
|
+
return resp.data || resp;
|
|
204
209
|
}
|
|
205
210
|
export async function deleteAllDevices() {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
throw new Error(resp?.data?.message || 'Failed to delete all devices');
|
|
212
|
-
}
|
|
213
|
-
return resp.data || resp;
|
|
214
|
-
}
|
|
215
|
-
catch (e) {
|
|
216
|
-
throw e;
|
|
211
|
+
uiLog.info('Sending delete all devices request');
|
|
212
|
+
const resp = await homebridge.request('/delete-all-devices', {});
|
|
213
|
+
uiLog.info('Delete all response:', resp);
|
|
214
|
+
if (!resp || resp.success === false) {
|
|
215
|
+
throw new Error(resp?.data?.message || 'Failed to delete all devices');
|
|
217
216
|
}
|
|
217
|
+
return resp.data || resp;
|
|
218
218
|
}
|
|
219
219
|
//# sourceMappingURL=api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/api.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../src/homebridge-ui/public/js/api.ts"],"names":[],"mappings":"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"}
|