Генератор трансляцій Android для емуляції даних CGM xDrip+
Техническое задание
Android Broadcast Generator для эмуляции xDrip+ CGM данных
1. Цель проекта
Разработать Android-приложение (Foreground Service), генерирующее реалистичные CGM/glucose данные и отправляющее их через xDrip-compatible broadcast:
Intent("com.eveningoutpost.dexdrip.BgEstimate")
Приложение предназначено для:
- тестирования Nightscout backend,
- тестирования Telegram alerts,
- тестирования ingestion pipeline,
- тестирования Android receiver,
- демонстраций,
- CI/staging environments,
- разработки SaaS для CGM.
2. Основные требования
Приложение должно:
- работать без сенсора,
- не требовать BLE hardware,
- работать offline,
- поддерживать Foreground Service,
- работать в фоне,
- переживать reboot,
- автоматически восстанавливаться,
- поддерживать Android 10–16,
- поддерживать xDrip+ совместимость.
3. Broadcast формат
Action
com.eveningoutpost.dexdrip.BgEstimate
Extras
| Key | Type | Описание |
|---|---|---|
| mgdl | Double | glucose value |
| timestamp | Long | unix timestamp ms |
| direction | String | trend direction |
| noise | Int | noise level |
Пример broadcast
val intent = Intent(
"com.eveningoutpost.dexdrip.BgEstimate"
)
intent.putExtra("mgdl", 126.0)
intent.putExtra(
"timestamp",
System.currentTimeMillis()
)
intent.putExtra("direction", "Flat")
intent.putExtra("noise", 1)
sendBroadcast(intent)
4. Реалистичная модель glucose
Вместо random generator использовать curve engine
Generator должен строить:
- плавные изменения,
- realistic slopes,
- realistic delays,
- realistic variability.
5. Поддерживаемые состояния
5.1 Normal glucose
Диапазон:
80–140 mg/dL
Изменения:
- плавные,
- без резких скачков,
- realistic drift.
5.2 Meal simulation
Поддержка:
- small meal,
- medium meal,
- high carb meal.
Поведение:
После meal:
- рост через 10–20 минут,
- peak через 45–90 минут,
- постепенное снижение.
Пример curve
100
110
125
145
165
180
170
150
130
115
5.3 Insulin simulation
Поддержка:
- rapid insulin,
- correction bolus.
Поведение:
- delayed onset,
- gradual reduction,
- hypo prevention logic.
Пример
190
180
165
150
135
120
105
5.4 Hypoglycemia simulation
Диапазон:
40–69 mg/dL
Поддержка:
- gradual hypo,
- rapid hypo,
- nocturnal hypo.
Direction values
Поддержка:
- DoubleUp
- SingleUp
- FortyFiveUp
- Flat
- FortyFiveDown
- SingleDown
- DoubleDown
5.5 Compression lows
Симуляция:
- резкого ложного падения,
- noisy readings,
- быстрого восстановления.
Пример
120
118
85
60
52
48
110
115
5.6 Sensor errors
Поддержка:
- temporary invalid readings,
- impossible values,
- timestamp gaps,
- stuck values.
Типы ошибок
Error spike
400 mg/dL
Sensor freeze
120
120
120
120
Missing packets
Отсутствие broadcasts.
5.7 Warmup simulation
После запуска:
- 30–120 минут warmup,
- optional no-data mode,
- optional unstable readings.
6. Packet loss simulation
Поддержка:
- configurable packet drop rate,
- delayed packets,
- duplicated packets.
Примеры
Drop:
каждый 10-й packet пропускается
Delay:
packet отправляется с задержкой 30–90 сек
7. Noise simulation
Noise levels:
| Value | Meaning |
|---|---|
| 0 | clean |
| 1 | low noise |
| 2 | medium noise |
| 3 | high noise |
8. Foreground Service
Требования
Приложение должно:
- показывать persistent notification,
- не выгружаться системой,
- работать после lock screen,
- поддерживать autostart.
9. UI требования
Главный экран
Должен отображать:
- текущий glucose,
- текущий trend,
- текущий mode,
- active simulation,
- packet counter,
- broadcast status.
Кнопки
| Кнопка | Действие |
|---|---|
| Start | запуск |
| Stop | остановка |
| Meal | симуляция еды |
| Insulin | инсулин |
| Hypo | hypo |
| Compression | compression low |
| Error | sensor error |
10. Настройки
Интервал отправки
Настраиваемый:
1–5 минут
Unit
Поддержка:
- mg/dL
- mmol/L
Speed multiplier
Для accelerated simulation:
x1
x2
x5
x10
11. Архитектура
Рекомендуемый stack
| Компонент | Технология |
|---|---|
| UI | Jetpack Compose |
| Service | Foreground Service |
| Scheduling | Coroutines |
| Storage | Room |
| DI | Hilt |
| Logging | Timber |
12. Логирование
Логировать:
- sent broadcasts,
- glucose values,
- packet drops,
- errors,
- simulation state.
13. Экспорт
Поддержка:
- JSON export,
- CSV export,
- replay sessions.
14. Дополнительные функции (optional)
MQTT support
Публикация:
glucose/current
HTTP POST
Отправка на backend:
{
"glucose": 125,
"timestamp": 1234567890,
"direction": "Flat"
}
15. Совместимость
Проверить совместимость с:
- xDrip+
- Nightscout
- Juggluco listeners
- custom BroadcastReceiver
- AndroidAPS
16. Критерии готовности
Проект считается готовым если:
- broadcasts принимаются xDrip+,
- glucose отображается корректно,
- simulation работает стабильно,
- background execution не останавливается,
- packet loss корректно симулируется,
- realistic curves выглядят правдоподобно.
Результати роботи
Відгук замовника про співпрацю з Сергеєм Науменком
Генератор трансляцій Android для емуляції даних CGM xDrip+Дуже професійно і швидко.
Приємно вражений виконанням ТЗ
Відгук фрилансера про співпрацю з Andrii Tarasenko
Генератор трансляцій Android для емуляції даних CGM xDrip+Сподобалась співпраця із замовником.
Із +:
- швидко реагує на запитання/уточнення;
- дає пояснення стосовно поставлених дзадач;
- просто приємна людина.
Із -:
- не помітив нчого для цієї категорії.
Рекомендую для майбутніх виконавців!
-
По строках і грошах - базова робоча версія без роздування в вічний комбайн буде від 65 000 грн і близько 18 робочих днів. !!750 грн тут не виглядає на реальний бюджет!! - це скоріше вартість короткої технічної перевірки, а не додатка з Foreground Service, двигуном кривих, відновленням після перезавантаження і перевіркою xDrip+.
Якщо йти нормально, я б зробив це етапами - спочатку стабільний сервіс і сумісна відправка подій, потім модель кривих для meal, insulin, hypo, compression lows і sensor errors, потім втрати пакетів, журнали і експорт CSV/JSON. Тут важливо окремо перевірити фонові обмеження Android 10-16, тому що саме там зазвичай ламається така складність, а не в кнопках.
Запитання
> MQTT і HTTP POST включаємо в перший реліз чи залишаємо окремим етапом?
> Перевіряти потрібно на конкретній версії xDrip+ і AndroidAPS, чи достатньо тестового BroadcastReceiver плюс Nightscout на тестовому стенді?
Схожі роботи Ingello
… > https://business.ingello.com/lita - медична система, близька по домену медтеха і стабільності даних
> https://business.ingello.com/rapport - проект з медичною логікою і акуратною обробкою даних
> https://business.ingello.com/fractal - приклад автоматизації, опосередковано близько до ланцюга прийому даних
Головний профіль по системній розробці - https://systems-fl.ingello.com
Можна не ускладнювати - я б почав з проектування формату подій і тестового приймача, тому що один день на це економить тиждень виправлень пізніше. Сім разів відміряй - один раз відправ подію =)
-
196 у нас вже є практично готова основа під схожу систему генерації тестових подій, її можна швидко адаптувати під Android, xDrip+ broadcast і ваші CGM-сценарії, можемо обговорити тут, я на зв'язку ))
по бюджету 750 грн - це, скоріше за все, не робоча оцінка для такого ТЗ. робочий перший етап я б оцінив від 45000 грн і близько 18 днів.
Є сенс робити не просто random generator, а окремий двигун кривих - normal, meal, insulin, hypo, compression low, sensor errors, packet loss і warmup. так потім можна буде гоняти Nightscout, Telegram alerts, ingestion pipeline і Android receiver без ручної возні.
в перший етап я б включив
- Foreground Service з persistent notification і відновленням після reboot
- Jetpack Compose екран управління і статусів
… - реалістичні CGM-криві, direction, noise і packet counter
- налаштування інтервалу, одиниць, швидкості симуляції і режимів
- журнал відправок, пропусків, помилок і експорт JSON/CSV
HTTP POST і MQTT краще винести окремим модулем, щоб не розтягувати старт і не змішувати базову емуляцію з серверною інтеграцією. ну так, тут краще йти поетапно - тихіше їдеш, далі будеш.
уточню 2 моменти
- потрібен чи на першому етапі реальний тест саме з xDrip+ на пристрої, чи достатньо перевірки через custom BroadcastReceiver
- replay sessions і HTTP/MQTT потрібні в першій версії, чи можна залишити їх другим етапом
схожі кейси Ingello
- https://business.ingello.com/lita - healthtech-процеси і медична логіка
- https://business.ingello.com/rapport - робота з медичними даними і системною логікою
- https://business.ingello.com/vorfahr - автоматизація, ІІ і SaaS-підхід до складних сценаріїв
головний профіль по системній розробці
https://systems-fl.ingello.com
Актуальні фриланс-проєкти в категорії Розробка під Android
Kotlin apk Оновити 3 запити
1000 UAH
Є проект на kotlin, невеликий мобільний додаток, який потрібно виправити. Є 3 ендпоінти, які потрібно виправити, обробку в тому числі. Прошу написати час оновлення та збору апк під тест, а також вартість. Гібридні мобільні додатки, Розробка під Android ∙ 2 дні тому ∙ 16 ставок |
Розробка мобільного додаткуШукаю розробників ios/android для створення гемблових додатків. стек: Flutter/Unity/Kotlin/Swift великим плюсом буде досвід роботи з візуалами та дизайнами Chicken Road/Tower Rush/Plinko, а також використання таких інструментів як WebView, Firebase, AppsFlyer, різні SDK. Розробка під Android, Розробка під iOS (iPhone та iPad) ∙ 8 днів 18 годин тому ∙ 34 ставки |
Мобільний додаток iOS/Android
906 UAH
Шукаю програміста мобільних додатків (iOS і/або Android) для створення тренувального додатку для початківців та середньо просунутих. Додаток має допомагати користувачам у плануванні тренувань, моніторингу прогресу та мотивації до регулярної фізичної активності. Основні… Розробка під Android, Розробка під iOS (iPhone та iPad) ∙ 10 днів 22 години тому ∙ 21 ставка |