xiaomi2weight
Python 自动化 健身数据
这是什么
打通”小米体重秤 → Garmin Connect → intervals.icu”的体重数据链路:早上称完,数据自动出现在训练平台里,不用手动录入。
为什么做它
骑行训练里体重直接影响功体比(W/kg),所以它必须持续在线才有意义——不是偶尔录一次,而是每天都准。但小米生态的数据出不了小米自己的 App,而训练分析在 Garmin 和 intervals.icu 这边。中间这段没人接,就只能手动抄,而手动抄的结局一定是断更。
这类工具的价值不在技术含量,在于把一条本来会断的链接上,之后就不用再想它。
那个花了最久时间的坑
链路搭好之后出现一个奇怪现象:intervals.icu 上的体重长期显示为一个固定值,怎么同步都不变。
排查方向一开始全错了——查同步脚本有没有跑、查 Garmin 那边收到没有、查 API 返回。结果根因根本不在这条链上:intervals.icu 同时连接了 Strava,而 Strava 的个人资料页里手填过一次体重;每次活动同步时,Strava 这个静态的资料值会把秤的真实读数覆盖掉。
这个教训比工具本身更值得记:数据链路出问题,故障未必在你画的那张链路图上。 一个你根本没想起来的旁路数据源,可能正安静地往终点写同一个字段。排查时该问的不是”我这条链哪一环断了”,而是**“这个字段还有谁在写”**。
另一个实践经验:称重时机对读数的影响能到一公斤级别,固定在每天同一时间(我是晨起后)称,趋势才有意义——否则数据链修得再对,喂进去的也是噪声。
怎么用它
这个工具本身是纯后台同步,没有界面。它的实际用法是配合模型做分析——把 Garmin MCP 挂进 Claude Code,问一句”我最近训练状态怎么样”就能拿到跨数据源的综合回答。这条完整链路写在这篇文章里。
这个脚本目前还在本地自用,尚未整理开源。