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
@@ -92,48 +92,27 @@ export class WoRelaySwitch1 extends SequenceDevice {
92
92
  return result.success;
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
- power: apiStatus.power || 'off',
106
- voltage: apiStatus.voltage,
107
- electricCurrent: apiStatus.electricCurrent,
108
- electricityOfDay: apiStatus.electricityOfDay,
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
- const power = await this.getRelayPowerMonitoring().catch(() => ({
117
- voltage: undefined,
118
- electricCurrent: undefined,
119
- electricityOfDay: undefined,
120
- }));
121
- return {
122
- deviceId: this.info.id,
123
- connectionType: 'ble',
124
- power: bleData.state ? 'on' : 'off',
125
- voltage: power.voltage ?? bleData.voltage,
126
- electricCurrent: power.electricCurrent,
127
- electricityOfDay: power.electricityOfDay,
128
- updatedAt: new Date(),
129
- };
130
- }
131
- throw new Error('No connection method available');
132
- }
133
- catch (error) {
134
- this.logger.error('Failed to get status', error);
135
- throw error;
136
- }
98
+ return this.getStatusWithFallback(bleData => ({
99
+ deviceId: this.info.id,
100
+ connectionType: 'ble',
101
+ power: bleData.state ? 'on' : 'off',
102
+ voltage: bleData.voltage,
103
+ electricCurrent: bleData.electricCurrent,
104
+ electricityOfDay: bleData.electricityOfDay,
105
+ updatedAt: new Date(),
106
+ }), apiStatus => ({
107
+ deviceId: this.info.id,
108
+ connectionType: 'api',
109
+ power: apiStatus.power || 'off',
110
+ voltage: apiStatus.voltage,
111
+ electricCurrent: apiStatus.electricCurrent,
112
+ electricityOfDay: apiStatus.electricityOfDay,
113
+ version: apiStatus.version,
114
+ updatedAt: new Date(),
115
+ }));
137
116
  }
138
117
  }
139
118
  //# sourceMappingURL=wo-relay-switch-1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-relay-switch-1.js","sourceRoot":"","sources":["../../src/devices/wo-relay-switch-1.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wo-relay-switch-1.js","sourceRoot":"","sources":["../../src/devices/wo-relay-switch-1.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import type { DeviceStatus } from '../types/index.js';
2
2
  import { SwitchBotDevice } from './base.js';
3
3
  export declare class WoRemoteWithScreen extends SwitchBotDevice {
4
+ /**
5
+ * Get device status (BLE-first, API-fallback)
6
+ */
4
7
  getStatus(): Promise<DeviceStatus>;
5
8
  }
6
9
  //# sourceMappingURL=wo-remote-with-screen.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-remote-with-screen.d.ts","sourceRoot":"","sources":["../../src/devices/wo-remote-with-screen.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-remote-with-screen.d.ts","sourceRoot":"","sources":["../../src/devices/wo-remote-with-screen.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;IACrD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CAkBzC"}
@@ -1,7 +1,22 @@
1
1
  import { SwitchBotDevice } from './base.js';
2
2
  export class WoRemoteWithScreen extends SwitchBotDevice {
3
+ /**
4
+ * Get device status (BLE-first, API-fallback)
5
+ */
3
6
  async getStatus() {
4
- throw new Error('WoRemoteWithScreen.getStatus not implemented');
7
+ return this.getStatusWithFallback(bleData => ({
8
+ deviceId: this.info.id,
9
+ connectionType: 'ble',
10
+ updatedAt: new Date(),
11
+ battery: bleData.battery,
12
+ version: bleData.version,
13
+ }), apiStatus => ({
14
+ deviceId: this.info.id,
15
+ connectionType: 'api',
16
+ updatedAt: new Date(),
17
+ battery: apiStatus.battery,
18
+ version: apiStatus.version,
19
+ }));
5
20
  }
6
21
  }
7
22
  //# sourceMappingURL=wo-remote-with-screen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-remote-with-screen.js","sourceRoot":"","sources":["../../src/devices/wo-remote-with-screen.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-remote-with-screen.js","sourceRoot":"","sources":["../../src/devices/wo-remote-with-screen.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IACrD;;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,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,EACF,SAAS,CAAC,EAAE,CAAC,CAAC;YACZ,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACtB,cAAc,EAAE,KAAK;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -6,7 +6,7 @@ import { SwitchBotDevice } from './base.js';
6
6
  */
7
7
  export declare class WoRemote extends SwitchBotDevice {
8
8
  /**
9
- * Get device status
9
+ * Get device status (BLE-first, API-fallback)
10
10
  */
11
11
  getStatus(): Promise<RemoteStatus>;
12
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-remote.d.ts","sourceRoot":"","sources":["../../src/devices/wo-remote.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;;GAGG;AACH,qBAAa,QAAS,SAAQ,eAAe;IAC3C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CA+BzC"}
1
+ {"version":3,"file":"wo-remote.d.ts","sourceRoot":"","sources":["../../src/devices/wo-remote.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;;GAGG;AACH,qBAAa,QAAS,SAAQ,eAAe;IAC3C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CAiBzC"}
@@ -9,37 +9,21 @@ import { SwitchBotDevice } from './base.js';
9
9
  */
10
10
  export class WoRemote extends SwitchBotDevice {
11
11
  /**
12
- * Get device status
12
+ * Get device status (BLE-first, API-fallback)
13
13
  */
14
14
  async getStatus() {
15
- try {
16
- // Try API first if available
17
- if (this.hasAPI()) {
18
- const apiStatus = await this.getAPIStatus();
19
- return {
20
- deviceId: this.info.id,
21
- connectionType: 'api',
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
- battery: bleData.battery,
34
- updatedAt: new Date(),
35
- };
36
- }
37
- throw new Error('No connection method available');
38
- }
39
- catch (error) {
40
- this.logger.error('Failed to get status', error);
41
- throw error;
42
- }
15
+ return this.getStatusWithFallback(bleData => ({
16
+ deviceId: this.info.id,
17
+ connectionType: 'ble',
18
+ battery: bleData.battery,
19
+ updatedAt: new Date(),
20
+ }), apiStatus => ({
21
+ deviceId: this.info.id,
22
+ connectionType: 'api',
23
+ battery: apiStatus.battery,
24
+ version: apiStatus.version,
25
+ updatedAt: new Date(),
26
+ }));
43
27
  }
44
28
  }
45
29
  //# sourceMappingURL=wo-remote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-remote.js","sourceRoot":"","sources":["../../src/devices/wo-remote.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,eAAe;IAC3C;;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,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,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-remote.js","sourceRoot":"","sources":["../../src/devices/wo-remote.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,eAAe;IAC3C;;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,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,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -22,7 +22,7 @@ export declare class WoRGBICBulb extends WoBulb implements RGBICBulbCommands {
22
22
  */
23
23
  setSegmentEffect(segmentId: number, effectName: string, speed?: number): Promise<boolean>;
24
24
  /**
25
- * Get device status (inherited from WoBulb)
25
+ * Get device status (inherited from WoBulb, centralized fallback)
26
26
  */
27
27
  getStatus(): Promise<RGBICBulbStatus>;
28
28
  }
@@ -75,7 +75,7 @@ export class WoRGBICBulb extends WoBulb {
75
75
  return result.success;
76
76
  }
77
77
  /**
78
- * Get device status (inherited from WoBulb)
78
+ * Get device status (inherited from WoBulb, centralized fallback)
79
79
  */
80
80
  async getStatus() {
81
81
  return super.getStatus();
@@ -1,6 +1,29 @@
1
- import type { DeviceStatus } from '../types/index.js';
1
+ import type { RGBICBulbStatus } from '../types/device.js';
2
2
  import { SwitchBotDevice } from './base.js';
3
3
  export declare class WoRGBICNeonWireRopeLight extends SwitchBotDevice {
4
- getStatus(): Promise<DeviceStatus>;
4
+ /**
5
+ * Get device status (BLE-first/API-fallback, centralized)
6
+ */
7
+ getStatus(): Promise<RGBICBulbStatus>;
8
+ /**
9
+ * Turn on the neon wire rope light
10
+ */
11
+ turnOn(): Promise<boolean>;
12
+ /**
13
+ * Turn off the neon wire rope light
14
+ */
15
+ turnOff(): Promise<boolean>;
16
+ /**
17
+ * Set brightness (1-100)
18
+ */
19
+ setBrightness(level: number): Promise<boolean>;
20
+ /**
21
+ * Set color (RGB)
22
+ */
23
+ setColor(red: number, green: number, blue: number): Promise<boolean>;
24
+ /**
25
+ * Set color temperature (Kelvin)
26
+ */
27
+ setColorTemperature(temperature: number): Promise<boolean>;
5
28
  }
6
29
  //# sourceMappingURL=wo-rgbic-neon-wire-rope-light.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-rgbic-neon-wire-rope-light.d.ts","sourceRoot":"","sources":["../../src/devices/wo-rgbic-neon-wire-rope-light.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAa,wBAAyB,SAAQ,eAAe;IACrD,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;CAGzC"}
1
+ {"version":3,"file":"wo-rgbic-neon-wire-rope-light.d.ts","sourceRoot":"","sources":["../../src/devices/wo-rgbic-neon-wire-rope-light.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,qBAAa,wBAAyB,SAAQ,eAAe;IAC3D;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAuB3C;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAehC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAejC;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBpD;;OAEG;IACG,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1E;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAcjE"}
@@ -1,7 +1,113 @@
1
+ import { Buffer } from 'node:buffer';
1
2
  import { SwitchBotDevice } from './base.js';
2
3
  export class WoRGBICNeonWireRopeLight extends SwitchBotDevice {
4
+ /**
5
+ * Get device status (BLE-first/API-fallback, centralized)
6
+ */
3
7
  async getStatus() {
4
- throw new Error('WoRGBICNeonWireRopeLight.getStatus not implemented');
8
+ return this.getStatusWithFallback(bleData => ({
9
+ deviceId: this.info.id,
10
+ connectionType: 'ble',
11
+ updatedAt: new Date(),
12
+ power: bleData.state ? 'on' : 'off',
13
+ brightness: bleData.brightness,
14
+ colorTemperature: bleData.colorTemperature,
15
+ color: bleData.red !== undefined ? { r: bleData.red, g: bleData.green, b: bleData.blue } : undefined,
16
+ }), apiStatus => ({
17
+ deviceId: this.info.id,
18
+ connectionType: 'api',
19
+ updatedAt: new Date(),
20
+ power: apiStatus.power,
21
+ brightness: apiStatus.brightness,
22
+ colorTemperature: apiStatus.colorTemperature,
23
+ color: apiStatus.color,
24
+ }));
25
+ }
26
+ /**
27
+ * Turn on the neon wire rope light
28
+ */
29
+ async turnOn() {
30
+ if (this.hasBLE()) {
31
+ const command = Buffer.from([0x57, 0x01, 0x01]);
32
+ const result = await this.sendCommand(command, 'turnOn');
33
+ if (result.success) {
34
+ return true;
35
+ }
36
+ }
37
+ if (this.hasAPI()) {
38
+ const result = await this.sendAPICommand('turnOn');
39
+ return result.success;
40
+ }
41
+ throw new Error('No connection method available');
42
+ }
43
+ /**
44
+ * Turn off the neon wire rope light
45
+ */
46
+ async turnOff() {
47
+ if (this.hasBLE()) {
48
+ const command = Buffer.from([0x57, 0x01, 0x02]);
49
+ const result = await this.sendCommand(command, 'turnOff');
50
+ if (result.success) {
51
+ return true;
52
+ }
53
+ }
54
+ if (this.hasAPI()) {
55
+ const result = await this.sendAPICommand('turnOff');
56
+ return result.success;
57
+ }
58
+ throw new Error('No connection method available');
59
+ }
60
+ /**
61
+ * Set brightness (1-100)
62
+ */
63
+ async setBrightness(level) {
64
+ const clamped = Math.max(1, Math.min(100, level));
65
+ if (this.hasBLE()) {
66
+ const command = Buffer.from([0x57, 0x02, clamped]);
67
+ const result = await this.sendCommand(command, 'setBrightness', clamped);
68
+ if (result.success) {
69
+ return true;
70
+ }
71
+ }
72
+ if (this.hasAPI()) {
73
+ const result = await this.sendAPICommand('setBrightness', clamped);
74
+ return result.success;
75
+ }
76
+ throw new Error('No connection method available');
77
+ }
78
+ /**
79
+ * Set color (RGB)
80
+ */
81
+ async setColor(red, green, blue) {
82
+ if (this.hasBLE()) {
83
+ const command = Buffer.from([0x57, 0x03, red, green, blue]);
84
+ const result = await this.sendCommand(command, 'setColor', { red, green, blue });
85
+ if (result.success) {
86
+ return true;
87
+ }
88
+ }
89
+ if (this.hasAPI()) {
90
+ const result = await this.sendAPICommand('setColor', { red, green, blue });
91
+ return result.success;
92
+ }
93
+ throw new Error('No connection method available');
94
+ }
95
+ /**
96
+ * Set color temperature (Kelvin)
97
+ */
98
+ async setColorTemperature(temperature) {
99
+ if (this.hasBLE()) {
100
+ const command = Buffer.from([0x57, 0x04, temperature & 0xFF, (temperature >> 8) & 0xFF]);
101
+ const result = await this.sendCommand(command, 'setColorTemperature', temperature);
102
+ if (result.success) {
103
+ return true;
104
+ }
105
+ }
106
+ if (this.hasAPI()) {
107
+ const result = await this.sendAPICommand('setColorTemperature', temperature);
108
+ return result.success;
109
+ }
110
+ throw new Error('No connection method available');
5
111
  }
6
112
  }
7
113
  //# sourceMappingURL=wo-rgbic-neon-wire-rope-light.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-rgbic-neon-wire-rope-light.js","sourceRoot":"","sources":["../../src/devices/wo-rgbic-neon-wire-rope-light.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,MAAM,OAAO,wBAAyB,SAAQ,eAAe;IAC3D,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;IACvE,CAAC;CACF"}
1
+ {"version":3,"file":"wo-rgbic-neon-wire-rope-light.js","sourceRoot":"","sources":["../../src/devices/wo-rgbic-neon-wire-rope-light.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { SwitchBotDevice } from './base.js';
5
5
  */
6
6
  export declare class WoSensorTH extends SwitchBotDevice {
7
7
  /**
8
- * Get device status
8
+ * Get device status (BLE-first, API-fallback)
9
9
  */
10
10
  getStatus(): Promise<MeterStatus>;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wo-sensor-th.d.ts","sourceRoot":"","sources":["../../src/devices/wo-sensor-th.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;CAoCxC"}
1
+ {"version":3,"file":"wo-sensor-th.d.ts","sourceRoot":"","sources":["../../src/devices/wo-sensor-th.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAAe;IAC7C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;CAsBxC"}
@@ -8,42 +8,26 @@ import { SwitchBotDevice } from './base.js';
8
8
  */
9
9
  export class WoSensorTH 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
- temperature: apiStatus.temperature || 0,
22
- humidity: apiStatus.humidity || 0,
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
- temperature: bleData.temperature || 0,
35
- humidity: bleData.humidity || 0,
36
- temperatureScale: bleData.fahrenheit ? 'f' : 'c',
37
- battery: bleData.battery,
38
- updatedAt: new Date(),
39
- };
40
- }
41
- throw new Error('No connection method available');
42
- }
43
- catch (error) {
44
- this.logger.error('Failed to get status', error);
45
- throw error;
46
- }
14
+ return this.getStatusWithFallback(bleData => ({
15
+ deviceId: this.info.id,
16
+ connectionType: 'ble',
17
+ temperature: bleData.temperature || 0,
18
+ humidity: bleData.humidity || 0,
19
+ temperatureScale: bleData.fahrenheit ? 'f' : 'c',
20
+ battery: bleData.battery,
21
+ updatedAt: new Date(),
22
+ }), apiStatus => ({
23
+ deviceId: this.info.id,
24
+ connectionType: 'api',
25
+ temperature: apiStatus.temperature || 0,
26
+ humidity: apiStatus.humidity || 0,
27
+ battery: apiStatus.battery,
28
+ version: apiStatus.version,
29
+ updatedAt: new Date(),
30
+ }));
47
31
  }
48
32
  }
49
33
  //# sourceMappingURL=wo-sensor-th.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wo-sensor-th.js","sourceRoot":"","sources":["../../src/devices/wo-sensor-th.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,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,CAAC;oBACvC,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,CAAC;oBACjC,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,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;oBACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBAChD,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-sensor-th.js","sourceRoot":"","sources":["../../src/devices/wo-sensor-th.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,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;YACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;YAC/B,gBAAgB,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAChD,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,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,CAAC;YACvC,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,CAAC;YACjC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CACH,CAAA;IACH,CAAC;CACF"}
@@ -5,11 +5,11 @@ import { SequenceDevice } from './sequence-device.js';
5
5
  */
6
6
  export declare class WoVacuum extends SequenceDevice implements VacuumCommands {
7
7
  /**
8
- * Start cleaning
8
+ * Start cleaning (BLE-first, API-fallback)
9
9
  */
10
10
  cleanUp(protocolVersion: number): Promise<boolean>;
11
11
  /**
12
- * Return to dock
12
+ * Return to dock (BLE-first, API-fallback)
13
13
  */
14
14
  returnToDock(protocolVersion: number): Promise<boolean>;
15
15
  /**
@@ -33,7 +33,7 @@ export declare class WoVacuum extends SequenceDevice implements VacuumCommands {
33
33
  */
34
34
  getNetworkConnectedStatus(): boolean | undefined;
35
35
  /**
36
- * Get device status
36
+ * Get device status (BLE-first/API-fallback, centralized)
37
37
  */
38
38
  getStatus(): Promise<VacuumStatus>;
39
39
  private getCommandForProtocol;
@@ -1 +1 @@
1
- {"version":3,"file":"wo-vacuum.d.ts","sourceRoot":"","sources":["../../src/devices/wo-vacuum.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,QAAS,SAAQ,cAAe,YAAW,cAAc;IACpE;;OAEG;IACG,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMxD;;OAEG;IACG,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM7D;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAKhC;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAKnC;;OAEG;IACH,qBAAqB,IAAI,OAAO,GAAG,SAAS;IAK5C;;OAEG;IACH,yBAAyB,IAAI,OAAO,GAAG,SAAS;IAKhD;;OAEG;IACH,yBAAyB,IAAI,OAAO,GAAG,SAAS;IAKhD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IAsCxC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;CAGlB"}
1
+ {"version":3,"file":"wo-vacuum.d.ts","sourceRoot":"","sources":["../../src/devices/wo-vacuum.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;GAEG;AACH,qBAAa,QAAS,SAAQ,cAAe,YAAW,cAAc;IACpE;;OAEG;IACG,OAAO,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBxD;;OAEG;IACG,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB7D;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,SAAS;IAKhC;;OAEG;IACH,aAAa,IAAI,MAAM,GAAG,SAAS;IAKnC;;OAEG;IACH,qBAAqB,IAAI,OAAO,GAAG,SAAS;IAK5C;;OAEG;IACH,yBAAyB,IAAI,OAAO,GAAG,SAAS;IAKhD;;OAEG;IACH,yBAAyB,IAAI,OAAO,GAAG,SAAS;IAKhD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,YAAY,CAAC;IA0BxC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,SAAS;CAGlB"}