python BLEにて Zwift STEERINGに接続し、エアロバイクのハンドルのデータを取得する方法
エアロバイクのデータをPythonで取得する方法。
Zwiftはペダル部分と、ハンドル部分で違うBluetoothのデバイスになっている。
今回はハンドル側のデータ取得について。
STEERINGというデバイスをペアリングしてハンドルのデータを取得する。
また、実機を持っていないのでESP32で自作する。
下記のURLを参照して作成可能。
github.com
で、python側は下記のようなコードにてハンドルの角度が取得できる。
import asyncio from bleak import BleakClient import struct address = "E0:5A:1B:60:08:C6" UUID = "347b0030-7635-408b-8918-8ff3949ce592" # STEERING_ANGLE_CHAR_UUID notify async def run(address, loop): async with BleakClient(address, loop=loop) as client: x = await client.is_connected() print("Connected: {0}".format(x)) for i in range(100): y = await client.read_gatt_char(UUID) print(struct.unpack('<f', y)[0]) loop = asyncio.get_event_loop() loop.run_until_complete(run(address, loop))
BluetoothのBLE機能は今回初めて使ったけど対象のUUIDが判れば簡単ということが分かった。
本体側はUUIDが不明なので、そちらも解析出来たら公開することにする。