邻伴 · 氢感手表HYDROSENSE · 比邻小镇生态硬件

缺水感知 · 运动 · 日程

会提醒你喝水的
那块表

身体缺水,它先知道一步

一块低成本可穿戴,用光电心率、动作与皮温估算你的流失水量,在你真正渴之前轻轻震一下。运动自动记录,日程与约会前置提醒——并与比邻小镇打通:缺水时一键让润泽水站补货,约会前表盘替你记着。

💧 水分模型 传感融合估算 🏃 运动 步数·强度·出汗 🗓 日程 约会前 60 分钟 🏘 比邻小镇 /api/eco/watch
周一88%▮
08:20
水分 78%
水分充足
下一场 · 10:00 邻里茶话会
72 bpm 👣 3260
仿真控制台 · 实时模型
镇上时间 08:20 · 第 1

这是真实模型的浏览器复刻:数值随你的操作即时联动,与比邻小镇后端 hydrationState() 同源。环境 舒适 24℃

💧身体水分

传感融合估算 · 非医疗测量
78水分%
760ml
今日已饮 / 目标 1600
120ml
估算流失(含出汗)

🏃今日运动

加速度计 + 光电心率
3260
步数
142kcal
活动消耗
72bpm
当前心率
18min
活动时长
心率运动区间

📈一天的水分平衡

应饮曲线(7:00–23:00 匀速目标)· 实际摄入 · 估算净流失
应饮进度 实际摄入 净缺口

🗓日程与约会

约会前 60 分钟表盘震动提醒

🏘联接比邻小镇

已配对 · 邻伴 Watch S1 · 实时同步

🧾今日事件流

手表上报的原始遥测与模型判定
实物 01

硬件方案:传感器与结构

在满足功能的前提下把成本压到最低:用一块 ¥200 的现成开源手表(PineTime) 作主体——它自带光电心率与加速度计,且蓝牙用的是标准无加密的 GATT 协议,微信小程序能直连读数。缺水/运动/日程的全部逻辑放在小程序里跑,硬件几乎零改动。

底面 · 贴腕侧
1
PPG 光电心率 / 血氧模组

绿光+红光 LED 与光敏管:心率、心率变异性(HRV)、活动强度。水分模型的主输入。

2
三轴加速度计

步数、运动强度(MET)、久坐检测;驱动出汗量估算。

3
皮肤温度传感器 选配

PineTime 无此传感器。热负荷改用手机/天气的环境温湿度替代;只靠心率+加速度也能给出可用估算。若必须板载测温,可换 LILYGO T-Watch S3 加装 MAX30102(成本约 3 倍)。

4
nRF52832 · BLE · 电池 · 触摸屏

手表主体自带。InfiniTime 固件用标准心率服务 0x180D 上报(已算好的心率+步数,非原始波形),小程序 wx.createBLEConnection 直连,无小米那套加密握手。

实物 02

成本路线:小米手环 vs. 推荐方案

你提到用小米手环改装。它确实最便宜,但要跑自定义缺水算法、读原始传感器、直连微信小程序,会撞上封闭固件与加密配对——下方是校验后的取舍。

小米手环 9 / 10

¥199 起(国行)
不推荐
  • Bestechnic BES2700 芯片,闭源固件、无公开 SDK
  • 蓝牙外裹小米加密握手,密钥在小米服务器(新版返回 authKey=null)——小程序几乎无法直连
  • 刷机需拆开密封机身、探明未公开测试点、用泄露工具,有变砖风险,无 OTA 通道
  • 硬件最便宜,但对本项目是死路
✓ 推荐 · 满足全部功能的最低成本

PineTime(InfiniTime)

¥190–210 · $26.99 密封零售版
最低成本达标
  • 板载 HRS3300 光电心率 + BMA421 加速度计,正好满足传感需求
  • 开源固件,蓝牙用标准 GATT(0x180D)无加密,微信小程序直连
  • 蓝牙可 OTA 升级固件;随附磁吸充电座
  • 无板载测温(缺水估算可不依赖);小程序前台缓存后台同步

其他开源方案

¥90–760 · 视需求
按需选择
  • Bangle.js 2(约¥650–760):JS 浏览器直接开发,体验最好,但贵 3–4 倍
  • LILYGO T-Watch S3(约¥480):ESP32 最易扩展,加 MAX30102 得测温,但无板载心率、续航弱
  • Colmi P8 等 nRF52832 手环(约¥90–160):可刷 InfiniTime,理论最便宜,但需碰运气买到可解锁批次
实物 03

推荐方案物料清单(BOM)

单件小批量试制的近似成本,人民币。(价格由研究工作流校验后填入)

物料用途数量约 ¥
PineTime 手表(密封零售版,预装 InfiniTime)板载 HRS3300 心率 + BMA421 加速度计;含磁吸充电座1200
微信小程序(自研代码)蓝牙直连、缺水/运动/日程逻辑、提醒;接入比邻小镇10
比邻小镇后端改动新增 /api/eco/watch/telemetry,升级 hydrationState()0
选配 · 微信认证小程序账号如需正式发布(¥300/年)300/年
选配 · 换 T-Watch S3 + MAX30102 测温仅当"板载皮温"是硬需求;约 3 倍成本、续航更差1~495
单台整机成本(推荐方案)硬件 + 开发(一次性 + 选配年费)1≈ 200
原理 01

它怎么"知道"你缺水

先说实话:截至 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。

原理 02

水分平衡算法

把现有 hydrationState()(只看打卡+时间)升级为传感融合的净水分平衡。

联接 01

与比邻小镇的数据链路

手表只做采集与提醒,模型与持久化沿用你的零依赖 Node 后端。新增一个遥测端点即可闭环。

邻伴手表

PPG·加速度·皮温
本地初算 + 提醒

📱
微信小程序

BLE 收遥测
pages/watch

🗄
比邻后端

新增
POST /api/eco/watch/telemetry

💧
水分模型

hydrationState()
提醒 · 约会 · 润泽补货

🔌新增端点(接进现有 watchRoutes()

与既有 /drink、/exercise、/appointment 并列;把传感遥测并入 watch[userId],供 hydrationState() 读取
须知

能做什么,不能做什么

一款负责任的健康硬件,边界要写在最显眼处。

是估算,不是测量

2026 年没有腕式设备能测出体内水分。永远以"缺水风险 + 区间 + 置信度"呈现,绝不把某个"水分 87%"当成生理事实。

不打卡就看不见摄入

模型只知道你打卡的水;漏记会让缺口虚高、误报缺水。靠"每杯提醒 / 超时提醒 / 打卡重锚"来缓解。

不标定误差大

个体出汗率相差 0.5–2.0 L/h。未标定为 ±35%,仅步数时 ±50%。2–3 次称重标定 k_user 是最大的精度杠杆,做成"可选不强制"。

输入非特异

心率升、HRV 降、皮温升,热/运动/压力/失眠/酒精/咖啡因同样会造成。模型读的是"与缺水一致的漂移",不是缺水本身。

微信后台会挂起

遥测是"前台缓存、切回时补传",非持续采集;夜间与长时空档是插值而非实测。InfiniTime 心率也是占空采样。

不作临床用途

内置防过量/低钠护栏(限速 ~800 mL/h、夜间静默)是安全设计不是医疗建议。不诊断,一切以口渴与尿色为准(老年人口渴滞后于真实缺口)。