解锁您的 Garmin 数据:使用自托管的 Grafana 仪表盘可视化每项指标
Source: Dev.to
快速概览 📝
本仓库提供一个 Docker 化的 Python 脚本,用于从 Garmin Connect 获取健康数据并存入 InfluxDB 数据库。随后可使用 Grafana 进行可视化,帮助用户追踪长期健康趋势并创建自定义仪表盘。
关键要点 💡
- ✅ Garmin Grafana 提供了一个简洁的 Docker 化方案,能够从 Garmin Connect 获取并本地存储所有完整的健康指标。
- ✅ 通过自托管实现数据完全自主与隐私,避免依赖第三方云服务。
- ✅ 利用 InfluxDB 与 Grafana 的强大功能构建自定义仪表盘,将 HRV、睡眠评分、Body Battery 等指标组合,获得更深入的洞察。
- ✅ 项目支持历史数据回填和自动同步,成为长期健康追踪的“设置即忘记”解决方案。
项目统计 📊
- Stars: 2,827
- Forks: 174
- Open Issues: 20
技术栈 💻
- ✅ Python
- Docker
- InfluxDB(时序存储)
- Grafana(可视化)
概述
你是否厌倦了健身追踪应用默认仪表盘的限制?如果你拥有 Garmin 设备,你一定知道这些数据价值极高,但可视化选项往往受限,且数据并未真正本地拥有。Garmin Grafana 通过开源方案解放你的健康指标,将其转化为可操作、完全可定制的洞察。
该项目是一个自托管的数据管道,封装在 Docker 容器中。其主要职责是充当 Garmin Connect 账户与私有数据库之间的安全、自动化桥梁。它会自动连接 Garmin 服务器,获取所有完整的健康指标——细粒度心率数据、详细的睡眠模式(包括 SpO₂、呼吸频率和 HRV)、压力水平以及 Body Battery 分数——并直接将这些信息写入运行在本地机器或服务器上的 InfluxDB 实例。
架构
- Docker 容器 – 负责抽取与加载(ETL)。
- InfluxDB – 存储时序数据。
- Grafana – 提供可视化层。
这种模块化设置易于部署(配合辅助脚本或 Helm/Kubernetes Chart)且易于维护。配置完成后,系统会在每次 Garmin Connect 上传后不久自动同步新数据,保持本地存储的实时性。
自定义仪表盘
将 Grafana 连接到本地 InfluxDB 实例后,官方应用的限制不复存在。你可以创建完全自定义的仪表盘,将 Garmin 从未组合过的指标放在一起,并在数月甚至数年间追踪趋势,而无需数据平均。示例包括:
- 将睡眠评分与跑步配速在六个月内进行关联分析。
- 分析 Body Battery 恢复情况并配合压力热力图。
隐私与导出
自行托管整个栈后,你可以消除将敏感健康数据共享给第三方的风险。数据还能导出为 CSV 文件,用于高级分析、与 Python 脚本集成或本地 AI 模型,真正实现数据自主并深入了解你的健身旅程。