2 ポイント 投稿者 GN⁺ 2025-02-04 | 1件のコメント | WhatsAppで共有
  • 健康データをSQLiteデータベースとして解析・操作するPythonスクリプト
  • Garmin ConnectまたはGarminウォッチ、FitBit CSV、MS Health CSVファイルからデータをダウンロードして解析し、Jupyterノートブックを使ってSqliteデータベース内のデータを分析

機能

  • Garmin Connectの「Daily Summary」ページから、1日を通じた心拍数、アクティビティ、上昇/下降、ストレス、強度分などのデータを自動でダウンロードして取り込む
  • 睡眠、体重、安静時心拍数データをGarmin Connectから抽出してJSONファイルとして保存し、データベースに取り込む
  • Garmin Connectからアクティビティファイルをダウンロードして取り込む。すべてのアクティビティのサマリーテーブルと、一部アクティビティ種別の詳細データを含む
  • 日次、週次、月次、年次のサマリーを含むテーブルにデータを要約する
  • コマンドラインまたはJupyterノートブックを使ってデータをグラフ表示する
  • ダウンロードしたJSONおよびFITファイルを保存しておくことで、Garmin Connectに再接続したりデータを再ダウンロードしたりせずにデータベースを再構築できる
  • アクティビティをTCXファイルとしてエクスポートできる

使い方

リリース

  • GarminDbはPyPIでホストされている。Python 3.xが必要。ターミナルでpip install garmindbを実行して最新リリースをインストールする
  • GarminConnectConfig.json.example~/.GarminDb/GarminConnectConfig.jsonにコピーし、Garmin Connectのユーザー名とパスワードを追加して、データの開始日を調整する
  • すべてのデータをダウンロードしてデータベースを作成するには、garmindb_cli.py --all --download --import --analyzeを実行する
  • 最新データをダウンロードして取り込み、データベースを段階的に更新するには、garmindb_cli.py --all --download --import --analyze --latestを実行する
  • データベースファイルをバックアップするには、ときどきgarmindb_cli.py --backupを実行する

ソースから

  • SSHクローン方式を使ってGarminDBリポジトリをGitクローンする。サブモジュールもSSHを使う必要がある
  • クローンしたツリーでmake setupを実行し、データ処理の準備を行う
  • GarminConnectConfig.json.example~/.GarminDb/GarminConnectConfig.jsonにコピーし、ユーザー名とパスワードを追加して開始日を調整する
  • make create_dbsを一度実行して、データを取り込んで処理する
  • すべてのローカルデータを最新の状態に保つため、定期的にmakeコマンドを実行する

Jupyterノートブック

  • データベース内のデータを分析するためのJupyterノートブックは、ソースツリーの「Jupyter」ディレクトリにある

プラグイン

  • プラグインにより、ユーザーはデータベースで処理・保存するデータ種別を拡張できる。GarminDbには、サードパーティ製Connect IQアプリやデータフィールドを処理するための複数のプラグインがすでに用意されている

1件のコメント

 
GN⁺ 2025-02-04
Hacker Newsのコメント
  • Garth を使って認証するアプリには注意が必要。Garmin との統合は難しい

    • Garmin の API と SDK は使いにくい
    • Garmin Connect からデータを FIT ファイルとしてエクスポートする方法がある
    • Python と Go のオープンソースライブラリで FIT ファイルを読み取り、解析できる
  • デバイスから現在のデータを取得する方法がある

    • デバイスをコンピュータに接続してファイルシステムとしてマウントし、.FIT ファイルを取得できる
  • Intervals を使って Garmin と Strava 関連のデータを分析するのは有用

    • 特にローイング関連のメトリクスを生成できるのが良い
  • Garmin はスマートフォンアプリに依存するのではなく、データをより適切に管理できるハードウェアを提供すべき

    • API へのアクセスが難しいだけでなく、コミュニティの意見も聞いていない
    • 機材なしでワークアウトをフィルタリングできる機能が必要
  • Garmin の SDK は古く、データアクセスも制限されている

    • FIT ファイル形式は限られたアプリでしかサポートされていない
  • データアクセスがより優れたフィットネスウォッチが必要

    • リアルタイムの健康情報にアクセスできる時計が必要
  • 新しい Garmin Vivoactive5 を購入し、Garmin の API は最適とは言えないが満足している

    • Apple Watch Series 10 も検討したが、バッテリー寿命と価格のため見送った
    • ハック可能なオープンな時計が必要で、Pebble の復活がこの空白を埋めるかもしれない