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が不明なので、そちらも解析出来たら公開することにする。
1回だけ更新可能なOnceCellでフォルダ名をダイアログから取得 rust tauri vue
前回ダイアログを扱ったがフォルダ名をグローバルに書き出す方法がわからなかったので、最近メジャーなOneCellを使った方法で、フォルダ名をグローバルにコピーする方法をチェック。
ただし…、1回だけ更新可能だと使いずらいので別の方法を探す必要あり。
メニューとOpen File Dialogについて tauri rust vue
Menuのやり方とOpen File Dialogの使い方
ダイアログ(1:初歩) tauri vue rust
Dialogの初歩
tauriではバックエンド側でダイアログを出すとのこと。
今回はAlertと同程度のメッセージ出力
tauri vue の初歩 - rust
App.vueとGreet.vueの関連
紐づけ①
<script setup>
import Greet from "./components/Greet.vue";
</script>
紐づけ②
<Greet />
にて、Greet.vueのtemplateを読み込むようになる。
文字入力部分について、vueのv-modelという仕組みを使う。
await invokeにてrustのコードを読み込む
tauri (1:初歩)- RUST関連の備忘録
アプリケーションの作成
yarn create アプリケーション名
そのあと、cdすること。
実行
yarn tauri dev
配布用にコンパイル
yarn tauri build
セキュリティ対策ソフトに例外設定していても何故か引っかかるため、何度もやり直し…。