OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  fitbit-analytics:Fitbit 健康与健身数据集成分析

fitbit-analytics:Fitbit 健康与健身数据集成分析

 
  oauth ·  2026-02-05 07:52:05 · 3 次点击  · 0 条评论  

名称: fitbit-analytics
描述: Fitbit 健康与健身数据集成。从 Fitbit Web API 获取步数、心率、睡眠、活动、卡路里和趋势数据。生成自动化健康报告和提醒。需要 FITBIT_CLIENT_ID、FITBIT_CLIENT_SECRET、FITBIT_ACCESS_TOKEN、FITBIT_REFRESH_TOKEN。
元数据: {"openclaw":{"requires":{"bins":["python3"],"env":["FITBIT_CLIENT_ID","FITBIT_CLIENT_SECRET","FITBIT_ACCESS_TOKEN","FITBIT_REFRESH_TOKEN"]},"homepage":"https://github.com/kesslerio/fitbit-analytics-openclaw-skill"}}


Fitbit 数据分析

快速开始

# 设置 Fitbit API 凭证
export FITBIT_CLIENT_ID="your_client_id"
export FITBIT_CLIENT_SECRET="your_client_secret"
export FITBIT_ACCESS_TOKEN="your_access_token"
export FITBIT_REFRESH_TOKEN="your_refresh_token"

# 生成包含活动区分钟数的晨间简报
python scripts/fitbit_briefing.py

# 获取每日步数
python scripts/fitbit_api.py steps --days 7

# 获取心率数据
python scripts/fitbit_api.py heartrate --days 7

# 睡眠摘要
python scripts/fitbit_api.py sleep --days 7

# 生成每周健康报告
python scripts/fitbit_api.py report --type weekly

# 获取活动摘要
python scripts/fitbit_api.py summary --days 7

使用场景

在以下场景中使用此技能:
- 获取 Fitbit 指标(步数、卡路里、心率、睡眠)
- 分析活动趋势随时间的变化
- 设置不活动或异常心率的提醒
- 生成每日/每周健康报告

核心工作流

1. 每日简报

# 生成晨间健康简报(包含活动区分钟数)
python scripts/fitbit_briefing.py                    # 今日简报
python scripts/fitbit_briefing.py --date 2026-01-20  # 指定日期
python scripts/fitbit_briefing.py --format brief     # 三行摘要
python scripts/fitbit_briefing.py --format json      # JSON 输出

# 示例输出包含:
# - 昨日活动(记录的运动)
# - 昨日活动区分钟数(总计、脂肪燃烧、有氧、峰值)
# - 今日活动摘要(步数、卡路里、楼层、距离)
# - 心率(静息心率、平均值、区间)
# - 睡眠(时长、效率、清醒次数)
# - 与 7 天平均值的趋势对比

JSON 输出示例:

{
  "date": "2026-01-21",
  "steps_today": 8543,
  "calories_today": 2340,
  "distance_today": 6.8,
  "floors_today": 12,
  "active_minutes": 47,
  "resting_hr": 58,
  "avg_hr": 72,
  "sleep_hours": 7.2,
  "sleep_efficiency": 89,
  "awake_minutes": 12,
  "yesterday_activities": [
    {"name": "跑步", "duration": 35, "calories": 320}
  ],
  "yesterday_azm": {
    "activeZoneMinutes": 61,
    "fatBurnActiveZoneMinutes": 39,
    "cardioActiveZoneMinutes": 22
  }
}

注意: 心脏负荷数据无法通过 Fitbit API 获取——它是 Fitbit Premium 功能,仅在移动应用中可见。

2. 数据获取(命令行)

# 可用命令:
python scripts/fitbit_api.py steps --days 7
python scripts/fitbit_api.py calories --days 7
python scripts/fitbit_api.py heartrate --days 7
python scripts/fitbit_api.py sleep --days 7
python scripts/fitbit_api.py summary --days 7
python scripts/fitbit_api.py report --type weekly

3. 数据获取(Python API)

export PYTHONPATH="{baseDir}/scripts"
python - <<'PY'
from fitbit_api import FitbitClient

client = FitbitClient()  # 使用环境变量中的凭证

# 获取数据(需要 start_date 和 end_date)
steps_data = client.get_steps(start_date="2026-01-01", end_date="2026-01-16")
hr_data = client.get_heartrate(start_date="2026-01-01", end_date="2026-01-16")
sleep_data = client.get_sleep(start_date="2026-01-01", end_date="2026-01-16")
activity_summary = client.get_activity_summary(start_date="2026-01-01", end_date="2026-01-16")
PY

4. 数据分析

export PYTHONPATH="{baseDir}/scripts"
python - <<'PY'
from fitbit_api import FitbitAnalyzer

analyzer = FitbitAnalyzer(steps_data, hr_data)
summary = analyzer.summary()
print(summary)  # 返回:平均步数、平均静息心率、步数趋势
PY

5. 提醒

python {baseDir}/scripts/alerts.py --days 7 --steps 8000 --sleep 7

脚本

  • scripts/fitbit_api.py - Fitbit Web API 封装、命令行接口和分析工具
  • scripts/fitbit_briefing.py - 晨间简报命令行接口(文本/摘要/JSON 输出)
  • scripts/alerts.py - 基于阈值的通知

可用 API 方法

方法 描述
get_steps(start, end) 每日步数统计
get_calories(start, end) 每日消耗卡路里
get_distance(start, end) 每日距离
get_activity_summary(start, end) 活动摘要
get_heartrate(start, end) 心率数据
get_sleep(start, end) 睡眠数据
get_sleep_stages(start, end) 详细睡眠阶段
get_spo2(start, end) 血氧水平
get_weight(start, end) 体重测量
get_active_zone_minutes(start, end) 活动区分钟数(AZM)细分

参考文档

  • references/api.md - Fitbit Web API 文档
  • references/metrics.md - 指标定义与解读

认证

Fitbit API 需要 OAuth 2.0 认证:
1. 在 https://dev.fitbit.com/apps 创建应用
2. 获取 client_id 和 client_secret
3. 完成 OAuth 流程以获取 access_token 和 refresh_token
4. 设置环境变量或传递给脚本

环境变量

必需:
- FITBIT_CLIENT_ID
- FITBIT_CLIENT_SECRET
- FITBIT_ACCESS_TOKEN
- FITBIT_REFRESH_TOKEN

自动化(定时任务)

定时任务在 OpenClaw 网关中配置,不在此仓库中。将以下内容添加到你的 OpenClaw 设置中:

每日晨间简报(上午 8:00)

openclaw cron add \
  --name "晨间 Fitbit 健康报告" \
  --cron "0 8 * * *" \
  --tz "America/Los_Angeles" \
  --session isolated \
  --wake next-heartbeat \
  --deliver \
  --channel telegram \
  --target "<YOUR_TELEGRAM_CHAT_ID>" \
  --message "python3 /path/to/your/scripts/fitbit_briefing.py --format text"

注意:/path/to/your/ 替换为你的实际路径,并将 <YOUR_TELEGRAM_CHAT_ID> 替换为你的 Telegram 频道/群组 ID。

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor