Rétroéclairage du clavier DasKeyboard basé sur la glycémie à l'aide de l'API REST

Tiré du blog de Scott Hanselman, enseignant, programmeur et conférencier.

J'écris depuis longtemps des articles sur des sujets à l'intersection du diabète et de la technologie dans mon blog. En 2012, l'état des technologies liées au diabète était déplorable , mais maintenant elles connaissent une recrudescence prometteuse .

Si vous souffrez de diabète de type I et utilisez un lecteur de glycémie en continu (CGM), vous devrez configurer le service Nightscout et vous disposerez d'une API REST pour accéder à vos données de glycémie. CGM vérifie le taux de glucose dans mon sang toutes les 5 minutes, via le canal Bluetooth à faible puissance, les données vont à mon téléphone, et de là au cloud. Mais vous devez stocker les données de glucose dans le cloud sous votre contrôle. Les fabricants de CGM proposent leurs propres clouds, mais nous pouvons facilement exporter à partir de là vers la base de données MongoDB.

Mon Nightscout fonctionne sur Azure et mon corps a sa propre API REST. Je peux faire la requête HTTP GET suivante:

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

et obtenez ce genre de réponse:

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

Si je change l'URL .json en .txt, j'obtiens ce qui suit:

 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 

La valeur plate à la fin est une valeur énumérée qui me donne une idée générale du comportement du glucose. Les diabétiques doivent surveiller le glucose toutes les heures, et parfois toutes les minutes. Par conséquent, il est très important pour nous d'avoir des affichages que nous pouvons regarder rapidement. Autrement dit, tout ce qui peut donner une idée de mon état actuel.

Par exemple:

  • Alexa, quel est mon niveau de glucose?
  • Comment ajouter des données et des tendances de glucose à une demande Git / PATH dans une ligne d'entrée.
  • Arduino avec LCD.
  • Le calendrier mural dakBoard Family Calendar affichant les niveaux de glucose.



J'ai récemment acheté un Das Keyboard 5Q pour moi - et pour la première fois, j'ai écrit sur Das Keyboard en 2006! Elle a sa propre API REST . Et je travaille sur l'utilisation de l'API Applet à partir du clavier afin de mettre en évidence ses touches supérieures en fonction des changements du taux de glucose dans mon sang. J'utiliserai leurs bibliothèques pour Node et JavaScript, et tout fonctionnera dans le contexte de leur logiciel .

Cependant, comme le clavier a une API REST en cours d'exécution sur localhost et que mon niveau de glucose l'a également, j'ai créé le script suivant à genoux. Je l'ai ajouté à cron, et maintenant mon clavier change le rétro-éclairage d'orange (faible) en vert, jaune ou rouge (élevé) en parallèle avec les changements du taux de glucose dans mon sang. Il s'est avéré un bon indicateur de fond. Quelqu'un a tweeté que, disent-ils, personne ne regarde le clavier. À mon avis, c'est stupide. Je vais probablement remarquer si mon clavier devient rouge. Il s'agit toujours d'un avertissement d'arrière-plan, mais si nécessaire, je peux facilement ajouter un appel à un message plus explicite du 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\" 

L'API du clavier local doit envoyer un signal pour une seule zone ou clé, j'ai donc appliqué un petit hack, envoyant plus d'une centaine de demandes REST pour colorer l'ensemble du clavier. Cependant, tous ces appels se produisent localement et ne chargent pas beaucoup le système. Après la transition vers la nouvelle API, tout deviendra plus précis.


De plus, en appuyant sur la touche de volume, ainsi que sur n'importe quelle touche en surbrillance, une fenêtre contextuelle apparaît avec la valeur exacte du niveau de glucose (il s'agit d'un message lors du deuxième appel à curl). C'est encore un hack, mais je vais en faire une application formelle, qui peut être installée à partir du magasin d'applications. Le code peut être pris ici .

Quelles autres bonnes idées avez-vous sur la notification de sucre de fond? Bande LED autour du moniteur? Ampoule intelligente Phillips Hue?

Soit dit en passant, l'idée avec un écran que vous pouvez regarder peut être utilisée pour suivre d'autres indicateurs - la fréquence cardiaque, l'anxiété, la pression artérielle - tout ce qui peut être mesuré dans votre corps en temps réel (ou presque réel).

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


All Articles