Всем привет! Меня зовут Андрей. Сегодня я расскажу о проекте, который делал для своей жены и при активном ее участии. Это устройство на Raspberry Pi с опенсорсным софтом для контроля сахара в крови с помощью данных мониторинга и команд, отдаваемых инсулиновой помпе.
Оговорюсь, что все это мы делали на свой страх и риск. Зарегистрированных медицинских устройств такого назначения не существует. Но мы не были готовы ждать, пока найдется энтузиаст, который разработает коммерческий инструмент и пройдет весь путь медицинской сертификации, чтобы продукт появился в магазинах.
Моя жена с детства болеет диабетом 1 типа (осложнение после гриппа). Сегодня эта болезнь — уже не приговор. Если следить за питанием и уровнем сахара, можно прожить долгую полноценную жизнь.
За более чем 25 лет “стажа” диабетика моя жена не получила дополнительных осложнений — это говорит о том, что она умеет следить за своим здоровьем. До 2020 года она делала это “по-старинке” — использовала специальные тест-полоски для измерения сахара в крови несколько раз в день, вела блокнотик с результатами измерений, соблюдала диету и при необходимости подкалывала инсулин вручную. Но медицина идет вперед. С 2020 года она смогла жить по-другому.
Современный подход, одобренный медициной
В 2020 году жена решила попробовать мониторинг — пожалуй, наиболее существенное достижение техники из того, о чем я далее буду рассказывать. Средство для мониторинга — зарегистрированный коммерческий продукт, а не самопал. Его можно свободно купить в России в специализированных магазинах (с поправкой на сложности с логистикой в последние полгода).
Мониторинг сахара
Система мониторинга представляет собой датчик с небольшой иголкой для проникновения через кожу, который прикрепляется на плечо и эксплуатируется в течение определенного времени. Жена использует Либру 1, которая устанавливается примерно на две недели. После этого датчик меняется на новый и отслеживание продолжается.
Мониторинг измеряет сахар раз в минуту — ты можешь в режиме реального времени видеть ситуацию через приложение для смартфона, куда данные отправляются раз в 5 минут. Сами по себе измерения менее точны, чем у обычного глюкометра, но уже позволяют немного ослабить диету и в целом повысить качество жизни на порядок, поскольку ты видишь данные в динамике. Самое главное, что такой мониторинг дает возможность анализировать происходящее, делать выводы и в будущем компенсировать все, что угодно, используя предыдущий опыт.
Сахар в крови поднимается от любого приема пищи. Но на разную еду организм реагирует по-разному (и каждый при этом по-своему). И на разный инсулин реакция тоже разная. И на кучу других факторов — физические нагрузки, стресс, гормоны, время года… Измеряя сахар всего несколько раз в день, нельзя найти строгую корреляцию между продуктами и результатом. Слишком поверхностными получаются данные. А с 12 точками в час ты можешь отслеживать реакцию организма на отдельные продукты, а впоследствии предсказывать, каков будет сахар, если ты съешь, например пирожное. В итоге пользуясь мониторингом, моя жена получает в течение суток хорошие результаты, как у здорового человека, даже не используя другие приборы, о которых речь пойдет дальше.
С заказом средств мониторинга сейчас есть определенная сложность — их приходится покупать за рубежом, и эта штука не дешевая — порядка 10 тыс. рублей на месяц. Мы стараемся заказывать на полгода — год вперед, чтобы не зависеть в короткой перспективе от внешнеполитических изменений. Насколько я знаю, в этом году в Московской области начали эксперимент с раздачей систем мониторинга по ОМС, но только для детей (и то не для всех). Возможно, когда-нибудь прогресс дотянется до всех диабетиков. Но пока взрослым больным искать их самому или пытаться добиться через суд (есть такие прецеденты при наличии клинических рекомендаций).
Инсулиновая помпа
До недавнего времени жена при необходимости подкалывала себе инсулин шприц-ручкой. Вместо этого инсулин можно вводить через помпу. Она не отменяет потребности в уколах и не принимает за тебя никаких решений, но повышает удобство введения инсулина и гибкость управления (грубо говоря, порцию инсулина, что позволяет точнее управлять сахарами). Например, находясь в людном месте, ты видишь, что у тебя поднимается сахар. Вместо того, чтобы искать туалет или другое помещение, чтобы сделать себе инъекцию, ты можешь со специального пульта подать команду помпе.
Помпа — тоже довольно дорогая штука. Но в нашей стране некоторым категориям диабетиков ее выдают по ОМС. Моей жене повезло — помпу она получила как раз по страховке. Иначе пришлось бы покупать за свои деньги и на расходники к ней уходило бы еще 10 тыс. в месяц.
Почему этого недостаточно
Ни у помпы, ни у системы мониторинга нет собственных “мозгов”. Имея эти два инструмента, можно сделать себе почти идеальный сахар. Но будут сложности. Главная из них — это ночь, когда человек спит и не может постоянно контролировать уровень сахара на экране телефона. Моя жена настраивала уведомления — телефон будил ее, если уровень сахара выходил за определенные рамки вверх или вниз. Необходимые меры она предпринимала в ручном режиме — либо ела что-то быстро усваивающееся, если сахар слишком низкий, либо вводила себе инсулин, если сахар повышается.
Весь процесс наблюдения за сахаром подчиняется известному алгоритму. Почему бы не задействовать для этого некую систему, которая бы следила за графиком и сама отдавала команды помпе в зависимости от уровня сахара?
Опенсорс автоматизация
Устройства, реализующие такую автоматизацию, существуют — называются петли или APS (Artificial Pancreas System — Искусственная Поджелудочная Железа, ИПЖ).
Проблема в том, что их нельзя купить ни в России, ни за рубежом — они существуют только в форме опенсорс проектов, которые курируют сами диабетики, либо люди, как-то связанные с этим заболеванием. Коммерческих предложений пока просто не существует.
В некоторых помпах последних моделей есть примитивные зачатки подобных функций, но они далеки от искусственной поджелудочной. ИПЖ способна прогнозировать сахар наперед с учетом переданной информации о еде и физнагрузке, чтобы заранее скорректировать подачу инсулина. А самые современные помпы пока умеют только отключать подачу инсулина при слишком низком сахаре в крови. Этого недостаточно.
Дисклаймер — все на свой страх и риск
Если выше речь шла о медицинских устройствах, которые прошли соответствующие испытания и сертификацию, пусть не все из них в России, то дальнейший рассказ будет о самоделках, которые не проходили клинических испытаний вообще (если не считать эксперименты на себе их создателей и рядовых пользователей). Разрабатываются они энтузиастами, которые могут ошибаться, и ошибаются. Поэтому каждый, кто решается на использование этого инструмента, фактически подписывается на тестирование на себе чего-то нового.
В интернете вы можете найти предложения от энтузиастов, которые разобрались в этой системе и могут за деньги собрать и настроить такую штуку. Два года назад это стоило около 35 тыс. рублей. Но все они работают неофициально. Результаты их работы не проходили никакого тестирования.
Два года назад мы с женой приняли решение поэкспериментировать с автоматизацией. На тот момент мы стояли перед выбором — связаться с таким энтузиастом или подключить собственные мозги и смекалку, создав устройство своими силами по инструкциям опенсорс проектов. Я почитал о том, как все это устроено, и понял, что лучше разбираться самому — мне вполне хватит знаний это сделать. И речь тут не только про экономию денег. Если устройство выйдет из строя, мне не придется искать потом этого энтузиаста и заново оплачивать его работу.
Почему мы на это решились? Потому что устройство не подразумевает никакой магии. Туда закладываются данные и алгоритм, который ты и так реализуешь в жизни. И эти данные были, поскольку жена много лет отлично следила за своим здоровьем. А еще мы оба согласны с девизом одного из проектов: “Мы не хотим ждать”, пока подобные устройства пройдут всю сертификацию по медицинским правилам. Здоровье важно здесь и сейчас.
Выбор решения
Изучая рынок, я подробно рассматривал два проекта:
-
AndroidAPS (t.me/androidapsgroup, https://github.com/MilosKozak/AndroidAPS — кажется, проект уже не развивается) — приложение под мобильное устройство;
-
OpenAPS (t.me/my_openaps, https://openaps.readthedocs.io/en/latest/) — более развитый проект, который нужно устанавливать на отдельное устройство.
Еще есть Loop, но на тот момент я его не рассматривал вообще.
Два года назад — когда я выбирал проект — AndroidAPS был слабо развит. Его единственным преимуществом была установка на смартфон (т.е. не надо было отдельной коробочки). Но он не работал с помпой, выданной жене. Поэтому нам оставался OpenAPS.
Подводные камни или почему устройство нельзя просто собрать по инструкции
Проект OpenAps довольно популярен. У него есть неплохая инструкция, описывающая, как и из чего собрать ИПЖ. Но оглядываясь на два года экспериментов, могу сказать, что реализовать это самостоятельно без технических знаний непросто. Кроме инженерных мозгов, помогающих собрать железо, нужны базовые знания Linux.
Наш проект начался со сборки железа. И это отдельная песня.
Подбор железа
Документация OpenAPS рекомендует использовать маленький энергоэффективный Intel Edison (на Хабре есть статья о нем).
Проблема в том, что Intel выпускал его несколько лет назад, но потом закрыл проект. Несколько лет назад его можно было купить на Ebay с рук, но в 2022 году, пожалуй, его уже можно и не рассматривать. Для сборки конечного устройства нужен не только сам портативный компьютер, но и обвес к нему — Explorer board block с радиомодулем. А они давно не выпускаются, как и сам Intel Edison.
Второе рекомендованное решение — Raspberry Pi. Именно его я и взял за основу, купив на AliExpress. Дополнительно к нему потребовались:
-
радиомодуль для отправки данных помпе (у нее нет Bluetooth и Wi-Fi, а взаимодействие идет через радиоканал посредством уязвимости в системе безопасности помпы) — один из трех вариантов плат, совместимых с OpenAPS. Просто радиомодуль найти — не проблема, поддерживаемый — проблема. Здесь были определенные нюансы, о которых расскажу далее;
-
плату питания — на AliExpress есть варианты под различные типы АКБ;
-
непосредственно аккумулятор;
-
кейс, в который поместится вся начинка. Кейс в итоге пришлось рисовать и печатать самостоятельно, т.к. мне не подошла модель, рекомендованная документацией OpenAPS.
Экспериментируя, я собрал жене несколько устройств с OpenAPS — искал, что будет лучше работать и удобнее эксплуатироваться.
Самый первый вариант я собирал два года назад, пытаясь минимизировать цену устройства. Приобрел комплект, указанный в документации. Причем, я не покупал готовые полуфабрикаты, а вместо этого брал более мелкие и дешевые детали на Aliexpress и соединял их вместе, вооружившись паяльником. С этим мне помог отец.
Получившееся устройство было небольшим и в целом работало, однако оно было без экрана. Хотя изначально в него был заложен аккумулятор, через несколько дней эксплуатации он перестал работать, поэтому приходилось носить вместе с устройством power bank. А самое главное — по неясной мне причине он довольно часто терял связь с помпой, что было довольно критично.
Второй вариант решил делать строго по документации, используя Explorer HAT.
Этот вариант был проще в реализации, но и гораздо дороже. Детали пришлось заказывать в онлайн магазине из США. Такая сборка работала намного лучше в плане связи с помпой, однако она по-прежнему не работала автономно (аккумулятор был, но не заработал — пришлось использовать power bank). Экран, который изначально отображал информацию о работы системы, сломался через пару месяцев эксплуатации. Рекомендованный корпус к этой сборке я печатал на принтере, скачав готовую 3d модель. Он оказался довольно некрасивым и ненадёжным.
Третий вариант был на основе этой инструкции. Здесь уже получилось добиться автономности до полутора суток, при этом связь с помпой остаётся хорошей. Также присутствует небольшой экран. Кейс к этой версии пришлось рисовать самому (использовал FreeCAD).
Итоговое устройство получилось довольно крупным, размером с неплохой power bank, зато с большим временем автономной работы. Из недостатков могу отметить то, что в этой сборке экран тоже перестал работать через пару месяцев эксплуатации.
В итоге мы остановились на последнем, третьем варианте. Нерабочий экран и крупный размер — это в целом не особо критичные недостатки — с ними можно смириться, тем более на данный момент вряд ли возможно устранить за разумное время. Экраны, похоже, сами по себе довольно некачественные, а размеры устройства обусловлены энергоэффективностью Raspberry pi и необходимым временем автономной работы.
Установка софта
Алгоритм установки и настройки OpenAPS может различаться в зависимости от того, какое у вас железо и когда вы это делаете. Например, если сегодня у вас получилось успешно заставить устройство работать, то через год может обнаружиться, что после обновлений зависимых библиотек старая инструкция уже не актуальна и нужно её дорабатывать.
Однако я всё же приведу в пример свой (третий) способ сборки и настройки, который на момент написания этой статьи является актуальным и рабочим решением.
Вот полный список железа, который следует приобрести:
-
Любая карта MicroSD
-
Два аккумулятора 18650
Инструкция по установке на 8 августа 2022 года:
-
Установить образ Raspberry Pi OS Lite на MicroSD карту с помощью, программы Raspberry Pi Imager. Выбрать версию Raspberry PI OS (other) -> Raspberry PI OS Lite (32-bit, Bullseye, no desktop). Перед началом записи образа следует не забыть там же в настройках указать данные для доступа к wi-fi и ssh, если необходимо.
-
Вставить MicroSD карту в Raspberry Pi и включить устройство. Подключиться к его консоли.
-
Выполнить команду
sudo raspi-config;
выбрать пункт 3 Interfacing Options; включить пункты SPI и I2C. -
Следующие команды необходимо выполнять из-под рута:
apt update curl -s https://raw.githubusercontent.com/openaps/oref0/dev/bin/openaps-install.sh > /tmp/openaps-install.sh bash /tmp/openaps-install.sh dev
Перед началом установки программа запросит имя хоста и пароли. По окончании предложит запустить интерактивную установку. В диалоговом режиме вам предложат ввести свои данные (пароли, токены, серийный номер помпы и т.п.). По результатам ваших ответов будет сформирована консольная команда для запуска установки.Пример для нашего железа:
/root/src/oref0/bin/oref0-setup.sh --dir=/root/myopenaps --serial=PUT_YOUR_VALUE -- cgm=xdrip --ns-host=PUT_YOUR_VALUE --api-secret=token=PUT_YOUR_VALUE --tty=/dev/spidev0.1 --max_iob=14 --enable=' autotune ' --radio_locale='WW' -- btmac='PUT_YOUR_VALUE' --pushover_token='PUT_YOUR_VALUE' -- pushover_user='PUT_YOUR_VALUE' --hardwaretype='radiofruit' --radiotags='rfm69'
Данную команду следует запускать также из-под рута (если вы не запустили её сразу после интерактивной установки). Вместо
PUT_YOUR_VALUE
следует указать свои данные. На все последующие вопросы следует соглашаться. -
Следующие команды необходимо выполнять из-под рута:
apt install libdbus-1-dev libglib2.0-dev
pip install dbus-python
cd /root/src/oref0
npm install
service cron stop
bluetoothctl
power off
power on
discoverable on
scan on
agent on
default-agent -
Найдите в вашем телефоне по Bluetooth ваше устройство openaps и создайте пару.
-
Выполните команду
paired-devices
чтобы проверить, что пара создана. -
Включите на вашем телефоне Bluetooth-модем.
-
Выполните команду
trust <mac address>
с указанием мак адреса вашего телефона. -
Выполните команду
exit
для выхода из bluetoothctl. -
Добавьте в crontab из-под рута команду
*/5 * * * * bt-pan client <mac address телефона>
. -
Если пользуетесь xDrip, то следует выполнить crontab -e и указать там дополнительный параметр
API_SECRET_xDripAPS
. -
Выполнив команду
ifconfig bnep0
, можно узнать ip адрес для программы xDrip. Формат адреса для REST API: http://secret@ip:5000/api/v1/. -
Следующие команды необходимо выполнять из-под рута:
dhclient bnep0
service cron start -
В программе xDripAPS существует ошибка, описанная здесь. Для исправления необходимо внести изменения в файл /root/.xDripAPS/xDripAPS.py аналогично данному MR’у. На момент написания инструкции ошибка проявлялась в том, что программа xDrip+ получала от openaps ошибку INTERNAL SERVER ERROR при попытке отправить calibrations. После внесения изменений следует перезагрузить компьютер.
-
Для настройки мониторинга аккумулятора следует выполнить следующие команды:
sudo apt-get install p7zip python3-smbus
wget https://www.waveshare.com/w/upload/d/d9/UPS_HAT.7z 7zr x UPS_HAT.7z -r -o./UPS_HAT
sudo cp ./UPS_HAT/UPS_HAT/INA219.py /opt/INA219.py
sudo sed -i 's/while True/if True/g' /opt/INA219.py
sudo sed -i 's/time.sleep(2)//g' /opt/INA219.py
sudo bash
echo "alias u='python3 /opt/INA219.py'" >> /etc/profile.d/00-aliases.sh
reboot -
Логи openaps можно увидеть с помощью команды l. Статус аккумулятора — с помощью команды
u
.
Здесь я привёл только настройки самого openaps, т.к. они содержат наибольшее количество подводных камней. Для настройки xDrip и nightscout должно быть достаточно официальной документации, которую можно найти по ссылкам:
Конфиг openaps находится здесь: ~/myopenaps/preferences.json. В нём можно настроить работу системы под себя.
Как это выглядит на практике
Использование этой системы означает, что с собой надо всегда носить несколько устройств:
-
мониторинг, который закреплен на плече и раз в минуту измеряет сахар,
-
трансмиттер для данных мониторинга. Либра 1 не умеет связываться с телефоном по Bluetooth, у него есть только NFC. Соответственно нужен трансмиттер, который устанавливается сверху на сенсор мониторинга, считывает данные по NFC и отправляет их на телефон по Bluetooth;
-
телефон в сумке, который получает с мониторинга график сахара; телефон шлет информацию на APS;
-
APS в сумке. Устройство получает данные с телефона и формирует команды для помпы,
-
помпа, исполняющая команды от APS.
Время автономной работы этого комплекта — до полутора суток. Каждую ночь жена ставит устройство на подзарядку. К утру аккумулятор заряжается и устройство перекочевывает на полку рядом с ее рабочим местом или в сумку, если она выходит на улицу. Весь этот комплект всегда с собой.
Я упоминал, что есть самозанятые, к которым можно обратиться для настройки устройства — решения всех описанных проблем — за деньги. Но, честно говоря, я не представляю, как бы этим пользовался человек, который не разобрался в системе.
Моей жене в этом смысле повезло — она PHP-программист. Для нее не проблема зайти на устройство для его настройки с телефона через консоль по SSH.
APS не избавляет от необходимости следить за здоровьем и не снимает ответственность. В устройство постоянно надо вводить данные о питании, при необходимости корректировать коэффициенты. Т.е. APS позволяет получить результат лучше, чем раньше делал человек, но только за счет того, что не спит и не отдыхает — занимается этим процессом 24 часа в сутки, 7 дней неделю. Фактически, APS использует знания и опыт его владельца (и взять их из другого источника — из какой-нибудь библиотеки или от другого диабетика — он не может). Так жизнь становится чуть более комфортной. Имея больше данных о своем здоровье — о реакции на разные типы питания — можно позволить себе чуть больше разнообразия. Например, моя жена иногда ест пирожные, продолжая следить за приборами и графиками. Еще года 2 назад это было проблематично.
Немного аналогий от моей жены
Представьте, что вы едете ночью на машине по дороге. Если у вас нет диабета, вы можете включить автопилот и подремать. Если у вас диабет 1 типа, ваш автопилот сломан и управление автомобилем — в ваших руках. Но есть некоторые сложности.
Во-первых, дорога не ровная, она постоянно петляет. На уровень сахара в крови влияет буквально все, что-то вы можете посчитать заранее, например БЖУ съеденного обеда (такие «повороты» дороги вы можете увидеть заранее), другие посчитать практически невозможно, например, реакцию на стресс (такие «повороты» скрыты за деревьями).
Многое также зависит от вашего автомобиля.
Если его руль поворачивается только на 90 или 180 градусов без промежуточных вариантов — вы вводите инсулин шприц-ручками. Если руль вращается плавно — у вас инсулиновая помпа.
Вы едете ночью. Если фары вашего автомобиля горят непрерывно — у вас мониторинг. Если же вы можете подсветить дорогу только на пару секунд, чтобы убедиться, что вы не съехали с полосы и двигаетесь в верном направлении, — вы используете только глюкометр (каждое такое включение — платное).
Если у вас есть ИПЖ — это как ученик автошколы за рулем. Вы можете научить ее управлять автомобилем и немного расслабиться: в стандартной ситуации она справится и вы сможете немного подремать, не забывая держать ногу на дублирующей педали.
В итоге
Если хотя бы одному человеку эта статья поможет успешнее справляться с болезнью, значит, наша цель выполнена. Если у кого-то будут дополнительные вопросы по статье и в целом по диабету, то мы готовы дать советы и поделиться нашим опытом на форуме https://www.dia-club.ru/forum_ru.
Также есть замечательные книги:
Диабет 1 типа — неизлечимая болезнь. До открытия инсулина люди с таким диагнозом жили недолго. Изобретение инсулина произвело революцию в терапии сахарного диабета. Для больных стало возможным обеспечить себе срок жизни, сравнимый с жизнью здоровых людей: здесь всё зависит только от ума и дисциплины самого больного. Использование же последних достижений в электронике и IT для контроля сахара, на мой взгляд, сопоставимо по значимости с открытием инсулина. Грань между больным и здоровым человеком ещё больше стирается. Эта мысль вдохновляет меня и побуждает с бОльшим оптимизмом смотреть в будущее Человека.
Автор: Андрей Буров, Максилект
P.S. Мы публикуем наши статьи на нескольких площадках Рунета. Подписывайтесь на нашу страницу в VK или на Telegram-канал, чтобы узнавать обо всех публикациях и других новостях компании Maxilect.
ссылка на оригинал статьи https://habr.com/ru/company/maxilect/blog/685148/
Добавить комментарий