@switchbot/homebridge-switchbot 5.0.0-beta.2 → 5.0.0-beta.20
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/CHANGELOG.md +7 -0
- package/config.schema.json +17 -2
- package/dist/devices-hap/device.d.ts +1 -0
- package/dist/devices-hap/device.d.ts.map +1 -1
- package/dist/devices-hap/device.js +70 -30
- package/dist/devices-hap/device.js.map +1 -1
- package/dist/devices-matter/BaseMatterAccessory.d.ts +23 -0
- package/dist/devices-matter/BaseMatterAccessory.d.ts.map +1 -1
- package/dist/devices-matter/BaseMatterAccessory.js +167 -5
- package/dist/devices-matter/BaseMatterAccessory.js.map +1 -1
- package/dist/devices-matter/ColorLightAccessory.d.ts.map +1 -1
- package/dist/devices-matter/ColorLightAccessory.js +12 -12
- package/dist/devices-matter/ColorLightAccessory.js.map +1 -1
- package/dist/devices-matter/ColorTemperatureLightAccessory.d.ts.map +1 -1
- package/dist/devices-matter/ColorTemperatureLightAccessory.js +5 -7
- package/dist/devices-matter/ColorTemperatureLightAccessory.js.map +1 -1
- package/dist/devices-matter/DimmableLightAccessory.js +9 -9
- package/dist/devices-matter/DimmableLightAccessory.js.map +1 -1
- package/dist/devices-matter/ExtendedColorLightAccessory.d.ts.map +1 -1
- package/dist/devices-matter/ExtendedColorLightAccessory.js +14 -15
- package/dist/devices-matter/ExtendedColorLightAccessory.js.map +1 -1
- package/dist/devices-matter/OnOffLightAccessory.d.ts.map +1 -1
- package/dist/devices-matter/OnOffLightAccessory.js +8 -16
- package/dist/devices-matter/OnOffLightAccessory.js.map +1 -1
- package/dist/devices-matter/OnOffOutletAccessory.d.ts +2 -0
- package/dist/devices-matter/OnOffOutletAccessory.d.ts.map +1 -1
- package/dist/devices-matter/OnOffOutletAccessory.js +10 -7
- package/dist/devices-matter/OnOffOutletAccessory.js.map +1 -1
- package/dist/devices-matter/OnOffSwitchAccessory.js +2 -2
- package/dist/devices-matter/OnOffSwitchAccessory.js.map +1 -1
- package/dist/devices-matter/baseMatterAccessory.test.d.ts +2 -0
- package/dist/devices-matter/baseMatterAccessory.test.d.ts.map +1 -0
- package/dist/devices-matter/baseMatterAccessory.test.js +71 -0
- package/dist/devices-matter/baseMatterAccessory.test.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +7 -2
- package/dist/index.test.js.map +1 -1
- package/dist/irdevice/irdevice.d.ts +11 -10
- package/dist/irdevice/irdevice.d.ts.map +1 -1
- package/dist/irdevice/irdevice.js +76 -35
- package/dist/irdevice/irdevice.js.map +1 -1
- package/dist/platform-hap.d.ts +10 -14
- package/dist/platform-hap.d.ts.map +1 -1
- package/dist/platform-hap.js +38 -64
- package/dist/platform-hap.js.map +1 -1
- package/dist/platform-matter.d.ts +68 -6
- package/dist/platform-matter.d.ts.map +1 -1
- package/dist/platform-matter.js +1213 -70
- package/dist/platform-matter.js.map +1 -1
- package/dist/platform-matter.test.d.ts +2 -0
- package/dist/platform-matter.test.d.ts.map +1 -0
- package/dist/platform-matter.test.js +127 -0
- package/dist/platform-matter.test.js.map +1 -0
- package/dist/settings.d.ts +1 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js.map +1 -1
- package/dist/utils.d.ts +87 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +254 -0
- package/dist/utils.js.map +1 -1
- package/dist/utils.test.d.ts +2 -0
- package/dist/utils.test.d.ts.map +1 -0
- package/dist/utils.test.js +95 -0
- package/dist/utils.test.js.map +1 -0
- package/dist/verifyconfig.test.js +2 -2
- package/dist/verifyconfig.test.js.map +1 -1
- package/docs/assets/main.js +2 -2
- package/docs/index.html +2 -2
- package/docs/variables/default.html +1 -1
- package/package.json +14 -14
- package/src/devices-hap/device.ts +68 -30
- package/src/devices-matter/BaseMatterAccessory.ts +168 -5
- package/src/devices-matter/ColorLightAccessory.ts +12 -12
- package/src/devices-matter/ColorTemperatureLightAccessory.ts +5 -7
- package/src/devices-matter/DimmableLightAccessory.ts +9 -9
- package/src/devices-matter/ExtendedColorLightAccessory.ts +14 -15
- package/src/devices-matter/OnOffLightAccessory.ts +8 -16
- package/src/devices-matter/OnOffOutletAccessory.ts +12 -7
- package/src/devices-matter/OnOffSwitchAccessory.ts +2 -2
- package/src/devices-matter/baseMatterAccessory.test.ts +88 -0
- package/src/index.test.ts +7 -2
- package/src/index.ts +4 -5
- package/src/irdevice/irdevice.ts +74 -35
- package/src/platform-hap.ts +39 -73
- package/src/platform-matter.test.ts +155 -0
- package/src/platform-matter.ts +1254 -73
- package/src/settings.ts +4 -0
- package/src/utils.test.ts +96 -0
- package/src/utils.ts +255 -0
- package/src/verifyconfig.test.ts +11 -10
|
@@ -1,17 +1,79 @@
|
|
|
1
1
|
import type { API, DynamicPlatformPlugin, Logging, SerializedMatterAccessory } from 'homebridge';
|
|
2
|
+
import type { bodyChange, device } from 'node-switchbot';
|
|
2
3
|
import type { SwitchBotPlatformConfig } from './settings.js';
|
|
3
|
-
/**
|
|
4
|
-
* MatterPlatform
|
|
5
|
-
* Demonstrates all available Matter device types in Homebridge
|
|
6
|
-
*
|
|
7
|
-
* Organized by official Matter Specification v1.4.1 categories
|
|
8
|
-
*/
|
|
9
4
|
export declare class SwitchBotMatterPlatform implements DynamicPlatformPlugin {
|
|
10
5
|
readonly log: Logging;
|
|
11
6
|
readonly config: SwitchBotPlatformConfig;
|
|
12
7
|
readonly api: API;
|
|
13
8
|
readonly matterAccessories: Map<string, SerializedMatterAccessory>;
|
|
9
|
+
private switchBotAPI?;
|
|
10
|
+
private switchBotBLE?;
|
|
11
|
+
private discoveredDevices;
|
|
12
|
+
private accessoryInstances;
|
|
13
|
+
private refreshTimers;
|
|
14
|
+
private bleEventHandler;
|
|
15
|
+
private platformLogging?;
|
|
16
|
+
infoLog: (...args: any[]) => void;
|
|
17
|
+
successLog: (...args: any[]) => void;
|
|
18
|
+
debugSuccessLog: (...args: any[]) => void;
|
|
19
|
+
warnLog: (...args: any[]) => void;
|
|
20
|
+
debugWarnLog: (...args: any[]) => void;
|
|
21
|
+
errorLog: (...args: any[]) => void;
|
|
22
|
+
debugErrorLog: (...args: any[]) => void;
|
|
23
|
+
debugLog: (...args: any[]) => void;
|
|
24
|
+
loggingIsDebug: () => Promise<boolean>;
|
|
25
|
+
enablingPlatformLogging: () => Promise<boolean>;
|
|
14
26
|
constructor(log: Logging, config: SwitchBotPlatformConfig, api: API);
|
|
27
|
+
/**
|
|
28
|
+
* Normalize a deviceId for matching (uppercase alphanumerics only)
|
|
29
|
+
*/
|
|
30
|
+
private normalizeDeviceId;
|
|
31
|
+
/**
|
|
32
|
+
* Clear per-device resources: refresh timers, accessory instance registry, BLE handlers
|
|
33
|
+
*/
|
|
34
|
+
private clearDeviceResources;
|
|
35
|
+
/**
|
|
36
|
+
* Merge two arrays by deviceId. For each item in a1 (user-provided devices list),
|
|
37
|
+
* find matching item in a2 (discovered devices) and merge them with user overrides last.
|
|
38
|
+
*/
|
|
39
|
+
private mergeByDeviceId;
|
|
40
|
+
/**
|
|
41
|
+
* Merge discovered devices with deviceConfig (per deviceType) and per-device overrides
|
|
42
|
+
* from `config.options.devices`, matching the behavior used in platform-hap.
|
|
43
|
+
*/
|
|
44
|
+
private mergeDiscoveredDevices;
|
|
45
|
+
/**
|
|
46
|
+
* Select effective connection type for a device: prefer explicit device.connectionType,
|
|
47
|
+
* otherwise prefer BLE when platform BLE is enabled and device provides a BLE model/id.
|
|
48
|
+
*/
|
|
49
|
+
private chooseConnectionType;
|
|
50
|
+
/**
|
|
51
|
+
* Map a SwitchBot device object to a MatterAccessory using the device-specific
|
|
52
|
+
* Matter accessory classes in `src/devices-matter`.
|
|
53
|
+
*/
|
|
54
|
+
private createAccessoryFromDevice;
|
|
55
|
+
/**
|
|
56
|
+
* Discover devices via SwitchBot OpenAPI and cache them for later use
|
|
57
|
+
*/
|
|
58
|
+
private discoverDevices;
|
|
59
|
+
/**
|
|
60
|
+
* Retry wrapper for control commands using SwitchBot OpenAPI
|
|
61
|
+
*/
|
|
62
|
+
retryCommand(deviceObj: device, bodyChange: bodyChange, maxRetries?: number, delayBetweenRetries?: number): Promise<{
|
|
63
|
+
response: any;
|
|
64
|
+
statusCode: number;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Parse BLE advertisement/serviceData into normalized fields for a given device.
|
|
68
|
+
* Returns null when serviceData is falsy or parsing fails.
|
|
69
|
+
*/
|
|
70
|
+
private parseAdvertisementForDevice;
|
|
71
|
+
/**
|
|
72
|
+
* Central helper to apply a SwitchBot status object to a Matter accessory.
|
|
73
|
+
* Tries to call accessory instance update helpers when available, otherwise
|
|
74
|
+
* falls back to calling api.matter.updateAccessoryState directly.
|
|
75
|
+
*/
|
|
76
|
+
private applyStatusToAccessory;
|
|
15
77
|
/**
|
|
16
78
|
* Required for DynamicPlatformPlugin
|
|
17
79
|
* Called when homebridge restores cached accessories from disk at startup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-matter.d.ts","sourceRoot":"","sources":["../src/platform-matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,OAAO,EAEP,yBAAyB,EAC1B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"platform-matter.d.ts","sourceRoot":"","sources":["../src/platform-matter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,GAAG,EACH,qBAAqB,EACrB,OAAO,EAEP,yBAAyB,EAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAExD,OAAO,KAAK,EAAiB,uBAAuB,EAAE,MAAM,eAAe,CAAA;AA8B3E,qBAAa,uBAAwB,YAAW,qBAAqB;aAkCjD,GAAG,EAAE,OAAO;aACZ,MAAM,EAAE,uBAAuB;aAC/B,GAAG,EAAE,GAAG;IA9B1B,SAAgB,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAY;IAErF,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC,OAAO,CAAC,iBAAiB,CAAe;IAExC,OAAO,CAAC,kBAAkB,CAA8B;IAExD,OAAO,CAAC,aAAa,CAAyC;IAE9D,OAAO,CAAC,eAAe,CAA8C;IAErE,OAAO,CAAC,eAAe,CAAC,CAAS;IAGjC,OAAO,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAClC,UAAU,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACrC,eAAe,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAC1C,OAAO,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IAClC,YAAY,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACvC,QAAQ,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACnC,aAAa,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACxC,QAAQ,EAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;IACnC,cAAc,EAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACvC,uBAAuB,EAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;gBAG9B,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,uBAAuB,EAC/B,GAAG,EAAE,GAAG;IAoK1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;OAGG;YACW,sBAAsB;IAuCpC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAW5B;;;OAGG;YACW,yBAAyB;IA2gBvC;;OAEG;YACW,eAAe;IAwB7B;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,SAAI,EAAE,mBAAmB,SAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,GAAG,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BzJ;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAwDnC;;;;OAIG;YACW,sBAAsB;IA6LpC;;;OAGG;IACH,kBAAkB;IAMlB;;;;;OAKG;IACH,wBAAwB,CAAC,SAAS,EAAE,yBAAyB;IAK7D;;OAEG;YACW,yBAAyB;IAwFvC;;OAEG;YACW,yBAAyB;IA8CvC;;OAEG;YACW,wBAAwB;IA8CtC;;OAEG;YACW,0BAA0B;IAsBxC;;OAEG;YACW,wBAAwB;IAsBtC;;OAEG;YACW,uBAAuB;IA0DrC;;OAEG;YACW,uBAAuB;IAkCrC;;OAEG;YACW,oBAAoB;IA4BlC;;;;;OAKG;YACW,wBAAwB;IAsBtC;;;;;;OAMG;YACW,qBAAqB;CAqBpC"}
|