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.
- package/dist/ble.d.ts.map +1 -1
- package/dist/ble.js +88 -26
- package/dist/ble.js.map +1 -1
- package/dist/devices/base.d.ts +45 -0
- package/dist/devices/base.d.ts.map +1 -1
- package/dist/devices/base.js +116 -0
- package/dist/devices/base.js.map +1 -1
- package/dist/devices/wo-air-purifier.d.ts +1 -1
- package/dist/devices/wo-air-purifier.d.ts.map +1 -1
- package/dist/devices/wo-air-purifier.js +1 -2
- package/dist/devices/wo-air-purifier.js.map +1 -1
- package/dist/devices/wo-hand.d.ts +1 -1
- package/dist/devices/wo-hand.d.ts.map +1 -1
- package/dist/devices/wo-hand.js +1 -2
- package/dist/devices/wo-hand.js.map +1 -1
- package/dist/devices/wo-humi.d.ts +1 -1
- package/dist/devices/wo-humi.d.ts.map +1 -1
- package/dist/devices/wo-humi.js +5 -4
- package/dist/devices/wo-humi.js.map +1 -1
- package/dist/settings.d.ts +4 -0
- package/dist/settings.d.ts.map +1 -1
- package/dist/settings.js +7 -1
- package/dist/settings.js.map +1 -1
- package/dist/types/device.d.ts +3 -3
- package/dist/types/device.d.ts.map +1 -1
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/APIError.html +2 -2
- package/docs/classes/APINotAvailableError.html +2 -2
- package/docs/classes/BLEConnection.html +10 -10
- package/docs/classes/BLENotAvailableError.html +2 -2
- package/docs/classes/BLEScanner.html +9 -9
- package/docs/classes/CommandFailedError.html +2 -2
- package/docs/classes/ConnectionTimeoutError.html +2 -2
- package/docs/classes/DeviceManager.html +13 -13
- package/docs/classes/DeviceNotFoundError.html +2 -2
- package/docs/classes/DeviceOverrideStateDuringConnection.html +55 -28
- package/docs/classes/DiscoveryError.html +2 -2
- package/docs/classes/OpenAPIClient.html +24 -24
- package/docs/classes/SequenceDevice.html +56 -29
- package/docs/classes/SwitchBot.html +11 -11
- package/docs/classes/SwitchBotDevice.html +55 -28
- package/docs/classes/SwitchBotError.html +2 -2
- package/docs/classes/ValidationError.html +2 -2
- package/docs/classes/WoAIHub.html +55 -28
- package/docs/classes/WoAirPurifier.html +53 -35
- package/docs/classes/WoAirPurifierPM25.html +55 -28
- package/docs/classes/WoAirPurifierTable.html +53 -35
- package/docs/classes/WoArtFrame.html +60 -39
- package/docs/classes/WoBlindTilt.html +62 -35
- package/docs/classes/WoBulb.html +60 -39
- package/docs/classes/WoCandleWarmerLamp.html +55 -28
- package/docs/classes/WoCeilingLight.html +60 -39
- package/docs/classes/WoCirculatorFan.html +53 -35
- package/docs/classes/WoClimatePanel.html +53 -35
- package/docs/classes/WoContact.html +55 -28
- package/docs/classes/WoCurtain.html +57 -36
- package/docs/classes/WoFloorLamp.html +60 -39
- package/docs/classes/WoGarageDoorOpener.html +60 -33
- package/docs/classes/WoHand.html +56 -38
- package/docs/classes/WoHub2.html +55 -28
- package/docs/classes/WoHub3.html +55 -28
- package/docs/classes/WoHubMiniMatter.html +55 -28
- package/docs/classes/WoHumi.html +54 -36
- package/docs/classes/WoHumi2.html +54 -36
- package/docs/classes/WoIOSensorTH.html +55 -28
- package/docs/classes/WoKeypad.html +55 -28
- package/docs/classes/WoKeypadVision.html +55 -28
- package/docs/classes/WoKeypadVisionPro.html +55 -28
- package/docs/classes/WoLeak.html +55 -28
- package/docs/classes/WoPanTiltCamPlus3K.html +55 -28
- package/docs/classes/WoPlugMiniJP.html +58 -31
- package/docs/classes/WoPlugMiniUS.html +58 -31
- package/docs/classes/WoPresence.html +55 -28
- package/docs/classes/WoRGBICBulb.html +62 -41
- package/docs/classes/WoRGBICNeonWireRopeLight.html +55 -28
- package/docs/classes/WoRGBICWWFloorLamp.html +62 -41
- package/docs/classes/WoRGBICWWStripLight.html +62 -41
- package/docs/classes/WoRelaySwitch1.html +60 -33
- package/docs/classes/WoRelaySwitch1PM.html +60 -33
- package/docs/classes/WoRelaySwitch2PM.html +62 -35
- package/docs/classes/WoRemote.html +55 -28
- package/docs/classes/WoRemoteWithScreen.html +55 -28
- package/docs/classes/WoRollerShade.html +57 -36
- package/docs/classes/WoSensorTH.html +55 -28
- package/docs/classes/WoSensorTHPlus.html +55 -28
- package/docs/classes/WoSensorTHPro.html +55 -28
- package/docs/classes/WoSensorTHProCO2.html +55 -28
- package/docs/classes/WoSmartLock.html +58 -31
- package/docs/classes/WoSmartLockLite.html +58 -31
- package/docs/classes/WoSmartLockPro.html +60 -33
- package/docs/classes/WoSmartLockProWiFi.html +60 -33
- package/docs/classes/WoSmartLockVision.html +58 -31
- package/docs/classes/WoSmartLockVisionPro.html +60 -33
- package/docs/classes/WoSmartThermostatRadiator.html +53 -35
- package/docs/classes/WoStrip.html +60 -39
- package/docs/classes/WoStripLight3.html +60 -39
- package/docs/classes/WoVacuum.html +63 -36
- package/docs/classes/WoVacuumK10Plus.html +63 -36
- package/docs/classes/WoVacuumK10Pro.html +63 -36
- package/docs/classes/WoVacuumK10ProCombo.html +63 -36
- package/docs/classes/WoVacuumK11Plus.html +63 -36
- package/docs/classes/WoVacuumK20.html +63 -36
- package/docs/classes/WoVacuumS10.html +63 -36
- package/docs/classes/WoVacuumS20.html +63 -36
- package/docs/classes/WoWaterDetector.html +55 -28
- package/docs/enums/LogLevel.html +2 -2
- package/docs/enums/SwitchBotBLEModel.html +2 -2
- package/docs/enums/SwitchBotBLEModelName.html +2 -2
- package/docs/functions/updateBaseURL.html +1 -1
- package/docs/hierarchy.html +1 -1
- package/docs/interfaces/APICommandRequest.html +2 -2
- package/docs/interfaces/APICommandResponse.html +2 -2
- package/docs/interfaces/APIDevice.html +2 -2
- package/docs/interfaces/APIDeviceStatus.html +2 -2
- package/docs/interfaces/APIErrorResponse.html +2 -2
- package/docs/interfaces/APIResponse.html +2 -2
- package/docs/interfaces/AirPurifierCommands.html +2 -2
- package/docs/interfaces/AirPurifierServiceData.html +14 -14
- package/docs/interfaces/AirPurifierStatus.html +7 -7
- package/docs/interfaces/BLEAdvertisement.html +2 -2
- package/docs/interfaces/BLEScanOptions.html +5 -5
- package/docs/interfaces/BLEServiceData.html +14 -14
- package/docs/interfaces/BlindTiltCommands.html +2 -2
- package/docs/interfaces/BlindTiltServiceData.html +14 -14
- package/docs/interfaces/BlindTiltStatus.html +6 -6
- package/docs/interfaces/BotCommands.html +2 -2
- package/docs/interfaces/BotServiceData.html +14 -14
- package/docs/interfaces/BotStatus.html +6 -6
- package/docs/interfaces/BulbCommands.html +2 -2
- package/docs/interfaces/BulbServiceData.html +14 -14
- package/docs/interfaces/BulbStatus.html +6 -6
- package/docs/interfaces/CeilingLightCommands.html +2 -2
- package/docs/interfaces/CeilingLightServiceData.html +14 -14
- package/docs/interfaces/CeilingLightStatus.html +6 -6
- package/docs/interfaces/CommandResult.html +6 -6
- package/docs/interfaces/ContactServiceData.html +14 -14
- package/docs/interfaces/ContactStatus.html +6 -6
- package/docs/interfaces/CurtainCommands.html +2 -2
- package/docs/interfaces/CurtainExtendedInfo.html +2 -2
- package/docs/interfaces/CurtainServiceData.html +14 -14
- package/docs/interfaces/CurtainStatus.html +6 -6
- package/docs/interfaces/DeviceInfo.html +18 -18
- package/docs/interfaces/DeviceListResponse.html +2 -2
- package/docs/interfaces/DeviceStatus.html +6 -6
- package/docs/interfaces/DiscoveryOptions.html +7 -7
- package/docs/interfaces/HubServiceData.html +14 -14
- package/docs/interfaces/HubStatus.html +6 -6
- package/docs/interfaces/HumidifierCommands.html +2 -2
- package/docs/interfaces/HumidifierServiceData.html +15 -15
- package/docs/interfaces/HumidifierStatus.html +6 -6
- package/docs/interfaces/KeypadStatus.html +6 -6
- package/docs/interfaces/LeakServiceData.html +14 -14
- package/docs/interfaces/LeakStatus.html +6 -6
- package/docs/interfaces/LockCommands.html +2 -2
- package/docs/interfaces/LockServiceData.html +15 -15
- package/docs/interfaces/LockStatus.html +6 -6
- package/docs/interfaces/MeterServiceData.html +14 -14
- package/docs/interfaces/MeterStatus.html +6 -6
- package/docs/interfaces/MotionServiceData.html +14 -14
- package/docs/interfaces/MotionStatus.html +6 -6
- package/docs/interfaces/PlugCommands.html +2 -2
- package/docs/interfaces/PlugServiceData.html +14 -14
- package/docs/interfaces/PlugStatus.html +6 -6
- package/docs/interfaces/PresenceServiceData.html +14 -14
- package/docs/interfaces/PresenceStatus.html +6 -6
- package/docs/interfaces/RelaySwitchCommands.html +2 -2
- package/docs/interfaces/RelaySwitchServiceData.html +14 -14
- package/docs/interfaces/RelaySwitchStatus.html +6 -6
- package/docs/interfaces/RemoteStatus.html +6 -6
- package/docs/interfaces/SceneListResponse.html +2 -2
- package/docs/interfaces/StripCommands.html +2 -2
- package/docs/interfaces/StripServiceData.html +14 -14
- package/docs/interfaces/StripStatus.html +6 -6
- package/docs/interfaces/SwitchBotConfig.html +15 -15
- package/docs/interfaces/VacuumCommands.html +2 -2
- package/docs/interfaces/VacuumStatus.html +6 -6
- package/docs/interfaces/WebhookConfig.html +2 -2
- package/docs/interfaces/WebhookDetails.html +2 -2
- package/docs/interfaces/WebhookQueryResponse.html +2 -2
- package/docs/interfaces/WebhookSetupResponse.html +2 -2
- package/docs/types/ConnectionType.html +1 -1
- package/docs/types/PhysicalDeviceType.html +1 -1
- package/docs/types/VirtualDeviceType.html +1 -1
- package/docs/variables/urls.html +1 -1
- package/package.json +1 -1
- package/todo/PYSWITCHBOT_COMPARISON.md +1 -5
- package/todo/completed.md +18 -0
- package/todo/todo.md +0 -5
package/docs/variables/urls.html
CHANGED
|
@@ -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/
|
|
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.
|
|
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
|
-
|
|
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
|