node-switchbot 4.0.0-beta.15 → 4.0.0-beta.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/dist/ble.d.ts +1 -1
  2. package/dist/ble.d.ts.map +1 -1
  3. package/dist/ble.js +32 -26
  4. package/dist/ble.js.map +1 -1
  5. package/dist/devices/base.d.ts +52 -1
  6. package/dist/devices/base.d.ts.map +1 -1
  7. package/dist/devices/base.js +85 -1
  8. package/dist/devices/base.js.map +1 -1
  9. package/dist/devices/sequence-device.d.ts +16 -0
  10. package/dist/devices/sequence-device.d.ts.map +1 -1
  11. package/dist/devices/sequence-device.js +16 -0
  12. package/dist/devices/sequence-device.js.map +1 -1
  13. package/dist/devices/wo-ai-hub.d.ts +5 -2
  14. package/dist/devices/wo-ai-hub.d.ts.map +1 -1
  15. package/dist/devices/wo-ai-hub.js +19 -1
  16. package/dist/devices/wo-ai-hub.js.map +1 -1
  17. package/dist/devices/wo-air-purifier-pm25.d.ts +25 -2
  18. package/dist/devices/wo-air-purifier-pm25.d.ts.map +1 -1
  19. package/dist/devices/wo-air-purifier-pm25.js +138 -1
  20. package/dist/devices/wo-air-purifier-pm25.js.map +1 -1
  21. package/dist/devices/wo-air-purifier.d.ts +1 -1
  22. package/dist/devices/wo-air-purifier.d.ts.map +1 -1
  23. package/dist/devices/wo-air-purifier.js +39 -53
  24. package/dist/devices/wo-air-purifier.js.map +1 -1
  25. package/dist/devices/wo-blind-tilt.d.ts +2 -17
  26. package/dist/devices/wo-blind-tilt.d.ts.map +1 -1
  27. package/dist/devices/wo-blind-tilt.js +128 -94
  28. package/dist/devices/wo-blind-tilt.js.map +1 -1
  29. package/dist/devices/wo-bulb.d.ts +1 -1
  30. package/dist/devices/wo-bulb.d.ts.map +1 -1
  31. package/dist/devices/wo-bulb.js +35 -49
  32. package/dist/devices/wo-bulb.js.map +1 -1
  33. package/dist/devices/wo-candle-warmer-lamp.d.ts +20 -1
  34. package/dist/devices/wo-candle-warmer-lamp.d.ts.map +1 -1
  35. package/dist/devices/wo-candle-warmer-lamp.js +75 -1
  36. package/dist/devices/wo-candle-warmer-lamp.js.map +1 -1
  37. package/dist/devices/wo-contact.d.ts +1 -1
  38. package/dist/devices/wo-contact.d.ts.map +1 -1
  39. package/dist/devices/wo-contact.js +19 -35
  40. package/dist/devices/wo-contact.js.map +1 -1
  41. package/dist/devices/wo-curtain.d.ts.map +1 -1
  42. package/dist/devices/wo-curtain.js +40 -52
  43. package/dist/devices/wo-curtain.js.map +1 -1
  44. package/dist/devices/wo-hand.d.ts +4 -4
  45. package/dist/devices/wo-hand.d.ts.map +1 -1
  46. package/dist/devices/wo-hand.js +24 -37
  47. package/dist/devices/wo-hand.js.map +1 -1
  48. package/dist/devices/wo-hub2.d.ts +1 -1
  49. package/dist/devices/wo-hub2.d.ts.map +1 -1
  50. package/dist/devices/wo-hub2.js +17 -33
  51. package/dist/devices/wo-hub2.js.map +1 -1
  52. package/dist/devices/wo-humi.d.ts +1 -1
  53. package/dist/devices/wo-humi.d.ts.map +1 -1
  54. package/dist/devices/wo-humi.js +21 -37
  55. package/dist/devices/wo-humi.js.map +1 -1
  56. package/dist/devices/wo-keypad.d.ts +1 -1
  57. package/dist/devices/wo-keypad.d.ts.map +1 -1
  58. package/dist/devices/wo-keypad.js +14 -30
  59. package/dist/devices/wo-keypad.js.map +1 -1
  60. package/dist/devices/wo-leak.d.ts +1 -1
  61. package/dist/devices/wo-leak.d.ts.map +1 -1
  62. package/dist/devices/wo-leak.js +15 -31
  63. package/dist/devices/wo-leak.js.map +1 -1
  64. package/dist/devices/wo-lock-pro.d.ts +1 -1
  65. package/dist/devices/wo-lock-pro.d.ts.map +1 -1
  66. package/dist/devices/wo-lock-pro.js +19 -35
  67. package/dist/devices/wo-lock-pro.js.map +1 -1
  68. package/dist/devices/wo-lock.d.ts +1 -1
  69. package/dist/devices/wo-lock.d.ts.map +1 -1
  70. package/dist/devices/wo-lock.js +18 -34
  71. package/dist/devices/wo-lock.js.map +1 -1
  72. package/dist/devices/wo-pan-tilt-cam-plus-3k.d.ts +15 -0
  73. package/dist/devices/wo-pan-tilt-cam-plus-3k.d.ts.map +1 -1
  74. package/dist/devices/wo-pan-tilt-cam-plus-3k.js +81 -1
  75. package/dist/devices/wo-pan-tilt-cam-plus-3k.js.map +1 -1
  76. package/dist/devices/wo-plug-mini-us.d.ts +1 -1
  77. package/dist/devices/wo-plug-mini-us.d.ts.map +1 -1
  78. package/dist/devices/wo-plug-mini-us.js +23 -33
  79. package/dist/devices/wo-plug-mini-us.js.map +1 -1
  80. package/dist/devices/wo-presence.d.ts +1 -1
  81. package/dist/devices/wo-presence.d.ts.map +1 -1
  82. package/dist/devices/wo-presence.js +17 -33
  83. package/dist/devices/wo-presence.js.map +1 -1
  84. package/dist/devices/wo-relay-switch-1.d.ts +1 -1
  85. package/dist/devices/wo-relay-switch-1.d.ts.map +1 -1
  86. package/dist/devices/wo-relay-switch-1.js +19 -40
  87. package/dist/devices/wo-relay-switch-1.js.map +1 -1
  88. package/dist/devices/wo-remote-with-screen.d.ts +3 -0
  89. package/dist/devices/wo-remote-with-screen.d.ts.map +1 -1
  90. package/dist/devices/wo-remote-with-screen.js +16 -1
  91. package/dist/devices/wo-remote-with-screen.js.map +1 -1
  92. package/dist/devices/wo-remote.d.ts +1 -1
  93. package/dist/devices/wo-remote.d.ts.map +1 -1
  94. package/dist/devices/wo-remote.js +13 -29
  95. package/dist/devices/wo-remote.js.map +1 -1
  96. package/dist/devices/wo-rgbic-bulb.d.ts +1 -1
  97. package/dist/devices/wo-rgbic-bulb.js +1 -1
  98. package/dist/devices/wo-rgbic-neon-wire-rope-light.d.ts +25 -2
  99. package/dist/devices/wo-rgbic-neon-wire-rope-light.d.ts.map +1 -1
  100. package/dist/devices/wo-rgbic-neon-wire-rope-light.js +107 -1
  101. package/dist/devices/wo-rgbic-neon-wire-rope-light.js.map +1 -1
  102. package/dist/devices/wo-sensor-th.d.ts +1 -1
  103. package/dist/devices/wo-sensor-th.d.ts.map +1 -1
  104. package/dist/devices/wo-sensor-th.js +18 -34
  105. package/dist/devices/wo-sensor-th.js.map +1 -1
  106. package/dist/devices/wo-vacuum.d.ts +3 -3
  107. package/dist/devices/wo-vacuum.d.ts.map +1 -1
  108. package/dist/devices/wo-vacuum.js +69 -43
  109. package/dist/devices/wo-vacuum.js.map +1 -1
  110. package/dist/devices/wo-water-detector.d.ts +5 -2
  111. package/dist/devices/wo-water-detector.d.ts.map +1 -1
  112. package/dist/devices/wo-water-detector.js +14 -1
  113. package/dist/devices/wo-water-detector.js.map +1 -1
  114. package/dist/switchbot.d.ts +1 -0
  115. package/dist/switchbot.d.ts.map +1 -1
  116. package/dist/switchbot.js +55 -42
  117. package/dist/switchbot.js.map +1 -1
  118. package/dist/types/index.d.ts +18 -0
  119. package/dist/types/index.d.ts.map +1 -1
  120. package/dist/types/index.js.map +1 -1
  121. package/dist/utils/index.d.ts +6 -1
  122. package/dist/utils/index.d.ts.map +1 -1
  123. package/dist/utils/index.js +23 -0
  124. package/dist/utils/index.js.map +1 -1
  125. package/docs/assets/hierarchy.js +1 -1
  126. package/docs/assets/highlight.css +7 -0
  127. package/docs/assets/search.js +1 -1
  128. package/docs/classes/APIError.html +2 -2
  129. package/docs/classes/APINotAvailableError.html +2 -2
  130. package/docs/classes/BLEConnection.html +10 -10
  131. package/docs/classes/BLENotAvailableError.html +2 -2
  132. package/docs/classes/BLEScanner.html +9 -9
  133. package/docs/classes/CommandFailedError.html +2 -2
  134. package/docs/classes/ConnectionTimeoutError.html +2 -2
  135. package/docs/classes/DeviceManager.html +13 -13
  136. package/docs/classes/DeviceNotFoundError.html +2 -2
  137. package/docs/classes/DeviceOverrideStateDuringConnection.html +33 -34
  138. package/docs/classes/DiscoveryError.html +2 -2
  139. package/docs/classes/OpenAPIClient.html +24 -24
  140. package/docs/classes/SequenceDevice.html +42 -35
  141. package/docs/classes/SwitchBot.html +11 -11
  142. package/docs/classes/SwitchBotDevice.html +68 -36
  143. package/docs/classes/SwitchBotError.html +2 -2
  144. package/docs/classes/ValidationError.html +2 -2
  145. package/docs/classes/WoAIHub.html +69 -36
  146. package/docs/classes/WoAirPurifier.html +40 -40
  147. package/docs/classes/WoAirPurifierPM25.html +78 -44
  148. package/docs/classes/WoAirPurifierTable.html +40 -40
  149. package/docs/classes/WoArtFrame.html +43 -43
  150. package/docs/classes/WoBlindTilt.html +35 -42
  151. package/docs/classes/WoBulb.html +43 -43
  152. package/docs/classes/WoCandleWarmerLamp.html +75 -36
  153. package/docs/classes/WoCeilingLight.html +43 -43
  154. package/docs/classes/WoCirculatorFan.html +40 -40
  155. package/docs/classes/WoClimatePanel.html +40 -40
  156. package/docs/classes/WoContact.html +34 -34
  157. package/docs/classes/WoCurtain.html +39 -40
  158. package/docs/classes/WoFloorLamp.html +43 -43
  159. package/docs/classes/WoGarageDoorOpener.html +39 -39
  160. package/docs/classes/WoHand.html +43 -43
  161. package/docs/classes/WoHub2.html +34 -34
  162. package/docs/classes/WoHub3.html +34 -34
  163. package/docs/classes/WoHubMiniMatter.html +34 -34
  164. package/docs/classes/WoHumi.html +41 -41
  165. package/docs/classes/WoHumi2.html +41 -41
  166. package/docs/classes/WoIOSensorTH.html +34 -34
  167. package/docs/classes/WoKeypad.html +34 -34
  168. package/docs/classes/WoKeypadVision.html +34 -34
  169. package/docs/classes/WoKeypadVisionPro.html +34 -34
  170. package/docs/classes/WoLeak.html +34 -34
  171. package/docs/classes/WoPanTiltCamPlus3K.html +75 -36
  172. package/docs/classes/WoPlugMiniJP.html +37 -37
  173. package/docs/classes/WoPlugMiniUS.html +37 -37
  174. package/docs/classes/WoPresence.html +34 -34
  175. package/docs/classes/WoRGBICBulb.html +45 -45
  176. package/docs/classes/WoRGBICNeonWireRopeLight.html +79 -36
  177. package/docs/classes/WoRGBICWWFloorLamp.html +45 -45
  178. package/docs/classes/WoRGBICWWStripLight.html +45 -45
  179. package/docs/classes/WoRelaySwitch1.html +39 -39
  180. package/docs/classes/WoRelaySwitch1PM.html +39 -39
  181. package/docs/classes/WoRelaySwitch2PM.html +41 -41
  182. package/docs/classes/WoRemote.html +34 -34
  183. package/docs/classes/WoRemoteWithScreen.html +69 -36
  184. package/docs/classes/WoRollerShade.html +39 -40
  185. package/docs/classes/WoSensorTH.html +34 -34
  186. package/docs/classes/WoSensorTHPlus.html +34 -34
  187. package/docs/classes/WoSensorTHPro.html +34 -34
  188. package/docs/classes/WoSensorTHProCO2.html +34 -34
  189. package/docs/classes/WoSmartLock.html +37 -37
  190. package/docs/classes/WoSmartLockLite.html +37 -37
  191. package/docs/classes/WoSmartLockPro.html +39 -39
  192. package/docs/classes/WoSmartLockProWiFi.html +39 -39
  193. package/docs/classes/WoSmartLockVision.html +37 -37
  194. package/docs/classes/WoSmartLockVisionPro.html +39 -39
  195. package/docs/classes/WoSmartThermostatRadiator.html +40 -40
  196. package/docs/classes/WoStrip.html +43 -43
  197. package/docs/classes/WoStripLight3.html +43 -43
  198. package/docs/classes/WoVacuum.html +42 -42
  199. package/docs/classes/WoVacuumK10Plus.html +42 -42
  200. package/docs/classes/WoVacuumK10Pro.html +42 -42
  201. package/docs/classes/WoVacuumK10ProCombo.html +42 -42
  202. package/docs/classes/WoVacuumK11Plus.html +42 -42
  203. package/docs/classes/WoVacuumK20.html +42 -42
  204. package/docs/classes/WoVacuumS10.html +42 -42
  205. package/docs/classes/WoVacuumS20.html +42 -42
  206. package/docs/classes/WoWaterDetector.html +69 -36
  207. package/docs/enums/LogLevel.html +2 -2
  208. package/docs/enums/SwitchBotBLEModel.html +2 -2
  209. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  210. package/docs/functions/updateBaseURL.html +1 -1
  211. package/docs/hierarchy.html +1 -1
  212. package/docs/interfaces/APICommandRequest.html +2 -2
  213. package/docs/interfaces/APICommandResponse.html +2 -2
  214. package/docs/interfaces/APIDevice.html +2 -2
  215. package/docs/interfaces/APIDeviceStatus.html +2 -2
  216. package/docs/interfaces/APIErrorResponse.html +2 -2
  217. package/docs/interfaces/APIResponse.html +2 -2
  218. package/docs/interfaces/AirPurifierCommands.html +2 -2
  219. package/docs/interfaces/AirPurifierServiceData.html +14 -14
  220. package/docs/interfaces/AirPurifierStatus.html +7 -7
  221. package/docs/interfaces/BLEAdvertisement.html +5 -5
  222. package/docs/interfaces/BLEScanOptions.html +5 -5
  223. package/docs/interfaces/BLEServiceData.html +14 -14
  224. package/docs/interfaces/BlindTiltCommands.html +2 -2
  225. package/docs/interfaces/BlindTiltServiceData.html +14 -14
  226. package/docs/interfaces/BlindTiltStatus.html +6 -6
  227. package/docs/interfaces/BotCommands.html +2 -2
  228. package/docs/interfaces/BotServiceData.html +14 -14
  229. package/docs/interfaces/BotStatus.html +6 -6
  230. package/docs/interfaces/BulbCommands.html +2 -2
  231. package/docs/interfaces/BulbServiceData.html +14 -14
  232. package/docs/interfaces/BulbStatus.html +6 -6
  233. package/docs/interfaces/CeilingLightCommands.html +2 -2
  234. package/docs/interfaces/CeilingLightServiceData.html +14 -14
  235. package/docs/interfaces/CeilingLightStatus.html +6 -6
  236. package/docs/interfaces/CommandResult.html +6 -6
  237. package/docs/interfaces/ContactServiceData.html +14 -14
  238. package/docs/interfaces/ContactStatus.html +6 -6
  239. package/docs/interfaces/CurtainCommands.html +2 -2
  240. package/docs/interfaces/CurtainExtendedInfo.html +2 -2
  241. package/docs/interfaces/CurtainServiceData.html +14 -14
  242. package/docs/interfaces/CurtainStatus.html +6 -6
  243. package/docs/interfaces/DeviceInfo.html +18 -18
  244. package/docs/interfaces/DeviceListResponse.html +2 -2
  245. package/docs/interfaces/DeviceStatus.html +6 -6
  246. package/docs/interfaces/DiscoveryOptions.html +7 -7
  247. package/docs/interfaces/HubServiceData.html +14 -14
  248. package/docs/interfaces/HubStatus.html +6 -6
  249. package/docs/interfaces/HumidifierCommands.html +2 -2
  250. package/docs/interfaces/HumidifierServiceData.html +15 -15
  251. package/docs/interfaces/HumidifierStatus.html +6 -6
  252. package/docs/interfaces/KeypadStatus.html +6 -6
  253. package/docs/interfaces/LeakServiceData.html +14 -14
  254. package/docs/interfaces/LeakStatus.html +6 -6
  255. package/docs/interfaces/LockCommands.html +2 -2
  256. package/docs/interfaces/LockServiceData.html +15 -15
  257. package/docs/interfaces/LockStatus.html +6 -6
  258. package/docs/interfaces/MeterServiceData.html +14 -14
  259. package/docs/interfaces/MeterStatus.html +6 -6
  260. package/docs/interfaces/MotionServiceData.html +14 -14
  261. package/docs/interfaces/MotionStatus.html +6 -6
  262. package/docs/interfaces/PlugCommands.html +2 -2
  263. package/docs/interfaces/PlugServiceData.html +14 -14
  264. package/docs/interfaces/PlugStatus.html +6 -6
  265. package/docs/interfaces/PresenceServiceData.html +14 -14
  266. package/docs/interfaces/PresenceStatus.html +6 -6
  267. package/docs/interfaces/RelaySwitchCommands.html +2 -2
  268. package/docs/interfaces/RelaySwitchServiceData.html +14 -14
  269. package/docs/interfaces/RelaySwitchStatus.html +6 -6
  270. package/docs/interfaces/RemoteStatus.html +6 -6
  271. package/docs/interfaces/SceneListResponse.html +2 -2
  272. package/docs/interfaces/StripCommands.html +2 -2
  273. package/docs/interfaces/StripServiceData.html +14 -14
  274. package/docs/interfaces/StripStatus.html +6 -6
  275. package/docs/interfaces/SwitchBotConfig.html +25 -16
  276. package/docs/interfaces/VacuumCommands.html +2 -2
  277. package/docs/interfaces/VacuumStatus.html +6 -6
  278. package/docs/interfaces/WebhookConfig.html +2 -2
  279. package/docs/interfaces/WebhookDetails.html +2 -2
  280. package/docs/interfaces/WebhookQueryResponse.html +2 -2
  281. package/docs/interfaces/WebhookSetupResponse.html +2 -2
  282. package/docs/types/ConnectionType.html +1 -1
  283. package/docs/types/PhysicalDeviceType.html +1 -1
  284. package/docs/types/VirtualDeviceType.html +1 -1
  285. package/docs/variables/urls.html +1 -1
  286. package/package.json +3 -4
  287. package/todo/todo.md +15 -1
  288. package/todo/PYSWITCHBOT_COMPARISON.md +0 -479
  289. package/todo/README.md +0 -68
  290. package/todo/completed.md +0 -549
@@ -5,7 +5,7 @@ import { SwitchBotDevice } from './base.js';
5
5
  */
6
6
  export declare class WoLeak extends SwitchBotDevice {
7
7
  /**
8
- * Get device status
8
+ * Get device status (BLE-first, API-fallback)
9
9
  */
10
10
  getStatus(): Promise<LeakStatus>;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-leak.d.ts","sourceRoot":"","sources":["../../src/devices/wo-leak.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,qBAAa,MAAO,SAAQ,eAAe;IACzC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAiCvC"}
1
+ {"version":3,"file":"wo-leak.d.ts","sourceRoot":"","sources":["../../src/devices/wo-leak.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,qBAAa,MAAO,SAAQ,eAAe;IACzC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAmBvC"}
@@ -8,39 +8,23 @@ import { SwitchBotDevice } from './base.js';
8
8
  */
9
9
  export class WoLeak extends SwitchBotDevice {
10
10
  /**
11
- * Get device status
11
+ * Get device status (BLE-first, API-fallback)
12
12
  */
13
13
  async getStatus() {
14
- try {
15
- // Try API first if available
16
- if (this.hasAPI()) {
17
- const apiStatus = await this.getAPIStatus();
18
- return {
19
- deviceId: this.info.id,
20
- connectionType: 'api',
21
- waterLeakDetected: apiStatus.waterLeakDetected || false,
22
- battery: apiStatus.battery,
23
- version: apiStatus.version,
24
- updatedAt: new Date(),
25
- };
26
- }
27
- // Fallback to BLE
28
- if (this.hasBLE()) {
29
- const bleData = await this.getBLEStatus();
30
- return {
31
- deviceId: this.info.id,
32
- connectionType: 'ble',
33
- waterLeakDetected: bleData.waterLeakDetected || false,
34
- battery: bleData.battery,
35
- updatedAt: new Date(),
36
- };
37
- }
38
- throw new Error('No connection method available');
39
- }
40
- catch (error) {
41
- this.logger.error('Failed to get status', error);
42
- throw error;
43
- }
14
+ return this.getStatusWithFallback(bleData => ({
15
+ deviceId: this.info.id,
16
+ connectionType: 'ble',
17
+ waterLeakDetected: bleData.waterLeakDetected || false,
18
+ battery: bleData.battery,
19
+ updatedAt: new Date(),
20
+ }), apiStatus => ({
21
+ deviceId: this.info.id,
22
+ connectionType: 'api',
23
+ waterLeakDetected: apiStatus.waterLeakDetected || false,
24
+ battery: apiStatus.battery,
25
+ version: apiStatus.version,
26
+ updatedAt: new Date(),
27
+ }));
44
28
  }
45
29
  }
46
30
  //# sourceMappingURL=wo-leak.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-leak.js","sourceRoot":"","sources":["../../src/devices/wo-leak.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,6BAA6B;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBAC3C,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtB,cAAc,EAAE,KAAK;oBACrB,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,KAAK;oBACvD,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBACzC,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtB,cAAc,EAAE,KAAK;oBACrB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;oBACrD,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;YAChD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"wo-leak.js","sourceRoot":"","sources":["../../src/devices/wo-leak.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,MAAO,SAAQ,eAAe;IACzC;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,qBAAqB,CAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;YACV,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,IAAI,KAAK;YACrD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,KAAK;YACvD,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -26,7 +26,7 @@ export declare class WoSmartLockPro extends SequenceDevice implements LockComman
26
26
  onLockNotification(handler: (payload: Buffer) => void): Promise<void>;
27
27
  offLockNotification(handler: (payload: Buffer) => void): void;
28
28
  /**
29
- * Get device status
29
+ * Get device status (BLE-first, API-fallback)
30
30
  */
31
31
  getStatus(): Promise<LockStatus>;
32
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-lock-pro.d.ts","sourceRoot":"","sources":["../../src/devices/wo-lock-pro.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAe,YAAW,YAAY;IACxE,OAAO,CAAC,wBAAwB,CAAuC;IAEvE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBhC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ3B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAsB/C,kBAAkB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3E,mBAAmB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAU7D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAqCvC"}
1
+ {"version":3,"file":"wo-lock-pro.d.ts","sourceRoot":"","sources":["../../src/devices/wo-lock-pro.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAe,YAAW,YAAY;IACxE,OAAO,CAAC,wBAAwB,CAAuC;IAEvE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBhC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ3B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAsB/C,kBAAkB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3E,mBAAmB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAU7D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAuBvC"}
@@ -92,43 +92,27 @@ export class WoSmartLockPro extends SequenceDevice {
92
92
  this.lockNotificationHandlers.delete(handler);
93
93
  }
94
94
  /**
95
- * Get device status
95
+ * Get device status (BLE-first, API-fallback)
96
96
  */
97
97
  async getStatus() {
98
- try {
99
- // Try API first if available
100
- if (this.hasAPI()) {
101
- const apiStatus = await this.getAPIStatus();
102
- return {
103
- deviceId: this.info.id,
104
- connectionType: 'api',
105
- lockState: apiStatus.lockState || 'locked',
106
- doorState: apiStatus.doorState,
107
- calibrated: apiStatus.calibrate,
108
- battery: apiStatus.battery,
109
- version: apiStatus.version,
110
- updatedAt: new Date(),
111
- };
112
- }
113
- // Fallback to BLE
114
- if (this.hasBLE()) {
115
- const bleData = await this.getBLEStatus().catch(() => this.normalizeBLEStatusData(undefined));
116
- return {
117
- deviceId: this.info.id,
118
- connectionType: 'ble',
119
- lockState: bleData.lockState || 'locked',
120
- doorState: bleData.doorOpen ? 'opened' : 'closed',
121
- calibrated: bleData.calibration,
122
- battery: bleData.battery,
123
- updatedAt: new Date(),
124
- };
125
- }
126
- throw new Error('No connection method available');
127
- }
128
- catch (error) {
129
- this.logger.error('Failed to get status', error);
130
- throw error;
131
- }
98
+ return this.getStatusWithFallback(bleData => ({
99
+ deviceId: this.info.id,
100
+ connectionType: 'ble',
101
+ lockState: bleData.lockState || 'locked',
102
+ doorState: bleData.doorOpen ? 'opened' : 'closed',
103
+ calibrated: bleData.calibration,
104
+ battery: bleData.battery,
105
+ updatedAt: new Date(),
106
+ }), apiStatus => ({
107
+ deviceId: this.info.id,
108
+ connectionType: 'api',
109
+ lockState: apiStatus.lockState || 'locked',
110
+ doorState: apiStatus.doorState,
111
+ calibrated: apiStatus.calibrate,
112
+ battery: apiStatus.battery,
113
+ version: apiStatus.version,
114
+ updatedAt: new Date(),
115
+ }));
132
116
  }
133
117
  }
134
118
  //# sourceMappingURL=wo-lock-pro.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-lock-pro.js","sourceRoot":"","sources":["../../src/devices/wo-lock-pro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wo-lock-pro.js","sourceRoot":"","sources":["../../src/devices/wo-lock-pro.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export declare class WoSmartLock extends SequenceDevice implements LockCommands
18
18
  onLockNotification(handler: (payload: Buffer) => void): Promise<void>;
19
19
  offLockNotification(handler: (payload: Buffer) => void): void;
20
20
  /**
21
- * Get device status
21
+ * Get device status (BLE-first, API-fallback)
22
22
  */
23
23
  getStatus(): Promise<LockStatus>;
24
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-lock.d.ts","sourceRoot":"","sources":["../../src/devices/wo-lock.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,WAAY,SAAQ,cAAe,YAAW,YAAY;IACrE,OAAO,CAAC,wBAAwB,CAAuC;IAEvE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB1B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAsB/C,kBAAkB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3E,mBAAmB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAU7D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAoCvC"}
1
+ {"version":3,"file":"wo-lock.d.ts","sourceRoot":"","sources":["../../src/devices/wo-lock.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,WAAY,SAAQ,cAAe,YAAW,YAAY;IACrE,OAAO,CAAC,wBAAwB,CAAuC;IAEvE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB9B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB1B,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAsB/C,kBAAkB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3E,mBAAmB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAU7D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAsBvC"}
@@ -78,42 +78,26 @@ export class WoSmartLock extends SequenceDevice {
78
78
  this.lockNotificationHandlers.delete(handler);
79
79
  }
80
80
  /**
81
- * Get device status
81
+ * Get device status (BLE-first, API-fallback)
82
82
  */
83
83
  async getStatus() {
84
- try {
85
- // Try API first if available
86
- if (this.hasAPI()) {
87
- const apiStatus = await this.getAPIStatus();
88
- return {
89
- deviceId: this.info.id,
90
- connectionType: 'api',
91
- lockState: apiStatus.lockState || 'locked',
92
- doorState: apiStatus.doorState,
93
- calibrated: apiStatus.calibrate,
94
- battery: apiStatus.battery,
95
- version: apiStatus.version,
96
- updatedAt: new Date(),
97
- };
98
- }
99
- // Fallback to BLE
100
- if (this.hasBLE()) {
101
- const bleData = await this.getBLEStatus().catch(() => this.normalizeBLEStatusData(undefined));
102
- return {
103
- deviceId: this.info.id,
104
- connectionType: 'ble',
105
- lockState: bleData.lockState || 'locked',
106
- calibrated: bleData.calibration,
107
- battery: bleData.battery,
108
- updatedAt: new Date(),
109
- };
110
- }
111
- throw new Error('No connection method available');
112
- }
113
- catch (error) {
114
- this.logger.error('Failed to get status', error);
115
- throw error;
116
- }
84
+ return this.getStatusWithFallback(bleData => ({
85
+ deviceId: this.info.id,
86
+ connectionType: 'ble',
87
+ lockState: bleData.lockState || 'locked',
88
+ calibrated: bleData.calibration,
89
+ battery: bleData.battery,
90
+ updatedAt: new Date(),
91
+ }), apiStatus => ({
92
+ deviceId: this.info.id,
93
+ connectionType: 'api',
94
+ lockState: apiStatus.lockState || 'locked',
95
+ doorState: apiStatus.doorState,
96
+ calibrated: apiStatus.calibrate,
97
+ battery: apiStatus.battery,
98
+ version: apiStatus.version,
99
+ updatedAt: new Date(),
100
+ }));
117
101
  }
118
102
  }
119
103
  //# sourceMappingURL=wo-lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-lock.js","sourceRoot":"","sources":["../../src/devices/wo-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wo-lock.js","sourceRoot":"","sources":["../../src/devices/wo-lock.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,21 @@
1
1
  import type { DeviceStatus } from '../types/index.js';
2
2
  import { SwitchBotDevice } from './base.js';
3
3
  export declare class WoPanTiltCamPlus3K extends SwitchBotDevice {
4
+ /**
5
+ * Get device status (BLE-first, API-fallback, centralized)
6
+ */
4
7
  getStatus(): Promise<DeviceStatus>;
8
+ /**
9
+ * Pan the camera (degrees: -180 to 180)
10
+ */
11
+ pan(degrees: number): Promise<boolean>;
12
+ /**
13
+ * Tilt the camera (degrees: -90 to 90)
14
+ */
15
+ tilt(degrees: number): Promise<boolean>;
16
+ /**
17
+ * Reset the camera position
18
+ */
19
+ reset(): Promise<boolean>;
5
20
  }
6
21
  //# sourceMappingURL=wo-pan-tilt-cam-plus-3k.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-pan-tilt-cam-plus-3k.d.ts","sourceRoot":"","sources":["../../src/devices/wo-pan-tilt-cam-plus-3k.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAa,kBAAmB,SAAQ,eAAe;IAC/C,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CAGzC"}
1
+ {"version":3,"file":"wo-pan-tilt-cam-plus-3k.d.ts","sourceRoot":"","sources":["../../src/devices/wo-pan-tilt-cam-plus-3k.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAa,kBAAmB,SAAQ,eAAe;IACrD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBxC;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB5C;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;CAiBhC"}
@@ -1,7 +1,87 @@
1
+ import { Buffer } from 'node:buffer';
1
2
  import { SwitchBotDevice } from './base.js';
2
3
  export class WoPanTiltCamPlus3K extends SwitchBotDevice {
4
+ /**
5
+ * Get device status (BLE-first, API-fallback, centralized)
6
+ */
3
7
  async getStatus() {
4
- throw new Error('WoPanTiltCamPlus3K.getStatus not implemented');
8
+ return this.getStatusWithFallback(
9
+ // BLE normalization
10
+ () => ({
11
+ deviceId: this.info.id,
12
+ connectionType: 'ble',
13
+ updatedAt: new Date(),
14
+ // Add more fields if available from BLE
15
+ }),
16
+ // API normalization
17
+ () => ({
18
+ deviceId: this.info.id,
19
+ connectionType: 'api',
20
+ updatedAt: new Date(),
21
+ // Add more fields if available from API
22
+ }));
23
+ }
24
+ /**
25
+ * Pan the camera (degrees: -180 to 180)
26
+ */
27
+ async pan(degrees) {
28
+ const clamped = Math.max(-180, Math.min(180, degrees));
29
+ // BLE first
30
+ if (this.hasBLE()) {
31
+ // Example BLE command, update as needed
32
+ const command = Buffer.from([0x60, 0x01, clamped & 0xFF]);
33
+ const result = await this.sendCommand(command, 'pan', clamped);
34
+ if (result.success) {
35
+ return true;
36
+ }
37
+ }
38
+ // API fallback
39
+ if (this.hasAPI()) {
40
+ const result = await this.sendAPICommand('pan', clamped);
41
+ return result.success;
42
+ }
43
+ throw new Error('No connection method available');
44
+ }
45
+ /**
46
+ * Tilt the camera (degrees: -90 to 90)
47
+ */
48
+ async tilt(degrees) {
49
+ const clamped = Math.max(-90, Math.min(90, degrees));
50
+ // BLE first
51
+ if (this.hasBLE()) {
52
+ // Example BLE command, update as needed
53
+ const command = Buffer.from([0x60, 0x02, clamped & 0xFF]);
54
+ const result = await this.sendCommand(command, 'tilt', clamped);
55
+ if (result.success) {
56
+ return true;
57
+ }
58
+ }
59
+ // API fallback
60
+ if (this.hasAPI()) {
61
+ const result = await this.sendAPICommand('tilt', clamped);
62
+ return result.success;
63
+ }
64
+ throw new Error('No connection method available');
65
+ }
66
+ /**
67
+ * Reset the camera position
68
+ */
69
+ async reset() {
70
+ // BLE first
71
+ if (this.hasBLE()) {
72
+ // Example BLE command, update as needed
73
+ const command = Buffer.from([0x60, 0x03, 0x00]);
74
+ const result = await this.sendCommand(command, 'reset');
75
+ if (result.success) {
76
+ return true;
77
+ }
78
+ }
79
+ // API fallback
80
+ if (this.hasAPI()) {
81
+ const result = await this.sendAPICommand('reset');
82
+ return result.success;
83
+ }
84
+ throw new Error('No connection method available');
5
85
  }
6
86
  }
7
87
  //# sourceMappingURL=wo-pan-tilt-cam-plus-3k.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-pan-tilt-cam-plus-3k.js","sourceRoot":"","sources":["../../src/devices/wo-pan-tilt-cam-plus-3k.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACrD,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IACjE,CAAC;CACF"}
1
+ {"version":3,"file":"wo-pan-tilt-cam-plus-3k.js","sourceRoot":"","sources":["../../src/devices/wo-pan-tilt-cam-plus-3k.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export declare class WoPlugMiniUS extends DeviceOverrideStateDuringConnection im
17
17
  */
18
18
  toggle(): Promise<boolean>;
19
19
  /**
20
- * Get device status
20
+ * Get device status (BLE-first, API-fallback, centralized)
21
21
  */
22
22
  getStatus(): Promise<PlugStatus>;
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-plug-mini-us.d.ts","sourceRoot":"","sources":["../../src/devices/wo-plug-mini-us.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAElG;;GAEG;AACH,qBAAa,YAAa,SAAQ,mCAAoC,YAAW,YAAY;IAC3F;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAQhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAQhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAmCvC"}
1
+ {"version":3,"file":"wo-plug-mini-us.d.ts","sourceRoot":"","sources":["../../src/devices/wo-plug-mini-us.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAGlE,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAElG;;GAEG;AACH,qBAAa,YAAa,SAAQ,mCAAoC,YAAW,YAAY;IAC3F;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAQhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAQhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAyBvC"}
@@ -30,41 +30,31 @@ export class WoPlugMiniUS extends DeviceOverrideStateDuringConnection {
30
30
  return result.success;
31
31
  }
32
32
  /**
33
- * Get device status
33
+ * Get device status (BLE-first, API-fallback, centralized)
34
34
  */
35
35
  async getStatus() {
36
- try {
37
- // Try API first if available
38
- if (this.hasAPI()) {
39
- const apiStatus = await this.getAPIStatus();
40
- return {
41
- deviceId: this.info.id,
42
- connectionType: 'api',
43
- power: apiStatus.power || 'off',
44
- voltage: apiStatus.voltage,
45
- electricCurrent: apiStatus.electricCurrent,
46
- electricityOfDay: apiStatus.electricityOfDay,
47
- version: apiStatus.version,
48
- updatedAt: new Date(),
49
- };
50
- }
51
- // Fallback to BLE
52
- if (this.hasBLE()) {
53
- const bleData = await this.getBLEStatus();
54
- return {
55
- deviceId: this.info.id,
56
- connectionType: 'ble',
57
- power: bleData.state ? 'on' : 'off',
58
- voltage: bleData.voltage,
59
- updatedAt: new Date(),
60
- };
61
- }
62
- throw new Error('No connection method available');
63
- }
64
- catch (error) {
65
- this.logger.error('Failed to get status', error);
66
- throw error;
67
- }
36
+ return this.getStatusWithFallback(
37
+ // BLE normalization
38
+ bleData => ({
39
+ deviceId: this.info.id,
40
+ connectionType: 'ble',
41
+ power: bleData.state ? 'on' : 'off',
42
+ voltage: bleData.voltage,
43
+ electricCurrent: bleData.electricCurrent,
44
+ electricityOfDay: bleData.electricityOfDay,
45
+ updatedAt: new Date(),
46
+ }),
47
+ // API normalization
48
+ apiStatus => ({
49
+ deviceId: this.info.id,
50
+ connectionType: 'api',
51
+ power: apiStatus.power || 'off',
52
+ voltage: apiStatus.voltage,
53
+ electricCurrent: apiStatus.electricCurrent,
54
+ electricityOfDay: apiStatus.electricityOfDay,
55
+ version: apiStatus.version,
56
+ updatedAt: new Date(),
57
+ }));
68
58
  }
69
59
  }
70
60
  //# sourceMappingURL=wo-plug-mini-us.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-plug-mini-us.js","sourceRoot":"","sources":["../../src/devices/wo-plug-mini-us.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAElG;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,mCAAmC;IACnE;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,eAAe,CAAC,IAAI,CAAC,OAAO,EAC5B,QAAQ,CACT,CAAA;QACD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAC7B,SAAS,CACV,CAAA;QACD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,eAAe,CAAC,IAAI,CAAC,MAAM,EAC3B,QAAQ,CACT,CAAA;QACD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,6BAA6B;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBAC3C,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtB,cAAc,EAAE,KAAK;oBACrB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,KAAK;oBAC/B,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,eAAe,EAAE,SAAS,CAAC,eAAe;oBAC1C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;oBAC5C,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBACzC,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtB,cAAc,EAAE,KAAK;oBACrB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;oBACnC,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;YAChD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"wo-plug-mini-us.js","sourceRoot":"","sources":["../../src/devices/wo-plug-mini-us.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAA;AAElG;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,mCAAmC;IACnE;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,eAAe,CAAC,IAAI,CAAC,OAAO,EAC5B,QAAQ,CACT,CAAA;QACD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAC7B,SAAS,CACV,CAAA;QACD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,eAAe,CAAC,IAAI,CAAC,MAAM,EAC3B,QAAQ,CACT,CAAA;QACD,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,qBAAqB;QAC/B,oBAAoB;QACpB,OAAO,CAAC,EAAE,CAAC,CAAC;YACV,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,oBAAoB;QACpB,SAAS,CAAC,EAAE,CAAC,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,KAAK;YAC/B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;YAC5C,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -5,7 +5,7 @@ import { SwitchBotDevice } from './base.js';
5
5
  */
6
6
  export declare class WoPresence extends SwitchBotDevice {
7
7
  /**
8
- * Get device status
8
+ * Get device status (BLE-first, API-fallback)
9
9
  */
10
10
  getStatus(): Promise<MotionStatus>;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-presence.d.ts","sourceRoot":"","sources":["../../src/devices/wo-presence.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CAmCzC"}
1
+ {"version":3,"file":"wo-presence.d.ts","sourceRoot":"","sources":["../../src/devices/wo-presence.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CAqBzC"}
@@ -8,41 +8,25 @@ import { SwitchBotDevice } from './base.js';
8
8
  */
9
9
  export class WoPresence extends SwitchBotDevice {
10
10
  /**
11
- * Get device status
11
+ * Get device status (BLE-first, API-fallback)
12
12
  */
13
13
  async getStatus() {
14
- try {
15
- // Try API first if available
16
- if (this.hasAPI()) {
17
- const apiStatus = await this.getAPIStatus();
18
- return {
19
- deviceId: this.info.id,
20
- connectionType: 'api',
21
- moveDetected: apiStatus.moveDetected || false,
22
- brightness: apiStatus.brightness,
23
- battery: apiStatus.battery,
24
- version: apiStatus.version,
25
- updatedAt: new Date(),
26
- };
27
- }
28
- // Fallback to BLE
29
- if (this.hasBLE()) {
30
- const bleData = await this.getBLEStatus();
31
- return {
32
- deviceId: this.info.id,
33
- connectionType: 'ble',
34
- moveDetected: bleData.movement || false,
35
- brightness: bleData.lightLevel,
36
- battery: bleData.battery,
37
- updatedAt: new Date(),
38
- };
39
- }
40
- throw new Error('No connection method available');
41
- }
42
- catch (error) {
43
- this.logger.error('Failed to get status', error);
44
- throw error;
45
- }
14
+ return this.getStatusWithFallback(bleData => ({
15
+ deviceId: this.info.id,
16
+ connectionType: 'ble',
17
+ moveDetected: bleData.movement || false,
18
+ brightness: bleData.lightLevel,
19
+ battery: bleData.battery,
20
+ updatedAt: new Date(),
21
+ }), apiStatus => ({
22
+ deviceId: this.info.id,
23
+ connectionType: 'api',
24
+ moveDetected: apiStatus.moveDetected || false,
25
+ brightness: apiStatus.brightness,
26
+ battery: apiStatus.battery,
27
+ version: apiStatus.version,
28
+ updatedAt: new Date(),
29
+ }));
46
30
  }
47
31
  }
48
32
  //# sourceMappingURL=wo-presence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-presence.js","sourceRoot":"","sources":["../../src/devices/wo-presence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,6BAA6B;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBAC3C,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtB,cAAc,EAAE,KAAK;oBACrB,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK;oBAC7C,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,kBAAkB;YAClB,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;gBACzC,OAAO;oBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;oBACtB,cAAc,EAAE,KAAK;oBACrB,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;oBACvC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE;iBACtB,CAAA;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAA;YAChD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"wo-presence.js","sourceRoot":"","sources":["../../src/devices/wo-presence.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,eAAe;IAC7C;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,qBAAqB,CAC/B,OAAO,CAAC,EAAE,CAAC,CAAC;YACV,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;YACvC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK;YAC7C,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -33,7 +33,7 @@ export declare class WoRelaySwitch1 extends SequenceDevice implements RelaySwitc
33
33
  */
34
34
  toggle(): Promise<boolean>;
35
35
  /**
36
- * Get device status
36
+ * Get device status (BLE-first, API-fallback)
37
37
  */
38
38
  getStatus(): Promise<RelaySwitchStatus>;
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-relay-switch-1.d.ts","sourceRoot":"","sources":["../../src/devices/wo-relay-switch-1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAe,YAAW,mBAAmB;IAC/E;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM;IAStE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB7C,OAAO,CAAC,uBAAuB;YAmBjB,uBAAuB;IAiBrC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAMjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;CA0C9C"}
1
+ {"version":3,"file":"wo-relay-switch-1.d.ts","sourceRoot":"","sources":["../../src/devices/wo-relay-switch-1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAe,YAAW,mBAAmB;IAC/E;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,MAAM;IAStE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAiB7C,OAAO,CAAC,uBAAuB;YAmBjB,uBAAuB;IAiBrC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAMjC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;CAuB9C"}