Что такое OpenAPS и почему увольнение имеет значение

OpenAPS (Open Artificial Pancreas System) — это платформа с открытым исходным кодом, которая позволяет людям с диабетом создавать персонализированную автоматизированную систему доставки инсулина. Она работает на небольших одноплатных компьютерах — обычно Raspberry Pi или BeagleBone Black — считывая данные непрерывного монитора глюкозы (CGM), запустив алгоритм и беспроводным управлением совместимым инсулиновым насосом. В то время как установка одного устройства хорошо работает для многих, полагаясь на одну плату, вводит одну точку отказа. Разбившаяся SD-карта, сбой питания, отсев сети или поврежденный файл конфигурации могут остановить доставку инсулина без предупреждения. Для жизненно важной системы этот риск неприемлем.

Запуск нескольких устройств OpenAPS создает избыточную, отказоустойчивую установку, которая поддерживает работу вашего цикла управления даже при отказе отдельных компонентов. Это руководство проходит через все аспекты: выбор оборудования, синхронизация данных на устройствах, внедрение автоматического отказа, тестирование вашей настройки и поддержание ее с течением времени. К концу у вас будет готовый к производству подход к надежному управлению 24/7.

Основная потребность в увольнении в закрытой петле DIY

В любой автоматизированной системе самое слабое звено определяет общую надежность. Для замкнутого цикла DIY это слабое звено часто является одноплатным компьютером. Аппаратура может выйти из строя, программное обеспечение может сорваться, а сетевое подключение может упасть. Без избыточности отказ заставляет пользователя вернуться в ручной режим - управление с открытым контуром - до тех пор, пока проблема не будет решена. Это может означать часы или даже дни менее оптимального управления глюкозой. Увольнение обеспечивает:

  • Непрерывная работа: Если первичная плата умирает, вторичная плата берет верх в течение нескольких секунд.
  • Окна технического обслуживания: Обновляйте одно устройство, в то время как другое обрабатывает терапию без каких-либо перерывов.
  • Мир разума: Воспитатели и пользователи знают, что есть горячий резерв, готовый действовать.

Увольнение — это не только отказ от лечения — оно также улучшает целостность данных . С двумя устройствами, регистрирующими одни и те же события независимо, у вас есть дважды проверенная запись доставки инсулина и показаний глюкозы. Это может быть бесценным для пост-сходного анализа и устранения неполадок.

Преимущества многоустройства OpenAPS Rig

Помимо простого отказа, установка нескольких устройств предлагает несколько практических преимуществ:

  • Программная устойчивость: Использование двух различных типов плат (например, Raspberry Pi 4 и BeagleBone Black) защищает от сбоев, характерных для компонентов. Если широко распространенная проблема коррупции SD-карты затрагивает одну модель, другая, вероятно, не затронута.
  • Сетевое разнообразие: Каждое устройство может подключаться к другой точке доступа Wi-Fi или использовать проводное соединение Ethernet. Если один сегмент сети выходит из строя, другая установка поддерживает подключение к Nightscout и насосу.
  • Распределение нагрузки: Вы можете назначить первичное устройство для обработки цикла (считывание CGM + алгоритм + команды насоса), в то время как вторичное устройство действует как выделенный загрузчик для Nightscout и станции мониторинга.
  • Изолированное устранение неполадок: Когда возникает проблема, вы можете переключиться на резервную копию и исследовать первичный офлайн без остановки терапии.
  • Грейсовая деградация: Даже если одно устройство выходит из строя, резервная копия имеет доступ к последним синхронизированным данным, поэтому она может принимать обоснованные решения немедленно.

Выбор совместимого оборудования

Поддерживаемые одноплатные компьютеры

Проект OpenAPS официально поддерживает несколько платформ. Для избыточной настройки выберите две платы, которые либо идентичны, либо достаточно похожи по возможностям. Популярные варианты включают:

  • Raspberry Pi 3B+/4B/5 — Широко доступны, отличная поддержка сообщества и множество руководств. Используйте высокопроизводительную SD-карту (например, Samsung Pro Endurance) или загрузку с USB-прикрепленного SSD, чтобы минимизировать риск коррупции.
  • BeagleBone Black (или BeagleBone Green) — Включает встроенное флэш-хранилище eMMC, что делает его менее восприимчивым к проблемам с SD-картами.
  • Intel NUC или ODROID — Более мощные, но поддержка сообщества тоньше. Они могут быть полезны, если вам нужна дополнительная обработка для расширенных функций, таких как машинное обучение.

Для системы с несколькими устройствами использование двух одинаковых плат упрощает конфигурацию и сценарии отказоустойчивости.Однако смешивание Pi и BeagleBone также возможно, если вы поддерживаете идентичные версии алгоритма и программного обеспечения.

Мощность и связь

Надежная мощность имеет решающее значение. Каждое устройство должно питаться от выделенного, регулируемого источника питания 5 В, который может справиться с пиковым отводом платы (2,5 А для Pi 4, 1 А для BeagleBone). Рассмотрим небольшой ИБП (бесперебойный источник питания) или аккумуляторный блок большой емкости, который может поддерживать работу обеих плат при коротких перебоях питания. Кроме того:

  • Используйте проводной Ethernet для по меньшей мере одного устройства, чтобы уменьшить задержку и избежать помех Wi-Fi.
  • При использовании Wi-Fi установите каждое устройство на другой канал или подключитесь к различным точкам доступа, чтобы избежать одновременной потери соединения.
  • Назначьте статические IP-адреса или используйте резервирование DHCP, чтобы устройства всегда имели одинаковые адреса для мониторинга сердцебиения.

Настройка нескольких устройств

Первоначальная установка

Следуйте официальной документации OpenAPS для каждой платы. Шаги для настройки для нескольких устройств:

  • Уникальные имена хостов: Назовите одно устройство и другое (или аналогичные), чтобы избежать сетевых конфликтов и сделать журналы ясными.
  • Одна и та же версия программного обеспечения: Установите один и тот же выпуск OpenAPS (например, версия Oref0 0.7.x) на обоих устройствах. Несоответствующие версии могут привести к различному поведению алгоритма во время отказа.
  • Отдельные файлы конфигурации: Каждому устройству нужны свои , и . Не связывайте их между устройствами — сохраняйте копии, чтобы избежать случайных перезаписей.
  • Настройки, контролируемые по вертикали: Храните файлы конфигурации в частном репозитории Git (например, на GitHub или персональном сервере). Это отслеживает изменения и позволяет быстро синхронизировать настройки между устройствами.

Синхронизация данных между устройствами

Для бесшовного отказа оба устройства должны обмениваться данными в режиме реального времени. Цель: резервное устройство всегда знает последнее значение глюкозы, недавнюю историю доставки инсулина и состояние насоса. Существует несколько методов, каждый из которых имеет компромиссы:

  • Nightscout (облачный): Оба устройства загружаются на один и тот же сайт Nightscout. Резервное копирование может получать последние несколько часов данных через API Nightscout при запуске, а затем периодически проводить опрос. Это хорошо работает, но требует доступа в Интернет и вводит задержку.
  • Местный брокер MQTT (рекомендуется): Запустите сервер Mosquitto MQTT на Raspberry Pi Zero или в вашей домашней сети. Каждое устройство OpenAPS публикует темы (например, , ) и подписывается на эти темы с другого устройства. MQTT быстрый, легкий и работает в автономном режиме.
  • Общая файловая система (NFS/SMB): Настройка сетевого долевого участия, где оба устройства пишут файлы состояния. Используйте атомные записи (записывайте в временный файл, затем переименовывайте), чтобы избежать частичных считываний. Этот метод может быть медленнее и может страдать от проблем с блокировкой файлов.
  • Репликация базы данных (продвинутая): Настройка InfluxDB на отдельном сервере. Обе установки записывают измерения в одни и те же базы данных. Резервное копирование может запрашивать InfluxDB для последних данных. Это обеспечивает надежные исторические данные, но добавляет сложность.

Практическая рекомендация: Начните с синхронизации Nightscout, потому что она уже является частью большинства конфигураций OpenAPS. Затем добавьте MQTT для локального обмена данными с низкой задержкой.

Реализация автоматического провала

Мониторинг сердцебиения

Неудача зависит от сердцебиения: каждое устройство периодически посылает сигнал «Я жив».Простая реализация:

  • Создайте легкую конечную точку HTTP на каждом устройстве (например, ), которая возвращает временную метку и статус.
  • В качестве альтернативы, используйте MQTT с зарезервированной темой: и . Пусть каждая установка публикует сообщение JSON каждые 15-30 секунд.
  • На резервном устройстве запустите скрипт, который проверяет сердцебиение первичного. Если три последовательных сердечных удара пропущены (например, 90 секунд без сигнала), резервная копия объявляет первичное мертвым.

Автоматическая коммутация

Когда резервная копия решает, что первичная недоступна, она должна взять на себя управление без вмешательства пользователя. Шаги для надежного переключателя:

  1. Контроль за заявкой: Запишите флаг в общее местоположение (например, тему MQTT или файл в сетевом доле), указав, что резервная копия теперь активна. Первичная, когда она восстановится, прочитает этот флаг и останется в режиме ожидания.
  2. Возьмите связь с насосом: Если оба устройства имеют общий физический насос (например, через Bluetooth или последовательный), убедитесь, что только одно устройство имеет соединение насоса.
  3. Продолжайте цикл: Резервное копирование использует самые последние синхронизированные данные для перезапуска цикла OpenAPS. Оно должно записывать событие в Nightscout в качестве заметки о лечении (например, «Failover: backup now active»).
  4. Отправить оповещение: Используйте Pushover, электронную почту, SMS или местный зуммер, чтобы уведомить пользователя о том, что произошел отказ.

Предотвращение похлопывания

Похлопывание происходит, когда первичное восстанавливается и сразу же возвращает контроль, вызывая колебания. Используйте таймер мертвого времени: как только резервное копирование берет верх, оно не должно отказываться от управления в течение как минимум 5-10 минут, даже если сердцебиение первичного актива снова появляется. После этого периода резервное копирование может понизиться, если первичное стабильно. Лучший подход: требуется ручное подтверждение для переключения назад. Пользователь может затем выбрать восстановление первичного после проверки его полностью здоровым.

Ручной перебор

Несмотря на автоматизацию, всегда обеспечивайте ручную переопределение. Реализуйте простой веб-интерфейс (например, с помощью Node-Red или веб-приложения Flask) с кнопкой для обозначения того, какое устройство активно. Также физический переключатель, который отключает питание на одно устройство, может служить последним средством. Документируйте ручную процедуру четко и регулярно тестируйте ее.

Тестирование и валидация

Ваша система отказоустойчивости хороша только при ее тестировании. Создайте график для имитации отказов каждые 2-4 недели. Используйте контрольный список:

  • Моделирование сбоя в работе аппаратного обеспечения: Удалите питание из первичной, затем вытащите SD-карту во время работы (симуляция повреждения карты). Проверьте активацию резервной копии в течение ожидаемого тайм-аута (обычно 60-90 секунд).
  • Моделирование сетевого отказа: Отключите сетевой кабель первичного устройства. Подтвердите, что резервная копия все еще может получить доступ к Nightscout и общаться с насосом.
  • Тест на синхронизацию данных: Намеренно остановить поток данных в резервную копию (например, приостановив подписку MQTT). Перезапустить его и проверить резервную копию догоняет последние 15 минут данных, прежде чем взять под контроль.
  • Тест на восстановление: Приведите первичную резервную копию в онлайн. Убедитесь, что она распознает резервную копию активной и остается в режиме ожидания, не запуская другой переключатель.
  • Проверить, что отказоустойчивое предупреждение достигает вас (нажмите уведомление, электронная почта, или любой метод, который вы используете) в течение 30 секунд после переключения.

Записывайте каждый тест в журнал или в заметки Nightscout. Если у вас есть воспитатель, вовлекайте его в тесты, чтобы они знали, чего ожидать.

Обновления и обновления

Сохранение обоих устройств на одной и той же версии программного обеспечения имеет важное значение для предсказуемого поведения.

  • Постоянные обновления: Всегда обновляйте одно устройство первым, оставляя другое запущенным.После 24-48 часов стабильной работы обновляйте второе. Если возникает проблема, можно вернуть обновлённое устройство без нарушения терапии.
  • Используйте постановочную доску: Поддерживайте третью «запасную» доску, которую вы обновите первой.После двух недель стабильности примените изменения к обеим производственным установкам.
  • Автоматизируйте обновления с осторожностью: Работа cron может проверять наличие новых выпусков OpenAPS каждую ночь, но только загружать и применять, если установлен флаг, одобренный человеком.
  • Журналы мониторинга: Настройте ротацию журналов и перенаправьте критические ошибки на телефон через системный журнал или rsyslog.

Защита вашей настройки Multi-Device

Больше устройств означает больше поверхностей атаки. Реализуйте эти меры безопасности:

  • Сильная аутентификация: Используйте уникальные длинные пароли для SSH и веб-интерфейсов. Отключите аутентификацию пароля полностью и полагайтесь на ключи SSH с паролями.
  • Сегментация сети: Поместите обе установки на изолированную VLAN, если ваш маршрутизатор поддерживает ее. Они должны иметь доступ только к Nightscout, серверам обновлений и брокеру MQTT. Блокируйте все входящие соединения из Интернета.
  • Шифрование: Задействуйте HTTPS для всех коммуникаций Nightscout. Используйте MQTT поверх TLS (порт 8883). Создавайте самоподписанные сертификаты или используйте Let’s Encrypt, если ваш брокер выставлен (не рекомендуется).
  • Физическая безопасность: Настройка плат в мягкий корпус или корпус. Убедитесь, что SD-карты или SSD-накопители не легко вытесняются. Используйте сброс напряжения для питания и сетевых кабелей.
  • Регулярные аудиты: Обзор открытых портов с или . Отключите любые услуги, которые не являются строго необходимыми (например, Bluetooth, Wi-Fi при использовании Ethernet).

Ресурсы и поддержка сообщества

Вы не строите это в одиночку. Сообщество OpenAPS активно, осведомлено и гостеприимно. Ключевые ресурсы:

При обращении за помощью предоставьте свои аппаратные данные, версии программного обеспечения, метод отказоустойчивости и любые журналы ошибок. Сообщество ценит подробные, уважительные вопросы.

Заключение

Запуск OpenAPS с несколькими устройствами превращает хорошую автоматизированную систему доставки инсулина в действительно надежную. Выбирая совместимое оборудование, эффективно синхронизируя данные, внедряя отказоустойчивость на основе сердцебиения и тщательно тестируя, вы создаете настройку, которая может выдержать сбои оборудования, сетевые сбои и человеческие ошибки. Первоначальные усилия - выбор плат, написание сценариев отказоустойчивости и тщательное тестирование - окупаются непрерывным, надежным контролем днем и ночью.

Начните с малого: настройте две одинаковые доски, настройте синхронизацию Nightscout и создайте простой скрипт сердцебиения, который отправляет вам уведомление, когда первичная система отключается. Затем постепенно добавьте автоматический отказ. Сообщество OpenAPS проложило путь с годами реального опыта. Теперь вы можете опираться на их плечи для более безопасной, более устойчивой системы, которой вы можете доверять своей жизни.