Luz de fundo do teclado do DasKeyboard com base na glicemia usando a API REST

Do blog de Scott Hanselman, professor, programador e palestrante.

Há muito tempo escrevo artigos sobre tópicos na interseção de diabetes e tecnologia em meu blog. Em 2012, o estado das tecnologias relacionadas ao diabetes foi deplorável , mas agora elas estão experimentando um aumento promissor .

Se você tem diabetes tipo I e usa um medidor de glicose contínuo (CGM), precisará configurar o serviço Nightscout e terá uma API REST para acessar seus dados de glicose no sangue. O CGM verifica o nível de glicose no meu sangue a cada 5 minutos, através do canal Bluetooth de baixa potência, os dados vão para o meu telefone e daí para a nuvem. Mas você precisa armazenar dados de glicose na nuvem sob seu controle. Os fabricantes de CGM oferecem suas próprias nuvens, mas podemos exportar facilmente de lá para o banco de dados MongoDB.

Meu Nightscout é executado no Azure e meu corpo tem sua própria API REST. Eu posso fazer a seguinte solicitação HTTP GET:

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

e obtenha esse tipo de resposta:

[ { _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" } ] 

Se eu alterar a URL .json para .txt, obtenho o seguinte:

 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 

O valor fixo no final é um valor enum que me dá uma idéia geral do comportamento da glicose. Os diabéticos precisam monitorar a glicose a cada hora e, às vezes, a cada minuto. Portanto, é muito importante ter exibições que possamos ver rapidamente. Ou seja, qualquer coisa que possa dar uma idéia do meu estado atual.

Por exemplo:

  • Alexa, qual é o meu nível de glicose?
  • Como adicionar dados e tendências de glicose a uma solicitação Git / PATH em uma linha de entrada.
  • Arduino com LCD.
  • O calendário dakBoard Family Calendar, montado na parede, mostrando os níveis de glicose.



Eu comprei recentemente um Das Keyboard 5Q para mim - e pela primeira vez eu escrevi sobre o Das Keyboard já em 2006! Ela tem sua própria API REST . E estou trabalhando no uso da API do Applet no teclado para destacar suas teclas superiores de acordo com as alterações no nível de glicose no meu sangue. Usarei suas bibliotecas para Node e JavaScript, e tudo funcionará no contexto de seu software .

No entanto, como o teclado tem uma API REST em execução no host local e meu nível de glicose também o possui, criei o seguinte script no meu joelho. Adicionei-o ao cron e agora meu teclado altera a luz de fundo de laranja (baixo) para verde, amarelo ou vermelho (alto), paralelamente às alterações no nível de glicose no meu sangue. Acabou sendo um bom indicador de segundo plano. Alguém twittou que, dizem eles, ninguém está olhando para o teclado. Na minha opinião, isso é estúpido. Provavelmente notarei se meu teclado ficar vermelho. Este ainda é um aviso de segundo plano, mas se necessário, posso adicionar facilmente uma chamada a alguma mensagem mais explícita no script.

 #!/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\" 

A API do teclado local deve enviar um sinal para apenas uma zona ou chave, então apliquei um pequeno hack, enviando mais de cem solicitações REST para colorir todo o teclado. No entanto, todas essas chamadas ocorrem localmente e não carregam muito o sistema. Após a transição para a nova API, tudo se tornará mais preciso.


Além disso, pressionando a tecla de volume, juntamente com qualquer tecla destacada, uma janela pop-up é exibida com o valor exato do nível de glicose (esta é uma mensagem na segunda chamada para enrolar). Isso é novamente um hack, mas vou criar um aplicativo formal, que pode ser instalado a partir da loja de aplicativos. O código pode ser obtido aqui .

Que outras boas idéias você tem sobre a notificação de açúcar em segundo plano? Faixa de LED ao redor do monitor? Lâmpada inteligente Phillips Hue?

A propósito, a ideia com uma tela que você pode ver pode ser usada para rastrear outros indicadores - freqüência cardíaca, ansiedade, pressão arterial - tudo o que pode ser medido em seu corpo em tempo real (ou quase real).

Source: https://habr.com/ru/post/pt443154/


All Articles