logo
0
0
WeChat Login
feat: Zepp Life 步数同步工具 — 支持 Web 可视化界面与命令行两种模式

Zepp Life 步数同步工具

自动登录 Zepp Life 并同步指定步数,支持 命令行Web 可视化 两种使用方式。

📖 新手必看: 第一次使用?请先阅读 📘 详细图文使用教程,从注册账号到同步步数,手把手教你完成全流程!

功能特性

  • 🔐 支持手机号 / 邮箱登录,自动识别账号类型
  • 👥 多账户批量执行(# 分隔)
  • 🎯 三种步数模式:按时间自动计算 / 指定固定步数 / 指定随机范围
  • 🌦️ 天气智能调节(命令行模式)
  • 🖥️ Web 可视化界面,实时日志 + 进度条

工作原理

  1. 登录认证 — 通过 Zepp Life API 获取 access_token,再换取 login_token + app_token
  2. 步数计算 — 支持固定步数 或 根据当前北京时间(每 3 小时一档,基数 3500)随机生成
  3. 天气调节(命令行可选)— 查询目标城市天气,遇到雨/雪天自动降低步数
  4. 提交数据 — 将步数及心率模拟数据提交到 Zepp Life 运动接口完成同步

步数计算规则

以北京时间 hour 为基准:

时间段步数范围(天气系数=1)
0:00 – 2:590 – 3,500
3:00 – 5:590 – 3,500
6:00 – 8:593,500 – 7,000
9:00 – 11:597,000 – 10,500
12:00 – 14:5910,500 – 14,000
15:00 – 17:5914,000 – 17,500
18:00 – 20:5917,500 – 21,000
21:00 – 23:5921,000 – 24,500

公式:min_step = 3500 × max(⌈hour/3⌉-1, 0) × factormax_step = 3500 × ⌈hour/3⌉ × factor

天气调节系数(命令行模式)

开启天气功能后,通过 wttr.in 查询天气并匹配系数(未匹配则系数为 1):

天气系数天气系数
多云0.9小雪0.6
0.8中雪0.4
小雨0.7大雪0.3
中雨0.5
大雨0.4
暴雨0.3
大暴雨 / 特大暴雨0.2

账号类型

脚本自动识别登录方式:

输入格式识别结果登录方式
example@gmail.com邮箱third_name=email
13800138000手机号(自动补 +86third_name=huami_phone
+8613800138000已带区号手机号third_name=huami_phone

安装依赖

pip install requests pytz

Python 版本要求:3.6+


使用方式一:Web 可视化界面

提供美观的浏览器界面,带实时日志和进度条。

启动

# 默认端口 8765 python3 server.py # 自定义端口 python3 server.py 9090

启动后浏览器访问 http://localhost:8765 即可使用。

备用方案:在线版

如果不方便本地启动服务器,可以直接使用在线部署版本:

👉 https://bs.yanwan.store/run4/

功能与本地 Web 版一致,打开即用,无需安装任何依赖。

架构说明

Web 版采用一站式后端提交架构:

  • 前端web/ 目录):提供用户界面,用户输入账号密码和步数配置
  • 后端server.py):接收前端的单次请求后,在服务端完成全部三阶段 API 调用(获取 access code → 获取 token → 提交步数)
  • 阶段之间自动加入延迟(1~1.5 秒),避免触发 Zepp Life API 的频率限制
  • 遇到 429 限流会自动重试(最多 2 次),大幅提升成功率
  • 仅允许请求 zepp.comhuami.com 域名,不会转发到其他地址

Web 版功能

  • 📝 填写账号密码即可操作,支持多账号(# 分隔)
  • ⏰ 三种步数模式切换:自动计算 / 固定步数 / 随机范围
  • 📊 实时进度条 + 运行日志
  • ✅ 执行结果汇总展示

使用方式二:命令行

直接通过命令行参数执行,适合脚本调度和 CI/CD 集成。

python3 main.py <账号> <密码> <天气开关> <地区> [步数]

参数说明

参数必填说明
账号Zepp Life 登录账号(手机号或邮箱),多账户用 # 分隔
密码对应账号密码,多账户用 # 分隔
天气开关True 开启天气调节 / False 关闭
地区开启天气时填中文城市名;关闭时填 NO
步数可选,指定固定步数(正整数)。传入后忽略自动计算

示例

# 单账户 — 关闭天气(自动计算步数) python3 main.py "13800138000" "your_password" "False" "NO" # 单账户 — 开启天气(西安为例) python3 main.py "1633422028@qq.com" "Zhangsan@098" "True" "西安" # 指定固定步数为 18888 python3 main.py "13800138000" "your_password" "False" "NO" 18888 # 多账户 — 用 # 分隔账号和密码 python3 main.py "13800138000#13800138001" "pass1#pass2" "False" "NO" # 邮箱登录 python3 main.py "user@gmail.com" "your_password" "False" "NO"

环境变量

支持通过环境变量或 CI/CD 平台的 Secrets 配置参数:

变量名说明
USERZepp Life 账号(多账户用 # 分隔)
PWDZepp Life 密码(多账户用 # 分隔)
OPEN_GET_WEATHER天气开关:True / False
AREA天气地区(关闭时填 NO
STEP可选,指定固定步数(不填则自动计算)

项目结构

├── main.py # 命令行主程序(登录、步数计算、天气查询、数据提交) ├── server.py # Web 后端服务器(一站式提交 + 静态文件托管) ├── web/ # Web 前端文件 │ ├── index.html # 页面结构与样式 │ ├── app.js # 前端交互逻辑 │ └── data_template.js # 步数数据包模板(备用) ├── GUIDE.md # 详细图文使用教程 ├── pic/ # 教程相关图片资源 ├── README.md # 帮助文档 └── LICENSE # 开源许可证

注意事项

  1. 账号是 Zepp Life 账号(手机号或邮箱),不是其他平台的账号
  2. Zepp Life 本身不会直接显示更新的步数,需要通过关联的第三方应用(如支付宝、微信等)查看同步结果
  3. 如果第三方应用未更新步数,请在 Zepp Life → 设置 → 账号 → 注销账号 → 清空数据,然后重新登录并重新绑定
  4. 天气查询失败不会导致程序崩溃,会自动使用默认系数 1
  5. 多账户的账号数和密码数必须一一对应
  6. Web 版后端在各阶段之间自动加入延迟和重试,避免触发 API 限流("too many requests")