体重計に乗るだけで終わらせたい。Eufy→Garmin自動連携を組んだ話

Data & Tech

体重の記録は簡単なはずだった。乗る、数字を見る、どこかに書く。この「どこかに書く」で毎回止まる。Eufyの体重計は自社アプリには記録してくれるが、私のトレーニングデータが集まっているのはGarmin Connectで、両者は公式には繋がっていない。アプリを開いて数字を見て、Garminに手で転記する。10秒の作業を、気づけば1週間分ためている。

体重を軽視しているわけではない。むしろ逆で、FTP229Wの私にとって体重82kgは分母だ。W/kgにすると2.79。ヒルクライムでもロングのペーシングでも、この分母が動けば計算が全部動く。重要だと分かっている数字ほど、記録が途切れると気持ち悪い。気持ち悪いのに、手が動かない。

一時はGarmin純正のIndex S2(3万円超)への買い替えも考えた。結論から言うと、買わずに済んだ。いまのEufyのまま、無料で自動連携が組めた。

先に嘘を消す

自動化の前に、既存データの掃除が必要だった。Stravaの体重欄には78kgと入っていた。いつ入れたのか覚えていない、4kg軽い数字だ。W/kgにして0.15の差。この数字を基準に計算された指標は、全部ずれていたことになる。自動化とは、手入力の嘘をこれ以上増やさない仕組みでもある。

構成の全体像

使うのはeufy-syncというPython製のCLIツール。EufyLifeアプリがクラウドに上げた計測データを取得して、Garmin Connect(とStrava)に書き込んでくれる。体重だけでなく、体脂肪率・筋肉量・骨量・水分量・基礎代謝までまとめて送られる。

データの流れはこうなる。

体重計に乗る → EufyLifeアプリがデータを吸い上げる → 常時起動のMacに置いたeufy-syncが4時間おきにクラウドから取得 → Garmin ConnectとStravaへ自動転送。

前提条件は三つ。macOSのマシンが常時(または高頻度で)起動していること、Python 3.9以上が動くこと、EufyLifeアプリ側に計測データが上がっていること。私は24時間稼働のMac miniに置いたが、毎日開くMacBookでも実用上は困らないはずだ。

セットアップ手順

1. pipxを入れる

eufy-syncはpipx経由で入れる。私はここで最初につまずいた。

zsh: command not found: pipx

pipx自体が入っていなかった。Homebrewから順番に。

brew install pipx
pipx ensurepath

ensurepathの後は、一度ターミナルを閉じて開き直す。PATHが反映されないと次のコマンドがまた「command not found」になる。

2. eufy-syncのインストールと初期設定

pipx install eufy-sync
eufy-sync

初回実行で対話式セットアップが始まる。同期先を聞かれるので、GarminとStravaの両方を選んだ。Stravaの体重欄も自動更新されるようにしておけば、冒頭に書いた「78kg問題」が構造的に再発しなくなる。

Garminのログインは、Chromiumのウィンドウが自動で開いて通常のブラウザログインをする方式だった。Garminが2026年3月にログイン周りのボット対策を強化した影響らしい。認証トークンはキーチェーンに保存され、約1年は自動更新されるとのことなので、一度通せば当分は触らなくていい。

3. Strava側のAPIアプリ作成

Stravaを同期先に選ぶと、Client IDとClient Secretを聞かれる。これはStravaのログイン情報ではなく、Strava側で自分用のAPIアプリを作ると発行される番号だ。

手順は、ブラウザで strava.com/settings/api を開き(Appleでサインインしている場合もそのままログインできる)、作成フォームに入力する。ポイントは二つ。アプリ名に「Strava」という単語は使えないこと。そしてAuthorization Callback Domainには localhost と入れること。作成すると表示されるClient IDとClient Secretを、eufy-syncの対話画面に入力すれば通る。

4. 自動実行の登録

eufy-sync --install-agent

これで4時間おきの自動同期がlaunchdに登録される。以後は何もしなくていい。状態を見たいときは:

eufy-sync --status

4時間おきという設計

4時間という間隔に深い理由はない。体重計に乗る時間が朝だったり夜だったりと不定なので、1日1回の実行だとタイミングを外す。かといって毎分ポーリングする必要もない。乗ってから遅くとも4時間以内にGarminへ反映されていれば、運用上は「自動」と呼んで差し支えない。

仕組みを組むのに、調査とつまずきも含めて半日かかった。手で転記すれば10秒だったものにだ。この投資が回収できるのかは計算していない。ただ、10秒を毎日払い続ける自分を信用できなかったから、半日を一度払った。いまは体重計に乗るだけで、数時間後にはGarminに数字が入っている。1週間分の未記入をまとめて思い出す作業は、もうやっていない。

コメント

タイトルとURLをコピーしました