Apple Watch 心率数据采集
最近一直在研究Greptime,因为Apache HertzBeat项目需要一个可靠的数据库来存储,已经把文档翻来覆去啃好几遍了,除了用来存HertzBeat的日志之外,还想研究一点小玩意,于是就有了这个。注意:本项目纯属玩具!
原理
先放上项目链接zqr10159/heartbeat-greptime,思路来自于yihong大佬的yihong0618/iBeats: Apple Watch 心率数据采集 - Your Soul, Your Beats!在此先表示感谢!
经过查阅资料,Apple Watch采集心率一般有两种方案:
1.使用苹果官方的HealthKit,通过代码来采集。但是呢,这个东西需要苹果的开发者认证,先pass。
2.使用快捷指令。快捷指令可以访问健康应用,通过配置数据库的http接口就可以将数据发送给数据库了!
实现
根据以上的快捷指令配置,当然我也为你准备了链接,自行导入即可。 心率转发
上面的快捷指令会把你最近一天的心率作为请求体发送到指定url。但是我们现在又面临了两个选择:
1.直接把数据发送给时序库。这种方式看起来最直接方便,但是经过我的实践发现不可行。因为Greptime虽然支持influxdb line protocol写入,但需要写入时间戳,而原格式是字符串的日期。虽然快捷指令里面还真有方法把日期转换成时间戳,但是当过去一天心率数据过多时(苹果时间范围只能选到最近一天,选不到一小时),快捷指令里面写个循环效率实在是太低了,跑着跑着手机就开始发烫,实在是没法用。不得已只能换种方法了。
2.写个服务端来处理数据做转换,转发给Greptime。虽然用Java写是很顺手,但最近在入坑Rust必须得整一个!具体代码在zqr10159/heartbeat-greptime,README应该说的比较清楚了。然后就是在快捷指令里面配置自动化来触发上面的快捷指令,建议设置定时的,比如一天一次(其实我是想30分钟一次的,但是苹果没有间隔触发功能只能设置定时,你到底有没有用心做产品我请问了)。
最后上效果图
Greptime 支持作为 Grafana 的数据源,所以你也可以配置 自定义的图表来展示。