Skip to content

Latest commit

 

History

History
132 lines (91 loc) · 5.02 KB

File metadata and controls

132 lines (91 loc) · 5.02 KB

Компоненты

Алиас Описание
phone_master Телефон, получающий данные от xDrip
phone_slave Телефон, получающий данные только от сервера
watch_master Часы, сопряжённые с phone_master
watch_slave Часы, сопряжённые с phone_slave
server Сервер Diasync, получающий данные от phone_master и раздающий их другим устройствам

Назначение

Diasync — распределённая система мониторинга уровня глюкозы, предназначенная для:

  • отображения данных на телефонах и часах в виде графиков
  • алертов при отклонениях от нормы
  • синхронизации данных между компонентами
  • работы без связи при наличии локальных данных (offline-first)

Потоки данных

phone_master

  • Источник: xDripBroadcastReceiver
  • Обрабатывает:
    • сохранение в локальную базу данных
    • обновление виджета
    • отправку на watch_master (через Wear OS Data Layer API)
    • отправку на server

Offline-first: работает без интернета, полная локальная автономия.


phone_slave

  • Источник: server
  • Обрабатывает:
    • сохранение в локальную базу
    • обновление виджета
    • отправку на watch_slave

Не поддерживает offline-first: требует доступ к server для получения данных.


watch_master и watch_slave

  • Источники:

    • Привязанный phone_* — приоритетный
    • server — fallback
  • Поведение:

    • Получают данные от phone_*, если есть соединение
    • Не выходят в интернет при наличии подключения к телефону
    • Используют локальную базу данных:
      • историю
      • последние значения
      • настройки

Offline-first: watch_master способен получать данные по цепочке xDrip → phone_master → watch_master, без интернета


Локальное хранилище

На всех компонентах (phone_*, watch_*) используется локальная база данных:

  • Room / SQLite
  • Сохраняется:
    • история глюкозы
    • последние значения
    • настройки
    • статус алертов

Алерты

Типы событий:

  • LOW: уровень глюкозы ниже порога
  • HIGH: уровень глюкозы выше порога
  • NO_DATA: отсутствие новых данных

Параметры конфигурации:

  • Пороговые значения (LOW, HIGH)
  • Включение/отключение типов алертов
  • Временное отключение всех алертов (snooze)

Алерты работают локально — на любом компоненте, где доступны данные.


Расширяемость

  • Архитектура построена на event bus / message-driven
  • Простота расширения:
    • новых источников данных (Nightscout, LibreLinkUp и др.)
    • новых каналов доставки и визуализации
    • альтернативных стратегий оповещения

Примеры потоков

phone_masterwatch_master

  1. xDrip публикует новое значение
  2. phone_master:
    • сохраняет данные в БД
    • обновляет виджет
    • отправляет на watch_master
    • отправляет на server

serverphone_slavewatch_slave

  1. phone_slave получает данные с server
  2. Сохраняет в БД
  3. Обновляет виджет и отправляет данные на watch_slave

Ссылки