diff options
| -rw-r--r-- | FereFit_switchFindBand_BLE.py | 35 | ||||
| -rw-r--r-- | README.md | 10 |
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)) @@ -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) |
