缺水感知 · 运动 · 日程
会提醒你喝水的
那块表
一块低成本可穿戴,用光电心率、动作与皮温估算你的流失水量,在你真正渴之前轻轻震一下。运动自动记录,日程与约会前置提醒——并与比邻小镇打通:缺水时一键让润泽水站补货,约会前表盘替你记着。
这是真实模型的浏览器复刻:数值随你的操作即时联动,与比邻小镇后端 hydrationState() 同源。环境 舒适 24℃。
💧身体水分
🏃今日运动
📈一天的水分平衡
🗓日程与约会
🏘联接比邻小镇
桶装水余量偏低 — 缺水连续 2 天
喝水打卡满 7 天 · +30 邻值奖励
环园区晨跑 · 连续 7 天送水票
🧾今日事件流
硬件方案:传感器与结构
在满足功能的前提下把成本压到最低:用一块 ¥200 的现成开源手表(PineTime) 作主体——它自带光电心率与加速度计,且蓝牙用的是标准无加密的 GATT 协议,微信小程序能直连读数。缺水/运动/日程的全部逻辑放在小程序里跑,硬件几乎零改动。
绿光+红光 LED 与光敏管:心率、心率变异性(HRV)、活动强度。水分模型的主输入。
步数、运动强度(MET)、久坐检测;驱动出汗量估算。
PineTime 无此传感器。热负荷改用手机/天气的环境温湿度替代;只靠心率+加速度也能给出可用估算。若必须板载测温,可换 LILYGO T-Watch S3 加装 MAX30102(成本约 3 倍)。
手表主体自带。InfiniTime 固件用标准心率服务 0x180D 上报(已算好的心率+步数,非原始波形),小程序 wx.createBLEConnection 直连,无小米那套加密握手。
成本路线:小米手环 vs. 推荐方案
你提到用小米手环改装。它确实最便宜,但要跑自定义缺水算法、读原始传感器、直连微信小程序,会撞上封闭固件与加密配对——下方是校验后的取舍。
小米手环 9 / 10
- Bestechnic BES2700 芯片,闭源固件、无公开 SDK
- 蓝牙外裹小米加密握手,密钥在小米服务器(新版返回 authKey=null)——小程序几乎无法直连
- 刷机需拆开密封机身、探明未公开测试点、用泄露工具,有变砖风险,无 OTA 通道
- 硬件最便宜,但对本项目是死路
PineTime(InfiniTime)
- 板载 HRS3300 光电心率 + BMA421 加速度计,正好满足传感需求
- 开源固件,蓝牙用标准 GATT(0x180D)无加密,微信小程序直连
- 蓝牙可 OTA 升级固件;随附磁吸充电座
- 无板载测温(缺水估算可不依赖);小程序前台缓存后台同步
其他开源方案
- Bangle.js 2(约¥650–760):JS 浏览器直接开发,体验最好,但贵 3–4 倍
- LILYGO T-Watch S3(约¥480):ESP32 最易扩展,加 MAX30102 得测温,但无板载心率、续航弱
- Colmi P8 等 nRF52832 手环(约¥90–160):可刷 InfiniTime,理论最便宜,但需碰运气买到可解锁批次
推荐方案物料清单(BOM)
单件小批量试制的近似成本,人民币。(价格由研究工作流校验后填入)
| 物料 | 用途 | 数量 | 约 ¥ |
|---|---|---|---|
| PineTime 手表(密封零售版,预装 InfiniTime) | 板载 HRS3300 心率 + BMA421 加速度计;含磁吸充电座 | 1 | 200 |
| 微信小程序(自研代码) | 蓝牙直连、缺水/运动/日程逻辑、提醒;接入比邻小镇 | 1 | 0 |
| 比邻小镇后端改动 | 新增 /api/eco/watch/telemetry,升级 hydrationState() | — | 0 |
| 选配 · 微信认证小程序账号 | 如需正式发布(¥300/年) | — | 300/年 |
| 选配 · 换 T-Watch S3 + MAX30102 测温 | 仅当"板载皮温"是硬需求;约 3 倍成本、续航更差 | 1 | ~495 |
| 单台整机成本(推荐方案) | 硬件 + 开发(一次性 + 选配年费) | 1 | ≈ 200 |
它怎么"知道"你缺水
先说实话:截至 2026 年,没有任何消费级手腕设备能直接"测量"体内水分。能测的两条物理路径——生物阻抗与汗液电化学——要么在手腕这种单点、干接触、多运动的位置失效,要么需要在身体别处贴一次性集汗贴片。我们做的是诚实的第二好:用现有传感器估算流失、标记缺水风险,在你真渴之前提醒补水。每个数字都带不确定度,口渴与尿色才是终极判据。
💓光电心率 PPG
读静息心率基线与实时心率,捕捉出汗前的心血管/热负荷。缺水会抬高心率、压低 HRV——但热、运动、压力同样会,非特异,只作旁证。
📐加速度计
步频与向量幅度(ENMO)→ 活动量 → 代谢当量(MET)。这是出汗量估算的主驱动:运动越剧烈、代谢产热越高,蒸发散热需求越大,汗液流失越多。
🌡环境热负荷
环境温湿度(手机或天气 API)决定干散热上限与排汗效率。PineTime 无皮温传感器时以此替代;高温高湿→流失估算上调。
腕式生物阻抗(BIA)/皮电(EDA):最强的 2025 生物阻抗证据(Jankovic et al., PNAS 2025)用的是上臂跨臂传感器、非手腕,且只能追踪水分"变化趋势"、需身高体重标定。三星 Watch 的 BIA 是量"身体成分总水量",不是量急性缺水。密封的 PineTime 也没有可靠电极接触面——一律略去。
属于专用臂贴/臂带(Nix、hDrop、Flowbio),不属于手表:它只在出汗时有读数、需要汗液汇集,且即便最好的商用设备也有明显误差——独立测试中 Nix 低估出汗率约 0.44 L/h、汗钠约 198 mg/L。
水分平衡算法
把现有 hydrationState()(只看打卡+时间)升级为传感融合的净水分平衡。
与比邻小镇的数据链路
手表只做采集与提醒,模型与持久化沿用你的零依赖 Node 后端。新增一个遥测端点即可闭环。
PPG·加速度·皮温
本地初算 + 提醒
BLE 收遥测pages/watch
新增POST /api/eco/watch/telemetry
hydrationState()
提醒 · 约会 · 润泽补货
🔌新增端点(接进现有 watchRoutes())
能做什么,不能做什么
一款负责任的健康硬件,边界要写在最显眼处。
2026 年没有腕式设备能测出体内水分。永远以"缺水风险 + 区间 + 置信度"呈现,绝不把某个"水分 87%"当成生理事实。
模型只知道你打卡的水;漏记会让缺口虚高、误报缺水。靠"每杯提醒 / 超时提醒 / 打卡重锚"来缓解。
个体出汗率相差 0.5–2.0 L/h。未标定为 ±35%,仅步数时 ±50%。2–3 次称重标定 k_user 是最大的精度杠杆,做成"可选不强制"。
心率升、HRV 降、皮温升,热/运动/压力/失眠/酒精/咖啡因同样会造成。模型读的是"与缺水一致的漂移",不是缺水本身。
遥测是"前台缓存、切回时补传",非持续采集;夜间与长时空档是插值而非实测。InfiniTime 心率也是占空采样。
内置防过量/低钠护栏(限速 ~800 mL/h、夜间静默)是安全设计不是医疗建议。不诊断,一切以口渴与尿色为准(老年人口渴滞后于真实缺口)。