aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FereFit_switchFindBand_BLE.py35
-rw-r--r--README.md10
2 files changed, 45 insertions, 0 deletions
diff --git a/FereFit_switchFindBand_BLE.py b/FereFit_switchFindBand_BLE.py
new file mode 100644
index 0000000..065cbb6
--- /dev/null
+++ b/FereFit_switchFindBand_BLE.py
@@ -0,0 +1,35 @@
+import asyncio
+import sys
+try:
+ from bleak import BleakScanner, BleakClient
+except ModuleNotFoundError:
+ print("Error importing bleak, are you sure you installed it?")
+ print("Try running the following command: \"pip3 install bleak\"")
+ print("If that fails, try this: \"pip3 install bleak --break-system-packages\"")
+ sys.exit(1)
+import time, calendar
+
+async def sync(device_name: str):
+ print(f"Scanning for {device_name}...")
+ device = await BleakScanner.find_device_by_name(device_name, timeout=10)
+ if not device:
+ print("Watch not found!")
+ return
+ print(f"Found at {device.address}")
+ try:
+ async with BleakClient(device) as client:
+ packet = bytes([0x51, 0x01])
+ await client.write_gatt_char("6E40FC20-B5A3-F393-E0A9-E50E24DCCA9E", packet)
+ print("Vibrating, waiting 5 seconds then stopping vibration")
+ await asyncio.sleep(5)
+ packet = bytes([0x51, 0x00])
+ await client.write_gatt_char("6E40FC20-B5A3-F393-E0A9-E50E24DCCA9E", packet)
+ print("Stopped vibrating")
+ except Exception as e:
+ print(f"Failed: {e}")
+
+if __name__ == "__main__":
+ watch_name = input("Enter watch name shown in BLE discovery (default: Watch ULTRA): ")
+ if watch_name == "":
+ watch_name = "Watch ULTRA"
+ asyncio.run(sync(watch_name))
diff --git a/README.md b/README.md
index f02b841..d58ec3d 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,16 @@ byte[11] = 0x01 if traditional Chinese, else 0x00
Response: 0x81 0x00 (success, notify/6E40FC21)
+### switchFindBand (vibrate/find watch)
+
+Find band packet structure (write/6E40FC20)
+```
+byte[0] = 0x51 (command)
+byte[1] = 0x01 to start vibrating, else 0x00
+```
+
+Response: 0xD1 0x01 for vibrating, else 0xD1 0x00 (6E40FC21)
+
### enterMakeDial (watch face)
Watch face header packet (write/6E40FC20)