Garmin Connect Skill
Sync all your Garmin fitness data to Clawdbot:
- - 🚶 Daily Activity: Steps, heart rate, calories, active minutes, distance
- 😴 Sleep: Duration, quality, deep/REM/light sleep breakdown
- 🏋️ Workouts: Recent activities with distance, duration, calories, heart rate
- ⏱️ Real-time sync: Every 5 minutes via cron
Quick Start
1. Install Dependencies
CODEBLOCK0
2. OAuth Authentication (One-time)
CODEBLOCK1
This saves your OAuth session to ~/.garth/session.json — fully local and secure.
3. Test Sync
CODEBLOCK2
You should see JSON output with today's stats.
4. Set Up 5-Minute Cron
Add to your crontab:
CODEBLOCK3
Or manually:
CODEBLOCK4
5. Use in Clawdbot
Import and use in your scripts:
CODEBLOCK5
Features
✅ OAuth-based (secure, no password storage)
✅ All metrics: activity, sleep, workouts
✅ Local caching (fast access)
✅ Cron-friendly (5-minute intervals)
✅ Easy Clawdbot integration
✅ Multi-user support
Data Captured
Daily Activity (summary)
- -
steps: Daily step count - INLINECODE3 : Resting heart rate (bpm)
- INLINECODE4 : Total calories burned
- INLINECODE5 : Intensity minutes
- INLINECODE6 : Distance traveled
Sleep (sleep)
- -
duration_hours: Total sleep time - INLINECODE9 : Sleep in minutes
- INLINECODE10 : Sleep quality score (0-100)
- INLINECODE11 : Deep sleep duration
- INLINECODE12 : REM sleep duration
- INLINECODE13 : Light sleep duration
- INLINECODE14 : Time awake during sleep
Workouts (workouts)
For each recent workout:
- -
type: Activity type (Running, Cycling, etc.) - INLINECODE17 : Activity name
- INLINECODE18 : Distance traveled
- INLINECODE19 : Duration of activity
- INLINECODE20 : Calories burned
- INLINECODE21 : Average heart rate
- INLINECODE22 : Max heart rate
Cache Location
By default, data is cached at: INLINECODE23
Customize with:
CODEBLOCK6
Files
| File | Purpose |
|---|
| INLINECODE24 | OAuth setup (run once) |
| INLINECODE25 |
Main sync logic (run every 5 min) |
|
garmin-formatter.py | Format data for display |
|
garmin-cron.sh | Cron wrapper script |
|
requirements.txt | Python dependencies |
Troubleshooting
OAuth authentication fails
- - Check email/password
- Disable 2FA on Garmin account (or use app password)
- Garmin servers might be rate-limiting — wait 5 minutes
No data appears
- 1. Sync your Garmin device with the Garmin Connect app
- Wait 2-3 minutes for data to sync
- Check that data appears in Garmin Connect web/app
- Then run
garmin-sync.py again
Permission denied on cron
CODEBLOCK7
Cache file not found
Run garmin-sync.py at least once to create cache:
CODEBLOCK8
Usage Examples
CODEBLOCK9
License
MIT — Use, fork, modify freely.
Made for
Clawdbot | Available on
ClawdHub
Garmin Connect 技能
将所有 Garmin 健身数据同步到 Clawdbot:
- - 🚶 日常活动:步数、心率、卡路里、活跃分钟数、距离
- 😴 睡眠:时长、质量、深度/REM/浅层睡眠分解
- 🏋️ 锻炼:近期活动(含距离、时长、卡路里、心率)
- ⏱️ 实时同步:每5分钟通过cron执行
快速开始
1. 安装依赖
bash
pip install -r requirements.txt
2. OAuth 认证(一次性)
bash
python3 scripts/garmin-auth.py your-email@gmail.com your-password
这将把您的 OAuth 会话保存到 ~/.garth/session.json — 完全本地且安全。
3. 测试同步
bash
python3 scripts/garmin-sync.py
您将看到包含今日数据的 JSON 输出。
4. 设置5分钟Cron
添加到您的 crontab:
bash
/5 * /home/user/garmin-connect-clawdbot/scripts/garmin-cron.sh
或手动添加:
bash
/5 * python3 /home/user/garmin-connect-clawdbot/scripts/garmin-sync.py ~/.clawdbot/.garmin-cache.json
5. 在 Clawdbot 中使用
在脚本中导入并使用:
python
from scripts.garminformatter import formatall, getasdict
获取所有格式化数据
print(format_all())
或获取原始字典
data = get
asdict()
print(f今日步数:{data[summary][steps]})
功能特性
✅ 基于 OAuth(安全,无需存储密码)
✅ 所有指标:活动、睡眠、锻炼
✅ 本地缓存(快速访问)
✅ 支持Cron(5分钟间隔)
✅ 易于集成到Clawdbot
✅ 多用户支持
捕获的数据
日常活动(summary)
- - steps:每日步数
- heartrateresting:静息心率(bpm)
- calories:总消耗卡路里
- activeminutes:高强度活动分钟数
- distancekm:行走距离
睡眠(sleep)
- - durationhours:总睡眠时长
- durationminutes:睡眠分钟数
- qualitypercent:睡眠质量评分(0-100)
- deepsleephours:深度睡眠时长
- remsleephours:REM睡眠时长
- lightsleephours:浅层睡眠时长
- awakeminutes:睡眠中清醒时间
锻炼(workouts)
每项近期锻炼:
- - type:活动类型(跑步、骑行等)
- name:活动名称
- distancekm:运动距离
- durationminutes:活动时长
- calories:消耗卡路里
- heartrateavg:平均心率
- heartratemax:最大心率
缓存位置
默认情况下,数据缓存至:~/.clawdbot/.garmin-cache.json
自定义路径:
bash
python3 scripts/garmin-sync.py /custom/path/cache.json
文件说明
| 文件 | 用途 |
|---|
| garmin-auth.py | OAuth设置(运行一次) |
| garmin-sync.py |
主要同步逻辑(每5分钟运行) |
| garmin-formatter.py | 格式化数据以供显示 |
| garmin-cron.sh | Cron包装脚本 |
| requirements.txt | Python依赖 |
故障排除
OAuth 认证失败
- - 检查邮箱/密码
- 在Garmin账户中禁用双重验证(或使用应用密码)
- Garmin服务器可能限流 — 等待5分钟
无数据显示
- 1. 将您的Garmin设备与Garmin Connect应用同步
- 等待2-3分钟让数据同步
- 检查数据是否出现在Garmin Connect网页/应用中
- 然后重新运行 garmin-sync.py
Cron权限被拒绝
bash
chmod +x scripts/garmin-cron.sh
chmod +x scripts/garmin-sync.py
chmod +x scripts/garmin-auth.py
缓存文件未找到
至少运行一次 garmin-sync.py 以创建缓存:
bash
python3 scripts/garmin-sync.py
使用示例
python
from scripts.garminformatter import formatall, getasdict
获取格式化输出
print(format_all())
获取原始数据
data = get
asdict()
if data:
print(f睡眠:{data[sleep][duration_hours]}小时)
print(f步数:{data[summary][steps]:,})
许可证
MIT — 可自由使用、分支、修改。
为
Clawdbot 制作 | 可在
ClawdHub 获取