From 7088fcbabb987c9f16b5030fea29a2cef857a063 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Wed, 22 Nov 2023 16:44:15 +0100 Subject: [PATCH 1/4] New Crowdin updates (#3057) * New translations strings.xml (French) * New translations strings.xml (French) * New translations strings.xml (French) * New translations strings.xml (Russian) * New translations strings.xml (Slovak) * New translations strings.xml (Slovak) * New translations strings.xml (Russian) * New translations strings.xml (Russian) * New translations strings.xml (Russian) * New translations strings.xml (Norwegian Bokmal) * New translations strings.xml (Norwegian Bokmal) * New translations strings.xml (Hebrew) * New translations strings.xml (Norwegian Bokmal) * New translations strings.xml (Norwegian Bokmal) * New translations strings.xml (Russian) * New translations alert_titles.xml (Russian) * New translations strings.xml (Russian) * New translations strings.xml (Russian) --- .../src/main/res/values-ru-rRU/alert_titles.xml | 4 ++-- .../aps/src/main/res/values-fr-rFR/strings.xml | 2 ++ .../aps/src/main/res/values-iw-rIL/strings.xml | 2 ++ .../aps/src/main/res/values-ru-rRU/strings.xml | 6 +++--- .../aps/src/main/res/values-sk-rSK/strings.xml | 2 ++ .../src/main/res/values-ru-rRU/strings.xml | 2 +- .../src/main/res/values-nb-rNO/strings.xml | 2 +- .../main/src/main/res/values-nb-rNO/strings.xml | 2 +- .../sync/src/main/res/values-fr-rFR/strings.xml | 1 + .../sync/src/main/res/values-sk-rSK/strings.xml | 1 + .../combo/src/main/res/values-ru-rRU/strings.xml | 16 ++++++++-------- .../src/main/res/values-fr-rFR/strings.xml | 2 +- ui/src/main/res/values-ru-rRU/strings.xml | 2 +- wear/src/main/res/values-ru-rRU/strings.xml | 12 ++++++------ 14 files changed, 32 insertions(+), 24 deletions(-) diff --git a/insight/src/main/res/values-ru-rRU/alert_titles.xml b/insight/src/main/res/values-ru-rRU/alert_titles.xml index 4cb9822a47..9ae65db2bd 100644 --- a/insight/src/main/res/values-ru-rRU/alert_titles.xml +++ b/insight/src/main/res/values-ru-rRU/alert_titles.xml @@ -1,7 +1,7 @@ - Дать болюс - Недоставленный болюс + Ввести болюс + Несостоявшийся болюс Будильник Замените инфузионный набор TBR завершен diff --git a/plugins/aps/src/main/res/values-fr-rFR/strings.xml b/plugins/aps/src/main/res/values-fr-rFR/strings.xml index f4eebd4873..93cb120907 100644 --- a/plugins/aps/src/main/res/values-fr-rFR/strings.xml +++ b/plugins/aps/src/main/res/values-fr-rFR/strings.xml @@ -1,5 +1,7 @@ + Activer le ratio de sensibilité basé sur DTQ pour la modification du basal et la cible des glycémies + Utilise le dernier DTQ 24h/DTQ 7j pour calculer le ratio de sensibilité utilisé pour augmenter ou diminuer le taux de basal et ajuster aussi la cible de glycémie si ces options sont activées, de la même manière que Autosens. Il est recommandé de commencer avec cette option désactivée Facteur d\'ajustement Si dynamique % Facteur d\'ajustement pour Si dynamique. Définissez plus de 100 % pour des corrections plus agressives et moins de 100 % pour des corrections moins agressives. Cible temp. haute élève la sensibilité diff --git a/plugins/aps/src/main/res/values-iw-rIL/strings.xml b/plugins/aps/src/main/res/values-iw-rIL/strings.xml index 9e5a0e2956..f38db2d5d0 100644 --- a/plugins/aps/src/main/res/values-iw-rIL/strings.xml +++ b/plugins/aps/src/main/res/values-iw-rIL/strings.xml @@ -1,5 +1,7 @@ + אפשר יחס רגישות המבוסס על המינון היומי הכולל לשינוי מינון בזאלי וערכי מטרה + השתמש במינון יומי כולל של 24 שעות\\7 ימים האחרונים כדי לחשב יחס רגישות לצורך העלאה או הורדה של המינון הבזאלי ובנוסף להתאים את ערך המטרה אם אפשרויות אלו מופעלותת באופן דומה ל-Autosense. מומלץ להתחיל כשאפשרות זו כבויה כיוונון פקטור הרגישות הדינאמית % כיוונון פקטור הרגישות הדינאמית. הגדירו יותר מ-100% לקבלת תיקונים אגרסיביים יותר ופחות מ-100% לקבלת תיקונים עדינים יותר. ערך מטרה זמני גבוה מעלה את הרגישות diff --git a/plugins/aps/src/main/res/values-ru-rRU/strings.xml b/plugins/aps/src/main/res/values-ru-rRU/strings.xml index 9b405486f5..69ec53722a 100644 --- a/plugins/aps/src/main/res/values-ru-rRU/strings.xml +++ b/plugins/aps/src/main/res/values-ru-rRU/strings.xml @@ -10,9 +10,9 @@ = 100]]> OpenAPS СМБ Динамический ISF - Как часто СМБ будут подаваться в минутах - Сопротивляемость понижает цель - При обнаружении сопротивляемости целевой уровень гликемии понижается + Как часто SMB будут подаваться в минутах + Резистентность понижает цель + При обнаружении резистентности целевой уровень гликемии понижается Чувствительность поднимает цель При обнаружении чувствительности целевой уровень глюкозы повышается модуль не активен diff --git a/plugins/aps/src/main/res/values-sk-rSK/strings.xml b/plugins/aps/src/main/res/values-sk-rSK/strings.xml index 606aceb1d2..035f543be6 100644 --- a/plugins/aps/src/main/res/values-sk-rSK/strings.xml +++ b/plugins/aps/src/main/res/values-sk-rSK/strings.xml @@ -1,5 +1,7 @@ + Povoliť, aby citlivosť založená na CDD mohla upravovať bazál a cieľovú glykémiu + K výpočtu citlivosti použitej pre zvýšenie, alebo zníženie bazálu sa používa CDD za posledných 24 h / 7 D a tiež upravuje cieľovú glykémiu, pokiaľ je táto možnosť povolená, rovnako, ako to robí Autosens. Túto možnosť je doporučené na začiatok vypnúť. Korekčný faktor pre Dynamickú ISF v % Korekčný faktor pre dynamickú ISF. Pre agresivnejšie korekčné dávky nastavte hodnoty väčšie ako 100%, pre menej agresívne korekcie, menšie než 100%. Vysoký dočasný cieľ zvýši citlivosť diff --git a/plugins/configuration/src/main/res/values-ru-rRU/strings.xml b/plugins/configuration/src/main/res/values-ru-rRU/strings.xml index e27f2817c2..4421a56416 100644 --- a/plugins/configuration/src/main/res/values-ru-rRU/strings.xml +++ b/plugins/configuration/src/main/res/values-ru-rRU/strings.xml @@ -35,7 +35,7 @@ Напоминание: новые профили инсулина требуют как минимум 5 часов длительности действия DIA. 5-6 часовая DIA эквивалентна трехчасовой на старых профилях. Профиль Переключить профиль - Пропустить Мастер установки + Пропустить Мастер настройки Нажмите на кнопку ниже, чтобы AAPS мог предложить/внести изменения в базал Плагин чувствительности Sensitivity применяется для определения чувствительности к инсулину и вычисления активных углеводов COB. Дополнительная информация: https://wiki.aaps.app/en/latest/Configuration/Sensitivity-detection-and-COB.html diff --git a/plugins/constraints/src/main/res/values-nb-rNO/strings.xml b/plugins/constraints/src/main/res/values-nb-rNO/strings.xml index 7e56ad8011..510add70ed 100644 --- a/plugins/constraints/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/constraints/src/main/res/values-nb-rNO/strings.xml @@ -16,7 +16,7 @@ Versjon %1$s utløper den %2$s - Bruker rekalkulerte data + Rekalkulerte data benyttes fordi noe BS-data mangler eller at BS ankommer på et ikke-forventet tidspunkt. Vil nullstille seg etter ca 24 timer. Ingen handling kreves BS for nær:\n%1$s\n%2$s beregnet på nytt doble registreringer diff --git a/plugins/main/src/main/res/values-nb-rNO/strings.xml b/plugins/main/src/main/res/values-nb-rNO/strings.xml index f12a2a69a2..730cb98170 100644 --- a/plugins/main/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/main/src/main/res/values-nb-rNO/strings.xml @@ -211,7 +211,7 @@ Endre dine inndata! OpenAPS Opplaster-batteri - BS data status + Status BS-data Innstillinger for hurtigknapp Hold skjermen påslått Forhindre Android fra å slå av skjermen. Mobilen vil bruke mye batteri hvis den ikke kobles til strømledning. diff --git a/plugins/sync/src/main/res/values-fr-rFR/strings.xml b/plugins/sync/src/main/res/values-fr-rFR/strings.xml index 2af445a728..c5fbc87a84 100644 --- a/plugins/sync/src/main/res/values-fr-rFR/strings.xml +++ b/plugins/sync/src/main/res/values-fr-rFR/strings.xml @@ -17,6 +17,7 @@ Synchronise vos données avec Nightscout en utilisant l\'API v3 Bloqué par les options de recharge Bloqué par les options de connectivité + Aucune connectivité Version de Nightscout non supportée OAPS UPLD diff --git a/plugins/sync/src/main/res/values-sk-rSK/strings.xml b/plugins/sync/src/main/res/values-sk-rSK/strings.xml index b4a49e688e..83b5b878f1 100644 --- a/plugins/sync/src/main/res/values-sk-rSK/strings.xml +++ b/plugins/sync/src/main/res/values-sk-rSK/strings.xml @@ -17,6 +17,7 @@ Synchronizuje vaše dáta s Nightscoutom pomocou v3 API Zablokované možnosti nabíjania Zablokované možnosti pripojenia + Žiadne pripojenie Nepodporovaná verzia Nighscoutu OAPS UPLD diff --git a/pump/combo/src/main/res/values-ru-rRU/strings.xml b/pump/combo/src/main/res/values-ru-rRU/strings.xml index a0e9709c2a..77f6a643c0 100644 --- a/pump/combo/src/main/res/values-ru-rRU/strings.xml +++ b/pump/combo/src/main/res/values-ru-rRU/strings.xml @@ -28,23 +28,23 @@ Нормальный Необходимо обновить часы помпы Предупреждение об отмене скорости временного базала подтверждено - Не удалось подключиться к помпе. Болюс не подан - Подача болюса не состоялась. Чтобы удостовериться, проверьте помпу во избежание двойного болюса и повторите подачу. Для защиты от ложных срабатываний болюсы не повторяются автоматически. - Подано только %1$.2f ед. из запрошенного болюса %2$.2f ед. из-за ошибки. Пожалуйста, проверьте помпу, чтобы удостовериться в этом и принять соответствующие меры. - Подача болюса и проверка истории помпы не состоялись, пожалуйста проверьте помпу. Если болюс был подан, он будет добавлен в назначения во время следующего соединения с помпой. + Не удалось подключиться к помпе. Болюс не введен + Болюс не введен. Чтобы удостовериться, проверьте помпу во избежание двойного болюса и повторите подачу. Для защиты от ложных срабатываний болюсы не повторяются автоматически. + Введено только %1$.2f ед. из запрошенного болюса %2$.2f ед. из-за ошибки. Пожалуйста, проверьте помпу, чтобы удостовериться в этом и принять соответствующие меры. + Ввод болюса и проверка истории помпы не состоялись, пожалуйста проверьте помпу. Если болюс был введен, он будет добавлен в назначения во время следующего соединения с помпой. В резервуаре недостаточно инсулина для болюса Недопустимые установки помпы, проверьте документацию и убедитесь, что меню Quick Info называется QUICK INFO, используя приложение 360 для конфигурации помпы. Чтение базального профиля - История событий помпы изменилась с момента вычисления болюса. Болюс не подан. Пожалуйста пересчитайте потребность в болюсе. - Болюс подан успешно, но запись о назначении не сделана. Это может быть вызвано тем, что за последние две минуты назначено два болюса одного объема. Пожалуйста проверьте историю событий помпы и записи о назначениях и добавьте пропущенные записи из Портала назначений. Не добавляйте записи с одним и тем же временем и одинаковым объемом. + История событий помпы изменилась с момента вычисления болюса. Болюс не введен. Пожалуйста пересчитайте потребность в болюсе. + Болюс введен успешно, но запись о назначении не сделана. Это может быть вызвано тем, что за последние две минуты назначено два болюса одного объема. Пожалуйста проверьте историю событий помпы и записи о назначениях и добавьте пропущенные записи из Портала назначений. Не добавляйте записи с одним и тем же временем и одинаковым объемом. Временная верхняя цель отклонена т. к. калькуляция не учитывала недавние изменения в истории событий помпы Обновление статуса помпы Скорость базала на помпе изменилась и вскоре будет обновлена Скорость базала на помпе изменилась, но учесть ее не удалось Проверка изменений в истории событий помпы Только что импортировано несколько болюсов с одинаковым количеством инсулина в течение одной минуты. В лог лечения может быть добавлена только одна запись. Пожалуйста проверьте помпу и вручную введите запись о болюсе через вкладку портала назначений. Убедитесь, что данному времени соответствует только одна запись о болюсе. - Новый болюс старше 24 часов или запись относится к будущему. Пожалуйста убедитесь что дата на помпе установлена правильно. - Время/дата поданного болюса неверны. Вероятно, кол-во активного инсулина IOB также неверно. Проверьте время/дату помпы. + Новый болюс старше 24 часов или запись относится к будущему. Убедитесь что дата на помпе установлена правильно. + Время/дата болюса неверны. Вероятно, кол-во активного инсулина IOB также неверно. Проверьте время/дату помпы. Отсчет болюса Отсчет временного базала TBR Болюс остановлен diff --git a/pump/omnipod-common/src/main/res/values-fr-rFR/strings.xml b/pump/omnipod-common/src/main/res/values-fr-rFR/strings.xml index 5582068512..de3cc9fd83 100644 --- a/pump/omnipod-common/src/main/res/values-fr-rFR/strings.xml +++ b/pump/omnipod-common/src/main/res/values-fr-rFR/strings.xml @@ -53,7 +53,7 @@ ID unique Numéro de lot Numéro de série - Pod Expiré + Pod expire le Dernière connexion Dernier bolus Débit de Basal Temp. diff --git a/ui/src/main/res/values-ru-rRU/strings.xml b/ui/src/main/res/values-ru-rRU/strings.xml index 00cb9201f0..f55731100c 100644 --- a/ui/src/main/res/values-ru-rRU/strings.xml +++ b/ui/src/main/res/values-ru-rRU/strings.xml @@ -42,7 +42,7 @@ Внести запись о смене места катетера помпы Внести запись о замене картриджа инсулина - Не подавать болюс, только внести запись + Не вводить болюс, только внести запись Повторно использовать %1$d%%%2$dч Сдвиг по времени diff --git a/wear/src/main/res/values-ru-rRU/strings.xml b/wear/src/main/res/values-ru-rRU/strings.xml index e91a4e0d36..c679e5131d 100644 --- a/wear/src/main/res/values-ru-rRU/strings.xml +++ b/wear/src/main/res/values-ru-rRU/strings.xml @@ -116,7 +116,7 @@ ПОДТВЕРДИТЬ сдвиг по времени Болюс - Подается болюс + Вводится болюс нажмите для отмены ОТМЕНИТЬ БОЛЮС Помпа @@ -161,10 +161,10 @@ Ваш цвет: Ваша цветовая насыщенность: Непрозрачность вашего цвета: - Подается болюс - Беззвучная подача болюса - Подача и отмена болюса - Подача и отмена болюса с меньшими вибрациями + Вводится болюс + Беззвучный ввод болюса + Ввод и отмена болюса + Введение и отмена болюса с меньшими вибрациями Выкл Во время зарядки Режим: всегда вкл @@ -192,7 +192,7 @@ 000г 00,0 0,00 ед - Оповещение о переходе AAPS в режим энергосбережения + Отложить оповещения AAPS Отправка команды отложить оповещения AAPS ч н From 4d233e46792a78c544a9576d17d52060c8c3d798 Mon Sep 17 00:00:00 2001 From: Robert Buessow Date: Fri, 24 Nov 2023 12:24:15 +0100 Subject: [PATCH 2/4] Implement /sgv.json endpoint to support phone apps that use nightscout or xdrip endpoints. --- .../aaps/plugins/sync/garmin/GarminPlugin.kt | 55 +++++++++++++++++ .../plugins/sync/garmin/GarminPluginTest.kt | 60 ++++++++++++++++++- 2 files changed, 114 insertions(+), 1 deletion(-) diff --git a/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/garmin/GarminPlugin.kt b/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/garmin/GarminPlugin.kt index 5d20fd3c70..81b03f98c5 100644 --- a/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/garmin/GarminPlugin.kt +++ b/plugins/sync/src/main/kotlin/app/aaps/plugins/sync/garmin/GarminPlugin.kt @@ -14,10 +14,14 @@ import app.aaps.core.interfaces.rx.events.EventPreferenceChange import app.aaps.core.interfaces.sharedPreferences.SP import app.aaps.database.entities.GlucoseValue import app.aaps.plugins.sync.R +import com.google.gson.JsonArray import com.google.gson.JsonObject import dagger.android.HasAndroidInjector import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.schedulers.Schedulers +import java.math.BigDecimal +import java.math.MathContext +import java.math.RoundingMode import java.net.SocketAddress import java.net.URI import java.time.Clock @@ -96,6 +100,7 @@ class GarminPlugin @Inject constructor( registerEndpoint("/get", ::onGetBloodGlucose) registerEndpoint("/carbs", ::onPostCarbs) registerEndpoint("/connect", ::onConnectPump) + registerEndpoint("/sgv.json", ::onSgv) } } else if (server != null) { aapsLogger.info(LTag.GARMIN, "stopping HTTP server") @@ -277,4 +282,54 @@ class GarminPlugin @Inject constructor( jo.addProperty("connected", loopHub.isConnected) return jo.toString() } + + private fun glucoseSlopeMgDlPerMilli(glucose1: GlucoseValue, glucose2: GlucoseValue): Double { + return (glucose2.value - glucose1.value) / (glucose2.timestamp - glucose1.timestamp) + } + + /** Returns glucose values in Nightscout/Xdrip format. */ + @VisibleForTesting + @Suppress("UNUSED_PARAMETER") + fun onSgv(call: SocketAddress, uri: URI, requestBody: String?): CharSequence { + val count = getQueryParameter(uri,"count", 24L) + .toInt().coerceAtMost(1000).coerceAtLeast(1) + val briefMode = getQueryParameter(uri, "brief_mode", false) + + // Guess a start time to get [count+1] readings. This is a heuristic that only works if we get readings + // every 5 minutes and we're not missing readings. We truncate in case we get more readings but we'll + // get less, e.g., in case we're missing readings for the last half hour. We get one extra reading, + // to compute the glucose delta. + val from = clock.instant().minus(Duration.ofMinutes(5L * (count + 1))) + val glucoseValues = loopHub.getGlucoseValues(from, false) + val joa = JsonArray() + for (i in 0 until count.coerceAtMost(glucoseValues.size)) { + val jo = JsonObject() + val glucose = glucoseValues[i] + if (!briefMode) { + jo.addProperty("_id", glucose.id.toString()) + jo.addProperty("device", glucose.sourceSensor.toString()) + val timestamp = Instant.ofEpochMilli(glucose.timestamp) + jo.addProperty("deviceString", timestamp.toString()) + jo.addProperty("sysTime", timestamp.toString()) + glucose.raw?.let { raw -> jo.addProperty("unfiltered", raw) } + } + jo.addProperty("date", glucose.timestamp) + jo.addProperty("sgv", glucose.value.roundToInt()) + if (i + 1 < glucoseValues.size) { + // Compute the 5 minute delta. + val delta = 300_000.0 * glucoseSlopeMgDlPerMilli(glucoseValues[i + 1], glucose) + jo.addProperty("delta", BigDecimal(delta, MathContext(3, RoundingMode.HALF_UP))) + } + jo.addProperty("direction", glucose.trendArrow.text) + glucose.noise?.let { n -> jo.addProperty("noise", n) } + if (i == 0) { + when (loopHub.glucoseUnit) { + GlucoseUnit.MGDL -> jo.addProperty("units_hint", "mgdl") + GlucoseUnit.MMOL -> jo.addProperty("units_hint", "mmol") + } + } + joa.add(jo) + } + return joa.toString() + } } diff --git a/plugins/sync/src/test/kotlin/app/aaps/plugins/sync/garmin/GarminPluginTest.kt b/plugins/sync/src/test/kotlin/app/aaps/plugins/sync/garmin/GarminPluginTest.kt index 18c772877e..6913ad4609 100644 --- a/plugins/sync/src/test/kotlin/app/aaps/plugins/sync/garmin/GarminPluginTest.kt +++ b/plugins/sync/src/test/kotlin/app/aaps/plugins/sync/garmin/GarminPluginTest.kt @@ -21,6 +21,10 @@ import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.verifyNoMoreInteractions import org.mockito.Mockito.`when` +import org.mockito.kotlin.any +import org.mockito.kotlin.atLeastOnce +import org.mockito.kotlin.eq +import org.mockito.kotlin.whenever import java.net.SocketAddress import java.net.URI import java.time.Clock @@ -28,6 +32,7 @@ import java.time.Instant import java.time.ZoneId import java.time.temporal.ChronoUnit import java.util.concurrent.locks.Condition +import kotlin.ranges.LongProgression.Companion.fromClosedRange class GarminPluginTest: TestBase() { private lateinit var gp: GarminPlugin @@ -71,8 +76,9 @@ class GarminPluginTest: TestBase() { "device" to "Test_Device") private fun createGlucoseValue(timestamp: Instant, value: Double = 93.0) = GlucoseValue( + id = 10 * timestamp.toEpochMilli(), timestamp = timestamp.toEpochMilli(), raw = 90.0, value = value, - trendArrow = GlucoseValue.TrendArrow.FLAT, noise = null, + trendArrow = GlucoseValue.TrendArrow.FLAT, noise = 4.5, sourceSensor = GlucoseValue.SourceSensor.RANDOM ) @@ -205,4 +211,56 @@ class GarminPluginTest: TestBase() { verify(loopHub).connectPump() verify(loopHub).isConnected } + + @Test + fun onSgv_NoGlucose() { + whenever(loopHub.glucoseUnit).thenReturn(GlucoseUnit.MMOL) + whenever(loopHub.getGlucoseValues(any(), eq(false))).thenReturn(emptyList()) + assertEquals("[]", gp.onSgv(mock(), createUri(mapOf()), null)) + verify(loopHub).getGlucoseValues(clock.instant().minusSeconds(25L * 300L), false) + } + + @Test + fun onSgv_NoDelta() { + whenever(loopHub.glucoseUnit).thenReturn(GlucoseUnit.MMOL) + whenever(loopHub.getGlucoseValues(any(), eq(false))).thenReturn( + listOf(createGlucoseValue( + clock.instant().minusSeconds(100L), 99.3))) + assertEquals( + """[{"_id":"-900000","device":"RANDOM","deviceString":"1969-12-31T23:58:30Z","sysTime":"1969-12-31T23:58:30Z","unfiltered":90.0,"date":-90000,"sgv":99,"direction":"Flat","noise":4.5,"units_hint":"mmol"}]""", + gp.onSgv(mock(), createUri(mapOf()), null)) + verify(loopHub).getGlucoseValues(clock.instant().minusSeconds(25L * 300L), false) + verify(loopHub).glucoseUnit + } + + @Test + fun onSgv() { + whenever(loopHub.glucoseUnit).thenReturn(GlucoseUnit.MMOL) + whenever(loopHub.getGlucoseValues(any(), eq(false))).thenAnswer { i -> + val from = i.getArgument(0) + fromClosedRange(from.toEpochMilli(), clock.instant().toEpochMilli(), 300_000L) + .map(Instant::ofEpochMilli) + .mapIndexed { idx, ts -> createGlucoseValue(ts, 100.0+(10 * idx)) }.reversed()} + assertEquals( + """[{"_id":"100000","device":"RANDOM","deviceString":"1970-01-01T00:00:10Z","sysTime":"1970-01-01T00:00:10Z","unfiltered":90.0,"date":10000,"sgv":120,"delta":10,"direction":"Flat","noise":4.5,"units_hint":"mmol"}]""", + gp.onSgv(mock(), createUri(mapOf("count" to "1")), null)) + verify(loopHub).getGlucoseValues( + clock.instant().minusSeconds(600L), false) + + assertEquals( + """[{"_id":"100000","device":"RANDOM","deviceString":"1970-01-01T00:00:10Z","sysTime":"1970-01-01T00:00:10Z","unfiltered":90.0,"date":10000,"sgv":130,"delta":10,"direction":"Flat","noise":4.5,"units_hint":"mmol"},""" + + """{"_id":"-2900000","device":"RANDOM","deviceString":"1969-12-31T23:55:10Z","sysTime":"1969-12-31T23:55:10Z","unfiltered":90.0,"date":-290000,"sgv":120,"delta":10,"direction":"Flat","noise":4.5}]""", + gp.onSgv(mock(), createUri(mapOf("count" to "2")), null)) + verify(loopHub).getGlucoseValues( + clock.instant().minusSeconds(900L), false) + + assertEquals( + """[{"date":10000,"sgv":130,"delta":10,"direction":"Flat","noise":4.5,"units_hint":"mmol"},""" + + """{"date":-290000,"sgv":120,"delta":10,"direction":"Flat","noise":4.5}]""", + gp.onSgv(mock(), createUri(mapOf("count" to "2", "brief_mode" to "true")), null)) + verify(loopHub, times(2)).getGlucoseValues( + clock.instant().minusSeconds(900L), false) + + verify(loopHub, atLeastOnce()).glucoseUnit + } } From 10846b118a59449b0b4b3d1e25a4552ccf3177d2 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 28 Nov 2023 14:20:01 +0100 Subject: [PATCH 3/4] New Crowdin updates (#3076) * New translations strings.xml (Norwegian Bokmal) * New translations strings.xml (Spanish) * New translations strings.xml (Spanish) --- plugins/aps/src/main/res/values-es-rES/strings.xml | 2 +- plugins/smoothing/src/main/res/values-nb-rNO/strings.xml | 6 +++--- plugins/sync/src/main/res/values-es-rES/strings.xml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/plugins/aps/src/main/res/values-es-rES/strings.xml b/plugins/aps/src/main/res/values-es-rES/strings.xml index b9b3566744..f46d421cb7 100644 --- a/plugins/aps/src/main/res/values-es-rES/strings.xml +++ b/plugins/aps/src/main/res/values-es-rES/strings.xml @@ -1,7 +1,7 @@ Habilitar la relación de sensibilidad basada en TDD para modificar las basales y el objetivo de glucosa - Utiliza las últimas 24h TDD/7D TDD para calcular el ratio de sensibilidad utilizado para aumentar o disminuir la tasa basal, y también ajustar el objetivo de glucosa si estas opciones están activadas, de la misma forma que lo hace Autosens. Se recomienda comenzar con esta opción desactivada + Utiliza las últimas 24h TDD/7D TDD para calcular el factor de sensibilidad utilizado para aumentar o disminuir la tasa basal, y también ajusta el objetivo de glucosa si estas opciones están activadas, de la misma forma que lo hace Autosens. Se recomienda comenzar con esta opción desactivada Factor de ajuste de ISF Dinámico % Factor de ajuste para ISF Dinámico. Establezca más de 100% para una corrección más agresiva, y menos de 100% para correcciones más susves. Objetivo temporal alto aumenta la sensibilidad diff --git a/plugins/smoothing/src/main/res/values-nb-rNO/strings.xml b/plugins/smoothing/src/main/res/values-nb-rNO/strings.xml index f24cdc1d85..36e143d917 100644 --- a/plugins/smoothing/src/main/res/values-nb-rNO/strings.xml +++ b/plugins/smoothing/src/main/res/values-nb-rNO/strings.xml @@ -2,9 +2,9 @@ UTJEVNING Eksponentiell utjevning - "Andre ordens algoritme for eksponentiell utjevning" + "Algoritme for eksponentiell utjevning, nyeste BS-verdi påvirkes" Gjennomsnittlig utjevning - "Gjennomsnittlig utjevnings-algoritme, nyeste verdi påvirkes ikke" + "Algoritme for gjennomsnittlig utjevning, nyeste BS-verdi påvirkes ikke. Kan minne om BYODA G6 sin utjevningsalgoritme" Ingen utjevning - "Ingen utjevning utføres på motatte blodsukkerverdier. Bruk dette valget når du allerede har filtrerte data, f.eks. fra BYODA G6." + "Ingen utjevning utføres på mottatte blodsukkerverdier. Bruk dette valget når du allerede har filtrerte data, f.eks. fra BYODA G6." diff --git a/plugins/sync/src/main/res/values-es-rES/strings.xml b/plugins/sync/src/main/res/values-es-rES/strings.xml index 05ce3e3902..0c777ef050 100644 --- a/plugins/sync/src/main/res/values-es-rES/strings.xml +++ b/plugins/sync/src/main/res/values-es-rES/strings.xml @@ -128,7 +128,7 @@ Supervisar y controlar AAPS usando un reloj WearOS (Ningún reloj conectado) Estado de la bomba de insulina - Estado del lazo + Estado del bucle Calc. Asistente:\nInsulina: %1$.2fU\nCarbohidratos: %2$dg El asistente rápido seleccionado ya no está disponible, por favor actualice su tarjeta Asistente Rápido: %1$s\nInsulina: %2$.2fU\nCarbohidratos: %3$dg From 5d323950429f582d762d43806ccf260c3b5aac36 Mon Sep 17 00:00:00 2001 From: olorinmaia Date: Tue, 28 Nov 2023 22:36:51 +0100 Subject: [PATCH 4/4] Add translation strings for Dash statuses in AAPSClient pump status --- pump/omnipod-common/src/main/res/values/strings.xml | 1 + .../plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pump/omnipod-common/src/main/res/values/strings.xml b/pump/omnipod-common/src/main/res/values/strings.xml index d2ecea3ce0..0a2757f7c5 100644 --- a/pump/omnipod-common/src/main/res/values/strings.xml +++ b/pump/omnipod-common/src/main/res/values/strings.xml @@ -158,6 +158,7 @@ Activation time exceeded Inactive Pod Fault: %1$03d %2$s + Normal Deactivate Pod diff --git a/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt b/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt index 19387cc705..a0acf389de 100644 --- a/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt +++ b/pump/omnipod-dash/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/dash/OmnipodDashPumpPlugin.kt @@ -991,9 +991,9 @@ class OmnipodDashPumpPlugin @Inject constructor( val extended = JSONObject() try { val podStatus = when { - podStateManager.isPodRunning && podStateManager.isSuspended -> "suspended" - podStateManager.isPodRunning -> "normal" - else -> "no active Pod" + podStateManager.isPodRunning && podStateManager.isSuspended -> rh.gs(info.nightscout.androidaps.plugins.pump.omnipod.common.R.string.omnipod_common_pod_status_suspended).lowercase() + podStateManager.isPodRunning -> rh.gs(info.nightscout.androidaps.plugins.pump.omnipod.common.R.string.omnipod_common_pod_status_normal).lowercase() + else -> rh.gs(info.nightscout.androidaps.plugins.pump.omnipod.common.R.string.omnipod_common_pod_status_no_active_pod).lowercase() } status.put("status", podStatus) status.put("timestamp", dateUtil.toISOString(podStateManager.lastUpdatedSystem))