node-switchbot 4.0.0-beta.12 → 4.0.0-beta.13

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 (189) hide show
  1. package/dist/ble.d.ts.map +1 -1
  2. package/dist/ble.js +88 -26
  3. package/dist/ble.js.map +1 -1
  4. package/dist/devices/base.d.ts +45 -0
  5. package/dist/devices/base.d.ts.map +1 -1
  6. package/dist/devices/base.js +116 -0
  7. package/dist/devices/base.js.map +1 -1
  8. package/dist/devices/wo-air-purifier.d.ts +1 -1
  9. package/dist/devices/wo-air-purifier.d.ts.map +1 -1
  10. package/dist/devices/wo-air-purifier.js +1 -2
  11. package/dist/devices/wo-air-purifier.js.map +1 -1
  12. package/dist/devices/wo-hand.d.ts +1 -1
  13. package/dist/devices/wo-hand.d.ts.map +1 -1
  14. package/dist/devices/wo-hand.js +1 -2
  15. package/dist/devices/wo-hand.js.map +1 -1
  16. package/dist/devices/wo-humi.d.ts +1 -1
  17. package/dist/devices/wo-humi.d.ts.map +1 -1
  18. package/dist/devices/wo-humi.js +5 -4
  19. package/dist/devices/wo-humi.js.map +1 -1
  20. package/dist/settings.d.ts +4 -0
  21. package/dist/settings.d.ts.map +1 -1
  22. package/dist/settings.js +7 -1
  23. package/dist/settings.js.map +1 -1
  24. package/dist/types/device.d.ts +3 -3
  25. package/dist/types/device.d.ts.map +1 -1
  26. package/docs/assets/hierarchy.js +1 -1
  27. package/docs/assets/search.js +1 -1
  28. package/docs/classes/APIError.html +2 -2
  29. package/docs/classes/APINotAvailableError.html +2 -2
  30. package/docs/classes/BLEConnection.html +10 -10
  31. package/docs/classes/BLENotAvailableError.html +2 -2
  32. package/docs/classes/BLEScanner.html +9 -9
  33. package/docs/classes/CommandFailedError.html +2 -2
  34. package/docs/classes/ConnectionTimeoutError.html +2 -2
  35. package/docs/classes/DeviceManager.html +13 -13
  36. package/docs/classes/DeviceNotFoundError.html +2 -2
  37. package/docs/classes/DeviceOverrideStateDuringConnection.html +55 -28
  38. package/docs/classes/DiscoveryError.html +2 -2
  39. package/docs/classes/OpenAPIClient.html +24 -24
  40. package/docs/classes/SequenceDevice.html +56 -29
  41. package/docs/classes/SwitchBot.html +11 -11
  42. package/docs/classes/SwitchBotDevice.html +55 -28
  43. package/docs/classes/SwitchBotError.html +2 -2
  44. package/docs/classes/ValidationError.html +2 -2
  45. package/docs/classes/WoAIHub.html +55 -28
  46. package/docs/classes/WoAirPurifier.html +53 -35
  47. package/docs/classes/WoAirPurifierPM25.html +55 -28
  48. package/docs/classes/WoAirPurifierTable.html +53 -35
  49. package/docs/classes/WoArtFrame.html +60 -39
  50. package/docs/classes/WoBlindTilt.html +62 -35
  51. package/docs/classes/WoBulb.html +60 -39
  52. package/docs/classes/WoCandleWarmerLamp.html +55 -28
  53. package/docs/classes/WoCeilingLight.html +60 -39
  54. package/docs/classes/WoCirculatorFan.html +53 -35
  55. package/docs/classes/WoClimatePanel.html +53 -35
  56. package/docs/classes/WoContact.html +55 -28
  57. package/docs/classes/WoCurtain.html +57 -36
  58. package/docs/classes/WoFloorLamp.html +60 -39
  59. package/docs/classes/WoGarageDoorOpener.html +60 -33
  60. package/docs/classes/WoHand.html +56 -38
  61. package/docs/classes/WoHub2.html +55 -28
  62. package/docs/classes/WoHub3.html +55 -28
  63. package/docs/classes/WoHubMiniMatter.html +55 -28
  64. package/docs/classes/WoHumi.html +54 -36
  65. package/docs/classes/WoHumi2.html +54 -36
  66. package/docs/classes/WoIOSensorTH.html +55 -28
  67. package/docs/classes/WoKeypad.html +55 -28
  68. package/docs/classes/WoKeypadVision.html +55 -28
  69. package/docs/classes/WoKeypadVisionPro.html +55 -28
  70. package/docs/classes/WoLeak.html +55 -28
  71. package/docs/classes/WoPanTiltCamPlus3K.html +55 -28
  72. package/docs/classes/WoPlugMiniJP.html +58 -31
  73. package/docs/classes/WoPlugMiniUS.html +58 -31
  74. package/docs/classes/WoPresence.html +55 -28
  75. package/docs/classes/WoRGBICBulb.html +62 -41
  76. package/docs/classes/WoRGBICNeonWireRopeLight.html +55 -28
  77. package/docs/classes/WoRGBICWWFloorLamp.html +62 -41
  78. package/docs/classes/WoRGBICWWStripLight.html +62 -41
  79. package/docs/classes/WoRelaySwitch1.html +60 -33
  80. package/docs/classes/WoRelaySwitch1PM.html +60 -33
  81. package/docs/classes/WoRelaySwitch2PM.html +62 -35
  82. package/docs/classes/WoRemote.html +55 -28
  83. package/docs/classes/WoRemoteWithScreen.html +55 -28
  84. package/docs/classes/WoRollerShade.html +57 -36
  85. package/docs/classes/WoSensorTH.html +55 -28
  86. package/docs/classes/WoSensorTHPlus.html +55 -28
  87. package/docs/classes/WoSensorTHPro.html +55 -28
  88. package/docs/classes/WoSensorTHProCO2.html +55 -28
  89. package/docs/classes/WoSmartLock.html +58 -31
  90. package/docs/classes/WoSmartLockLite.html +58 -31
  91. package/docs/classes/WoSmartLockPro.html +60 -33
  92. package/docs/classes/WoSmartLockProWiFi.html +60 -33
  93. package/docs/classes/WoSmartLockVision.html +58 -31
  94. package/docs/classes/WoSmartLockVisionPro.html +60 -33
  95. package/docs/classes/WoSmartThermostatRadiator.html +53 -35
  96. package/docs/classes/WoStrip.html +60 -39
  97. package/docs/classes/WoStripLight3.html +60 -39
  98. package/docs/classes/WoVacuum.html +63 -36
  99. package/docs/classes/WoVacuumK10Plus.html +63 -36
  100. package/docs/classes/WoVacuumK10Pro.html +63 -36
  101. package/docs/classes/WoVacuumK10ProCombo.html +63 -36
  102. package/docs/classes/WoVacuumK11Plus.html +63 -36
  103. package/docs/classes/WoVacuumK20.html +63 -36
  104. package/docs/classes/WoVacuumS10.html +63 -36
  105. package/docs/classes/WoVacuumS20.html +63 -36
  106. package/docs/classes/WoWaterDetector.html +55 -28
  107. package/docs/enums/LogLevel.html +2 -2
  108. package/docs/enums/SwitchBotBLEModel.html +2 -2
  109. package/docs/enums/SwitchBotBLEModelName.html +2 -2
  110. package/docs/functions/updateBaseURL.html +1 -1
  111. package/docs/hierarchy.html +1 -1
  112. package/docs/interfaces/APICommandRequest.html +2 -2
  113. package/docs/interfaces/APICommandResponse.html +2 -2
  114. package/docs/interfaces/APIDevice.html +2 -2
  115. package/docs/interfaces/APIDeviceStatus.html +2 -2
  116. package/docs/interfaces/APIErrorResponse.html +2 -2
  117. package/docs/interfaces/APIResponse.html +2 -2
  118. package/docs/interfaces/AirPurifierCommands.html +2 -2
  119. package/docs/interfaces/AirPurifierServiceData.html +14 -14
  120. package/docs/interfaces/AirPurifierStatus.html +7 -7
  121. package/docs/interfaces/BLEAdvertisement.html +2 -2
  122. package/docs/interfaces/BLEScanOptions.html +5 -5
  123. package/docs/interfaces/BLEServiceData.html +14 -14
  124. package/docs/interfaces/BlindTiltCommands.html +2 -2
  125. package/docs/interfaces/BlindTiltServiceData.html +14 -14
  126. package/docs/interfaces/BlindTiltStatus.html +6 -6
  127. package/docs/interfaces/BotCommands.html +2 -2
  128. package/docs/interfaces/BotServiceData.html +14 -14
  129. package/docs/interfaces/BotStatus.html +6 -6
  130. package/docs/interfaces/BulbCommands.html +2 -2
  131. package/docs/interfaces/BulbServiceData.html +14 -14
  132. package/docs/interfaces/BulbStatus.html +6 -6
  133. package/docs/interfaces/CeilingLightCommands.html +2 -2
  134. package/docs/interfaces/CeilingLightServiceData.html +14 -14
  135. package/docs/interfaces/CeilingLightStatus.html +6 -6
  136. package/docs/interfaces/CommandResult.html +6 -6
  137. package/docs/interfaces/ContactServiceData.html +14 -14
  138. package/docs/interfaces/ContactStatus.html +6 -6
  139. package/docs/interfaces/CurtainCommands.html +2 -2
  140. package/docs/interfaces/CurtainExtendedInfo.html +2 -2
  141. package/docs/interfaces/CurtainServiceData.html +14 -14
  142. package/docs/interfaces/CurtainStatus.html +6 -6
  143. package/docs/interfaces/DeviceInfo.html +18 -18
  144. package/docs/interfaces/DeviceListResponse.html +2 -2
  145. package/docs/interfaces/DeviceStatus.html +6 -6
  146. package/docs/interfaces/DiscoveryOptions.html +7 -7
  147. package/docs/interfaces/HubServiceData.html +14 -14
  148. package/docs/interfaces/HubStatus.html +6 -6
  149. package/docs/interfaces/HumidifierCommands.html +2 -2
  150. package/docs/interfaces/HumidifierServiceData.html +15 -15
  151. package/docs/interfaces/HumidifierStatus.html +6 -6
  152. package/docs/interfaces/KeypadStatus.html +6 -6
  153. package/docs/interfaces/LeakServiceData.html +14 -14
  154. package/docs/interfaces/LeakStatus.html +6 -6
  155. package/docs/interfaces/LockCommands.html +2 -2
  156. package/docs/interfaces/LockServiceData.html +15 -15
  157. package/docs/interfaces/LockStatus.html +6 -6
  158. package/docs/interfaces/MeterServiceData.html +14 -14
  159. package/docs/interfaces/MeterStatus.html +6 -6
  160. package/docs/interfaces/MotionServiceData.html +14 -14
  161. package/docs/interfaces/MotionStatus.html +6 -6
  162. package/docs/interfaces/PlugCommands.html +2 -2
  163. package/docs/interfaces/PlugServiceData.html +14 -14
  164. package/docs/interfaces/PlugStatus.html +6 -6
  165. package/docs/interfaces/PresenceServiceData.html +14 -14
  166. package/docs/interfaces/PresenceStatus.html +6 -6
  167. package/docs/interfaces/RelaySwitchCommands.html +2 -2
  168. package/docs/interfaces/RelaySwitchServiceData.html +14 -14
  169. package/docs/interfaces/RelaySwitchStatus.html +6 -6
  170. package/docs/interfaces/RemoteStatus.html +6 -6
  171. package/docs/interfaces/SceneListResponse.html +2 -2
  172. package/docs/interfaces/StripCommands.html +2 -2
  173. package/docs/interfaces/StripServiceData.html +14 -14
  174. package/docs/interfaces/StripStatus.html +6 -6
  175. package/docs/interfaces/SwitchBotConfig.html +15 -15
  176. package/docs/interfaces/VacuumCommands.html +2 -2
  177. package/docs/interfaces/VacuumStatus.html +6 -6
  178. package/docs/interfaces/WebhookConfig.html +2 -2
  179. package/docs/interfaces/WebhookDetails.html +2 -2
  180. package/docs/interfaces/WebhookQueryResponse.html +2 -2
  181. package/docs/interfaces/WebhookSetupResponse.html +2 -2
  182. package/docs/types/ConnectionType.html +1 -1
  183. package/docs/types/PhysicalDeviceType.html +1 -1
  184. package/docs/types/VirtualDeviceType.html +1 -1
  185. package/docs/variables/urls.html +1 -1
  186. package/package.json +1 -1
  187. package/todo/PYSWITCHBOT_COMPARISON.md +1 -5
  188. package/todo/completed.md +18 -0
  189. package/todo/todo.md +0 -5
@@ -1 +1 @@
1
- <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>urls | node-switchbot</title><meta name="description" content="Documentation for node-switchbot"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">node-switchbot</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">urls</a></li></ul><h1>Variable urls<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">urls</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">base</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">devices</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">scenes</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">webhook</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol"> = ...</span></div><div class="tsd-type-declaration"><h4>Type Declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter"><h5 id="base"><span class="tsd-kind-property">base</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5 id="devices"><span class="tsd-kind-property">devices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5 id="scenes"><span class="tsd-kind-property">scenes</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5 id="webhook"><span class="tsd-kind-property">webhook</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/OpenWonderLabs/node-switchbot/blob/3f281d53a07c320811e4cd778f65ec933f5f8d2a/src/settings.ts#L14">settings.ts:14</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">node-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>urls | node-switchbot</title><meta name="description" content="Documentation for node-switchbot"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">node-switchbot</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">urls</a></li></ul><h1>Variable urls<code class="tsd-tag">Const</code></h1></div><div class="tsd-signature"><span class="tsd-kind-variable">urls</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">base</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">devices</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">scenes</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span> <span class="tsd-kind-property">webhook</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">}</span><span class="tsd-signature-symbol"> = ...</span></div><div class="tsd-type-declaration"><h4>Type Declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter"><h5 id="base"><span class="tsd-kind-property">base</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5 id="devices"><span class="tsd-kind-property">devices</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5 id="scenes"><span class="tsd-kind-property">scenes</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li><li class="tsd-parameter"><h5 id="webhook"><span class="tsd-kind-property">webhook</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span></h5></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/OpenWonderLabs/node-switchbot/blob/ef8ea471bb88c8900c62cb94487e14a7b3fa62b9/src/settings.ts#L20">settings.ts:20</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">node-switchbot</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer></footer><div class="overlay"></div></body></html>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "node-switchbot",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.12",
4
+ "version": "4.0.0-beta.13",
5
5
  "description": "The node-switchbot is a Node.js module which allows you to control your Switchbot Devices through Bluetooth (BLE) with automatic OpenAPI fallback.",
6
6
  "author": "OpenWonderLabs (https://github.com/OpenWonderLabs)",
7
7
  "license": "MIT",
@@ -418,14 +418,10 @@ Comprehensive comparison between pySwitchBot (Python) and node-switchbot (TypeSc
418
418
  - `sendCommandSequence()` - Send series, must all succeed
419
419
  - Used for Curtain 3 and newer devices
420
420
 
421
- - [ ] **Task 21.4**: Implement basic settings command
421
+ [ ] **Task 21.4**: Implement basic settings command
422
422
  - `getBasicInfo()` - Universal settings retrieval
423
423
  - Returns: battery, firmware, device-specific settings
424
424
  - Command: `0x57 0x02`
425
-
426
- - [ ] **Task 21.5**: Add mode setting commands
427
- - Universal mode setting command: `0x57 0x03`
428
- - Extended settings command
429
425
  - Per-device mode enums
430
426
 
431
427
  ### Low Priority
package/todo/completed.md CHANGED
@@ -114,6 +114,24 @@
114
114
  - Validated by build, test, and lint cycle.
115
115
  - See PR/commit: Task 20.5 implementation, March 7, 2026.
116
116
 
117
+ ### Task 21.3: Add multi-command support ✅
118
+ **Completed: March 7, 2026**
119
+ **Implementation Details:**
120
+ - Universal methods `sendMultipleCommands()` and `sendCommandSequence()` implemented in base device class.
121
+ - Used for Curtain 3, bulbs, strips, and other multi-step devices.
122
+ - Methods allow sending a series of commands, with sequence/fallback logic as required by the roadmap.
123
+ - Validated by build, test, and lint cycle.
124
+ - See PR/commit: Task 21.3 implementation, March 7, 2026.
125
+
126
+ ### Task 21.4: Implement basic settings command (getBasicInfo) ✅
127
+ **Completed: March 7, 2026**
128
+ **Implementation Details:**
129
+ - Universal method `getBasicInfo()` implemented in base device class.
130
+ - Uses BLE command [0x57, 0x02] or API fallback.
131
+ - Added full JSDoc documentation and a dedicated test file for BLE, API, and error cases.
132
+ - Validated by build, test, and lint cycle.
133
+ - See PR/commit: Task 21.4 implementation, March 7, 2026.
134
+
117
135
  # Completed Tasks
118
136
 
119
137
  Track completed implementation tasks from the pySwitchBot comparison roadmap.
package/todo/todo.md CHANGED
@@ -144,11 +144,6 @@ Source: [PYSWITCHBOT_COMPARISON.md](./PYSWITCHBOT_COMPARISON.md)
144
144
  - `sendCommandSequence()` - Send series, must all succeed
145
145
  - Used for Curtain 3 and newer devices
146
146
 
147
- - [ ] **Task 21.4**: Implement basic settings command
148
- - `getBasicInfo()` - Universal settings retrieval
149
- - Returns: battery, firmware, device-specific settings
150
- - Command: `0x57 0x02`
151
-
152
147
  - [ ] **Task 21.5**: Add mode setting commands
153
148
  - Universal mode setting command: `0x57 0x03`
154
149
  - Extended settings command