aboutsummaryrefslogtreecommitdiff
path: root/FereFit_syncTime_BLE.py
diff options
context:
space:
mode:
authorArslaan Pathan <[email protected]>2026-03-29 15:02:58 +1300
committerArslaan Pathan <[email protected]>2026-03-29 15:02:58 +1300
commit392a6c6abbe5d9267f7a9c6c55fd098d94f00281 (patch)
tree9a867e515108195aff27cd855d188b9f904a9c0a /FereFit_syncTime_BLE.py
parent6f1e4aa35cb206c066e8395489c3d514b8079375 (diff)
downloadzwzn-freefit-re-392a6c6abbe5d9267f7a9c6c55fd098d94f00281.tar.xz
zwzn-freefit-re-392a6c6abbe5d9267f7a9c6c55fd098d94f00281.zip
Improve syncTime BLE and others
Diffstat (limited to 'FereFit_syncTime_BLE.py')
-rw-r--r--FereFit_syncTime_BLE.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/FereFit_syncTime_BLE.py b/FereFit_syncTime_BLE.py
new file mode 100644
index 0000000..0076127
--- /dev/null
+++ b/FereFit_syncTime_BLE.py
@@ -0,0 +1,33 @@
+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:
+ 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))