node-switchbot 4.0.0-beta.1 → 4.0.0-beta.11

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 (379) hide show
  1. package/.github/copilot-instructions.md +19 -5
  2. package/BLE.md +117 -4
  3. package/CHANGELOG.md +45 -0
  4. package/README.md +7 -1
  5. package/dist/api.d.ts +3 -3
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/api.js +9 -6
  8. package/dist/api.js.map +1 -1
  9. package/dist/ble.d.ts +38 -4
  10. package/dist/ble.d.ts.map +1 -1
  11. package/dist/ble.js +409 -53
  12. package/dist/ble.js.map +1 -1
  13. package/dist/devices/base.d.ts +83 -5
  14. package/dist/devices/base.d.ts.map +1 -1
  15. package/dist/devices/base.js +371 -34
  16. package/dist/devices/base.js.map +1 -1
  17. package/dist/devices/device-override-state-during-connection.d.ts +27 -0
  18. package/dist/devices/device-override-state-during-connection.d.ts.map +1 -0
  19. package/dist/devices/device-override-state-during-connection.js +45 -0
  20. package/dist/devices/device-override-state-during-connection.js.map +1 -0
  21. package/dist/devices/index.d.ts +29 -0
  22. package/dist/devices/index.d.ts.map +1 -1
  23. package/dist/devices/index.js +29 -0
  24. package/dist/devices/index.js.map +1 -1
  25. package/dist/devices/sequence-device.d.ts +36 -0
  26. package/dist/devices/sequence-device.d.ts.map +1 -0
  27. package/dist/devices/sequence-device.js +75 -0
  28. package/dist/devices/sequence-device.js.map +1 -0
  29. package/dist/devices/wo-air-purifier.d.ts +2 -2
  30. package/dist/devices/wo-air-purifier.d.ts.map +1 -1
  31. package/dist/devices/wo-air-purifier.js +2 -2
  32. package/dist/devices/wo-air-purifier.js.map +1 -1
  33. package/dist/devices/wo-art-frame.d.ts +8 -0
  34. package/dist/devices/wo-art-frame.d.ts.map +1 -0
  35. package/dist/devices/wo-art-frame.js +12 -0
  36. package/dist/devices/wo-art-frame.js.map +1 -0
  37. package/dist/devices/wo-bulb.d.ts +10 -0
  38. package/dist/devices/wo-bulb.d.ts.map +1 -1
  39. package/dist/devices/wo-bulb.js +69 -0
  40. package/dist/devices/wo-bulb.js.map +1 -1
  41. package/dist/devices/wo-circulator-fan.d.ts +8 -0
  42. package/dist/devices/wo-circulator-fan.d.ts.map +1 -0
  43. package/dist/devices/wo-circulator-fan.js +12 -0
  44. package/dist/devices/wo-circulator-fan.js.map +1 -0
  45. package/dist/devices/wo-climate-panel.d.ts +8 -0
  46. package/dist/devices/wo-climate-panel.d.ts.map +1 -0
  47. package/dist/devices/wo-climate-panel.js +12 -0
  48. package/dist/devices/wo-climate-panel.js.map +1 -0
  49. package/dist/devices/wo-curtain.d.ts +3 -3
  50. package/dist/devices/wo-curtain.d.ts.map +1 -1
  51. package/dist/devices/wo-curtain.js +12 -9
  52. package/dist/devices/wo-curtain.js.map +1 -1
  53. package/dist/devices/wo-floor-lamp.d.ts +8 -0
  54. package/dist/devices/wo-floor-lamp.d.ts.map +1 -0
  55. package/dist/devices/wo-floor-lamp.js +12 -0
  56. package/dist/devices/wo-floor-lamp.js.map +1 -0
  57. package/dist/devices/wo-garage-door-opener.d.ts +8 -0
  58. package/dist/devices/wo-garage-door-opener.d.ts.map +1 -0
  59. package/dist/devices/wo-garage-door-opener.js +12 -0
  60. package/dist/devices/wo-garage-door-opener.js.map +1 -0
  61. package/dist/devices/wo-hand.d.ts +53 -2
  62. package/dist/devices/wo-hand.d.ts.map +1 -1
  63. package/dist/devices/wo-hand.js +121 -3
  64. package/dist/devices/wo-hand.js.map +1 -1
  65. package/dist/devices/wo-hubmini-matter.d.ts +8 -0
  66. package/dist/devices/wo-hubmini-matter.d.ts.map +1 -0
  67. package/dist/devices/wo-hubmini-matter.js +12 -0
  68. package/dist/devices/wo-hubmini-matter.js.map +1 -0
  69. package/dist/devices/wo-humi2.d.ts +12 -0
  70. package/dist/devices/wo-humi2.d.ts.map +1 -1
  71. package/dist/devices/wo-humi2.js +18 -0
  72. package/dist/devices/wo-humi2.js.map +1 -1
  73. package/dist/devices/wo-keypad-vision-pro.d.ts +18 -0
  74. package/dist/devices/wo-keypad-vision-pro.d.ts.map +1 -0
  75. package/dist/devices/wo-keypad-vision-pro.js +15 -0
  76. package/dist/devices/wo-keypad-vision-pro.js.map +1 -0
  77. package/dist/devices/wo-keypad-vision.d.ts +8 -0
  78. package/dist/devices/wo-keypad-vision.d.ts.map +1 -0
  79. package/dist/devices/wo-keypad-vision.js +12 -0
  80. package/dist/devices/wo-keypad-vision.js.map +1 -0
  81. package/dist/devices/wo-lock-lite.d.ts +7 -0
  82. package/dist/devices/wo-lock-lite.d.ts.map +1 -0
  83. package/dist/devices/wo-lock-lite.js +11 -0
  84. package/dist/devices/wo-lock-lite.js.map +1 -0
  85. package/dist/devices/wo-lock-pro-wifi.d.ts +7 -0
  86. package/dist/devices/wo-lock-pro-wifi.d.ts.map +1 -0
  87. package/dist/devices/wo-lock-pro-wifi.js +11 -0
  88. package/dist/devices/wo-lock-pro-wifi.js.map +1 -0
  89. package/dist/devices/wo-lock-pro.d.ts +11 -2
  90. package/dist/devices/wo-lock-pro.d.ts.map +1 -1
  91. package/dist/devices/wo-lock-pro.js +65 -3
  92. package/dist/devices/wo-lock-pro.js.map +1 -1
  93. package/dist/devices/wo-lock-vision-pro.d.ts +7 -0
  94. package/dist/devices/wo-lock-vision-pro.d.ts.map +1 -0
  95. package/dist/devices/wo-lock-vision-pro.js +11 -0
  96. package/dist/devices/wo-lock-vision-pro.js.map +1 -0
  97. package/dist/devices/wo-lock-vision.d.ts +7 -0
  98. package/dist/devices/wo-lock-vision.d.ts.map +1 -0
  99. package/dist/devices/wo-lock-vision.js +11 -0
  100. package/dist/devices/wo-lock-vision.js.map +1 -0
  101. package/dist/devices/wo-lock.d.ts +7 -2
  102. package/dist/devices/wo-lock.d.ts.map +1 -1
  103. package/dist/devices/wo-lock.js +58 -3
  104. package/dist/devices/wo-lock.js.map +1 -1
  105. package/dist/devices/wo-plug-mini-us.d.ts +2 -2
  106. package/dist/devices/wo-plug-mini-us.d.ts.map +1 -1
  107. package/dist/devices/wo-plug-mini-us.js +2 -2
  108. package/dist/devices/wo-plug-mini-us.js.map +1 -1
  109. package/dist/devices/wo-relay-switch-1.d.ts +4 -2
  110. package/dist/devices/wo-relay-switch-1.d.ts.map +1 -1
  111. package/dist/devices/wo-relay-switch-1.js +36 -4
  112. package/dist/devices/wo-relay-switch-1.js.map +1 -1
  113. package/dist/devices/wo-relay-switch-2pm.d.ts +21 -0
  114. package/dist/devices/wo-relay-switch-2pm.d.ts.map +1 -0
  115. package/dist/devices/wo-relay-switch-2pm.js +39 -0
  116. package/dist/devices/wo-relay-switch-2pm.js.map +1 -0
  117. package/dist/devices/wo-rgbic-bulb.d.ts +29 -0
  118. package/dist/devices/wo-rgbic-bulb.d.ts.map +1 -0
  119. package/dist/devices/wo-rgbic-bulb.js +84 -0
  120. package/dist/devices/wo-rgbic-bulb.js.map +1 -0
  121. package/dist/devices/wo-rgbicww-floor-lamp.d.ts +8 -0
  122. package/dist/devices/wo-rgbicww-floor-lamp.d.ts.map +1 -0
  123. package/dist/devices/wo-rgbicww-floor-lamp.js +12 -0
  124. package/dist/devices/wo-rgbicww-floor-lamp.js.map +1 -0
  125. package/dist/devices/wo-rgbicww-strip-light.d.ts +8 -0
  126. package/dist/devices/wo-rgbicww-strip-light.d.ts.map +1 -0
  127. package/dist/devices/wo-rgbicww-strip-light.js +12 -0
  128. package/dist/devices/wo-rgbicww-strip-light.js.map +1 -0
  129. package/dist/devices/wo-roller-shade.d.ts +8 -0
  130. package/dist/devices/wo-roller-shade.d.ts.map +1 -0
  131. package/dist/devices/wo-roller-shade.js +12 -0
  132. package/dist/devices/wo-roller-shade.js.map +1 -0
  133. package/dist/devices/wo-smart-thermostat-radiator.d.ts +8 -0
  134. package/dist/devices/wo-smart-thermostat-radiator.d.ts.map +1 -0
  135. package/dist/devices/wo-smart-thermostat-radiator.js +12 -0
  136. package/dist/devices/wo-smart-thermostat-radiator.js.map +1 -0
  137. package/dist/devices/wo-strip-light-3.d.ts +8 -0
  138. package/dist/devices/wo-strip-light-3.d.ts.map +1 -0
  139. package/dist/devices/wo-strip-light-3.js +12 -0
  140. package/dist/devices/wo-strip-light-3.js.map +1 -0
  141. package/dist/devices/wo-vacuum-k10-plus.d.ts +7 -0
  142. package/dist/devices/wo-vacuum-k10-plus.d.ts.map +1 -0
  143. package/dist/devices/wo-vacuum-k10-plus.js +11 -0
  144. package/dist/devices/wo-vacuum-k10-plus.js.map +1 -0
  145. package/dist/devices/wo-vacuum-k10-pro-combo.d.ts +7 -0
  146. package/dist/devices/wo-vacuum-k10-pro-combo.d.ts.map +1 -0
  147. package/dist/devices/wo-vacuum-k10-pro-combo.js +11 -0
  148. package/dist/devices/wo-vacuum-k10-pro-combo.js.map +1 -0
  149. package/dist/devices/wo-vacuum-k10-pro.d.ts +7 -0
  150. package/dist/devices/wo-vacuum-k10-pro.d.ts.map +1 -0
  151. package/dist/devices/wo-vacuum-k10-pro.js +11 -0
  152. package/dist/devices/wo-vacuum-k10-pro.js.map +1 -0
  153. package/dist/devices/wo-vacuum-k11-plus.d.ts +7 -0
  154. package/dist/devices/wo-vacuum-k11-plus.d.ts.map +1 -0
  155. package/dist/devices/wo-vacuum-k11-plus.js +11 -0
  156. package/dist/devices/wo-vacuum-k11-plus.js.map +1 -0
  157. package/dist/devices/wo-vacuum-k20.d.ts +7 -0
  158. package/dist/devices/wo-vacuum-k20.d.ts.map +1 -0
  159. package/dist/devices/wo-vacuum-k20.js +11 -0
  160. package/dist/devices/wo-vacuum-k20.js.map +1 -0
  161. package/dist/devices/wo-vacuum-s10.d.ts +7 -0
  162. package/dist/devices/wo-vacuum-s10.d.ts.map +1 -0
  163. package/dist/devices/wo-vacuum-s10.js +11 -0
  164. package/dist/devices/wo-vacuum-s10.js.map +1 -0
  165. package/dist/devices/wo-vacuum-s20.d.ts +7 -0
  166. package/dist/devices/wo-vacuum-s20.d.ts.map +1 -0
  167. package/dist/devices/wo-vacuum-s20.js +11 -0
  168. package/dist/devices/wo-vacuum-s20.js.map +1 -0
  169. package/dist/devices/wo-vacuum.d.ts +44 -0
  170. package/dist/devices/wo-vacuum.d.ts.map +1 -0
  171. package/dist/devices/wo-vacuum.js +117 -0
  172. package/dist/devices/wo-vacuum.js.map +1 -0
  173. package/dist/index.d.ts +4 -2
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +3 -1
  176. package/dist/index.js.map +1 -1
  177. package/dist/settings.d.ts +27 -0
  178. package/dist/settings.d.ts.map +1 -1
  179. package/dist/settings.js +76 -6
  180. package/dist/settings.js.map +1 -1
  181. package/dist/switchbot.d.ts.map +1 -1
  182. package/dist/switchbot.js +86 -9
  183. package/dist/switchbot.js.map +1 -1
  184. package/dist/types/ble.d.ts +20 -1
  185. package/dist/types/ble.d.ts.map +1 -1
  186. package/dist/types/ble.js.map +1 -1
  187. package/dist/types/device.d.ts +49 -3
  188. package/dist/types/device.d.ts.map +1 -1
  189. package/dist/types/index.d.ts +22 -0
  190. package/dist/types/index.d.ts.map +1 -1
  191. package/dist/types/index.js.map +1 -1
  192. package/dist/utils/bot-ble.d.ts +36 -0
  193. package/dist/utils/bot-ble.d.ts.map +1 -0
  194. package/dist/utils/bot-ble.js +109 -0
  195. package/dist/utils/bot-ble.js.map +1 -0
  196. package/dist/utils/circuit-breaker.d.ts +98 -0
  197. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  198. package/dist/utils/circuit-breaker.js +187 -0
  199. package/dist/utils/circuit-breaker.js.map +1 -0
  200. package/dist/utils/connection-tracker.d.ts +66 -0
  201. package/dist/utils/connection-tracker.d.ts.map +1 -0
  202. package/dist/utils/connection-tracker.js +184 -0
  203. package/dist/utils/connection-tracker.js.map +1 -0
  204. package/dist/utils/fallback-handler.d.ts +68 -0
  205. package/dist/utils/fallback-handler.d.ts.map +1 -0
  206. package/dist/utils/fallback-handler.js +131 -0
  207. package/dist/utils/fallback-handler.js.map +1 -0
  208. package/dist/utils/index.d.ts +10 -0
  209. package/dist/utils/index.d.ts.map +1 -1
  210. package/dist/utils/index.js +41 -4
  211. package/dist/utils/index.js.map +1 -1
  212. package/dist/utils/retry.d.ts +55 -0
  213. package/dist/utils/retry.d.ts.map +1 -0
  214. package/dist/utils/retry.js +95 -0
  215. package/dist/utils/retry.js.map +1 -0
  216. package/docs/assets/hierarchy.js +1 -1
  217. package/docs/assets/navigation.js +1 -1
  218. package/docs/assets/search.js +1 -1
  219. package/docs/classes/APIError.html +2 -2
  220. package/docs/classes/APINotAvailableError.html +2 -2
  221. package/docs/classes/BLEConnection.html +16 -10
  222. package/docs/classes/BLENotAvailableError.html +2 -2
  223. package/docs/classes/BLEScanner.html +11 -9
  224. package/docs/classes/CommandFailedError.html +2 -2
  225. package/docs/classes/ConnectionTimeoutError.html +2 -2
  226. package/docs/classes/DeviceManager.html +13 -13
  227. package/docs/classes/DeviceNotFoundError.html +2 -2
  228. package/docs/classes/DeviceOverrideStateDuringConnection.html +56 -0
  229. package/docs/classes/DiscoveryError.html +2 -2
  230. package/docs/classes/OpenAPIClient.html +24 -24
  231. package/docs/classes/SequenceDevice.html +58 -0
  232. package/docs/classes/SwitchBot.html +11 -11
  233. package/docs/classes/SwitchBotDevice.html +43 -15
  234. package/docs/classes/SwitchBotError.html +2 -2
  235. package/docs/classes/ValidationError.html +2 -2
  236. package/docs/classes/WoAirPurifier.html +48 -18
  237. package/docs/classes/WoAirPurifierTable.html +48 -18
  238. package/docs/classes/WoArtFrame.html +71 -0
  239. package/docs/classes/WoBlindTilt.html +48 -20
  240. package/docs/classes/WoBulb.html +52 -19
  241. package/docs/classes/WoCeilingLight.html +52 -19
  242. package/docs/classes/WoCirculatorFan.html +66 -0
  243. package/docs/classes/WoClimatePanel.html +66 -0
  244. package/docs/classes/WoContact.html +42 -14
  245. package/docs/classes/WoCurtain.html +46 -18
  246. package/docs/classes/WoFloorLamp.html +71 -0
  247. package/docs/classes/WoGarageDoorOpener.html +64 -0
  248. package/docs/classes/WoHand.html +63 -19
  249. package/docs/classes/WoHub2.html +42 -14
  250. package/docs/classes/WoHub3.html +42 -14
  251. package/docs/classes/WoHubMiniMatter.html +56 -0
  252. package/docs/classes/WoHumi.html +46 -18
  253. package/docs/classes/WoHumi2.html +52 -18
  254. package/docs/classes/WoIOSensorTH.html +42 -14
  255. package/docs/classes/WoKeypad.html +42 -14
  256. package/docs/classes/WoKeypadVision.html +56 -0
  257. package/docs/classes/WoKeypadVisionPro.html +56 -0
  258. package/docs/classes/WoLeak.html +42 -14
  259. package/docs/classes/WoPlugMiniJP.html +45 -17
  260. package/docs/classes/WoPlugMiniUS.html +45 -17
  261. package/docs/classes/WoPresence.html +42 -14
  262. package/docs/classes/WoRGBICBulb.html +82 -0
  263. package/docs/classes/WoRGBICWWFloorLamp.html +82 -0
  264. package/docs/classes/WoRGBICWWStripLight.html +82 -0
  265. package/docs/classes/WoRelaySwitch1.html +47 -17
  266. package/docs/classes/WoRelaySwitch1PM.html +47 -17
  267. package/docs/classes/WoRelaySwitch2PM.html +68 -0
  268. package/docs/classes/WoRemote.html +42 -14
  269. package/docs/classes/WoRollerShade.html +64 -0
  270. package/docs/classes/WoSensorTH.html +42 -14
  271. package/docs/classes/WoSensorTHPlus.html +42 -14
  272. package/docs/classes/WoSensorTHPro.html +42 -14
  273. package/docs/classes/WoSensorTHProCO2.html +42 -14
  274. package/docs/classes/WoSmartLock.html +49 -16
  275. package/docs/classes/WoSmartLockLite.html +64 -0
  276. package/docs/classes/WoSmartLockPro.html +52 -17
  277. package/docs/classes/WoSmartLockProWiFi.html +68 -0
  278. package/docs/classes/WoSmartLockVision.html +64 -0
  279. package/docs/classes/WoSmartLockVisionPro.html +68 -0
  280. package/docs/classes/WoSmartThermostatRadiator.html +66 -0
  281. package/docs/classes/WoStrip.html +52 -19
  282. package/docs/classes/WoStripLight3.html +71 -0
  283. package/docs/classes/WoVacuum.html +71 -0
  284. package/docs/classes/WoVacuumK10Plus.html +71 -0
  285. package/docs/classes/WoVacuumK10Pro.html +71 -0
  286. package/docs/classes/WoVacuumK10ProCombo.html +71 -0
  287. package/docs/classes/WoVacuumK11Plus.html +71 -0
  288. package/docs/classes/WoVacuumK20.html +71 -0
  289. package/docs/classes/WoVacuumS10.html +71 -0
  290. package/docs/classes/WoVacuumS20.html +71 -0
  291. package/docs/enums/LogLevel.html +2 -2
  292. package/docs/enums/SwitchBotBLEModel.html +2 -2
  293. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  294. package/docs/functions/updateBaseURL.html +1 -1
  295. package/docs/hierarchy.html +1 -1
  296. package/docs/index.html +2 -2
  297. package/docs/interfaces/APICommandRequest.html +2 -2
  298. package/docs/interfaces/APICommandResponse.html +2 -2
  299. package/docs/interfaces/APIDevice.html +2 -2
  300. package/docs/interfaces/APIDeviceStatus.html +2 -2
  301. package/docs/interfaces/APIErrorResponse.html +2 -2
  302. package/docs/interfaces/APIResponse.html +2 -2
  303. package/docs/interfaces/AirPurifierCommands.html +2 -2
  304. package/docs/interfaces/AirPurifierServiceData.html +20 -5
  305. package/docs/interfaces/AirPurifierStatus.html +7 -7
  306. package/docs/interfaces/BLEAdvertisement.html +3 -2
  307. package/docs/interfaces/BLEScanOptions.html +5 -5
  308. package/docs/interfaces/BLEServiceData.html +22 -5
  309. package/docs/interfaces/BlindTiltCommands.html +2 -2
  310. package/docs/interfaces/BlindTiltServiceData.html +21 -5
  311. package/docs/interfaces/BlindTiltStatus.html +6 -6
  312. package/docs/interfaces/BotCommands.html +6 -2
  313. package/docs/interfaces/BotServiceData.html +20 -5
  314. package/docs/interfaces/BotStatus.html +6 -6
  315. package/docs/interfaces/BulbCommands.html +4 -2
  316. package/docs/interfaces/BulbServiceData.html +21 -5
  317. package/docs/interfaces/BulbStatus.html +6 -6
  318. package/docs/interfaces/CeilingLightCommands.html +4 -2
  319. package/docs/interfaces/CeilingLightServiceData.html +21 -5
  320. package/docs/interfaces/CeilingLightStatus.html +6 -6
  321. package/docs/interfaces/CommandResult.html +6 -6
  322. package/docs/interfaces/ContactServiceData.html +22 -5
  323. package/docs/interfaces/ContactStatus.html +6 -6
  324. package/docs/interfaces/CurtainCommands.html +2 -2
  325. package/docs/interfaces/CurtainServiceData.html +22 -5
  326. package/docs/interfaces/CurtainStatus.html +6 -6
  327. package/docs/interfaces/DeviceInfo.html +23 -13
  328. package/docs/interfaces/DeviceListResponse.html +2 -2
  329. package/docs/interfaces/DeviceStatus.html +6 -6
  330. package/docs/interfaces/DiscoveryOptions.html +7 -7
  331. package/docs/interfaces/HubServiceData.html +22 -5
  332. package/docs/interfaces/HubStatus.html +6 -6
  333. package/docs/interfaces/HumidifierCommands.html +2 -2
  334. package/docs/interfaces/HumidifierServiceData.html +23 -6
  335. package/docs/interfaces/HumidifierStatus.html +6 -6
  336. package/docs/interfaces/KeypadStatus.html +6 -6
  337. package/docs/interfaces/LeakServiceData.html +22 -5
  338. package/docs/interfaces/LeakStatus.html +6 -6
  339. package/docs/interfaces/LockCommands.html +6 -2
  340. package/docs/interfaces/LockServiceData.html +20 -6
  341. package/docs/interfaces/LockStatus.html +6 -6
  342. package/docs/interfaces/MeterServiceData.html +22 -5
  343. package/docs/interfaces/MeterStatus.html +6 -6
  344. package/docs/interfaces/MotionServiceData.html +22 -5
  345. package/docs/interfaces/MotionStatus.html +6 -6
  346. package/docs/interfaces/PlugCommands.html +2 -2
  347. package/docs/interfaces/PlugServiceData.html +21 -5
  348. package/docs/interfaces/PlugStatus.html +6 -6
  349. package/docs/interfaces/PresenceServiceData.html +22 -5
  350. package/docs/interfaces/PresenceStatus.html +6 -6
  351. package/docs/interfaces/RelaySwitchCommands.html +2 -2
  352. package/docs/interfaces/RelaySwitchServiceData.html +21 -5
  353. package/docs/interfaces/RelaySwitchStatus.html +6 -6
  354. package/docs/interfaces/RemoteStatus.html +6 -6
  355. package/docs/interfaces/SceneListResponse.html +2 -2
  356. package/docs/interfaces/StripCommands.html +4 -2
  357. package/docs/interfaces/StripServiceData.html +21 -5
  358. package/docs/interfaces/StripStatus.html +6 -6
  359. package/docs/interfaces/SwitchBotConfig.html +21 -9
  360. package/docs/interfaces/VacuumCommands.html +8 -0
  361. package/docs/interfaces/VacuumStatus.html +16 -0
  362. package/docs/interfaces/WebhookConfig.html +2 -2
  363. package/docs/interfaces/WebhookDetails.html +2 -2
  364. package/docs/interfaces/WebhookQueryResponse.html +2 -2
  365. package/docs/interfaces/WebhookSetupResponse.html +2 -2
  366. package/docs/media/BLE.md +117 -4
  367. package/docs/modules.html +1 -1
  368. package/docs/types/ConnectionType.html +1 -1
  369. package/docs/types/PhysicalDeviceType.html +1 -1
  370. package/docs/types/VirtualDeviceType.html +1 -1
  371. package/docs/variables/urls.html +1 -1
  372. package/package.json +11 -7
  373. package/tmp-switchbot-scan.mjs +79 -0
  374. package/todo/PYSWITCHBOT_COMPARISON.md +484 -0
  375. package/todo/README.md +68 -0
  376. package/todo/completed.md +309 -0
  377. package/todo/todo.md +302 -0
  378. package/tsconfig.build.json +17 -0
  379. package/PRODUCTION_READY.md +0 -135
@@ -5,10 +5,10 @@
5
5
  import { Buffer } from 'node:buffer';
6
6
  import { EventEmitter } from 'node:events';
7
7
  import { APINotAvailableError, BLENotAvailableError } from '../errors.js';
8
- import { Logger } from '../utils/index.js';
8
+ import { CircuitBreaker, CircuitBreakerState, ConnectionTracker, FallbackHandlerManager, Logger, RetryExecutor, } from '../utils/index.js';
9
9
  /**
10
10
  * Base class for all SwitchBot devices
11
- * Provides hybrid BLE/API functionality with automatic fallback
11
+ * Provides hybrid BLE/API functionality with automatic fallback, circuit breaker, and connection intelligence
12
12
  */
13
13
  export class SwitchBotDevice extends EventEmitter {
14
14
  info;
@@ -17,14 +17,54 @@ export class SwitchBotDevice extends EventEmitter {
17
17
  apiClient;
18
18
  enableFallback;
19
19
  preferredConnection;
20
+ // Advanced features
21
+ connectionTracker;
22
+ circuitBreakerBLE;
23
+ circuitBreakerAPI;
24
+ fallbackHandlerManager;
25
+ retryExecutor;
26
+ enableConnectionIntelligence;
27
+ enableCircuitBreaker;
28
+ enableRetry;
29
+ bleOperationQueue = Promise.resolve();
30
+ defineCompatibilityProperties() {
31
+ const properties = ['id', 'name', 'deviceType', 'mac', 'activeConnection'];
32
+ for (const property of properties) {
33
+ Object.defineProperty(this, property, {
34
+ enumerable: true,
35
+ configurable: true,
36
+ get: () => {
37
+ const value = this.info[property];
38
+ if ((property === 'id' || property === 'mac') && typeof value === 'string' && value.length === 0) {
39
+ return undefined;
40
+ }
41
+ return value;
42
+ },
43
+ });
44
+ }
45
+ }
20
46
  constructor(info, options = {}) {
21
47
  super();
22
48
  this.info = info;
49
+ this.defineCompatibilityProperties();
23
50
  this.logger = new Logger(`${info.deviceType}:${info.id}`, options.logLevel);
24
51
  this.bleConnection = options.bleConnection;
25
52
  this.apiClient = options.apiClient;
26
53
  this.enableFallback = options.enableFallback ?? true;
27
54
  this.preferredConnection = options.preferredConnection ?? 'ble';
55
+ // Initialize advanced features
56
+ this.enableConnectionIntelligence = options.enableConnectionIntelligence ?? true;
57
+ this.enableCircuitBreaker = options.enableCircuitBreaker ?? true;
58
+ this.enableRetry = options.enableRetry ?? true;
59
+ // Create connection tracker for this device
60
+ this.connectionTracker = new ConnectionTracker(info.id, options.logLevel);
61
+ // Create circuit breakers for each connection type
62
+ this.circuitBreakerBLE = new CircuitBreaker(`${info.deviceType}:${info.id}:BLE`, options.circuitBreakerConfig, options.logLevel);
63
+ this.circuitBreakerAPI = new CircuitBreaker(`${info.deviceType}:${info.id}:API`, options.circuitBreakerConfig, options.logLevel);
64
+ // Create retry executor
65
+ this.retryExecutor = new RetryExecutor(options.retryConfig, options.logLevel);
66
+ // Create fallback handler manager
67
+ this.fallbackHandlerManager = new FallbackHandlerManager(options.logLevel);
28
68
  }
29
69
  /**
30
70
  * Get device information
@@ -38,23 +78,47 @@ export class SwitchBotDevice extends EventEmitter {
38
78
  getId() {
39
79
  return this.info.id;
40
80
  }
81
+ /**
82
+ * Get device ID (property accessor for convenience)
83
+ */
84
+ get id() {
85
+ return this.info.id.length > 0 ? this.info.id : undefined;
86
+ }
41
87
  /**
42
88
  * Get device name
43
89
  */
44
90
  getName() {
45
91
  return this.info.name;
46
92
  }
93
+ /**
94
+ * Get device name (property accessor for convenience)
95
+ */
96
+ get name() {
97
+ return this.info.name;
98
+ }
47
99
  /**
48
100
  * Get device type
49
101
  */
50
102
  getDeviceType() {
51
103
  return this.info.deviceType;
52
104
  }
105
+ /**
106
+ * Get device type (property accessor for convenience)
107
+ */
108
+ get deviceType() {
109
+ return this.info.deviceType;
110
+ }
53
111
  /**
54
112
  * Get MAC address (if available)
55
113
  */
56
114
  getMAC() {
57
- return this.info.mac;
115
+ return this.info.mac && this.info.mac.length > 0 ? this.info.mac : undefined;
116
+ }
117
+ /**
118
+ * Get MAC address (property accessor for convenience)
119
+ */
120
+ get mac() {
121
+ return this.info.mac && this.info.mac.length > 0 ? this.info.mac : undefined;
58
122
  }
59
123
  /**
60
124
  * Get active connection type
@@ -62,6 +126,12 @@ export class SwitchBotDevice extends EventEmitter {
62
126
  getActiveConnection() {
63
127
  return this.info.activeConnection;
64
128
  }
129
+ /**
130
+ * Get active connection type (property accessor for convenience)
131
+ */
132
+ get activeConnection() {
133
+ return this.info.activeConnection;
134
+ }
65
135
  /**
66
136
  * Check if BLE is available for this device
67
137
  */
@@ -75,7 +145,7 @@ export class SwitchBotDevice extends EventEmitter {
75
145
  return this.info.connectionTypes.includes('api') && !!this.apiClient && this.info.cloudServiceEnabled !== false;
76
146
  }
77
147
  /**
78
- * Send a command via BLE
148
+ * Send a command via BLE with circuit breaker and retry logic
79
149
  */
80
150
  async sendBLECommand(command) {
81
151
  if (!this.hasBLE()) {
@@ -85,18 +155,74 @@ export class SwitchBotDevice extends EventEmitter {
85
155
  error: 'BLE not available for this device',
86
156
  };
87
157
  }
88
- try {
158
+ // Check circuit breaker
159
+ if (this.enableCircuitBreaker && !this.circuitBreakerBLE.canExecute()) {
160
+ const state = this.circuitBreakerBLE.getState();
161
+ if (state === CircuitBreakerState.OPEN) {
162
+ return {
163
+ success: false,
164
+ connectionType: 'ble',
165
+ error: 'BLE circuit breaker is OPEN (too many failures)',
166
+ };
167
+ }
168
+ }
169
+ const executeCommand = async () => {
89
170
  this.logger.debug('Sending BLE command', command);
90
171
  const buffer = Buffer.isBuffer(command) ? command : Buffer.from(command);
91
- await this.bleConnection.write(this.info.mac, buffer);
172
+ const startTime = Date.now();
173
+ const mac = this.info.mac ?? `id:${this.info.bleId}`;
174
+ let response;
175
+ if (this.info.encryptionKey && this.info.encryptionIV && this.bleConnection?.setEncryption) {
176
+ this.bleConnection.setEncryption(mac, this.info.encryptionKey, this.info.encryptionIV, this.info.encryptionMode ?? 'auto');
177
+ }
178
+ if (this.bleConnection?.sendCommand) {
179
+ response = await this.bleConnection.sendCommand(mac, buffer, {
180
+ expectResponse: true,
181
+ validateResponse: true,
182
+ responseTimeoutMs: 1200,
183
+ });
184
+ }
185
+ else {
186
+ await this.bleConnection.write(mac, buffer);
187
+ }
188
+ const latencyMs = Date.now() - startTime;
189
+ // Record success
190
+ if (this.enableConnectionIntelligence) {
191
+ this.connectionTracker.recordSuccess('ble', latencyMs);
192
+ }
193
+ if (this.enableCircuitBreaker) {
194
+ this.circuitBreakerBLE.recordSuccess();
195
+ }
92
196
  this.info.activeConnection = 'ble';
93
197
  this.emit('command', { type: 'ble', success: true });
94
198
  return {
95
199
  success: true,
96
200
  connectionType: 'ble',
201
+ data: response,
97
202
  };
203
+ };
204
+ try {
205
+ return await this.runWithBLELock(async () => {
206
+ if (this.enableRetry) {
207
+ this.circuitBreakerBLE.markHalfOpenAttempt();
208
+ return await this.retryExecutor.executeOrThrow(executeCommand, `BLE command for ${this.info.id}`);
209
+ }
210
+ else {
211
+ if (this.enableCircuitBreaker) {
212
+ this.circuitBreakerBLE.markHalfOpenAttempt();
213
+ }
214
+ return await executeCommand();
215
+ }
216
+ });
98
217
  }
99
218
  catch (error) {
219
+ // Record failure
220
+ if (this.enableConnectionIntelligence) {
221
+ this.connectionTracker.recordFailure('ble');
222
+ }
223
+ if (this.enableCircuitBreaker) {
224
+ this.circuitBreakerBLE.recordFailure();
225
+ }
100
226
  this.logger.error('BLE command failed', error);
101
227
  this.emit('error', { type: 'ble', error });
102
228
  return {
@@ -107,7 +233,7 @@ export class SwitchBotDevice extends EventEmitter {
107
233
  }
108
234
  }
109
235
  /**
110
- * Send a command via OpenAPI
236
+ * Send a command via OpenAPI with circuit breaker and retry logic
111
237
  */
112
238
  async sendAPICommand(command, parameter) {
113
239
  if (!this.hasAPI()) {
@@ -117,9 +243,29 @@ export class SwitchBotDevice extends EventEmitter {
117
243
  error: 'API not available for this device',
118
244
  };
119
245
  }
120
- try {
246
+ // Check circuit breaker
247
+ if (this.enableCircuitBreaker && !this.circuitBreakerAPI.canExecute()) {
248
+ const state = this.circuitBreakerAPI.getState();
249
+ if (state === CircuitBreakerState.OPEN) {
250
+ return {
251
+ success: false,
252
+ connectionType: 'api',
253
+ error: 'API circuit breaker is OPEN (too many failures)',
254
+ };
255
+ }
256
+ }
257
+ const executeCommand = async () => {
121
258
  this.logger.debug('Sending API command', { command, parameter });
259
+ const startTime = Date.now();
122
260
  const response = await this.apiClient.sendCommand(this.info.id, command, parameter);
261
+ const latencyMs = Date.now() - startTime;
262
+ // Record success
263
+ if (this.enableConnectionIntelligence) {
264
+ this.connectionTracker.recordSuccess('api', latencyMs);
265
+ }
266
+ if (this.enableCircuitBreaker) {
267
+ this.circuitBreakerAPI.recordSuccess();
268
+ }
123
269
  this.info.activeConnection = 'api';
124
270
  this.emit('command', { type: 'api', success: true });
125
271
  return {
@@ -127,8 +273,27 @@ export class SwitchBotDevice extends EventEmitter {
127
273
  connectionType: 'api',
128
274
  data: response,
129
275
  };
276
+ };
277
+ try {
278
+ if (this.enableRetry) {
279
+ this.circuitBreakerAPI.markHalfOpenAttempt();
280
+ return await this.retryExecutor.executeOrThrow(executeCommand, `API command for ${this.info.id}`);
281
+ }
282
+ else {
283
+ if (this.enableCircuitBreaker) {
284
+ this.circuitBreakerAPI.markHalfOpenAttempt();
285
+ }
286
+ return await executeCommand();
287
+ }
130
288
  }
131
289
  catch (error) {
290
+ // Record failure
291
+ if (this.enableConnectionIntelligence) {
292
+ this.connectionTracker.recordFailure('api');
293
+ }
294
+ if (this.enableCircuitBreaker) {
295
+ this.circuitBreakerAPI.recordFailure();
296
+ }
132
297
  this.logger.error('API command failed', error);
133
298
  this.emit('error', { type: 'api', error });
134
299
  return {
@@ -139,37 +304,104 @@ export class SwitchBotDevice extends EventEmitter {
139
304
  }
140
305
  }
141
306
  /**
142
- * Send a command with automatic BLE/API fallback
307
+ * Get best connection type based on intelligence tracking
308
+ */
309
+ getBestConnection() {
310
+ if (!this.enableConnectionIntelligence) {
311
+ return this.preferredConnection;
312
+ }
313
+ const availableTypes = [];
314
+ if (this.hasBLE()) {
315
+ availableTypes.push('ble');
316
+ }
317
+ if (this.hasAPI()) {
318
+ availableTypes.push('api');
319
+ }
320
+ if (availableTypes.length === 0) {
321
+ return this.preferredConnection;
322
+ }
323
+ // Get best connection based on statistics
324
+ const best = this.connectionTracker.getBestConnection(availableTypes);
325
+ if (best) {
326
+ return best;
327
+ }
328
+ return availableTypes.length > 0 ? availableTypes[0] : this.preferredConnection;
329
+ }
330
+ /**
331
+ * Send a command with automatic BLE/API fallback, circuit breaker, and retry logic
143
332
  */
144
333
  async sendCommand(bleCommand, apiCommand, apiParameter) {
145
- // Try preferred connection first
146
- if (this.preferredConnection === 'ble') {
147
- const bleResult = await this.sendBLECommand(bleCommand);
148
- if (bleResult.success) {
149
- return bleResult;
334
+ // Determine connection strategy
335
+ let primaryConnection = this.preferredConnection;
336
+ let secondaryConnection;
337
+ if (this.enableConnectionIntelligence) {
338
+ primaryConnection = this.getBestConnection();
339
+ if (this.preferredConnection === 'ble' && primaryConnection === 'api' && this.hasBLE()) {
340
+ secondaryConnection = 'ble';
150
341
  }
151
- // Fallback to API if enabled
152
- if (this.enableFallback && this.hasAPI()) {
153
- this.logger.warn('BLE failed, falling back to API');
154
- const apiResult = await this.sendAPICommand(apiCommand, apiParameter);
155
- return { ...apiResult, usedFallback: true };
342
+ else if (this.preferredConnection === 'api' && primaryConnection === 'ble' && this.hasAPI()) {
343
+ secondaryConnection = 'api';
156
344
  }
157
- return bleResult;
158
345
  }
159
346
  else {
160
- // Prefer API
161
- const apiResult = await this.sendAPICommand(apiCommand, apiParameter);
162
- if (apiResult.success) {
163
- return apiResult;
347
+ // Fallback based on preferred connection
348
+ if (this.preferredConnection === 'ble' && this.hasBLE()) {
349
+ primaryConnection = 'ble';
350
+ if (this.enableFallback && this.hasAPI()) {
351
+ secondaryConnection = 'api';
352
+ }
353
+ }
354
+ else if (this.preferredConnection === 'api' && this.hasAPI()) {
355
+ primaryConnection = 'api';
356
+ if (this.enableFallback && this.hasBLE()) {
357
+ secondaryConnection = 'ble';
358
+ }
359
+ }
360
+ else if (this.hasBLE()) {
361
+ primaryConnection = 'ble';
362
+ if (this.enableFallback && this.hasAPI()) {
363
+ secondaryConnection = 'api';
364
+ }
164
365
  }
165
- // Fallback to BLE if enabled
166
- if (this.enableFallback && this.hasBLE()) {
167
- this.logger.warn('API failed, falling back to BLE');
168
- const bleResult = await this.sendBLECommand(bleCommand);
169
- return { ...bleResult, usedFallback: true };
366
+ else {
367
+ primaryConnection = 'api';
368
+ secondaryConnection = undefined;
170
369
  }
171
- return apiResult;
172
370
  }
371
+ // Try primary connection
372
+ let result;
373
+ let fallbackUsed = false;
374
+ if (primaryConnection === 'ble') {
375
+ result = await this.sendBLECommand(bleCommand);
376
+ }
377
+ else {
378
+ result = await this.sendAPICommand(apiCommand, apiParameter);
379
+ }
380
+ // Try fallback if primary failed and fallback is enabled
381
+ if (!result.success && this.enableFallback && secondaryConnection) {
382
+ fallbackUsed = true;
383
+ this.logger.warn(`${primaryConnection} failed, attempting fallback to ${secondaryConnection}`);
384
+ // Emit fallback event
385
+ const fallbackEvent = {
386
+ deviceId: this.info.id,
387
+ primaryConnection,
388
+ fallbackConnection: secondaryConnection,
389
+ reason: result.error || 'Connection failed',
390
+ timestamp: new Date(),
391
+ totalTimeMs: 0,
392
+ };
393
+ await this.fallbackHandlerManager.emit(fallbackEvent);
394
+ if (secondaryConnection === 'ble') {
395
+ result = await this.sendBLECommand(bleCommand);
396
+ }
397
+ else {
398
+ result = await this.sendAPICommand(apiCommand, apiParameter);
399
+ }
400
+ }
401
+ if (fallbackUsed) {
402
+ result.usedFallback = true;
403
+ }
404
+ return result;
173
405
  }
174
406
  /**
175
407
  * Get device status via BLE
@@ -180,15 +412,49 @@ export class SwitchBotDevice extends EventEmitter {
180
412
  }
181
413
  try {
182
414
  this.logger.debug('Reading BLE status');
183
- const data = await this.bleConnection.read(this.info.mac);
415
+ const startTime = Date.now();
416
+ const data = await this.bleConnection.read(this.info.mac ?? `id:${this.info.bleId}`);
417
+ const latencyMs = Date.now() - startTime;
418
+ if (this.enableConnectionIntelligence) {
419
+ this.connectionTracker.recordSuccess('ble', latencyMs);
420
+ }
421
+ if (this.enableCircuitBreaker) {
422
+ this.circuitBreakerBLE.recordSuccess();
423
+ }
184
424
  this.info.activeConnection = 'ble';
185
- return data;
425
+ return this.normalizeBLEStatusData(data);
186
426
  }
187
427
  catch (error) {
428
+ if (this.enableConnectionIntelligence) {
429
+ this.connectionTracker.recordFailure('ble');
430
+ }
431
+ if (this.enableCircuitBreaker) {
432
+ this.circuitBreakerBLE.recordFailure();
433
+ }
188
434
  this.logger.error('Failed to read BLE status', error);
189
435
  throw error;
190
436
  }
191
437
  }
438
+ normalizeBLEStatusData(data) {
439
+ if (data && typeof data === 'object' && !Buffer.isBuffer(data)) {
440
+ return data;
441
+ }
442
+ return (this.info.bleServiceData ?? {});
443
+ }
444
+ async runWithBLELock(fn) {
445
+ const previous = this.bleOperationQueue;
446
+ let release = () => { };
447
+ this.bleOperationQueue = new Promise((resolve) => {
448
+ release = resolve;
449
+ });
450
+ await previous;
451
+ try {
452
+ return await fn();
453
+ }
454
+ finally {
455
+ release();
456
+ }
457
+ }
192
458
  /**
193
459
  * Get device status via OpenAPI
194
460
  */
@@ -198,11 +464,25 @@ export class SwitchBotDevice extends EventEmitter {
198
464
  }
199
465
  try {
200
466
  this.logger.debug('Reading API status');
467
+ const startTime = Date.now();
201
468
  const data = await this.apiClient.getStatus(this.info.id);
469
+ const latencyMs = Date.now() - startTime;
470
+ if (this.enableConnectionIntelligence) {
471
+ this.connectionTracker.recordSuccess('api', latencyMs);
472
+ }
473
+ if (this.enableCircuitBreaker) {
474
+ this.circuitBreakerAPI.recordSuccess();
475
+ }
202
476
  this.info.activeConnection = 'api';
203
477
  return data;
204
478
  }
205
479
  catch (error) {
480
+ if (this.enableConnectionIntelligence) {
481
+ this.connectionTracker.recordFailure('api');
482
+ }
483
+ if (this.enableCircuitBreaker) {
484
+ this.circuitBreakerAPI.recordFailure();
485
+ }
206
486
  this.logger.error('Failed to read API status', error);
207
487
  throw error;
208
488
  }
@@ -228,6 +508,63 @@ export class SwitchBotDevice extends EventEmitter {
228
508
  this.enableFallback = enabled;
229
509
  this.logger.info(`Fallback ${enabled ? 'enabled' : 'disabled'}`);
230
510
  }
511
+ /**
512
+ * Enable or disable connection intelligence
513
+ */
514
+ setConnectionIntelligenceEnabled(enabled) {
515
+ this.enableConnectionIntelligence = enabled;
516
+ this.logger.info(`Connection intelligence ${enabled ? 'enabled' : 'disabled'}`);
517
+ }
518
+ /**
519
+ * Enable or disable circuit breaker
520
+ */
521
+ setCircuitBreakerEnabled(enabled) {
522
+ this.enableCircuitBreaker = enabled;
523
+ this.logger.info(`Circuit breaker ${enabled ? 'enabled' : 'disabled'}`);
524
+ }
525
+ /**
526
+ * Enable or disable retry logic
527
+ */
528
+ setRetryEnabled(enabled) {
529
+ this.enableRetry = enabled;
530
+ this.logger.info(`Retry logic ${enabled ? 'enabled' : 'disabled'}`);
531
+ }
532
+ /**
533
+ * Get connection tracker for this device
534
+ */
535
+ getConnectionTracker() {
536
+ return this.connectionTracker;
537
+ }
538
+ /**
539
+ * Get circuit breaker for BLE
540
+ */
541
+ getCircuitBreakerBLE() {
542
+ return this.circuitBreakerBLE;
543
+ }
544
+ /**
545
+ * Get circuit breaker for API
546
+ */
547
+ getCircuitBreakerAPI() {
548
+ return this.circuitBreakerAPI;
549
+ }
550
+ /**
551
+ * Register a custom fallback handler
552
+ */
553
+ registerFallbackHandler(handler, options) {
554
+ return this.fallbackHandlerManager.register(handler, options);
555
+ }
556
+ /**
557
+ * Unregister a fallback handler
558
+ */
559
+ unregisterFallbackHandler(id) {
560
+ return this.fallbackHandlerManager.unregister(id);
561
+ }
562
+ /**
563
+ * Get fallback handler manager
564
+ */
565
+ getFallbackHandlerManager() {
566
+ return this.fallbackHandlerManager;
567
+ }
231
568
  }
232
569
  /**
233
570
  * Device Manager for managing multiple devices
@@ -274,7 +611,7 @@ export class DeviceManager extends EventEmitter {
274
611
  * Get all devices
275
612
  */
276
613
  list() {
277
- return Array.from(this.devices.values());
614
+ return [...this.devices.values()];
278
615
  }
279
616
  /**
280
617
  * Get devices filtered by type
@@ -312,7 +649,7 @@ export class DeviceManager extends EventEmitter {
312
649
  * Get all device IDs
313
650
  */
314
651
  getIds() {
315
- return Array.from(this.devices.keys());
652
+ return [...this.devices.keys()];
316
653
  }
317
654
  /**
318
655
  * Get devices as an object keyed by ID
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/devices/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { OpenAPIClient } from '../api.js';
2
+ import type { BLEConnection } from '../ble.js';
3
+ import type { ConnectionType, DeviceInfo } from '../types/index.js';
4
+ import type { CircuitBreakerConfig, RetryConfig } from '../utils/index.js';
5
+ import { SwitchBotDevice } from './base.js';
6
+ /**
7
+ * Base class for devices that should ignore advertisement state while connected.
8
+ * Prevents stale BLE advertisement data from overriding active connection state.
9
+ */
10
+ export declare abstract class DeviceOverrideStateDuringConnection extends SwitchBotDevice {
11
+ constructor(info: DeviceInfo, options?: {
12
+ bleConnection?: BLEConnection;
13
+ apiClient?: OpenAPIClient;
14
+ enableFallback?: boolean;
15
+ preferredConnection?: ConnectionType;
16
+ enableConnectionIntelligence?: boolean;
17
+ enableCircuitBreaker?: boolean;
18
+ enableRetry?: boolean;
19
+ retryConfig?: RetryConfig;
20
+ circuitBreakerConfig?: CircuitBreakerConfig;
21
+ logLevel?: number;
22
+ });
23
+ updateInfo(newInfo: Partial<DeviceInfo>): void;
24
+ protected normalizeBLEStatusData(data: any): Record<string, unknown>;
25
+ protected isBLEConnected(): boolean;
26
+ }
27
+ //# sourceMappingURL=device-override-state-during-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-override-state-during-connection.d.ts","sourceRoot":"","sources":["../../src/devices/device-override-state-during-connection.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C;;;GAGG;AACH,8BAAsB,mCAAoC,SAAQ,eAAe;gBAE7E,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;QACP,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,SAAS,CAAC,EAAE,aAAa,CAAA;QACzB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,mBAAmB,CAAC,EAAE,cAAc,CAAA;QACpC,4BAA4B,CAAC,EAAE,OAAO,CAAA;QACtC,oBAAoB,CAAC,EAAE,OAAO,CAAA;QAC9B,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,WAAW,CAAC,EAAE,WAAW,CAAA;QACzB,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;QAC3C,QAAQ,CAAC,EAAE,MAAM,CAAA;KACb;IAKC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;cAcpC,sBAAsB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAY7E,SAAS,CAAC,cAAc,IAAI,OAAO;CAYpC"}