Browse Source

Add usage example for WoCurtain (Curtain 3) (#313)

* Add usage example for WoCurtain (Curtain 3)

* chore(pre-commit.ci): auto fixes

* Refactor BLE address as variable and fix formatting

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Filip Jaksic <filip.git@tmp.jkscx.com>
Filip Jaksic 1 week ago
parent
commit
837c3f3134
1 changed files with 34 additions and 3 deletions
  1. 34 3
      README.md

+ 34 - 3
README.md

@@ -2,7 +2,7 @@
 
 Library to control Switchbot IoT devices https://www.switch-bot.com/bot
 
-## Obtaining locks encryption key
+## Obtaining encryption key for Switchbot Locks
 
 Using the script `scripts/get_encryption_key.py` you can manually obtain locks encryption key.
 
@@ -17,9 +17,9 @@ Encryption key: xxxxxxxxxxxxxxxx
 Where `MAC` is MAC address of the lock and `USERNAME` is your SwitchBot account username, after that script will ask for your password.
 If authentication succeeds then script should output your key id and encryption key.
 
-Examples:
+## Examples:
 
-- WoLock
+#### WoLock
 
 ```python
 import asyncio
@@ -33,5 +33,36 @@ async def main():
 
 
 asyncio.run(main())
+```
+
+#### WoCurtain (Curtain 3)
+
+```python
+import asyncio
+from pprint import pprint
+from switchbot import GetSwitchbotDevices
+from switchbot.devices import curtain
+
+
+async def main():
+    # get the BLE advertisement data of all switchbot devices in the vicinity
+    advertisement_data = await GetSwitchbotDevices().discover()
+
+    for i in advertisement_data.values():
+        pprint(i)
+        print()  # print newline so that devices' data is separated visually
+
+    # find your device's BLE address by inspecting the above printed debug logs, example below
+    ble_address = "9915077C-C6FD-5FF6-27D3-45087898790B"
+    # get the BLE device (via its address) and construct a curtain device
+    ble_device = advertisement_data[ble_address].device
+    curtain_device = curtain.SwitchbotCurtain(ble_device, reverse_mode=False)
+
+    pprint(await curtain_device.get_device_data())
+    pprint(await curtain_device.get_basic_info())
+    await curtain_device.set_position(100)
+
 
+if __name__ == "__main__":
+    asyncio.run(main())
 ```