@switchbot/homebridge-switchbot 5.0.0-beta.99 → 5.1.0-beta.0
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/.changeset/config.json +14 -0
- package/.github/copilot-instructions.md +39 -0
- package/.github/workflows/ci.yml +4 -1
- package/.github/workflows/manual-e2e.yml +6 -3
- package/.github/workflows/release.yml +64 -15
- package/.github/workflows/stale.yml +2 -4
- package/.husky/pre-push +15 -0
- package/CHANGELOG.md +140 -135
- package/MIGRATION.md +21 -6
- package/README.md +109 -3
- package/TODO.md +263 -0
- package/config.schema.json +240 -36
- package/dist/SwitchBotHAPPlatform.d.ts +133 -0
- package/dist/SwitchBotHAPPlatform.d.ts.map +1 -0
- package/dist/SwitchBotHAPPlatform.js +584 -0
- package/dist/SwitchBotHAPPlatform.js.map +1 -0
- package/dist/SwitchBotMatterPlatform.d.ts +142 -0
- package/dist/SwitchBotMatterPlatform.d.ts.map +1 -0
- package/dist/SwitchBotMatterPlatform.js +569 -0
- package/dist/SwitchBotMatterPlatform.js.map +1 -0
- package/dist/device-types.d.ts +31 -0
- package/dist/device-types.d.ts.map +1 -0
- package/dist/device-types.js +246 -0
- package/dist/device-types.js.map +1 -0
- package/dist/deviceCommandMapper.d.ts +10 -0
- package/dist/deviceCommandMapper.d.ts.map +1 -0
- package/dist/deviceCommandMapper.js +319 -0
- package/dist/deviceCommandMapper.js.map +1 -0
- package/dist/deviceFactory.d.ts +3 -2
- package/dist/deviceFactory.d.ts.map +1 -1
- package/dist/deviceFactory.js +107 -29
- package/dist/deviceFactory.js.map +1 -1
- package/dist/devices/genericDevice.d.ts +59 -37
- package/dist/devices/genericDevice.d.ts.map +1 -1
- package/dist/devices/genericDevice.js +376 -78
- package/dist/devices/genericDevice.js.map +1 -1
- package/dist/errors.d.ts +38 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +32 -0
- package/dist/errors.js.map +1 -0
- package/dist/homebridge-ui/device-types.js +246 -0
- package/dist/homebridge-ui/device-types.js.map +1 -0
- package/dist/homebridge-ui/deviceCommandMapper.js +319 -0
- package/dist/homebridge-ui/deviceCommandMapper.js.map +1 -0
- package/dist/homebridge-ui/endpoints/config.d.ts +3 -0
- package/dist/homebridge-ui/endpoints/config.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/config.js +90 -0
- package/dist/homebridge-ui/endpoints/config.js.map +1 -0
- package/dist/homebridge-ui/endpoints/devices.d.ts +6 -0
- package/dist/homebridge-ui/endpoints/devices.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/devices.js +144 -0
- package/dist/homebridge-ui/endpoints/devices.js.map +1 -0
- package/dist/homebridge-ui/endpoints/discovery.d.ts +7 -0
- package/dist/homebridge-ui/endpoints/discovery.d.ts.map +1 -0
- package/dist/homebridge-ui/endpoints/discovery.js +219 -0
- package/dist/homebridge-ui/endpoints/discovery.js.map +1 -0
- package/dist/homebridge-ui/errors.js +32 -0
- package/dist/homebridge-ui/errors.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/config.js +90 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/config.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/devices.js +144 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/devices.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/discovery.js +219 -0
- package/dist/homebridge-ui/homebridge-ui/endpoints/discovery.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/server.js +11 -0
- package/dist/homebridge-ui/homebridge-ui/server.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/utils/config-parser.js +108 -0
- package/dist/homebridge-ui/homebridge-ui/utils/config-parser.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/utils/device-migration.js +111 -0
- package/dist/homebridge-ui/homebridge-ui/utils/device-migration.js.map +1 -0
- package/dist/homebridge-ui/homebridge-ui/utils/logger.js +17 -0
- package/dist/homebridge-ui/homebridge-ui/utils/logger.js.map +1 -0
- package/dist/homebridge-ui/public/css/styles.css +483 -0
- package/dist/homebridge-ui/public/index.html +197 -621
- package/dist/homebridge-ui/public/js/advanced-settings.d.ts +3 -0
- package/dist/homebridge-ui/public/js/advanced-settings.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/advanced-settings.js +95 -0
- package/dist/homebridge-ui/public/js/advanced-settings.js.map +1 -0
- package/dist/homebridge-ui/public/js/advanced-settings.ts +94 -0
- package/dist/homebridge-ui/public/js/api.d.ts +72 -0
- package/dist/homebridge-ui/public/js/api.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/api.js +313 -0
- package/dist/homebridge-ui/public/js/api.js.map +1 -0
- package/dist/homebridge-ui/public/js/api.ts +385 -0
- package/dist/homebridge-ui/public/js/app.d.ts +2 -0
- package/dist/homebridge-ui/public/js/app.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/app.js +3798 -0
- package/dist/homebridge-ui/public/js/app.js.map +7 -0
- package/dist/homebridge-ui/public/js/app.ts +22 -0
- package/dist/homebridge-ui/public/js/constants.d.ts +2 -0
- package/dist/homebridge-ui/public/js/constants.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/constants.js +2 -0
- package/dist/homebridge-ui/public/js/constants.js.map +1 -0
- package/dist/homebridge-ui/public/js/constants.ts +1 -0
- package/dist/homebridge-ui/public/js/credentials.d.ts +3 -0
- package/dist/homebridge-ui/public/js/credentials.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/credentials.js +99 -0
- package/dist/homebridge-ui/public/js/credentials.js.map +1 -0
- package/dist/homebridge-ui/public/js/credentials.ts +105 -0
- package/dist/homebridge-ui/public/js/devices-delete.d.ts +3 -0
- package/dist/homebridge-ui/public/js/devices-delete.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/devices-delete.js +199 -0
- package/dist/homebridge-ui/public/js/devices-delete.js.map +1 -0
- package/dist/homebridge-ui/public/js/devices-delete.ts +227 -0
- package/dist/homebridge-ui/public/js/devices.d.ts +9 -0
- package/dist/homebridge-ui/public/js/devices.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/devices.js +104 -0
- package/dist/homebridge-ui/public/js/devices.js.map +1 -0
- package/dist/homebridge-ui/public/js/devices.ts +112 -0
- package/dist/homebridge-ui/public/js/discovery.d.ts +9 -0
- package/dist/homebridge-ui/public/js/discovery.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/discovery.js +1201 -0
- package/dist/homebridge-ui/public/js/discovery.js.map +1 -0
- package/dist/homebridge-ui/public/js/discovery.ts +1335 -0
- package/dist/homebridge-ui/public/js/logger.d.ts +7 -0
- package/dist/homebridge-ui/public/js/logger.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/logger.js +17 -0
- package/dist/homebridge-ui/public/js/logger.js.map +1 -0
- package/dist/homebridge-ui/public/js/logger.ts +17 -0
- package/dist/homebridge-ui/public/js/modal.d.ts +5 -0
- package/dist/homebridge-ui/public/js/modal.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/modal.js +35 -0
- package/dist/homebridge-ui/public/js/modal.js.map +1 -0
- package/dist/homebridge-ui/public/js/modal.ts +35 -0
- package/dist/homebridge-ui/public/js/modals.d.ts +16 -0
- package/dist/homebridge-ui/public/js/modals.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/modals.js +728 -0
- package/dist/homebridge-ui/public/js/modals.js.map +1 -0
- package/dist/homebridge-ui/public/js/modals.ts +823 -0
- package/dist/homebridge-ui/public/js/render.d.ts +71 -0
- package/dist/homebridge-ui/public/js/render.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/render.js +961 -0
- package/dist/homebridge-ui/public/js/render.js.map +1 -0
- package/dist/homebridge-ui/public/js/render.ts +1085 -0
- package/dist/homebridge-ui/public/js/toast.d.ts +6 -0
- package/dist/homebridge-ui/public/js/toast.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/toast.js +38 -0
- package/dist/homebridge-ui/public/js/toast.js.map +1 -0
- package/dist/homebridge-ui/public/js/toast.ts +44 -0
- package/dist/homebridge-ui/public/js/types.d.ts +23 -0
- package/dist/homebridge-ui/public/js/types.d.ts.map +1 -0
- package/dist/homebridge-ui/public/js/types.js +2 -0
- package/dist/homebridge-ui/public/js/types.js.map +1 -0
- package/dist/homebridge-ui/public/js/types.ts +26 -0
- package/dist/homebridge-ui/server.d.ts +1 -3
- package/dist/homebridge-ui/server.d.ts.map +1 -1
- package/dist/homebridge-ui/server.js +8 -471
- package/dist/homebridge-ui/server.js.map +1 -1
- package/dist/homebridge-ui/settings.js +8 -0
- package/dist/homebridge-ui/settings.js.map +1 -0
- package/dist/homebridge-ui/switchbotClient.js +247 -0
- package/dist/homebridge-ui/switchbotClient.js.map +1 -0
- package/dist/homebridge-ui/utils/config-parser.d.ts +39 -0
- package/dist/homebridge-ui/utils/config-parser.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/config-parser.js +108 -0
- package/dist/homebridge-ui/utils/config-parser.js.map +1 -0
- package/dist/homebridge-ui/utils/device-migration.d.ts +35 -0
- package/dist/homebridge-ui/utils/device-migration.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/device-migration.js +111 -0
- package/dist/homebridge-ui/utils/device-migration.js.map +1 -0
- package/dist/homebridge-ui/utils/logger.d.ts +7 -0
- package/dist/homebridge-ui/utils/logger.d.ts.map +1 -0
- package/dist/homebridge-ui/utils/logger.js +17 -0
- package/dist/homebridge-ui/utils/logger.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/settings.d.ts +12 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +1 -0
- package/dist/settings.js.map +1 -1
- package/dist/switchbotClient.d.ts +12 -10
- package/dist/switchbotClient.d.ts.map +1 -1
- package/dist/switchbotClient.js +156 -103
- package/dist/switchbotClient.js.map +1 -1
- package/dist/utils.d.ts +81 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +1148 -4
- package/dist/utils.js.map +1 -1
- package/docs/assets/highlight.css +29 -15
- package/docs/assets/main.js +1 -1
- package/docs/index.html +100 -6
- package/docs/variables/default.html +3 -1
- package/eslint.config.js +9 -5
- package/nodemon.json +2 -2
- package/package.json +34 -21
- package/scripts/build-ui.js +37 -0
- package/scripts/free-dev-ports.mjs +105 -0
- package/scripts/generate-matter-maps.js +34 -17
- package/scripts/sync-device-types.mjs +31 -0
- package/src/SwitchBotHAPPlatform.ts +583 -0
- package/src/SwitchBotMatterPlatform.ts +566 -0
- package/src/device-types.js +246 -0
- package/src/device-types.js.map +1 -0
- package/src/device-types.ts +261 -0
- package/src/deviceCommandMapper.js +319 -0
- package/src/deviceCommandMapper.js.map +1 -0
- package/src/deviceCommandMapper.ts +333 -0
- package/src/deviceFactory.ts +125 -45
- package/src/devices/genericDevice.ts +411 -69
- package/src/errors.js +32 -0
- package/src/errors.js.map +1 -0
- package/src/errors.ts +35 -0
- package/src/homebridge-ui/endpoints/config.ts +110 -0
- package/src/homebridge-ui/endpoints/devices.ts +153 -0
- package/src/homebridge-ui/endpoints/discovery.ts +240 -0
- package/src/homebridge-ui/public/css/styles.css +483 -0
- package/src/homebridge-ui/public/index.html +197 -621
- package/src/homebridge-ui/public/js/advanced-settings.ts +94 -0
- package/src/homebridge-ui/public/js/api.ts +385 -0
- package/src/homebridge-ui/public/js/app.ts +22 -0
- package/src/homebridge-ui/public/js/constants.ts +1 -0
- package/src/homebridge-ui/public/js/credentials.ts +105 -0
- package/src/homebridge-ui/public/js/devices-delete.ts +227 -0
- package/src/homebridge-ui/public/js/devices.ts +112 -0
- package/src/homebridge-ui/public/js/discovery.ts +1335 -0
- package/src/homebridge-ui/public/js/logger.ts +17 -0
- package/src/homebridge-ui/public/js/modal.ts +35 -0
- package/src/homebridge-ui/public/js/modals.ts +823 -0
- package/src/homebridge-ui/public/js/render.ts +1085 -0
- package/src/homebridge-ui/public/js/toast.ts +44 -0
- package/src/homebridge-ui/public/js/types.ts +26 -0
- package/src/homebridge-ui/server.ts +9 -554
- package/src/homebridge-ui/utils/config-parser.ts +125 -0
- package/src/homebridge-ui/utils/device-migration.ts +144 -0
- package/src/homebridge-ui/utils/logger.ts +17 -0
- package/src/index.ts +12 -2
- package/src/settings.js +8 -0
- package/src/settings.js.map +1 -0
- package/src/settings.ts +14 -0
- package/src/switchbotClient.js +247 -0
- package/src/switchbotClient.js.map +1 -0
- package/src/switchbotClient.ts +177 -114
- package/src/utils.ts +1164 -5
- package/test/client/switchbot-client-debounce.spec.ts +35 -0
- package/test/client/switchbot-client-openapi.spec.ts +19 -0
- package/test/client/switchbotClient.spec.ts +64 -0
- package/test/device/device-mapping.spec.ts +23 -0
- package/test/device/deviceBase.spec.ts +26 -0
- package/test/device/deviceFactory-edge.spec.ts +15 -0
- package/test/device/deviceFactory.spec.ts +33 -0
- package/test/device/fan-swing.spec.ts +34 -0
- package/test/device/genericDevice-blepoll.spec.ts +47 -0
- package/test/device/irdevice.spec.ts +9 -0
- package/test/device/lock-users.spec.ts +35 -0
- package/test/device/matter-descriptors.spec.ts +22 -0
- package/test/device/matter-device-state.spec.ts +37 -0
- package/test/e2e/run-e2e.spec.ts +18 -19
- package/test/errors/errors.spec.ts +10 -0
- package/test/helpers/matter-harness.ts +20 -9
- package/test/homebridge-ui/server.spec.ts +9 -0
- package/test/platform/accessory-restore.spec.ts +37 -0
- package/test/platform/matter-childbridge.spec.ts +34 -0
- package/test/platform/matter-integration.spec.ts +33 -0
- package/test/platform/platform-edge.spec.ts +73 -0
- package/test/platform/platform.integration.spec.ts +34 -0
- package/test/utils/utils-extra.spec.ts +10 -0
- package/test/utils/utils.spec.ts +68 -0
- package/todo/TODO.md +80 -0
- package/tsconfig.ui.json +11 -0
- package/.github/workflows/beta-release.yml +0 -52
- package/dist/platform.d.ts +0 -35
- package/dist/platform.d.ts.map +0 -1
- package/dist/platform.js +0 -945
- package/dist/platform.js.map +0 -1
- package/src/platform.ts +0 -963
- package/test/accessory-restore.spec.ts +0 -73
- package/test/device-mapping.spec.ts +0 -37
- package/test/deviceFactory.spec.ts +0 -18
- package/test/fan-swing.spec.ts +0 -29
- package/test/lock-users.spec.ts +0 -44
- package/test/matter-childbridge.spec.ts +0 -55
- package/test/matter-descriptors.spec.ts +0 -97
- package/test/matter-device-state.spec.ts +0 -101
- package/test/matter-integration.spec.ts +0 -70
- package/test/platform.integration.spec.ts +0 -55
- package/test/switchbot-client-debounce.spec.ts +0 -131
- package/test/switchbot-client-openapi.spec.ts +0 -56
- package/test/switchbotClient.spec.ts +0 -10
- package/test/utils.spec.ts +0 -20
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import type { SwitchBotPluginConfig } from './settings.js';
|
|
2
|
+
import type { API, Logger, PlatformConfig } from 'homebridge';
|
|
3
|
+
/**
|
|
4
|
+
* Homebridge platform class for SwitchBot Matter integration.
|
|
5
|
+
* Handles device discovery, registration, polling, and accessory lifecycle for Matter-enabled SwitchBot devices.
|
|
6
|
+
*
|
|
7
|
+
* @class SwitchBotMatterPlatform
|
|
8
|
+
* @param {Logger} log - Homebridge logger instance
|
|
9
|
+
* @param {PlatformConfig} config - Platform configuration object
|
|
10
|
+
* @param {API} [api] - Optional Homebridge API instance
|
|
11
|
+
* @property {API | undefined} api - Homebridge API instance
|
|
12
|
+
* @property {Logger} log - Homebridge logger instance
|
|
13
|
+
* @property {SwitchBotPluginConfig} config - Parsed plugin config
|
|
14
|
+
* @property {any[]} devices - All created device instances
|
|
15
|
+
* @property {Map<string, any>} accessories - Map of accessory UUID to accessory object
|
|
16
|
+
* @property {string} lastConfigHash - Hash of last loaded config for change detection
|
|
17
|
+
* @property {NodeJS.Timeout | null} configReloadInterval - Interval for periodic config reload
|
|
18
|
+
* @property {Map<string, NodeJS.Timeout>} openApiPollTimers - Timers for per-device OpenAPI polling
|
|
19
|
+
* @property {NodeJS.Timeout | null} openApiBatchTimer - Timer for batched OpenAPI polling
|
|
20
|
+
* @property {number} openApiRequestsToday - Count of OpenAPI requests made today
|
|
21
|
+
* @property {number} openApiLastReset - Timestamp (ms) of last OpenAPI daily counter reset
|
|
22
|
+
*/
|
|
23
|
+
export declare class SwitchBotMatterPlatform {
|
|
24
|
+
/** Homebridge API instance */
|
|
25
|
+
api: API | undefined;
|
|
26
|
+
/** Homebridge logger instance */
|
|
27
|
+
log: Logger;
|
|
28
|
+
/** Parsed plugin config */
|
|
29
|
+
config: SwitchBotPluginConfig;
|
|
30
|
+
/** All created device instances */
|
|
31
|
+
devices: any[];
|
|
32
|
+
/** Map of accessory UUID to accessory object */
|
|
33
|
+
accessories: Map<string, any>;
|
|
34
|
+
/** Hash of last loaded config for change detection */
|
|
35
|
+
private lastConfigHash;
|
|
36
|
+
/** Interval for periodic config reload */
|
|
37
|
+
private configReloadInterval;
|
|
38
|
+
/** Timers for per-device OpenAPI polling */
|
|
39
|
+
private openApiPollTimers;
|
|
40
|
+
/** Timer for batched OpenAPI polling */
|
|
41
|
+
private openApiBatchTimer;
|
|
42
|
+
/** Count of OpenAPI requests made today */
|
|
43
|
+
private openApiRequestsToday;
|
|
44
|
+
/** Timestamp (ms) of last OpenAPI daily counter reset */
|
|
45
|
+
private openApiLastReset;
|
|
46
|
+
/**
|
|
47
|
+
* Construct the SwitchBot Matter platform.
|
|
48
|
+
* @param log Homebridge logger
|
|
49
|
+
* @param config Platform config
|
|
50
|
+
* @param api Homebridge API instance
|
|
51
|
+
*/
|
|
52
|
+
constructor(log: Logger, config: PlatformConfig, api?: API);
|
|
53
|
+
/**
|
|
54
|
+
* Discover and create all device instances from config.
|
|
55
|
+
* Populates this.devices and logs registration status for each device.
|
|
56
|
+
*
|
|
57
|
+
* @returns {Promise<void>} Resolves when all devices are loaded and registered
|
|
58
|
+
*/
|
|
59
|
+
loadDevices(): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Registers all Matter accessories with the Homebridge Matter API.
|
|
62
|
+
*
|
|
63
|
+
* This method is called after all device instances have been created. It handles both new and restored
|
|
64
|
+
* accessories, updating their context, clusters, and other Matter-specific metadata as needed. Accessories
|
|
65
|
+
* are registered with Homebridge using the Matter API, and the internal accessory map is updated accordingly.
|
|
66
|
+
*
|
|
67
|
+
* @param {Array<{created: any, d: any, type: string, useMatter: boolean, matterAvailable: boolean}>} createdDevices - Array of device descriptors:
|
|
68
|
+
* - created: The created device instance
|
|
69
|
+
* - d: The normalized device config object
|
|
70
|
+
* - type: The normalized device type string
|
|
71
|
+
* - useMatter: Whether Matter is enabled for this device
|
|
72
|
+
* - matterAvailable: Whether Matter is available on this bridge
|
|
73
|
+
* @returns {Promise<void>} Resolves when registration is complete
|
|
74
|
+
*
|
|
75
|
+
* Differences from HAP registration:
|
|
76
|
+
* - Uses the Matter API (not HAP API) for accessory registration.
|
|
77
|
+
* - Adds Matter clusters and handlers to each accessory based on the device descriptor.
|
|
78
|
+
* - Only registers accessories where Matter is enabled and supported.
|
|
79
|
+
* - Accessory context and cluster wiring are Matter-specific.
|
|
80
|
+
*
|
|
81
|
+
* If the Homebridge Matter API is not available, registration is skipped and a log message is emitted.
|
|
82
|
+
* Accessories that are not enabled for Matter are ignored.
|
|
83
|
+
*/
|
|
84
|
+
registerMatterAccessories(createdDevices: {
|
|
85
|
+
created: any;
|
|
86
|
+
d: any;
|
|
87
|
+
type: string;
|
|
88
|
+
useMatter: boolean;
|
|
89
|
+
matterAvailable: boolean;
|
|
90
|
+
externalPublishProtocol: 'none' | 'hap' | 'matter';
|
|
91
|
+
}[]): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Returns the timestamp (ms) of the last OpenAPI daily counter reset.
|
|
94
|
+
* @returns {number} Timestamp in ms
|
|
95
|
+
*/
|
|
96
|
+
getOpenApiLastReset(): number;
|
|
97
|
+
/**
|
|
98
|
+
* Logs the last OpenAPI reset time in a human-readable format.
|
|
99
|
+
* @returns {void}
|
|
100
|
+
*/
|
|
101
|
+
logOpenApiLastReset(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Compute a hash of the current device config for change detection.
|
|
104
|
+
* @returns {string} JSON string hash of device config
|
|
105
|
+
*/
|
|
106
|
+
private getConfigHash;
|
|
107
|
+
/**
|
|
108
|
+
* Reload devices if config has changed since last load.
|
|
109
|
+
* Unregisters accessories and removes devices no longer in config.
|
|
110
|
+
* Calls loadDevices to repopulate devices and accessories.
|
|
111
|
+
*
|
|
112
|
+
* @returns {Promise<void>} Resolves when reload is complete
|
|
113
|
+
*/
|
|
114
|
+
private checkAndReloadDevices;
|
|
115
|
+
/**
|
|
116
|
+
* Cleanup method to clear config reload interval on shutdown.
|
|
117
|
+
* Called by Homebridge on shutdown event.
|
|
118
|
+
* @returns {void}
|
|
119
|
+
*/
|
|
120
|
+
shutdown(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Setup OpenAPI polling for all devices according to config (global, per-device, batch, rate limit).
|
|
123
|
+
* Handles daily request limits, per-device and batch polling, and resets.
|
|
124
|
+
*
|
|
125
|
+
* @returns {void}
|
|
126
|
+
*/
|
|
127
|
+
private _setupOpenApiPolling;
|
|
128
|
+
/**
|
|
129
|
+
* Called by Homebridge to restore cached Matter accessories on startup.
|
|
130
|
+
* @param {any} accessory - The cached accessory object
|
|
131
|
+
* @returns {Promise<void>} Resolves when accessory is restored
|
|
132
|
+
*/
|
|
133
|
+
configureAccessory(accessory: any): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Called by Homebridge to restore cached Matter accessories (alternate signature).
|
|
136
|
+
* @param {any} accessory - The cached accessory object
|
|
137
|
+
* @returns {void}
|
|
138
|
+
*/
|
|
139
|
+
configureMatterAccessory(accessory: any): void;
|
|
140
|
+
}
|
|
141
|
+
export default SwitchBotMatterPlatform;
|
|
142
|
+
//# sourceMappingURL=SwitchBotMatterPlatform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwitchBotMatterPlatform.d.ts","sourceRoot":"","sources":["../src/SwitchBotMatterPlatform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAO7D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,uBAAuB;IAClC,8BAA8B;IAC9B,GAAG,EAAE,GAAG,GAAG,SAAS,CAAA;IACpB,iCAAiC;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,2BAA2B;IAC3B,MAAM,EAAE,qBAAqB,CAAA;IAC7B,mCAAmC;IACnC,OAAO,EAAE,GAAG,EAAE,CAAK;IACnB,gDAAgD;IAChD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,sDAAsD;IACtD,OAAO,CAAC,cAAc,CAAa;IACnC,0CAA0C;IAC1C,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,4CAA4C;IAC5C,OAAO,CAAC,iBAAiB,CAAyC;IAClE,wCAAwC;IACxC,OAAO,CAAC,iBAAiB,CAA8B;IACvD,2CAA2C;IAC3C,OAAO,CAAC,oBAAoB,CAAI;IAChC,yDAAyD;IACzD,OAAO,CAAC,gBAAgB,CAAI;IAE5B;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,GAAG;IA2C1D;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAmDlC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACG,yBAAyB,CAAC,cAAc,EAAE;QAAE,OAAO,EAAE,GAAG,CAAC;QAAC,CAAC,EAAE,GAAG,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAC;QAAC,uBAAuB,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;KAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+H1M;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IAS3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;;OAMG;YACW,qBAAqB;IAiCnC;;;;OAIG;IACH,QAAQ,IAAI,IAAI;IAQhB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAkI5B;;;;OAIG;IACG,kBAAkB,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;;;OAIG;IACH,wBAAwB,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;CAS/C;AAED,eAAe,uBAAuB,CAAA"}
|