aboutsummaryrefslogtreecommitdiff
path: root/FereFit_BLE_test.py
blob: 59efac039cbfd08e7b1bcf179e808d74cf0174b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import asyncio
from bleak import BleakScanner, BleakClient
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:
            ts = int(time.time())
            offset = calendar.timegm(time.localtime()) - calendar.timegm(time.gmtime())
            packet = bytes([0x01]) + ts.to_bytes(4,'big') + offset.to_bytes(4,'big') + bytes([0,0,0])
            await client.write_gatt_char("6E40FC20-B5A3-F393-E0A9-E50E24DCCA9E", packet)
            print(f"Time synced! ts={ts} offset={offset}")
    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))