使用REST API基于血糖的DasKeyboard键盘背光

来自老师,程序员和讲师Scott Hanselman的博客

长期以来,我一直在博客中撰写有关糖尿病和技术交叉学科的文章。 在2012年,与糖尿病相关的技术状况令人沮丧 ,但现在它们正经历着令人鼓舞的热潮

如果您患有I型糖尿病并使用连续血糖仪(CGM),则需要配置Nightscout服务,并且您将拥有REST API来访问血糖数据。 CGM每隔5分钟就会通过低功耗蓝牙通道检查我血液中的葡萄糖含量,数据会传到我的手机,再从那里传到云端。 但是您需要在您的控制下将葡萄糖数据存储在云中。 CGM制造商提供了自己的云,但是我们可以轻松地从那里导出到MongoDB数据库。

我的Nightscout在Azure上运行,并且我的身体具有自己的REST API。 我可以发出以下HTTP GET请求:

/api/v1/entries.json?count=3

并得到这样的答案:

[ { _id: "5c6066d477b2a69a0a7810e5", sgv: 143, date: 1549821626000, dateString: "2019-02-10T18:00:26.000Z", trend: 4, direction: "Flat", device: "share2", type: "sgv" }, { _id: "5c6065a877b2a69a0a7801ce", sgv: 134, date: 1549821326000, dateString: "2019-02-10T17:55:26.000Z", trend: 4, direction: "Flat", device: "share2", type: "sgv" }, { _id: "5c60647b77b2a69a0a77f381", sgv: 130, date: 1549821026000, dateString: "2019-02-10T17:50:26.000Z", trend: 4, direction: "Flat", device: "share2", type: "sgv" } ] 

如果将.json URL更改为.txt,则会得到以下信息:

 2019-02-10T18:00:26.000Z 1549821626000 143 Flat 2019-02-10T17:55:26.000Z 1549821326000 134 Flat 2019-02-10T17:50:26.000Z 1549821026000 130 Flat 

最后的固定值是一个枚举值,可让我大致了解葡萄糖的行为。 糖尿病患者必须每小时(有时每分钟)监测血糖。 因此,拥有可快速查看的显示器对我们来说非常重要。 也就是说,任何可以让我了解当前状态的东西。

例如:

  • Alexa,我的血糖水平是多少?
  • 如何在输入行中将葡萄糖数据和趋势添加到Git / PATH请求中。
  • 带LCD的Arduino。
  • dakBoard家庭日历壁挂式日历显示葡萄糖水平。



我最近自己购买了Das Keyboard 5Q ,这是我2006年第一次写有关Das Keyboard的文章! 她有自己的REST API 。 我正在通过键盘使用Applet API,以便根据我血液中葡萄糖水平的变化突出显示其上键。 我将使用它们的Node和JavaScript库,所有内容都将在其软件上下文中运行

但是,由于键盘具有在本地主机上运行的REST API,而我的血糖水平也具有它,因此我在膝盖上编写了以下脚本。 我将其添加到cron中,现在我的键盘将背光从橙色(低)更改为绿色,黄色或红色(高),同时血液中的葡萄糖水平也发生了变化。 事实证明,这是一个很好的背景指示。 有人发推文说,没人在看键盘。 我认为这很愚蠢。 我可能会注意到键盘是否变成红色。 这仍然是一个背景警告,但是如有必要,我可以轻松地向脚本中的一些更明确的消息添加调用。

 #!/bin/sh #      #  JSON-   API. #        Nightscout set -e # quit on first error. PORT=27301 #   5Q PID="DK5QPID" # product ID #  .  5Q  ,  166 #     . MAX_ZONE_ID=166 #      Nightscout   TEXT red=#f00 green=#0f0 yellow=#ff0 #   –    COLOR=#f50 bgvalue=$(curl -s https://MYSITE/api/v1/entries.txt?count=1 | grep -Eo '000\s([0-9]{1,3})+\s' | cut -f 2) if [ $bgvalue -gt 80 ] then COLOR=$green if [ $bgvalue -gt 140 ] then COLOR=$yellow if [ $bgvalue -gt 200 ] then COLOR=$red fi fi fi echo "  $bgvalue,   $COLOR!" for i in `seq $MAX_ZONE_ID` do #echo "   zoneId: $i" # :    "name"  "message" ,   #     curl -s -S --output /dev/null -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ "name": "Nightscout", "id": "'$i'", "message": "Blood sugar is '$bgvalue'", "pid": "'$PID'", "zoneId": "'"$i"'", "color": "'$COLOR'", "effect": "SET_COLOR" }' "http://localhost:$PORT/api/1.0/signals" done echo "\n.\n\" 

本地键盘API应该只发送一个区域或按键的信号,因此我进行了一次小型修改,发送了一百多个REST请求以对整个键盘进行着色。 但是,所有这些调用都在本地进行,不会给系统带来太多负担。 过渡到新的API后,一切都会变得更加准确。


同样,通过按下音量键以及任何突出显示的键,会出现一个弹出窗口,其中包含葡萄糖水平的确切值(这是第二次卷曲的消息)。 这又是一个hack,但是我将用它制作一个正式的应用程序,可以从应用程序商店中安装它。 可以在这里获取代码

您还有其他有关背景糖通知的好主意吗? 显示器周围是否有LED条? 智能灯泡Phillips Hue?

顺便说一句,带有显示屏的想法可以用来跟踪其他指标-心率,焦虑,血压-可以在您的体内实时(或几乎实时)测量的所有指标。

Source: https://habr.com/ru/post/zh-CN443154/


All Articles