Из блога Скотта Хансельмана, преподавателя, программиста и лектора.
Я давно уже пишу в своём блоге статьи на темы, находящиеся на пересечении диабета и технологий. В 2012 году состояние технологий, связанных с диабетом, было плачевным, но сейчас они испытывают многообещающий подъём.
Если у вас диабет I типа и вы используете аппарат для непрерывного измерения уровня глюкозы (continuous glucose meter, CGM), вам понадобится настроить сервис Nightscout, и у вас появится REST API для доступа к данным по уровню глюкозы в крови. CGM проверяет уровень глюкозы в моей крови каждые 5 минут, по каналу Bluetooth с низким энергопотреблением данные поступают в мой телефон, а оттуда – в облако. Но вам нужно хранить данные по глюкозе в облаке, находящемся под вашим контролем. Производители CGM предлагают собственные облака, но мы можем легко наладить экспорт оттуда в базу данных MongoDB.
Мой Nightscout работает в Azure и у моего тела есть свой REST API. Я могу сделать следующий запрос HTTP GET:
/api/v1/entries.json?count=3
и получить ответ такого рода:
Если я поменяю в URL .json на .txt, то получу следующее:
Значение flat в конце – это значение типа enum, дающее мне общее представление о поведении глюкозы. Диабетикам приходится следить за глюкозой ежечасно, а иногда и ежеминутно. Поэтому нам очень важно иметь перед глазами дисплеи, на которые можно быстро взглянуть. То есть, что угодно, что может дать представление о моём текущем состоянии.
К примеру:

Недавно я приобрёл себе Das Keyboard 5Q – а впервые я писал о Das Keyboard аж в 2006 году! У неё есть собственный REST API. И я работаю над тем, чтобы использовать Applet API от клавиатуры для того, чтобы подсвечивать её верхние клавиши в соответствии с изменениями уровня глюкозы в моей крови. Я буду использовать их библиотеки для Node и JavaScript, и всё будет работать в контексте их ПО.
Однако поскольку у клавиатуры есть REST API, работающий на localhost, и у моего уровня глюкозы тоже он есть, я сделал на коленке следующий скрипт. Я добавил его в cron, и теперь моя клавиатура меняет подсветку с оранжевого цвета (низкий уровень) до зелёного, жёлтого или красного (высокий уровень) параллельно с изменениями уровня глюкозы в моей крови. Получился неплохой фоновый индикатор. Кто-то писал в твиттере о том, что, дескать, никто не смотрит на клавиатуру. По-моему, это глупо. Я наверняка замечу, если моя клавиатура покраснеет. Это всё-таки фоновое предупреждение, но при необходимости я легко могу добавить в скрипт вызов какого-то более явного сообщения.
Локальный API клавиатуры должен отправлять сигнал только для одной зоны, или клавиши, поэтому я применил небольшой хак, отправляя больше сотни запросов REST для окраски всей клавиатуры. Однако все эти вызовы происходят локально и не сильно загружают систему. После перехода на новый API всё станет аккуратнее.
Также по нажатию клавиши громкость совместно с любой подсвеченной клавишей появляется всплывающее окно с точным значением уровня глюкозы (это message во втором вызове curl). Это опять-таки хак, но я собираюсь сделать из этого формальное приложение, которое можно будет устанавливать из магазина приложений. Код можно взять тут.
Какие ещё у вас есть хорошие идеи по поводу фонового уведомления об уровне сахара? Светодиодная лента вокруг монитора? Умная лампочка Phillips Hue?
Кстати, идею с дисплеем, на который можно посмотреть, можно использовать и для отслеживания других показателей – пульса, тревожности, кровяного давления – всего, что можно измерять в своём теле в реальном (или почти реальном) времени.
Я давно уже пишу в своём блоге статьи на темы, находящиеся на пересечении диабета и технологий. В 2012 году состояние технологий, связанных с диабетом, было плачевным, но сейчас они испытывают многообещающий подъём.
Если у вас диабет I типа и вы используете аппарат для непрерывного измерения уровня глюкозы (continuous glucose meter, CGM), вам понадобится настроить сервис Nightscout, и у вас появится REST API для доступа к данным по уровню глюкозы в крови. CGM проверяет уровень глюкозы в моей крови каждые 5 минут, по каналу Bluetooth с низким энергопотреблением данные поступают в мой телефон, а оттуда – в облако. Но вам нужно хранить данные по глюкозе в облаке, находящемся под вашим контролем. Производители 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" } ]
Если я поменяю в URL .json на .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
Значение flat в конце – это значение типа enum, дающее мне общее представление о поведении глюкозы. Диабетикам приходится следить за глюкозой ежечасно, а иногда и ежеминутно. Поэтому нам очень важно иметь перед глазами дисплеи, на которые можно быстро взглянуть. То есть, что угодно, что может дать представление о моём текущем состоянии.
К примеру:
- Алекса, какой у меня уровень глюкозы?
- Как добавить данные и тенденции по глюкозе в запрос Git/PATH в строку ввода.
- Arduino с ЖК-дисплеем.
- Настенный календарь dakBoard Family Calendar, показывающий уровень глюкозы.

Недавно я приобрёл себе Das Keyboard 5Q – а впервые я писал о Das Keyboard аж в 2006 году! У неё есть собственный REST API. И я работаю над тем, чтобы использовать Applet API от клавиатуры для того, чтобы подсвечивать её верхние клавиши в соответствии с изменениями уровня глюкозы в моей крови. Я буду использовать их библиотеки для Node и JavaScript, и всё будет работать в контексте их ПО.
Однако поскольку у клавиатуры есть REST API, работающий на localhost, и у моего уровня глюкозы тоже он есть, я сделал на коленке следующий скрипт. Я добавил его в 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 всё станет аккуратнее.
Также по нажатию клавиши громкость совместно с любой подсвеченной клавишей появляется всплывающее окно с точным значением уровня глюкозы (это message во втором вызове curl). Это опять-таки хак, но я собираюсь сделать из этого формальное приложение, которое можно будет устанавливать из магазина приложений. Код можно взять тут.
Какие ещё у вас есть хорошие идеи по поводу фонового уведомления об уровне сахара? Светодиодная лента вокруг монитора? Умная лампочка Phillips Hue?
Кстати, идею с дисплеем, на который можно посмотреть, можно использовать и для отслеживания других показателей – пульса, тревожности, кровяного давления – всего, что можно измерять в своём теле в реальном (или почти реальном) времени.
