我的主页有脉搏
我主页上现在有一个小红心在跳动。旁边的数字是我实际的心率,这个心脏以这个频率跳动:48 次每分钟意味着每 1.25 秒跳动一次,80 次每分钟意味着每 0.75 秒跳动一次。我写这篇文章是因为我想这么做,并且这个设计的决策比我预期的更加有趣。我现在佩戴的手表是 Garmin Descent Mk3i ,43 毫米,碳灰色 DLC 钛材。我买它作为我的主要潜水电脑,和我的 Shearwater Perdix 2 一起使用,因为在技术潜水和像洞穴及沉船这样的环境中需要冗余。如果一台电脑在 75 米的洞穴里坏掉了,你不能简单地浮出水面给它充电。洞穴潜水员有备份的备份。自 2025 年 4 月以来,它陪伴我进行了 400 多次潜水,包括 100 米的潜水。我只会在充电或洗澡时把它取下。潜水间隙,它会追踪我的心率、睡眠得分、HRV、步数、卡路里和其他十几种生理参数,并将所有数据同步到我的 Pixel 9 Pro 上的 Garmin Connect 应用程序。我在健身房和街头举重的训练也会记录在上面。这意味着 Garmin 已经记录了我生活的连续、细致的生理数据。我只需要把数据从 Garmin 导出到我的主页上。更个人化的“在线”状态指示器旧的消息应用程序有一个绿点。Facebook Messenger,Gchat 之前:一个小指示器,显示此人现在在这里。我记得在 2012 年在 HexChat 中看到它,在我转到 Irssi 之前。我想要这个网站有的,除了绿点总感觉像是关于一个套接字而不是一个人的声明。心跳是最不抽象的“在线”状态。它是“他的浏览器有连接开放”和“他活着,这里是证据”之间的区别。最后,这只是页面上的一个数字,我明白。但这是我的数字,来自我的胸膛,这使它成为网站上最个人的东西。这对你们中的很多人来说可能有点尴尬,但我喜欢这个想法 :P。当我有时间时,长期目标是这个网站的一部分,显示我生活的详细账本:锻炼、睡眠、HRV、燃烧的卡路里、走的步数等。我明白这会泄露什么。全天心率会揭示我什么时候睡觉和醒来。间隔和时区变化会揭示旅行。静息心率跳动 8 bpm 会标记疾病、压力或昨晚的饮酒。HRV 趋势是心理状态的合理代理,定期的健身时间表则准确地标示了我什么时候不在家。我已经考虑过所有这些,决定我对此没问题。我同意这一点,如果你对此有问题,那是你的问题,不是我的 ¯\(ツ)/¯。肯定有人做过这个。是的,他们做过。我的第一反应是这肯定已经存在,而我也是对的。Twitch 主播多年来通过像 Pulsoid 和 HypeRate 这样的服务在屏幕上显示实时心率,并且这两个服务都支持 Garmin 手表。它们通过将可穿戴设备置于其广播心率模式来工作,在这种模式下,它通过 BLE/ANT+ 连接到手机应用程序,将数字转发到他们的服务器。起初看起来很有前途,但对我来说是个死胡同。Garmin 的手册警告说广播会缩短电池寿命,而这块手表是我的潜水电脑。我不想为了一个网站小部件而牺牲潜水日的电池。而广播是一种你需要打开并保持在范围内的模式。对我来说似乎太麻烦了。此外,我喜欢每周给手表充电一次,使用 10 天。我不想为了保持小部件的运作而每晚都给它充电。浏览器本身可以说 Bluetooth,这一点曾让我感到有些希望。Web Bluetooth API 可以直接从附近的设备读取标准心率 GATT 服务。但仍然行不通,因为它将访问者的浏览器连接到访问者附近的设备。只会在我自己的机器上,使用 Chromium 浏览器,手表在广播模式下工作。肯定有真正的 API。是的:Garmin 的健康 API 提供这些数据,但访问是通过商业申请和审核来限制的。它是为将可穿戴设备集成到产品中的公司构建的。那么,一个想要在主页上放个心脏的人呢?Fahhhh (╯’□’)╯︵ ┻━┻。此时我做了我应该先做的事情,搜索 GitHub 和 Reddit。两个项目在 Reddit 讨论中不断浮出水面。GarminDB 将你的整个 Garmin 历史下载到本地 SQLite 数据库中,并在此基础上提供分析和绘图。不错,但不适合这个。带有模式的归档似乎有些多余……我可能只想要每天早上输出一天的心率 JSON 数据。python-garminconnect 是正确的工具,因为它是一个 Python 客户端,使用 Garmin Connect 应用程序使用的相同私有 API。它允许你以应用程序的方式登录,并调用与应用程序相同的端点。它基本上可以访问我手机上能看到的所有数据,这恰好解决了未来可能的项目问题,因为锻炼、睡眠和 HRV 都能通过同一客户端访问。太好了,谢谢你 @cyberjunky!那么实时呢?实时实际上从未在这个项目中考虑过。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡