Merge remote-tracking branch 'Nightscout/dev' into Autotune/TWD_TestMerge
# Conflicts: # app/build.gradle # app/src/main/java/info/nightscout/androidaps/plugins/general/autotune/AutotuneFragment.kt
This commit is contained in:
commit
40e6ebc44a
379 changed files with 37831 additions and 2406 deletions
|
@ -97,12 +97,6 @@ def allCommitted = { ->
|
|||
return stringBuilder.toString().isEmpty()
|
||||
}
|
||||
|
||||
tasks.matching { it instanceof Test }.all {
|
||||
testLogging.events = ["failed", "skipped", "started"]
|
||||
// testLogging.events = ["failed", "skipped", "started", "standard_out"] use to display stdout in travis
|
||||
testLogging.exceptionFormat = "full"
|
||||
}
|
||||
|
||||
android {
|
||||
|
||||
namespace 'info.nightscout.androidaps'
|
||||
|
@ -111,7 +105,7 @@ android {
|
|||
defaultConfig {
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "3.0.0.2-autotune-dev-m"
|
||||
version "3.0.0.2-dev-n"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
|
@ -47,7 +46,7 @@
|
|||
android:restoreAnyVersion="true"
|
||||
android:roundIcon="${appIconRound}"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme.Launcher" >
|
||||
android:theme="@style/AppTheme.Launcher">
|
||||
|
||||
<meta-data
|
||||
android:name="com.google.android.gms.version"
|
||||
|
@ -64,7 +63,7 @@
|
|||
|
||||
<receiver
|
||||
android:name=".widget.Widget"
|
||||
android:exported="true" >
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||
</intent-filter>
|
||||
|
@ -82,69 +81,86 @@
|
|||
android:name="com.google.android.gms.car.application"
|
||||
android:resource="@xml/automotive_app_desc" />
|
||||
|
||||
<activity android:name=".MainActivity"
|
||||
android:theme="@style/AppTheme"
|
||||
android:exported="true">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".activities.PreferencesActivity" />
|
||||
<activity android:name=".plugins.general.overview.activities.QuickWizardListActivity"
|
||||
android:theme="@style/AppTheme"
|
||||
android:exported="false">
|
||||
<activity
|
||||
android:name=".activities.PreferencesActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".plugins.general.overview.activities.QuickWizardListActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme">
|
||||
<intent-filter>
|
||||
<action android:name="info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".plugins.general.maintenance.activities.PrefImportListActivity"
|
||||
<activity
|
||||
android:name=".plugins.general.maintenance.activities.PrefImportListActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.HistoryBrowseActivity"
|
||||
<activity
|
||||
android:name=".activities.HistoryBrowseActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.TreatmentsActivity"
|
||||
<activity
|
||||
android:name=".activities.TreatmentsActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.SurveyActivity"
|
||||
<activity
|
||||
android:name=".activities.SurveyActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.ProfileHelperActivity"
|
||||
<activity
|
||||
android:name=".activities.ProfileHelperActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".activities.StatsActivity"
|
||||
<activity
|
||||
android:name=".activities.StatsActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<!-- Receive new BG readings from other local apps -->
|
||||
<receiver
|
||||
android:name=".receivers.DataReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
android:name=".receivers.DataReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<!-- Receiver from xDrip -->
|
||||
<action android:name="com.eveningoutpost.dexdrip.BgEstimate"/>
|
||||
<action android:name="com.eveningoutpost.dexdrip.BgEstimate" />
|
||||
<!-- Receiver from 640g uploader -->
|
||||
<action android:name="com.eveningoutpost.dexdrip.NS_EMULATOR"/>
|
||||
<action android:name="com.eveningoutpost.dexdrip.NS_EMULATOR" />
|
||||
<!-- Receiver from glimp -->
|
||||
<action android:name="it.ct.glicemia.ACTION_GLUCOSE_MEASURED"/>
|
||||
<action android:name="it.ct.glicemia.ACTION_GLUCOSE_MEASURED" />
|
||||
<!-- Receiver from Dexcom -->
|
||||
<action android:name="com.dexcom.cgm.EXTERNAL_BROADCAST"/>
|
||||
<action android:name="com.dexcom.cgm.EXTERNAL_BROADCAST" />
|
||||
<!-- Receiver from Poctech -->
|
||||
<action android:name="com.china.poctech.data"/>
|
||||
<action android:name="com.china.poctech.data" />
|
||||
<!-- Receiver from Tomato -->
|
||||
<action android:name="com.fanqies.tomatofn.BgEstimate"/>
|
||||
<action android:name="com.fanqies.tomatofn.BgEstimate" />
|
||||
<!-- Receiver from GlucoRx Aidex -->
|
||||
<action android:name="com.microtechmd.cgms.aidex.action.BgEstimate"/>
|
||||
<action android:name="com.microtechmd.cgms.aidex.action.BgEstimate" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Receive new SMS messages -->
|
||||
<receiver
|
||||
android:name=".receivers.SmsReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.BROADCAST_SMS">
|
||||
android:name=".receivers.SmsReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.BROADCAST_SMS">
|
||||
<intent-filter>
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
|
||||
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
|
@ -211,15 +227,23 @@
|
|||
<activity
|
||||
android:name=".setupwizard.SetupWizardActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:theme="@style/AppTheme"
|
||||
android:label="@string/title_activity_setup_wizard" />
|
||||
android:exported="false"
|
||||
android:label="@string/title_activity_setup_wizard"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.SingleFragmentActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/AppTheme" />
|
||||
<activity android:name=".plugins.general.maintenance.activities.LogSettingActivity" />
|
||||
<activity android:name=".activities.RequestDexcomPermissionActivity" />
|
||||
<activity android:name=".plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity">
|
||||
<activity
|
||||
android:name=".plugins.general.maintenance.activities.LogSettingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".activities.RequestDexcomPermissionActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="info.nightscout.androidaps.plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity" />
|
||||
|
||||
|
@ -227,7 +251,9 @@
|
|||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
|
||||
<uses-library
|
||||
android:name="org.apache.http.legacy"
|
||||
android:required="false" />
|
||||
|
||||
</application>
|
||||
|
||||
|
|
|
@ -218,7 +218,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
//*********************************************************************************
|
||||
|
||||
console.error("---------------------------------------------------------");
|
||||
console.error( " Dynamic ISF version Beta 1.5 ");
|
||||
console.error( " Dynamic ISF version Beta 1.6.4 ");
|
||||
console.error("---------------------------------------------------------");
|
||||
|
||||
|
||||
|
@ -247,39 +247,50 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
|
||||
/*var tdd_pump_now = meal_data.TDDPUMP;
|
||||
var tdd_pump = ( tdd_pump_now / (now / 24));*/
|
||||
var TDD = (tdd7 * 0.4) + (tdd_pump * 0.6);
|
||||
//var TDD = (tdd7 * 0.4) + (tdd_pump * 0.6);
|
||||
|
||||
console.error("Pump extrapolated TDD = "+tdd_pump+"; ");
|
||||
//if (tdd7 > 0){
|
||||
if ( tdd_pump > tdd7 && now < 5 || now < 7 && TDD < ( 0.8 * tdd7 ) ){
|
||||
TDD = ( 0.8 * tdd7 );
|
||||
console.log("Excess or too low insulin from pump so TDD set to "+TDD+" based on 75% of TDD7; ");
|
||||
rT.reason += "TDD: " +TDD+ " due to low or high tdd from pump; ";
|
||||
}
|
||||
var tdd1 = meal_data.TDDAIMI1;
|
||||
var tdd_4 = meal_data.TDDLast4;
|
||||
var tdd8to4 = meal_data.TDD4to8;
|
||||
var tdd_last8_wt = ( ( ( 1.4 * tdd_4) + ( 0.6 * tdd8to4) ) * 3 );
|
||||
|
||||
else if (tdd_pump > (1.75 * tdd7)){
|
||||
TDD = tdd7;
|
||||
console.error("TDD set to TDD7 due to high pump usage reported. TDD = "+TDD+"; ");
|
||||
rT.reason += "TDD set to TDD7 due to high pump usage reported. TDD = "+TDD+"; ";
|
||||
}
|
||||
console.error("Rolling 8 hours weight average: "+tdd_last8_wt+"; ");
|
||||
console.error("1-day average TDD is: "+tdd1+"; ");
|
||||
console.error("7-day average TDD is: " +tdd7+ "; ");
|
||||
|
||||
//TDD = ( tdd_last8_wt * 0.6) + ( tdd7 * 0.4 );
|
||||
|
||||
var TDD = ( tdd_last8_wt * 0.33 ) + ( tdd7 * 0.34 ) + (tdd1 * 0.33);
|
||||
console.log("TDD = " +TDD+ " using average of 7-day, 1-day and weighted 8hr average");
|
||||
|
||||
|
||||
else if (tdd_pump < (0.33 * tdd7)){
|
||||
TDD = (tdd7 * 0.25) + (tdd_pump * 0.75);
|
||||
console.error("TDD weighted to pump due to low insulin usage. TDD = "+TDD+"; ");
|
||||
rT.reason += "TDD weighted to pump due to low insulin usage. TDD = "+TDD+"; ";
|
||||
}
|
||||
//var ins_val = 75;
|
||||
var insulin = profile.insulinType;
|
||||
console.log("Insulin Peak = "+profile.insulinPeak+"; ");
|
||||
//console.log("Initial insulin value for ISF: "+ins_val+"; ");
|
||||
//console.log("Current value for insulin: "+insulin+"; ");
|
||||
|
||||
else {
|
||||
console.log("TDD = " +TDD+ " based on standard pump 60/tdd7 40 split; ");
|
||||
rT.reason += "TDD: " +TDD+ " based on standard pump 60/tdd7 40 split; ";
|
||||
}
|
||||
var ins_val;
|
||||
if (profile.insulinPeak > 65) { // lyumjev peak: 45
|
||||
ins_val = 55;
|
||||
} else if (profile.insulinPeak > 50 ){ // ultra rapid peak: 55
|
||||
ins_val = 65;
|
||||
} else {
|
||||
ins_val = 75; // rapid peak: 75
|
||||
}
|
||||
console.log("For "+profile.insulinType+" (insulin peak: "+profile.insulinPeak+") divisor is: "+ins_val+"; ");
|
||||
|
||||
console.log("Insulin value for ISF based on profile: "+ins_val+"; ");
|
||||
|
||||
var dynISFadjust = profile.DynISFAdjust;
|
||||
var dynISFadjust = ( dynISFadjust / 100 );
|
||||
var TDD = (dynISFadjust * TDD);
|
||||
var variable_sens = (277700 / ( TDD * bg));
|
||||
dynISFadjust = ( dynISFadjust / 100 );
|
||||
TDD = ( dynISFadjust * TDD );
|
||||
|
||||
var variable_sens = 1800 / ( TDD * (Math.log(( bg / ins_val ) + 1 ) ) );
|
||||
|
||||
variable_sens = round(variable_sens,1);
|
||||
|
||||
|
||||
if (dynISFadjust > 1 ) {
|
||||
console.log("TDD adjustment factor is: " +dynISFadjust+"; ");
|
||||
console.log("TDD adjusted to "+TDD+" using adjustment factor of "+dynISFadjust+"; ");
|
||||
|
@ -314,7 +325,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
console.log("ISF from "+variable_sens+" to "+sens+ "due to temp target; ");
|
||||
}
|
||||
else {
|
||||
sensitivityRatio = ( tdd_24 / tdd7 );
|
||||
sensitivityRatio = ( meal_data.TDD24 / tdd7 );
|
||||
}
|
||||
if (sensitivityRatio > 1) {
|
||||
sensitivityRatio = Math.min(sensitivityRatio, profile.autosens_max);
|
||||
|
@ -501,8 +512,14 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
return rT;
|
||||
}
|
||||
|
||||
// min_bg of 90 -> threshold of 65, 100 -> 70 110 -> 75, and 130 -> 85
|
||||
// min_bg of 90 -> threshold of 65, 100 -> 70 110 -> 75, and 130 -> 85, or if specified by user, take that value
|
||||
var lgsThreshold = profile.lgsThreshold;
|
||||
var threshold = min_bg - 0.5*(min_bg-40);
|
||||
var oldThreshold = threshold;
|
||||
if (lgsThreshold >= 65 && lgsThreshold <= 120 && lgsThreshold > threshold) {
|
||||
threshold = lgsThreshold;
|
||||
}
|
||||
console.error("Threshold set from " + convert_bg(oldThreshold, profile) + " to " + convert_bg(threshold, profile) + "; ");
|
||||
|
||||
//console.error(reservoir_data);
|
||||
|
||||
|
@ -808,23 +825,26 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
|
|||
console.log("EventualBG is" +eventualBG+" ;");
|
||||
|
||||
if (bg > target_bg && glucose_status.delta < 3 && glucose_status.delta > -3 && glucose_status.short_avgdelta > -3 && glucose_status.short_avgdelta < 3 && eventualBG > target_bg && eventualBG < bg ) {
|
||||
var future_sens = ( 277700 / (TDD * ((eventualBG * 0.5) + (bg * 0.5) ) ) );
|
||||
console.log("Future state sensitivity is " +future_sens+" based on eventual and current bg due to flat glucose level above target");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using eventual BG;";
|
||||
var future_sens = ( 1800 / (Math.log((((eventualBG * 0.5) + (bg * 0.5))/ins_val)+1)*TDD));
|
||||
//var future_sens_old = ( 277700 / (TDD * ((bg * 0.5) + (eventualBG * 0.5 ))));
|
||||
console.log("Future state sensitivity is " +future_sens+" based on eventual and current bg due to flat glucose level above target");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using eventual BG;";
|
||||
}
|
||||
|
||||
else if( glucose_status.delta > 0 && eventualBG > target_bg ) {
|
||||
var future_sens = ( 277700 / (TDD * bg) );
|
||||
var future_sens = ( 1800 / (Math.log((bg/ins_val)+1)*TDD));
|
||||
//var future_sens_old = ( 277700 / (TDD * bg));
|
||||
console.log("Future state sensitivity is " +future_sens+" using current bg due to small delta or variation");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using current BG;";
|
||||
}
|
||||
|
||||
else {
|
||||
var future_sens = ( 277700 / (TDD * eventualBG) );
|
||||
console.log("Future state sensitivity is " +future_sens+" based on eventual bg due to -ve delta");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using eventual BG;";
|
||||
var future_sens = ( 1800 / (Math.log((eventualBG/ins_val)+1)*TDD));
|
||||
//var future_sens_old = ( 277700 / (TDD * eventualBG));
|
||||
console.log("Future state sensitivity is " +future_sens+" based on eventual bg due to -ve delta");
|
||||
rT.reason += "Dosing sensitivity: " +future_sens+" using eventual BG;";
|
||||
}
|
||||
var future_sens = round(future_sens,1);
|
||||
future_sens = round(future_sens,1);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -350,7 +350,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
|
|||
}
|
||||
}
|
||||
if (pref is EditTextPreference) {
|
||||
if (pref.getKey().contains("password") || pref.getKey().contains("pin") || pref.getKey().contains("secret")) {
|
||||
if (pref.getKey().contains("password") || pref.getKey().contains("pin") || pref.getKey().contains("secret") || pref.getKey().contains("token")) {
|
||||
pref.setSummary("******")
|
||||
} else if (pref.text != null) {
|
||||
pref.dialogMessage = pref.dialogMessage
|
||||
|
|
|
@ -16,12 +16,12 @@ import info.nightscout.androidaps.dependencyInjection.AutotuneModule
|
|||
import info.nightscout.androidaps.diaconn.di.DiaconnG8Module
|
||||
import info.nightscout.androidaps.insight.di.InsightDatabaseModule
|
||||
import info.nightscout.androidaps.insight.di.InsightModule
|
||||
import info.nightscout.androidaps.plugin.general.openhumans.dagger.OpenHumansModule
|
||||
import info.nightscout.androidaps.plugin.general.openhumans.di.OpenHumansModule
|
||||
import info.nightscout.androidaps.plugins.pump.common.di.PumpCommonModule
|
||||
import info.nightscout.androidaps.plugins.pump.common.di.RileyLinkModule
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.di.MedtronicModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.dagger.OmnipodDashModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.dagger.OmnipodErosModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.dash.di.OmnipodDashModule
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.eros.di.OmnipodErosModule
|
||||
import info.nightscout.shared.di.SharedModule
|
||||
import javax.inject.Singleton
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
)
|
||||
val plus1text = toSignedString(sp.getInt(R.string.key_carbs_button_increment_1, FAV1_DEFAULT))
|
||||
binding.plus1.text = plus1text
|
||||
binding.plus1.contentDescription = rh.gs(R.string.treatments_wizard_carbs_label) + " " + plus1text
|
||||
binding.plus1.contentDescription = rh.gs(R.string.treatments_wizard_carbs_label) + " " + plus1text
|
||||
binding.plus1.setOnClickListener {
|
||||
binding.carbs.value = max(
|
||||
0.0, binding.carbs.value
|
||||
|
@ -155,7 +155,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
|
||||
val plus2text = toSignedString(sp.getInt(R.string.key_carbs_button_increment_2, FAV2_DEFAULT))
|
||||
binding.plus2.text = plus2text
|
||||
binding.plus2.contentDescription = rh.gs(R.string.treatments_wizard_carbs_label) + " " + plus2text
|
||||
binding.plus2.contentDescription = rh.gs(R.string.treatments_wizard_carbs_label) + " " + plus2text
|
||||
binding.plus2.setOnClickListener {
|
||||
binding.carbs.value = max(
|
||||
0.0, binding.carbs.value
|
||||
|
@ -166,7 +166,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
val plus3text = toSignedString(sp.getInt(R.string.key_carbs_button_increment_3, FAV3_DEFAULT))
|
||||
binding.plus3.text = plus3text
|
||||
binding.plus2.contentDescription = rh.gs(R.string.treatments_wizard_carbs_label) + " " + plus3text
|
||||
binding.plus2.contentDescription = rh.gs(R.string.treatments_wizard_carbs_label) + " " + plus3text
|
||||
binding.plus3.setOnClickListener {
|
||||
binding.carbs.value = max(
|
||||
0.0, binding.carbs.value
|
||||
|
@ -179,7 +179,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
setOnValueChangedListener { eventTime: Long ->
|
||||
run {
|
||||
val timeOffset = ((eventTime - eventTimeOriginal) / (1000 * 60)).toDouble()
|
||||
binding.time.value = timeOffset
|
||||
if (_binding != null) binding.time.value = timeOffset
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -250,7 +250,8 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
val hypoSelected = binding.hypoTt.isChecked
|
||||
if (hypoSelected)
|
||||
actions.add(
|
||||
rh.gs(R.string.temptargetshort) + ": " + (DecimalFormatter.to1Decimal(hypoTT) + " " + unitLabel + " (" + rh.gs(R.string.format_mins, hypoTTDuration) + ")").formatColor( context,
|
||||
rh.gs(R.string.temptargetshort) + ": " + (DecimalFormatter.to1Decimal(hypoTT) + " " + unitLabel + " (" + rh.gs(R.string.format_mins, hypoTTDuration) + ")").formatColor(
|
||||
context,
|
||||
rh,
|
||||
R.attr.tempTargetConfirmation
|
||||
)
|
||||
|
@ -258,7 +259,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
|
||||
val timeOffset = binding.time.value.toInt()
|
||||
if (useAlarm && carbs > 0 && timeOffset > 0)
|
||||
actions.add(rh.gs(R.string.alarminxmin, timeOffset).formatColor(context , rh, R.attr.infoColor))
|
||||
actions.add(rh.gs(R.string.alarminxmin, timeOffset).formatColor(context, rh, R.attr.infoColor))
|
||||
val duration = binding.duration.value.toInt()
|
||||
if (duration > 0)
|
||||
actions.add(rh.gs(R.string.duration) + ": " + duration + rh.gs(R.string.shorthour))
|
||||
|
@ -385,7 +386,7 @@ class CarbsDialog : DialogFragmentWithDate() {
|
|||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(!queryingProtection) {
|
||||
if (!queryingProtection) {
|
||||
queryingProtection = true
|
||||
activity?.let { activity ->
|
||||
val cancelFail = {
|
||||
|
|
|
@ -3,6 +3,8 @@ package info.nightscout.androidaps.dialogs
|
|||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.HandlerThread
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.view.LayoutInflater
|
||||
|
@ -24,6 +26,7 @@ import info.nightscout.androidaps.database.ValueWrapper
|
|||
import info.nightscout.androidaps.databinding.DialogWizardBinding
|
||||
import info.nightscout.androidaps.events.EventAutosensCalculationFinished
|
||||
import info.nightscout.androidaps.extensions.formatColor
|
||||
import info.nightscout.androidaps.extensions.runOnUiThread
|
||||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.extensions.valueToUnits
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
|
@ -63,11 +66,13 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
@Inject lateinit var dateUtil: DateUtil
|
||||
@Inject lateinit var protectionCheck: ProtectionCheck
|
||||
|
||||
private val handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
||||
|
||||
private var queryingProtection = false
|
||||
private var wizard: BolusWizard? = null
|
||||
private var calculatedPercentage = 100.0
|
||||
private var calculatedCorrection = 0.0
|
||||
private var correctionPercent = false
|
||||
private var usePercentage = false
|
||||
private var carbsPassedIntoWizard = 0.0
|
||||
private var notesPassedIntoWizard = ""
|
||||
private var okClicked: Boolean = false // one shot guards
|
||||
|
@ -152,7 +157,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, binding.okcancel.ok, textWatcher
|
||||
)
|
||||
|
||||
if (correctionPercent) {
|
||||
if (usePercentage) {
|
||||
calculatedPercentage = sp.getInt(R.string.key_boluswizard_percentage, 100).toDouble()
|
||||
binding.correctionInput.setParams(calculatedPercentage, 10.0, 200.0, 5.0, DecimalFormat("0"), false, binding.okcancel.ok, textWatcher)
|
||||
binding.correctionInput.value = calculatedPercentage
|
||||
|
@ -168,9 +173,10 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
savedInstanceState?.getDouble("carb_time_input")
|
||||
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, binding.okcancel.ok, timeTextWatcher
|
||||
)
|
||||
initDialog()
|
||||
handler.post { initDialog() }
|
||||
calculatedPercentage = sp.getInt(R.string.key_boluswizard_percentage, 100).toDouble()
|
||||
binding.percentUsed.text = rh.gs(R.string.format_percent, sp.getInt(R.string.key_boluswizard_percentage, 100))
|
||||
binding.percentUsed.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100 || usePercentage).toVisibility()
|
||||
// ok button
|
||||
binding.okcancel.ok.setOnClickListener {
|
||||
if (okClicked) {
|
||||
|
@ -222,8 +228,8 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
run {
|
||||
sp.putBoolean(rh.gs(R.string.key_wizard_correction_percent), isChecked)
|
||||
binding.correctionUnit.text = if (isChecked) "%" else rh.gs(R.string.insulin_unit_shortname)
|
||||
correctionPercent = binding.correctionPercent.isChecked
|
||||
if (correctionPercent) {
|
||||
usePercentage = binding.correctionPercent.isChecked
|
||||
if (usePercentage) {
|
||||
binding.correctionInput.setParams(calculatedPercentage, 10.0, 200.0, 5.0, DecimalFormat("0"), false, binding.okcancel.ok, textWatcher)
|
||||
binding.correctionInput.customContentDescription = rh.gs(R.string.a11_correction_percentage)
|
||||
} else {
|
||||
|
@ -234,7 +240,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
binding.correctionInput.customContentDescription = rh.gs(R.string.a11_correction_units)
|
||||
}
|
||||
binding.correctionInput.updateA11yDescription()
|
||||
binding.correctionInput.value = if (correctionPercent) calculatedPercentage else Round.roundTo(calculatedCorrection, bolusStep)
|
||||
binding.correctionInput.value = if (usePercentage) calculatedPercentage else Round.roundTo(calculatedCorrection, bolusStep)
|
||||
}
|
||||
}
|
||||
// profile
|
||||
|
@ -257,6 +263,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
handler.removeCallbacksAndMessages(null)
|
||||
_binding = null
|
||||
}
|
||||
|
||||
|
@ -314,8 +321,8 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
private fun loadCheckedStates() {
|
||||
binding.bgTrendCheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_trend_bg, false)
|
||||
binding.cobCheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_cob, false)
|
||||
correctionPercent = sp.getBoolean(R.string.key_wizard_correction_percent, false)
|
||||
binding.correctionPercent.isChecked = correctionPercent
|
||||
usePercentage = sp.getBoolean(R.string.key_wizard_correction_percent, false)
|
||||
binding.correctionPercent.isChecked = usePercentage
|
||||
}
|
||||
|
||||
private fun valueToUnitsToString(value: Double, units: String): String =
|
||||
|
@ -323,14 +330,9 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
else DecimalFormatter.to1Decimal(value * Constants.MGDL_TO_MMOLL)
|
||||
|
||||
private fun initDialog() {
|
||||
if (carbsPassedIntoWizard != 0.0) {
|
||||
binding.carbsInput.value = carbsPassedIntoWizard
|
||||
}
|
||||
if (notesPassedIntoWizard.isNotBlank()) {
|
||||
binding.notesLayout.notes.setText(notesPassedIntoWizard)
|
||||
}
|
||||
val profile = profileFunction.getProfile()
|
||||
val profileStore = activePlugin.activeProfileSource.profile
|
||||
val tempTarget = repository.getTemporaryTargetActiveAt(dateUtil.now()).blockingGet()
|
||||
|
||||
if (profile == null || profileStore == null) {
|
||||
ToastUtils.showToastInUiThread(ctx, rh.gs(R.string.noprofile))
|
||||
|
@ -338,32 +340,38 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
return
|
||||
}
|
||||
|
||||
val profileList: ArrayList<CharSequence> = profileStore.getProfileList()
|
||||
profileList.add(0, rh.gs(R.string.active))
|
||||
context?.let { context ->
|
||||
binding.profileList.setAdapter(ArrayAdapter(context, R.layout.spinner_centered, profileList))
|
||||
binding.profileList.setText(profileList[0], false)
|
||||
}
|
||||
|
||||
val units = profileFunction.getUnits()
|
||||
binding.bgUnits.text = units.asText
|
||||
binding.bgInput.step = if (units == GlucoseUnit.MGDL) 1.0 else 0.1
|
||||
|
||||
// Set BG if not old
|
||||
binding.bgInput.value = iobCobCalculator.ads.actualBg()?.valueToUnits(units) ?: 0.0
|
||||
|
||||
binding.ttCheckbox.isEnabled = repository.getTemporaryTargetActiveAt(dateUtil.now()).blockingGet() is ValueWrapper.Existing
|
||||
binding.ttCheckboxIcon.visibility = binding.ttCheckbox.isEnabled.toVisibility()
|
||||
|
||||
// IOB calculation
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round()
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
|
||||
binding.iobInsulin.text = rh.gs(R.string.formatinsulinunits, -bolusIob.iob - basalIob.basaliob)
|
||||
runOnUiThread {
|
||||
if (carbsPassedIntoWizard != 0.0) {
|
||||
binding.carbsInput.value = carbsPassedIntoWizard
|
||||
}
|
||||
if (notesPassedIntoWizard.isNotBlank()) {
|
||||
binding.notesLayout.notes.setText(notesPassedIntoWizard)
|
||||
}
|
||||
|
||||
calculateInsulin()
|
||||
val profileList: ArrayList<CharSequence> = profileStore.getProfileList()
|
||||
profileList.add(0, rh.gs(R.string.active))
|
||||
context?.let { context ->
|
||||
binding.profileList.setAdapter(ArrayAdapter(context, R.layout.spinner_centered, profileList))
|
||||
binding.profileList.setText(profileList[0], false)
|
||||
}
|
||||
|
||||
binding.percentUsed.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100 || correctionPercent).toVisibility()
|
||||
val units = profileFunction.getUnits()
|
||||
binding.bgUnits.text = units.asText
|
||||
binding.bgInput.step = if (units == GlucoseUnit.MGDL) 1.0 else 0.1
|
||||
|
||||
// Set BG if not old
|
||||
binding.bgInput.value = iobCobCalculator.ads.actualBg()?.valueToUnits(units) ?: 0.0
|
||||
|
||||
binding.ttCheckbox.isEnabled = tempTarget is ValueWrapper.Existing
|
||||
binding.ttCheckboxIcon.visibility = binding.ttCheckbox.isEnabled.toVisibility()
|
||||
binding.iobInsulin.text = rh.gs(R.string.formatinsulinunits, -bolusIob.iob - basalIob.basaliob)
|
||||
|
||||
calculateInsulin()
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
|
@ -496,7 +504,7 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if(!queryingProtection) {
|
||||
if (!queryingProtection) {
|
||||
queryingProtection = true
|
||||
activity?.let { activity ->
|
||||
val cancelFail = {
|
||||
|
|
|
@ -192,6 +192,11 @@ class DetermineBasalAdapterSMBDynamicISFJS internal constructor(private val scri
|
|||
this.profile.put("sens", profile.getIsfMgdl())
|
||||
this.profile.put("max_daily_safety_multiplier", sp.getInt(R.string.key_openapsama_max_daily_safety_multiplier, 3))
|
||||
this.profile.put("current_basal_safety_multiplier", sp.getDouble(R.string.key_openapsama_current_basal_safety_multiplier, 4.0))
|
||||
this.profile.put("lgsThreshold", Profile.toMgdl(sp.getDouble(R.string.key_lgs_threshold, 65.0)))
|
||||
|
||||
val insulin = activePlugin.activeInsulin
|
||||
val insulinType = insulin.friendlyName
|
||||
val insulinPeak = insulin.peak
|
||||
|
||||
//mProfile.put("high_temptarget_raises_sensitivity", SP.getBoolean(R.string.key_high_temptarget_raises_sensitivity, SMBDefaults.high_temptarget_raises_sensitivity));
|
||||
this.profile.put("high_temptarget_raises_sensitivity", sp.getBoolean(R.string.key_high_temptarget_raises_sensitivity, SMBDefaults.high_temptarget_raises_sensitivity))
|
||||
|
@ -222,7 +227,9 @@ class DetermineBasalAdapterSMBDynamicISFJS internal constructor(private val scri
|
|||
this.profile.put("enableSMB_after_carbs", smbEnabled && sp.getBoolean(R.string.key_enableSMB_after_carbs, false) && advancedFiltering)
|
||||
this.profile.put("maxSMBBasalMinutes", sp.getInt(R.string.key_smbmaxminutes, SMBDefaults.maxSMBBasalMinutes))
|
||||
this.profile.put("maxUAMSMBBasalMinutes", sp.getInt(R.string.key_uamsmbmaxminutes, SMBDefaults.maxUAMSMBBasalMinutes))
|
||||
this.profile.put("DynISFAdjust", SafeParse.stringToDouble(sp.getString(R.string.key_DynISFAdjust,"100")))
|
||||
this.profile.put("DynISFAdjust", SafeParse.stringToDouble(sp.getString(R.string.key_DynISFAdjust, "100")))
|
||||
this.profile.put("insulinType", insulinType)
|
||||
this.profile.put("insulinPeak", insulinPeak)
|
||||
this.profile.put("maxUAMSMBBasalMinutes", sp.getInt(R.string.key_uamsmbmaxminutes, SMBDefaults.maxUAMSMBBasalMinutes))
|
||||
//set the min SMB amount to be the amount set by the pump.
|
||||
this.profile.put("bolus_increment", pumpBolusStep)
|
||||
|
@ -263,9 +270,13 @@ class DetermineBasalAdapterSMBDynamicISFJS internal constructor(private val scri
|
|||
this.mealData.put("lastBolusTime", mealData.lastBolusTime)
|
||||
this.mealData.put("lastCarbTime", mealData.lastCarbTime)
|
||||
|
||||
this.mealData.put("TDDAIMI1", tddCalculator.averageTDD(tddCalculator.calculate(1))?.totalAmount)
|
||||
this.mealData.put("TDDAIMI7", tddCalculator.averageTDD(tddCalculator.calculate(7))?.totalAmount)
|
||||
this.mealData.put("TDDPUMP", tddCalculator.calculateDaily().totalAmount)
|
||||
this.mealData.put("TDDLast24", tddCalculator.calculate24Daily().totalAmount)
|
||||
this.mealData.put("TDDLast4", tddCalculator.calculateDaily(-4, 0).totalAmount)
|
||||
this.mealData.put("TDD4to8", tddCalculator.calculateDaily(-8, -4).totalAmount)
|
||||
this.mealData.put("TDD24", tddCalculator.calculateDaily(-24, 0).totalAmount)
|
||||
|
||||
|
||||
|
||||
if (constraintChecker.isAutosensModeEnabled().value()) {
|
||||
autosensData.put("ratio", autosensDataRatio)
|
||||
|
|
|
@ -2,7 +2,9 @@ package info.nightscout.androidaps.plugins.constraints.objectives.objectives
|
|||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.interfaces.Constraint
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import javax.inject.Inject
|
||||
|
||||
|
@ -10,14 +12,21 @@ import javax.inject.Inject
|
|||
class Objective6(injector: HasAndroidInjector) : Objective(injector, "maxiob", R.string.objectives_maxiob_objective, R.string.objectives_maxiob_gate) {
|
||||
|
||||
@Inject lateinit var constraintChecker: ConstraintChecker
|
||||
@Inject lateinit var safetyPlugin: SafetyPlugin
|
||||
|
||||
init {
|
||||
tasks.add(MinimumDurationTask(this, T.days(1).msecs()))
|
||||
tasks.add(object : Task(this, R.string.maxiobset) {
|
||||
override fun isCompleted(): Boolean {
|
||||
val maxIOB = constraintChecker.getMaxIOBAllowed().value()
|
||||
return maxIOB > 0
|
||||
}
|
||||
})
|
||||
tasks.add(
|
||||
object : Task(this, R.string.closedmodeenabled) {
|
||||
override fun isCompleted(): Boolean = sp.getString(R.string.key_aps_mode, "open") == "closed"
|
||||
})
|
||||
tasks.add(
|
||||
object : Task(this, R.string.maxiobset) {
|
||||
|
||||
override fun isCompleted(): Boolean {
|
||||
val maxIOB = constraintChecker.getMaxIOBAllowed().value()
|
||||
return maxIOB > 0
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
|
@ -18,39 +18,38 @@ import dagger.android.HasAndroidInjector
|
|||
import dagger.android.support.DaggerFragment
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutotuneFragmentBinding
|
||||
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.ATProfile
|
||||
import info.nightscout.androidaps.plugins.general.autotune.events.EventAutotuneUpdateGui
|
||||
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.database.entities.UserEntry
|
||||
import info.nightscout.androidaps.database.entities.ValueWithUnit
|
||||
import info.nightscout.androidaps.databinding.AutotuneFragmentBinding
|
||||
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
||||
import info.nightscout.androidaps.extensions.runOnUiThread
|
||||
import info.nightscout.androidaps.extensions.toVisibility
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.logging.UserEntryLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.InputWeekDay
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.ATProfile
|
||||
import info.nightscout.androidaps.plugins.general.autotune.events.EventAutotuneUpdateGui
|
||||
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
|
||||
import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.MidnightTime
|
||||
import info.nightscout.androidaps.utils.Round
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.SafeParse
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
import org.json.JSONObject
|
||||
//import org.slf4j.LoggerFactory
|
||||
import java.text.DecimalFormat
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class AutotuneFragment : DaggerFragment() {
|
||||
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var autotunePlugin: AutotunePlugin
|
||||
@Inject lateinit var autotuneFS: AutotuneFS
|
||||
|
@ -63,13 +62,15 @@ class AutotuneFragment : DaggerFragment() {
|
|||
@Inject lateinit var rh: ResourceHelper
|
||||
@Inject lateinit var rxBus: RxBus
|
||||
@Inject lateinit var injector: HasAndroidInjector
|
||||
@Inject lateinit var aapsSchedulers: AapsSchedulers
|
||||
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
//private val log = LoggerFactory.getLogger(AutotunePlugin::class.java)
|
||||
private var _binding: AutotuneFragmentBinding? = null
|
||||
private lateinit var profileStore: ProfileStore
|
||||
private var profileName = ""
|
||||
private lateinit var profile: ATProfile
|
||||
private var profile: ATProfile? = null
|
||||
private val days get() = autotunePlugin.days
|
||||
private val daysBack get() = SafeParse.stringToInt(binding.tuneDays.text)
|
||||
private val calcDays get() = autotunePlugin.calcDays(daysBack)
|
||||
|
@ -94,7 +95,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
profileStore = activePlugin.activeProfileSource.profile ?: ProfileStore(injector, JSONObject(), dateUtil)
|
||||
profileName = if (binding.profileList.text.toString() == rh.gs(R.string.active)) "" else binding.profileList.text.toString()
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?:currentProfile, LocalInsulin(""), injector)
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector)
|
||||
}
|
||||
days.addToLayout(binding.selectWeekDays)
|
||||
days.view?.setOnWeekdaysChangeListener { i: Int, selected: Boolean ->
|
||||
|
@ -109,8 +110,8 @@ class AutotuneFragment : DaggerFragment() {
|
|||
|
||||
binding.tuneDays.setParams(
|
||||
savedInstanceState?.getDouble("tunedays")
|
||||
?: defaultValue, 1.0, 30.0, 1.0, DecimalFormat("0"), false, null, textWatcher)
|
||||
|
||||
?: defaultValue, 1.0, 30.0, 1.0, DecimalFormat("0"), false, null, textWatcher
|
||||
)
|
||||
binding.autotuneRun.setOnClickListener {
|
||||
autotunePlugin.calculationRunning = true
|
||||
autotunePlugin.lastNbDays = daysBack.toString()
|
||||
|
@ -128,11 +129,10 @@ class AutotuneFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
binding.profileList.onItemClickListener = AdapterView.OnItemClickListener { _, _, _, _ ->
|
||||
if (!autotunePlugin.calculationRunning)
|
||||
{
|
||||
if (!autotunePlugin.calculationRunning) {
|
||||
profileName = if (binding.profileList.text.toString() == rh.gs(R.string.active)) "" else binding.profileList.text.toString()
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?:currentProfile, LocalInsulin(""), injector)
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector)
|
||||
}
|
||||
autotunePlugin.selectedProfile = profileName
|
||||
resetParam()
|
||||
|
@ -143,7 +143,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
binding.autotuneCopylocal.setOnClickListener {
|
||||
val localName = rh.gs(R.string.autotune_tunedprofile_name) + " " + dateUtil.dateAndTimeString(autotunePlugin.lastRun)
|
||||
val circadian = sp.getBoolean(R.string.key_autotune_circadian_ic_isf, false)
|
||||
autotunePlugin.tunedProfile?.let { tunedProfile ->
|
||||
autotunePlugin.tunedProfile?.let { tunedProfile ->
|
||||
showConfirmation(requireContext(),
|
||||
rh.gs(R.string.autotune_copy_localprofile_button),
|
||||
rh.gs(R.string.autotune_copy_local_profile_message) + "\n" + localName + " " + dateUtil.dateAndTimeString(autotunePlugin.lastRun),
|
||||
|
@ -227,13 +227,13 @@ class AutotuneFragment : DaggerFragment() {
|
|||
binding.autotuneCompare.setOnClickListener {
|
||||
val pumpProfile = autotunePlugin.pumpProfile
|
||||
val circadian = sp.getBoolean(R.string.key_autotune_circadian_ic_isf, false)
|
||||
val tunedprofile = if (circadian) autotunePlugin.tunedProfile?.circadianProfile else autotunePlugin.tunedProfile?.profile
|
||||
val tunedProfile = if (circadian) autotunePlugin.tunedProfile?.circadianProfile else autotunePlugin.tunedProfile?.profile
|
||||
ProfileViewerDialog().also { pvd ->
|
||||
pvd.arguments = Bundle().also {
|
||||
it.putLong("time", dateUtil.now())
|
||||
it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
|
||||
it.putString("customProfile", pumpProfile.profile.toPureNsJson(dateUtil).toString())
|
||||
it.putString("customProfile2", tunedprofile?.toPureNsJson(dateUtil).toString())
|
||||
it.putString("customProfile2", tunedProfile?.toPureNsJson(dateUtil).toString())
|
||||
it.putString("customProfileUnits", profileFunction.getUnits().asText)
|
||||
it.putString("customProfileName", pumpProfile.profilename + "\n" + rh.gs(R.string.autotune_tunedprofile_name))
|
||||
}
|
||||
|
@ -293,10 +293,8 @@ class AutotuneFragment : DaggerFragment() {
|
|||
super.onResume()
|
||||
disposable += rxBus
|
||||
.toObservable(EventAutotuneUpdateGui::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
updateGui()
|
||||
}, { fabricPrivacy.logException(it) })
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.subscribe({ updateGui() }, fabricPrivacy::logException)
|
||||
checkNewDay()
|
||||
binding.selectWeekDays.visibility = binding.showWeekDaysCheckbox.isChecked.toVisibility()
|
||||
updateGui()
|
||||
|
@ -315,7 +313,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
profileStore = activePlugin.activeProfileSource.profile ?: ProfileStore(injector, JSONObject(), dateUtil)
|
||||
profileName = if (binding.profileList.text.toString() == rh.gs(R.string.active)) "" else binding.profileList.text.toString()
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?:currentProfile, LocalInsulin(""), injector)
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector)
|
||||
}
|
||||
val profileList: ArrayList<CharSequence> = profileStore.getProfileList()
|
||||
profileList.add(0, rh.gs(R.string.active))
|
||||
|
@ -340,16 +338,18 @@ class AutotuneFragment : DaggerFragment() {
|
|||
autotunePlugin.calculationRunning -> {
|
||||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_during_run)
|
||||
}
|
||||
|
||||
autotunePlugin.lastRunSuccess -> {
|
||||
binding.autotuneCopylocal.visibility = View.VISIBLE
|
||||
binding.autotuneUpdateProfile.visibility = autotunePlugin.updateButtonVisibility
|
||||
binding.autotuneRevertProfile.visibility = if (autotunePlugin.updateButtonVisibility == View.VISIBLE) View.GONE else View.VISIBLE
|
||||
binding.autotuneProfileswitch.visibility = View.VISIBLE
|
||||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_after_run)
|
||||
binding.autotuneCopylocal.visibility = View.VISIBLE
|
||||
binding.autotuneUpdateProfile.visibility = autotunePlugin.updateButtonVisibility
|
||||
binding.autotuneRevertProfile.visibility = if (autotunePlugin.updateButtonVisibility == View.VISIBLE) View.GONE else View.VISIBLE
|
||||
binding.autotuneProfileswitch.visibility = View.VISIBLE
|
||||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_after_run)
|
||||
binding.autotuneCompare.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (profile.isValid && calcDays > 0)
|
||||
if (profile?.isValid == true && calcDays > 0)
|
||||
binding.autotuneRun.visibility = View.VISIBLE
|
||||
binding.autotuneCheckInputProfile.visibility = View.VISIBLE
|
||||
}
|
||||
|
@ -362,10 +362,9 @@ class AutotuneFragment : DaggerFragment() {
|
|||
|
||||
private fun checkNewDay() {
|
||||
val runToday = autotunePlugin.lastRun > MidnightTime.calc(dateUtil.now() - autotunePlugin.autotuneStartHour * 3600 * 1000L) + autotunePlugin.autotuneStartHour * 3600 * 1000L
|
||||
if (runToday && autotunePlugin.result != "")
|
||||
{
|
||||
if (runToday && autotunePlugin.result != "") {
|
||||
binding.tuneWarning.text = rh.gs(R.string.autotune_warning_after_run)
|
||||
} else if (!runToday || autotunePlugin.result.isEmpty()) { //if new day reinit result, default days, warning and button's visibility
|
||||
} else if (!runToday || autotunePlugin.result.isEmpty()) { //if new day re-init result, default days, warning and button's visibility
|
||||
resetParam(!runToday)
|
||||
days.setAll(true)
|
||||
}
|
||||
|
@ -376,17 +375,18 @@ class AutotuneFragment : DaggerFragment() {
|
|||
var nl = ""
|
||||
if (profileFunction.getProfile() == null) {
|
||||
warning = rh.gs(R.string.profileswitch_ismissing)
|
||||
return warning
|
||||
return warning
|
||||
}
|
||||
profileFunction.getProfile()?.let { currentProfile ->
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?:currentProfile, LocalInsulin(""), injector)
|
||||
if (!profile.isValid) return rh.gs(R.string.autotune_profile_invalid)
|
||||
if (profile.icSize > 1) {
|
||||
warning += nl + rh.gs(R.string.autotune_ic_warning, profile.icSize, profile.ic)
|
||||
nl = "\n"
|
||||
}
|
||||
if (profile.isfSize > 1) {
|
||||
warning += nl + rh.gs(R.string.autotune_isf_warning, profile.isfSize, Profile.fromMgdlToUnits(profile.isf, profileFunction.getUnits()), profileFunction.getUnits().asText)
|
||||
profile = ATProfile(profileStore.getSpecificProfile(profileName)?.let { ProfileSealed.Pure(it) } ?: currentProfile, LocalInsulin(""), injector).also { profile ->
|
||||
if (!profile.isValid) return rh.gs(R.string.autotune_profile_invalid)
|
||||
if (profile.icSize > 1) {
|
||||
warning += nl + rh.gs(R.string.autotune_ic_warning, profile.icSize, profile.ic)
|
||||
nl = "\n"
|
||||
}
|
||||
if (profile.isfSize > 1) {
|
||||
warning += nl + rh.gs(R.string.autotune_isf_warning, profile.isfSize, Profile.fromMgdlToUnits(profile.isf, profileFunction.getUnits()), profileFunction.getUnits().asText)
|
||||
}
|
||||
}
|
||||
}
|
||||
return warning
|
||||
|
@ -404,7 +404,10 @@ class AutotuneFragment : DaggerFragment() {
|
|||
}
|
||||
|
||||
private val textWatcher = object : TextWatcher {
|
||||
override fun afterTextChanged(s: Editable) { updateGui() }
|
||||
override fun afterTextChanged(s: Editable) {
|
||||
updateGui()
|
||||
}
|
||||
|
||||
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||
if (binding.tuneDays.text.isNotEmpty()) {
|
||||
|
@ -415,7 +418,9 @@ class AutotuneFragment : DaggerFragment() {
|
|||
autotunePlugin.lastNbDays = binding.tuneDays.text
|
||||
resetParam(false)
|
||||
}
|
||||
} catch (e:Exception) { }
|
||||
} catch (e: Exception) {
|
||||
fabricPrivacy.logException(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -497,7 +502,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun toTableRowHeader(basal:Boolean = false): TableRow =
|
||||
private fun toTableRowHeader(basal: Boolean = false): TableRow =
|
||||
TableRow(context).also { header ->
|
||||
val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT).apply { weight = 1f }
|
||||
header.layoutParams = TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT).apply { gravity = Gravity.CENTER_HORIZONTAL }
|
||||
|
@ -528,7 +533,7 @@ class AutotuneFragment : DaggerFragment() {
|
|||
})
|
||||
}
|
||||
|
||||
private fun toTableRowValue(hour: String, inputValue: Double, tunedValue: Double, format:String = "%.3f", missing: String = ""): TableRow =
|
||||
private fun toTableRowValue(hour: String, inputValue: Double, tunedValue: Double, format: String = "%.3f", missing: String = ""): TableRow =
|
||||
TableRow(context).also { row ->
|
||||
val percentValue = Round.roundTo(tunedValue / inputValue * 100 - 100, 1.0).toInt().toString() + "%"
|
||||
val lp = TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT).apply { weight = 1f }
|
||||
|
|
|
@ -2,34 +2,34 @@ package info.nightscout.androidaps.plugins.general.autotune
|
|||
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.*
|
||||
import info.nightscout.androidaps.data.IobTotal
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.embedments.InterfaceIDs
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.database.entities.*
|
||||
import info.nightscout.androidaps.extensions.durationInMinutes
|
||||
import info.nightscout.androidaps.extensions.iobCalc
|
||||
import info.nightscout.androidaps.extensions.toJson
|
||||
import info.nightscout.androidaps.extensions.toTemporaryBasal
|
||||
import info.nightscout.androidaps.interfaces.ActivePlugin
|
||||
import info.nightscout.androidaps.interfaces.Profile
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.ATProfile
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.Round
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import org.slf4j.LoggerFactory
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@Singleton
|
||||
class AutotuneIob @Inject constructor(
|
||||
open class AutotuneIob @Inject constructor(
|
||||
private val aapsLogger: AAPSLogger,
|
||||
private val repository: AppRepository,
|
||||
private val profileFunction: ProfileFunction,
|
||||
|
@ -41,10 +41,10 @@ class AutotuneIob @Inject constructor(
|
|||
|
||||
private val nsTreatments = ArrayList<NsTreatment>()
|
||||
private var dia: Double = Constants.defaultDIA
|
||||
var boluses: MutableList<Bolus> = ArrayList()
|
||||
var boluses: ArrayList<Bolus> = ArrayList()
|
||||
var meals = ArrayList<Carbs>()
|
||||
lateinit var glucose: List<GlucoseValue> // newest at index 0
|
||||
private lateinit var tempBasals: MutableList<TemporaryBasal>
|
||||
private lateinit var tempBasals: ArrayList<TemporaryBasal>
|
||||
var startBG: Long = 0
|
||||
var endBG: Long = 0
|
||||
private fun range(): Long = (60 * 60 * 1000L * dia + T.hours(2).msecs()).toLong()
|
||||
|
@ -59,24 +59,24 @@ class AutotuneIob @Inject constructor(
|
|||
initializeTreatmentData(from - range(), to)
|
||||
initializeTempBasalData(from - range(), to, tunedProfile)
|
||||
initializeExtendedBolusData(from - range(), to, tunedProfile)
|
||||
Collections.sort(tempBasals) { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
tempBasals.sortWith { o1: TemporaryBasal, o2: TemporaryBasal -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
// Without Neutral TBR, Autotune Web will ignore iob for periods without TBR running
|
||||
addNeutralTempBasal(from - range(), to, tunedProfile)
|
||||
Collections.sort(nsTreatments) { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() }
|
||||
Collections.sort(boluses) { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
log.debug("D/AutotunePlugin: Nb Treatments: " + nsTreatments.size + " Nb meals: " + meals.size)
|
||||
nsTreatments.sortWith { o1: NsTreatment, o2: NsTreatment -> (o2.date - o1.date).toInt() }
|
||||
this.boluses.sortWith { o1: Bolus, o2: Bolus -> (o2.timestamp - o1.timestamp).toInt() }
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Nb Treatments: " + nsTreatments.size + " Nb meals: " + meals.size)
|
||||
}
|
||||
|
||||
private fun initializeBgreadings(from: Long, to: Long) {
|
||||
glucose = repository.compatGetBgReadingsDataFromTime(from, to, false).blockingGet();
|
||||
glucose = repository.compatGetBgReadingsDataFromTime(from, to, false).blockingGet()
|
||||
}
|
||||
|
||||
//nsTreatment is used only for export data, meals is used in AutotunePrep
|
||||
private fun initializeTreatmentData(from: Long, to: Long) {
|
||||
val oldestBgDate = if (glucose.size > 0) glucose[glucose.size - 1].timestamp else from
|
||||
log.debug("AutotunePlugin Check BG date: BG Size: " + glucose.size + " OldestBG: " + dateUtil.dateAndTimeAndSecondsString(oldestBgDate) + " to: " + dateUtil.dateAndTimeAndSecondsString(to))
|
||||
val oldestBgDate = if (glucose.isNotEmpty()) glucose[glucose.size - 1].timestamp else from
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Check BG date: BG Size: " + glucose.size + " OldestBG: " + dateUtil.dateAndTimeAndSecondsString(oldestBgDate) + " to: " + dateUtil.dateAndTimeAndSecondsString(to))
|
||||
val tmpCarbs = repository.getCarbsDataFromTimeToTimeExpanded(from, to, false).blockingGet()
|
||||
log.debug("AutotunePlugin Nb treatments after query: " + tmpCarbs.size)
|
||||
aapsLogger.debug(LTag.AUTOTUNE, "Nb treatments after query: " + tmpCarbs.size)
|
||||
meals.clear()
|
||||
boluses.clear()
|
||||
var nbCarbs = 0
|
||||
|
@ -217,7 +217,7 @@ class AutotuneIob @Inject constructor(
|
|||
tempBasals.add(newtb)
|
||||
nsTreatments.add(NsTreatment(newtb))
|
||||
splittedTimestamp += durationFilled
|
||||
splittedDuration = splittedDuration - durationFilled
|
||||
splittedDuration -= durationFilled
|
||||
val profile = profileFunction.getProfile(newtb.timestamp) ?:continue
|
||||
boluses.addAll(convertToBoluses(newtb, profile, tunedProfile.profile)) // required for correct iob calculation with oref0 algo
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ class AutotuneIob @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun getIOB(time: Long, localInsulin: LocalInsulin): IobTotal {
|
||||
open fun getIOB(time: Long, localInsulin: LocalInsulin): IobTotal {
|
||||
val bolusIob = getCalculationToTimeTreatments(time, localInsulin).round()
|
||||
return bolusIob
|
||||
}
|
||||
|
@ -377,8 +377,4 @@ class AutotuneIob @Inject constructor(
|
|||
private fun log(message: String) {
|
||||
autotuneFS.atLog("[iob] $message")
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val log = LoggerFactory.getLogger(AutotunePlugin::class.java)
|
||||
}
|
||||
}
|
|
@ -10,6 +10,8 @@ import info.nightscout.androidaps.utils.DateUtil
|
|||
import info.nightscout.androidaps.utils.MidnightTime
|
||||
import info.nightscout.androidaps.utils.Round
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
@ -17,6 +19,7 @@ import javax.inject.Singleton
|
|||
|
||||
@Singleton
|
||||
class AutotunePrep @Inject constructor(
|
||||
private val aapsLogger: AAPSLogger,
|
||||
private val sp: SP,
|
||||
private val dateUtil: DateUtil,
|
||||
private val autotuneFS: AutotuneFS,
|
||||
|
@ -146,6 +149,7 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
}
|
||||
if (glucose.size == 0 || glucoseData.size == 0 ) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No BG value received")
|
||||
if (verbose)
|
||||
log("No BG value received")
|
||||
return null
|
||||
|
@ -159,11 +163,13 @@ class AutotunePrep @Inject constructor(
|
|||
//val boluses = 0
|
||||
//val maxCarbs = 0
|
||||
if (treatments.size == 0) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No Carbs entries")
|
||||
if (verbose)
|
||||
log("No Carbs entries")
|
||||
//return null
|
||||
}
|
||||
if (autotuneIob.boluses.size == 0) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No treatment received")
|
||||
if (verbose)
|
||||
log("No treatment received")
|
||||
return null
|
||||
|
@ -253,6 +259,7 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
avgDelta = (bg - bucketedData[i + 4].value) / 4
|
||||
} else {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Could not find glucose data")
|
||||
if (verbose)
|
||||
log("Could not find glucose data")
|
||||
}
|
||||
|
@ -302,7 +309,7 @@ class AutotunePrep @Inject constructor(
|
|||
|
||||
// Then, calculate carb absorption for that 5m interval using the deviation.
|
||||
if (mealCOB > 0) {
|
||||
val ci = Math.max(deviation, sp.getDouble("openapsama_min_5m_carbimpact", 3.0))
|
||||
val ci = Math.max(deviation, sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0))
|
||||
val absorbed = ci * tunedprofile.ic / sens
|
||||
// Store the COB, and use it as the starting point for the next data point.
|
||||
mealCOB = Math.max(0.0, mealCOB - absorbed)
|
||||
|
@ -320,8 +327,9 @@ class AutotunePrep @Inject constructor(
|
|||
crInitialIOB = iob.iob
|
||||
crInitialBG = glucoseDatum.value
|
||||
crInitialCarbTime = glucoseDatum.date
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "CRInitialIOB: $crInitialIOB CRInitialBG: $crInitialBG CRInitialCarbTime: ${dateUtil.toISOString(crInitialCarbTime)}")
|
||||
if (verbose)
|
||||
log("CRInitialIOB: " + crInitialIOB + " CRInitialBG: " + crInitialBG + " CRInitialCarbTime: " + dateUtil.toISOString(crInitialCarbTime))
|
||||
log("CRInitialIOB: $crInitialIOB CRInitialBG: $crInitialBG CRInitialCarbTime: ${dateUtil.toISOString(crInitialCarbTime)}")
|
||||
}
|
||||
// keep calculatingCR as long as we have COB or enough IOB
|
||||
if (mealCOB > 0 && i > 1) {
|
||||
|
@ -333,8 +341,9 @@ class AutotunePrep @Inject constructor(
|
|||
val crEndIOB = iob.iob
|
||||
val crEndBG = glucoseDatum.value
|
||||
val crEndTime = glucoseDatum.date
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "CREndIOB: $crEndIOB CREndBG: $crEndBG CREndTime: ${dateUtil.toISOString(crEndTime)}")
|
||||
if (verbose)
|
||||
log("CREndIOB: " + crEndIOB + " CREndBG: " + crEndBG + " CREndTime: " + dateUtil.toISOString(crEndTime))
|
||||
log("CREndIOB: $crEndIOB CREndBG: $crEndBG CREndTime: ${dateUtil.toISOString(crEndTime)}")
|
||||
val crDatum = CRDatum(dateUtil)
|
||||
crDatum.crInitialBG = crInitialBG
|
||||
crDatum.crInitialIOB = crInitialIOB
|
||||
|
@ -349,6 +358,7 @@ class AutotunePrep @Inject constructor(
|
|||
|
||||
//log.debug(CREndTime - CRInitialCarbTime, CRElapsedMinutes);
|
||||
if (CRElapsedMinutes < 60 || i == 1 && mealCOB > 0) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Ignoring $CRElapsedMinutes m CR period.")
|
||||
if (verbose)
|
||||
log("Ignoring $CRElapsedMinutes m CR period.")
|
||||
} else {
|
||||
|
@ -378,8 +388,9 @@ class AutotunePrep @Inject constructor(
|
|||
//log.debug(type);
|
||||
if (type != "csf") {
|
||||
glucoseDatum.mealAbsorption = "start"
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${glucoseDatum.mealAbsorption} carb absorption")
|
||||
if (verbose)
|
||||
log(glucoseDatum.mealAbsorption + " carb absorption")
|
||||
log("${glucoseDatum.mealAbsorption} carb absorption")
|
||||
}
|
||||
type = "csf"
|
||||
glucoseDatum.mealCarbs = mealCarbs.toInt()
|
||||
|
@ -389,8 +400,9 @@ class AutotunePrep @Inject constructor(
|
|||
// check previous "type" value, and if it was csf, set a mealAbsorption end flag
|
||||
if (type == "csf") {
|
||||
csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption = "end"
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption} carb absorption")
|
||||
if (verbose)
|
||||
log(csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption + " carb absorption")
|
||||
log("${csfGlucoseData[csfGlucoseData.size - 1].mealAbsorption} carb absorption")
|
||||
}
|
||||
if (iob.iob > 2 * currentBasal || deviation > 6 || uam) {
|
||||
uam = if (deviation > 0) {
|
||||
|
@ -400,6 +412,7 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
if (type != "uam") {
|
||||
glucoseDatum.uamAbsorption = "start"
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${glucoseDatum.uamAbsorption} unannnounced meal absorption")
|
||||
if (verbose)
|
||||
log(glucoseDatum.uamAbsorption + " unannnounced meal absorption")
|
||||
}
|
||||
|
@ -407,6 +420,7 @@ class AutotunePrep @Inject constructor(
|
|||
uamGlucoseData.add(glucoseDatum)
|
||||
} else {
|
||||
if (type == "uam") {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "end unannounced meal absorption")
|
||||
if (verbose)
|
||||
log("end unannounced meal absorption")
|
||||
}
|
||||
|
@ -433,8 +447,10 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
}
|
||||
// debug line to print out all the things
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "${(if (absorbing) 1 else 0)} mealCOB: ${Round.roundTo(mealCOB, 0.1)} mealCarbs: ${Math.round(mealCarbs)} basalBGI: ${Round.roundTo(basalBGI, 0.1)} BGI: ${Round.roundTo(BGI, 0.1)} IOB: ${iob.iob} Activity: ${iob.activity} at ${dateUtil.timeStringWithSeconds(BGTime)} dev: $deviation avgDelta: $avgDelta $type")
|
||||
if (verbose)
|
||||
log((if (absorbing) 1 else 0).toString() + " mealCOB: " + Round.roundTo(mealCOB, 0.1) + " mealCarbs: " + Math.round(mealCarbs) + " basalBGI: " + Round.roundTo(basalBGI, 0.1) + " BGI: " + Round.roundTo(BGI, 0.1) + " IOB: " + iob.iob+ " Activity: " + iob.activity + " at " + dateUtil.timeStringWithSeconds(BGTime) + " dev: " + deviation + " avgDelta: " + avgDelta + " " + type)
|
||||
log("${(if (absorbing) 1 else 0)} mealCOB: ${Round.roundTo(mealCOB, 0.1)} mealCarbs: ${Math.round(mealCarbs)} basalBGI: ${Round.roundTo(basalBGI, 0.1)} BGI: ${Round
|
||||
.roundTo(BGI, 0.1)} IOB: ${iob.iob} Activity: ${iob.activity} at ${dateUtil.timeStringWithSeconds(BGTime)} dev: $deviation avgDelta: $avgDelta $type")
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************
|
||||
|
@ -449,16 +465,20 @@ class AutotunePrep @Inject constructor(
|
|||
val UAMLength = uamGlucoseData.size
|
||||
var basalLength = basalGlucoseData.size
|
||||
if (sp.getBoolean(R.string.key_autotune_categorize_uam_as_basal, false)) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Categorizing all UAM data as basal.")
|
||||
if (verbose)
|
||||
log("Categorizing all UAM data as basal.")
|
||||
basalGlucoseData.addAll(uamGlucoseData)
|
||||
} else if (CSFLength > 12) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Found at least 1h of carb: assuming meals were announced, and categorizing UAM data as basal.")
|
||||
if (verbose)
|
||||
log("Found at least 1h of carb: assuming meals were announced, and categorizing UAM data as basal.")
|
||||
basalGlucoseData.addAll(uamGlucoseData)
|
||||
} else {
|
||||
if (2 * basalLength < UAMLength) {
|
||||
//log.debug(basalGlucoseData, UAMGlucoseData);
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Warning: too many deviations categorized as UnAnnounced Meals")
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Adding $UAMLength UAM deviations to $basalLength basal ones")
|
||||
if (verbose) {
|
||||
log("Warning: too many deviations categorized as UnAnnounced Meals")
|
||||
log("Adding $UAMLength UAM deviations to $basalLength basal ones")
|
||||
|
@ -473,10 +493,12 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
//log.debug(newBasalGlucose);
|
||||
basalGlucoseData = newBasalGlucose
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "and selecting the lowest 50%, leaving ${basalGlucoseData.size} basal+UAM ones")
|
||||
if (verbose)
|
||||
log("and selecting the lowest 50%, leaving " + basalGlucoseData.size + " basal+UAM ones")
|
||||
log("and selecting the lowest 50%, leaving ${basalGlucoseData.size} basal+UAM ones")
|
||||
}
|
||||
if (2 * ISFLength < UAMLength) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Adding $UAMLength UAM deviations to $ISFLength ISF ones")
|
||||
if (verbose)
|
||||
log("Adding $UAMLength UAM deviations to $ISFLength ISF ones")
|
||||
isfGlucoseData.addAll(uamGlucoseData)
|
||||
|
@ -488,14 +510,17 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
//console.error(newISFGlucose);
|
||||
isfGlucoseData = newISFGlucose
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "and selecting the lowest 50%, leaving ${isfGlucoseData.size} ISF+UAM ones")
|
||||
if (verbose)
|
||||
log("and selecting the lowest 50%, leaving " + isfGlucoseData.size + " ISF+UAM ones")
|
||||
log("and selecting the lowest 50%, leaving ${isfGlucoseData.size} ISF+UAM ones")
|
||||
//log.error(ISFGlucoseData.length, UAMLength);
|
||||
}
|
||||
}
|
||||
basalLength = basalGlucoseData.size
|
||||
ISFLength = isfGlucoseData.size
|
||||
if (4 * basalLength + ISFLength < CSFLength && ISFLength < 10) {
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Warning: too many deviations categorized as meals")
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "Adding $CSFLength CSF deviations to $ISFLength ISF ones")
|
||||
if (verbose) {
|
||||
log("Warning: too many deviations categorized as meals")
|
||||
//log.debug("Adding",CSFLength,"CSF deviations to",basalLength,"basal ones");
|
||||
|
@ -507,8 +532,9 @@ class AutotunePrep @Inject constructor(
|
|||
}
|
||||
|
||||
// categorize.js Lines 437-444
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "CRData: ${crData.size} CSFGlucoseData: ${csfGlucoseData.size} ISFGlucoseData: ${isfGlucoseData.size} BasalGlucoseData: ${basalGlucoseData.size}")
|
||||
if (verbose)
|
||||
log("CRData: " + crData.size + " CSFGlucoseData: " + csfGlucoseData.size + " ISFGlucoseData: " + isfGlucoseData.size + " BasalGlucoseData: " + basalGlucoseData.size)
|
||||
log("CRData: ${crData.size} CSFGlucoseData: ${csfGlucoseData.size} ISFGlucoseData: ${isfGlucoseData.size} BasalGlucoseData: ${basalGlucoseData.size}")
|
||||
|
||||
return PreppedGlucose(autotuneIob.startBG, crData, csfGlucoseData, isfGlucoseData, basalGlucoseData, dateUtil)
|
||||
}
|
||||
|
@ -516,6 +542,7 @@ class AutotunePrep @Inject constructor(
|
|||
//dosed.js full
|
||||
private fun dosed(start: Long, end: Long, treatments: List<Bolus>): Double {
|
||||
var insulinDosed = 0.0
|
||||
//aapsLogger.debug(LTag.AUTOTUNE, "No treatments to process.")
|
||||
if (treatments.size == 0) {
|
||||
log("No treatments to process.")
|
||||
return 0.0
|
||||
|
|
|
@ -31,7 +31,7 @@ class BGDatum {
|
|||
constructor(json: JSONObject, dateUtil: DateUtil) {
|
||||
this.dateUtil = dateUtil
|
||||
try {
|
||||
if (json.has("_id")) id = json.getLong("_id")
|
||||
//if (json.has("_id")) id = json.getLong("_id")
|
||||
if (json.has("date")) date = json.getLong("date")
|
||||
if (json.has("sgv")) value = json.getDouble("sgv")
|
||||
if (json.has("direction")) direction = TrendArrow.fromString(json.getString("direction"))
|
||||
|
@ -77,4 +77,15 @@ class BGDatum {
|
|||
}
|
||||
return bgjson
|
||||
}
|
||||
|
||||
fun equals(obj: BGDatum): Boolean {
|
||||
var isEqual = true
|
||||
if (date / 1000 != obj.date / 1000) isEqual = false
|
||||
if (deviation != obj.deviation) isEqual = false
|
||||
if (avgDelta != obj.avgDelta) isEqual = false
|
||||
if (bgi != obj.bgi) isEqual = false
|
||||
if (mealAbsorption != obj.mealAbsorption) isEqual = false
|
||||
if (mealCarbs != obj.mealCarbs) isEqual = false
|
||||
return isEqual
|
||||
}
|
||||
}
|
|
@ -51,4 +51,17 @@ class CRDatum {
|
|||
}
|
||||
return crjson
|
||||
}
|
||||
|
||||
fun equals(obj: CRDatum): Boolean {
|
||||
var isEqual = true
|
||||
if (crInitialIOB != obj.crInitialIOB) isEqual = false
|
||||
if (crInitialBG != obj.crInitialBG) isEqual = false
|
||||
if (crInitialCarbTime / 1000 != obj.crInitialCarbTime / 1000) isEqual = false
|
||||
if (crEndIOB != obj.crEndIOB) isEqual = false
|
||||
if (crEndBG != obj.crEndBG) isEqual = false
|
||||
if (crEndTime / 1000 != obj.crEndTime / 1000) isEqual = false
|
||||
if (crCarbs != obj.crCarbs) isEqual = false
|
||||
if (crInsulin != obj.crInsulin) isEqual = false
|
||||
return isEqual
|
||||
}
|
||||
}
|
|
@ -148,7 +148,7 @@ class MaintenancePlugin @Inject constructor(
|
|||
* @return
|
||||
*/
|
||||
private fun constructName(): String {
|
||||
return "AndroidAPS_LOG_" + Date().time + loggerUtils.suffix
|
||||
return "AndroidAPS_LOG_" + System.currentTimeMillis() + loggerUtils.suffix
|
||||
}
|
||||
|
||||
private fun zip(zipFile: File?, files: List<File>) {
|
||||
|
|
|
@ -28,6 +28,7 @@ import info.nightscout.androidaps.utils.DateUtil
|
|||
import info.nightscout.androidaps.utils.JsonHelper
|
||||
import info.nightscout.androidaps.utils.JsonHelper.safeGetLong
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.utils.XDripBroadcast
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
|
@ -49,6 +50,7 @@ class NSClientAddUpdateWorker(
|
|||
@Inject lateinit var rxBus: RxBus
|
||||
@Inject lateinit var uel: UserEntryLogger
|
||||
@Inject lateinit var virtualPumpPlugin: VirtualPumpPlugin
|
||||
@Inject lateinit var xDripBroadcast: XDripBroadcast
|
||||
|
||||
override fun doWork(): Result {
|
||||
val treatments = dataWorker.pickupJSONArray(inputData.getLong(DataWorker.STORE_KEY, -1))
|
||||
|
@ -85,14 +87,16 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.BOLUS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.BOLUS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted bolus $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.BOLUS_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.BOLUS_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount)
|
||||
)
|
||||
|
@ -119,21 +123,24 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.CARBS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CARBS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Gram(it.amount.toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted carbs $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.CARBS_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CARBS_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Gram(it.amount.toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated carbs $it")
|
||||
}
|
||||
result.updated.forEach {
|
||||
uel.log(Action.CARBS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CARBS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Gram(it.amount.toInt())
|
||||
)
|
||||
|
@ -157,8 +164,8 @@ class NSClientAddUpdateWorker(
|
|||
virtualPumpPlugin.fakeDataDetected = true
|
||||
}
|
||||
when {
|
||||
insulin > 0 || carbs > 0 -> Any()
|
||||
eventType == TherapyEvent.Type.TEMPORARY_TARGET.text ->
|
||||
insulin > 0 || carbs > 0 -> Any()
|
||||
eventType == TherapyEvent.Type.TEMPORARY_TARGET.text ->
|
||||
if (sp.getBoolean(R.string.key_ns_receive_temp_target, false) || config.NSCLIENT) {
|
||||
temporaryTargetFromJson(json)?.let { temporaryTarget ->
|
||||
repository.runTransactionForResult(SyncNsTemporaryTargetTransaction(temporaryTarget))
|
||||
|
@ -169,7 +176,8 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach { tt ->
|
||||
uel.log(Action.TT, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TT, Sources.NSClient,
|
||||
ValueWithUnit.TherapyEventTTReason(tt.reason),
|
||||
ValueWithUnit.fromGlucoseUnit(tt.lowTarget, Constants.MGDL),
|
||||
ValueWithUnit.fromGlucoseUnit(tt.highTarget, Constants.MGDL).takeIf { tt.lowTarget != tt.highTarget },
|
||||
|
@ -178,7 +186,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Inserted TemporaryTarget $tt")
|
||||
}
|
||||
result.invalidated.forEach { tt ->
|
||||
uel.log(Action.TT_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TT_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.TherapyEventTTReason(tt.reason),
|
||||
ValueWithUnit.Mgdl(tt.lowTarget),
|
||||
ValueWithUnit.Mgdl(tt.highTarget).takeIf { tt.lowTarget != tt.highTarget },
|
||||
|
@ -187,7 +196,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Invalidated TemporaryTarget $tt")
|
||||
}
|
||||
result.ended.forEach { tt ->
|
||||
uel.log(Action.CANCEL_TT, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CANCEL_TT, Sources.NSClient,
|
||||
ValueWithUnit.TherapyEventTTReason(tt.reason),
|
||||
ValueWithUnit.Mgdl(tt.lowTarget),
|
||||
ValueWithUnit.Mgdl(tt.highTarget).takeIf { tt.lowTarget != tt.highTarget },
|
||||
|
@ -204,7 +214,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
} ?: aapsLogger.error("Error parsing TT json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.NOTE.text && json.isEffectiveProfileSwitch() -> // replace this by new Type when available in NS
|
||||
eventType == TherapyEvent.Type.NOTE.text && json.isEffectiveProfileSwitch() -> // replace this by new Type when available in NS
|
||||
if (sp.getBoolean(R.string.key_ns_receive_profile_switch, false) || config.NSCLIENT) {
|
||||
effectiveProfileSwitchFromJson(json, dateUtil)?.let { effectiveProfileSwitch ->
|
||||
repository.runTransactionForResult(SyncNsEffectiveProfileSwitchTransaction(effectiveProfileSwitch))
|
||||
|
@ -215,13 +225,17 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted EffectiveProfileSwitch $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated EffectiveProfileSwitch $it")
|
||||
}
|
||||
result.updatedNsId.forEach {
|
||||
|
@ -230,34 +244,34 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
} ?: aapsLogger.error("Error parsing EffectiveProfileSwitch json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.BOLUS_WIZARD.text ->
|
||||
if (config.NSCLIENT) {
|
||||
bolusCalculatorResultFromJson(json)?.let { bolusCalculatorResult ->
|
||||
repository.runTransactionForResult(SyncNsBolusCalculatorResultTransaction(bolusCalculatorResult))
|
||||
.doOnError {
|
||||
aapsLogger.error(LTag.DATABASE, "Error while saving BolusCalculatorResult", it)
|
||||
ret = Result.failure(workDataOf("Error" to it.toString()))
|
||||
eventType == TherapyEvent.Type.BOLUS_WIZARD.text ->
|
||||
bolusCalculatorResultFromJson(json)?.let { bolusCalculatorResult ->
|
||||
repository.runTransactionForResult(SyncNsBolusCalculatorResultTransaction(bolusCalculatorResult))
|
||||
.doOnError {
|
||||
aapsLogger.error(LTag.DATABASE, "Error while saving BolusCalculatorResult", it)
|
||||
ret = Result.failure(workDataOf("Error" to it.toString()))
|
||||
}
|
||||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(
|
||||
Action.BOLUS_CALCULATOR_RESULT, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted BolusCalculatorResult $it")
|
||||
}
|
||||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.BOLUS_CALCULATOR_RESULT, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted BolusCalculatorResult $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.BOLUS_CALCULATOR_RESULT_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated BolusCalculatorResult $it")
|
||||
}
|
||||
result.updatedNsId.forEach {
|
||||
aapsLogger.debug(LTag.DATABASE, "Updated nsId BolusCalculatorResult $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(
|
||||
Action.BOLUS_CALCULATOR_RESULT_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated BolusCalculatorResult $it")
|
||||
}
|
||||
} ?: aapsLogger.error("Error parsing BolusCalculatorResult json $json")
|
||||
}
|
||||
result.updatedNsId.forEach {
|
||||
aapsLogger.debug(LTag.DATABASE, "Updated nsId BolusCalculatorResult $it")
|
||||
}
|
||||
}
|
||||
} ?: aapsLogger.error("Error parsing BolusCalculatorResult json $json")
|
||||
eventType == TherapyEvent.Type.CANNULA_CHANGE.text ||
|
||||
eventType == TherapyEvent.Type.INSULIN_CHANGE.text ||
|
||||
eventType == TherapyEvent.Type.SENSOR_CHANGE.text ||
|
||||
|
@ -267,7 +281,7 @@ class NSClientAddUpdateWorker(
|
|||
eventType == TherapyEvent.Type.QUESTION.text ||
|
||||
eventType == TherapyEvent.Type.EXERCISE.text ||
|
||||
eventType == TherapyEvent.Type.NOTE.text ||
|
||||
eventType == TherapyEvent.Type.PUMP_BATTERY_CHANGE.text ->
|
||||
eventType == TherapyEvent.Type.PUMP_BATTERY_CHANGE.text ->
|
||||
if (sp.getBoolean(R.string.key_ns_receive_therapy_events, false) || config.NSCLIENT) {
|
||||
therapyEventFromJson(json)?.let { therapyEvent ->
|
||||
repository.runTransactionForResult(SyncNsTherapyEventTransaction(therapyEvent))
|
||||
|
@ -285,18 +299,18 @@ class NSClientAddUpdateWorker(
|
|||
result.inserted.forEach { therapyEvent ->
|
||||
uel.log(action, Sources.NSClient,
|
||||
therapyEvent.note ?: "",
|
||||
ValueWithUnit.Timestamp(therapyEvent.timestamp),
|
||||
ValueWithUnit.TherapyEventType(therapyEvent.type),
|
||||
ValueWithUnit.fromGlucoseUnit(therapyEvent.glucose ?:0.0,therapyEvent.glucoseUnit.toString).takeIf { therapyEvent.glucose != null }
|
||||
ValueWithUnit.Timestamp(therapyEvent.timestamp),
|
||||
ValueWithUnit.TherapyEventType(therapyEvent.type),
|
||||
ValueWithUnit.fromGlucoseUnit(therapyEvent.glucose ?: 0.0, therapyEvent.glucoseUnit.toString).takeIf { therapyEvent.glucose != null }
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted TherapyEvent $therapyEvent")
|
||||
}
|
||||
result.invalidated.forEach { therapyEvent ->
|
||||
uel.log(Action.CAREPORTAL_REMOVED, Sources.NSClient,
|
||||
therapyEvent.note ?: "",
|
||||
ValueWithUnit.Timestamp(therapyEvent.timestamp),
|
||||
ValueWithUnit.TherapyEventType(therapyEvent.type),
|
||||
ValueWithUnit.fromGlucoseUnit(therapyEvent.glucose ?:0.0, therapyEvent.glucoseUnit.toString).takeIf { therapyEvent.glucose != null }
|
||||
ValueWithUnit.Timestamp(therapyEvent.timestamp),
|
||||
ValueWithUnit.TherapyEventType(therapyEvent.type),
|
||||
ValueWithUnit.fromGlucoseUnit(therapyEvent.glucose ?: 0.0, therapyEvent.glucoseUnit.toString).takeIf { therapyEvent.glucose != null }
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated TherapyEvent $therapyEvent")
|
||||
}
|
||||
|
@ -309,7 +323,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
} ?: aapsLogger.error("Error parsing TherapyEvent json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.COMBO_BOLUS.text ->
|
||||
eventType == TherapyEvent.Type.COMBO_BOLUS.text ->
|
||||
if (buildHelper.isEngineeringMode() && sp.getBoolean(R.string.key_ns_receive_tbr_eb, false) || config.NSCLIENT) {
|
||||
extendedBolusFromJson(json)?.let { extendedBolus ->
|
||||
repository.runTransactionForResult(SyncNsExtendedBolusTransaction(extendedBolus))
|
||||
|
@ -320,7 +334,8 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.EXTENDED_BOLUS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.EXTENDED_BOLUS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount),
|
||||
ValueWithUnit.UnitPerHour(it.rate),
|
||||
|
@ -329,7 +344,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Inserted ExtendedBolus $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.EXTENDED_BOLUS_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.EXTENDED_BOLUS_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount),
|
||||
ValueWithUnit.UnitPerHour(it.rate),
|
||||
|
@ -338,7 +354,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Invalidated ExtendedBolus $it")
|
||||
}
|
||||
result.ended.forEach {
|
||||
uel.log(Action.CANCEL_EXTENDED_BOLUS, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CANCEL_EXTENDED_BOLUS, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
ValueWithUnit.Insulin(it.amount),
|
||||
ValueWithUnit.UnitPerHour(it.rate),
|
||||
|
@ -355,7 +372,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
} ?: aapsLogger.error("Error parsing ExtendedBolus json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.TEMPORARY_BASAL.text ->
|
||||
eventType == TherapyEvent.Type.TEMPORARY_BASAL.text ->
|
||||
if (buildHelper.isEngineeringMode() && sp.getBoolean(R.string.key_ns_receive_tbr_eb, false) || config.NSCLIENT) {
|
||||
temporaryBasalFromJson(json)?.let { temporaryBasal ->
|
||||
repository.runTransactionForResult(SyncNsTemporaryBasalTransaction(temporaryBasal))
|
||||
|
@ -366,7 +383,8 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.TEMP_BASAL, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TEMP_BASAL, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
if (it.isAbsolute) ValueWithUnit.UnitPerHour(it.rate) else ValueWithUnit.Percent(it.rate.toInt()),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(it.duration).toInt())
|
||||
|
@ -374,7 +392,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Inserted TemporaryBasal $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.TEMP_BASAL_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.TEMP_BASAL_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
if (it.isAbsolute) ValueWithUnit.UnitPerHour(it.rate) else ValueWithUnit.Percent(it.rate.toInt()),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(it.duration).toInt())
|
||||
|
@ -382,7 +401,8 @@ class NSClientAddUpdateWorker(
|
|||
aapsLogger.debug(LTag.DATABASE, "Invalidated TemporaryBasal $it")
|
||||
}
|
||||
result.ended.forEach {
|
||||
uel.log(Action.CANCEL_TEMP_BASAL, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.CANCEL_TEMP_BASAL, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp),
|
||||
if (it.isAbsolute) ValueWithUnit.UnitPerHour(it.rate) else ValueWithUnit.Percent(it.rate.toInt()),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(it.duration).toInt())
|
||||
|
@ -398,7 +418,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
} ?: aapsLogger.error("Error parsing TemporaryBasal json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.PROFILE_SWITCH.text ->
|
||||
eventType == TherapyEvent.Type.PROFILE_SWITCH.text ->
|
||||
if (sp.getBoolean(R.string.key_ns_receive_profile_switch, false) || config.NSCLIENT) {
|
||||
profileSwitchFromJson(json, dateUtil, activePlugin)?.let { profileSwitch ->
|
||||
repository.runTransactionForResult(SyncNsProfileSwitchTransaction(profileSwitch))
|
||||
|
@ -409,13 +429,17 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted ProfileSwitch $it")
|
||||
}
|
||||
result.invalidated.forEach {
|
||||
uel.log(Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp))
|
||||
uel.log(
|
||||
Action.PROFILE_SWITCH_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.Timestamp(it.timestamp)
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated ProfileSwitch $it")
|
||||
}
|
||||
result.updatedNsId.forEach {
|
||||
|
@ -424,7 +448,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
} ?: aapsLogger.error("Error parsing ProfileSwitch json $json")
|
||||
}
|
||||
eventType == TherapyEvent.Type.APS_OFFLINE.text ->
|
||||
eventType == TherapyEvent.Type.APS_OFFLINE.text ->
|
||||
if (sp.getBoolean(R.string.key_ns_receive_offline_event, false) && buildHelper.isEngineeringMode() || config.NSCLIENT) {
|
||||
offlineEventFromJson(json)?.let { offlineEvent ->
|
||||
repository.runTransactionForResult(SyncNsOfflineEventTransaction(offlineEvent))
|
||||
|
@ -435,21 +459,24 @@ class NSClientAddUpdateWorker(
|
|||
.blockingGet()
|
||||
.also { result ->
|
||||
result.inserted.forEach { oe ->
|
||||
uel.log(Action.LOOP_CHANGE, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.LOOP_CHANGE, Sources.NSClient,
|
||||
ValueWithUnit.OfflineEventReason(oe.reason),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(oe.duration).toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Inserted OfflineEvent $oe")
|
||||
}
|
||||
result.invalidated.forEach { oe ->
|
||||
uel.log(Action.LOOP_REMOVED, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.LOOP_REMOVED, Sources.NSClient,
|
||||
ValueWithUnit.OfflineEventReason(oe.reason),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(oe.duration).toInt())
|
||||
)
|
||||
aapsLogger.debug(LTag.DATABASE, "Invalidated OfflineEvent $oe")
|
||||
}
|
||||
result.ended.forEach { oe ->
|
||||
uel.log(Action.LOOP_CHANGE, Sources.NSClient,
|
||||
uel.log(
|
||||
Action.LOOP_CHANGE, Sources.NSClient,
|
||||
ValueWithUnit.OfflineEventReason(oe.reason),
|
||||
ValueWithUnit.Minute(TimeUnit.MILLISECONDS.toMinutes(oe.duration).toInt())
|
||||
)
|
||||
|
@ -472,7 +499,8 @@ class NSClientAddUpdateWorker(
|
|||
val enteredBy = JsonHelper.safeGetString(json, "enteredBy", "")
|
||||
val notes = JsonHelper.safeGetString(json, "notes", "")
|
||||
if (date > now - 15 * 60 * 1000L && notes.isNotEmpty()
|
||||
&& enteredBy != sp.getString("careportal_enteredby", "AndroidAPS")) {
|
||||
&& enteredBy != sp.getString("careportal_enteredby", "AndroidAPS")
|
||||
) {
|
||||
val defaultVal = config.NSCLIENT
|
||||
if (sp.getBoolean(R.string.key_ns_announcements, defaultVal)) {
|
||||
val announcement = Notification(Notification.NS_ANNOUNCEMENT, notes, Notification.ANNOUNCEMENT, 60)
|
||||
|
@ -482,6 +510,7 @@ class NSClientAddUpdateWorker(
|
|||
}
|
||||
}
|
||||
nsClientPlugin.updateLatestDateReceivedIfNewer(latestDateInReceivedData)
|
||||
xDripBroadcast.sendTreatments(treatments)
|
||||
return ret
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import info.nightscout.androidaps.database.AppRepository
|
|||
import info.nightscout.androidaps.events.EventAppExit
|
||||
import info.nightscout.androidaps.events.EventConfigBuilderChange
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.DataSyncSelector
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
|
@ -47,8 +48,6 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
|||
import info.nightscout.androidaps.utils.JsonHelper.safeGetString
|
||||
import info.nightscout.androidaps.utils.JsonHelper.safeGetStringAllowNull
|
||||
import info.nightscout.androidaps.utils.T.Companion.mins
|
||||
import info.nightscout.androidaps.utils.XDripBroadcast
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
|
@ -83,7 +82,6 @@ class NSClientService : DaggerService() {
|
|||
@Inject lateinit var dataWorker: DataWorker
|
||||
@Inject lateinit var dataSyncSelector: DataSyncSelector
|
||||
@Inject lateinit var repository: AppRepository
|
||||
@Inject lateinit var xDripBroadcast: XDripBroadcast
|
||||
|
||||
companion object {
|
||||
|
||||
|
@ -473,7 +471,6 @@ class NSClientService : DaggerService() {
|
|||
.setInputData(dataWorker.storeInputData(profileStoreJson))
|
||||
.build()
|
||||
)
|
||||
xDripBroadcast.sendProfile(profileStoreJson)
|
||||
}
|
||||
}
|
||||
if (data.has("treatments")) {
|
||||
|
@ -492,7 +489,6 @@ class NSClientService : DaggerService() {
|
|||
.setInputData(dataWorker.storeInputData(addedOrUpdatedTreatments))
|
||||
.build()
|
||||
)
|
||||
xDripBroadcast.sendTreatments(addedOrUpdatedTreatments)
|
||||
}
|
||||
}
|
||||
if (data.has("devicestatus")) {
|
||||
|
@ -536,7 +532,6 @@ class NSClientService : DaggerService() {
|
|||
.setInputData(dataWorker.storeInputData(sgvs))
|
||||
.build()
|
||||
)
|
||||
xDripBroadcast.sendSgvs(sgvs)
|
||||
}
|
||||
}
|
||||
rxBus.send(EventNSClientNewLog("LAST", dateUtil.dateAndTimeString(latestDateInReceivedData)))
|
||||
|
|
|
@ -207,8 +207,8 @@ class OverviewData @Inject constructor(
|
|||
* IOB, COB
|
||||
*/
|
||||
|
||||
fun bolusIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromBolus().round(fabricPrivacy)
|
||||
fun basalIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round(fabricPrivacy)
|
||||
fun bolusIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromBolus().round()
|
||||
fun basalIob(iobCobCalculator: IobCobCalculator): IobTotal = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
fun cobInfo(iobCobCalculator: IobCobCalculator): CobInfo = iobCobCalculator.getCobInfo(true, "Overview COB")
|
||||
|
||||
val lastCarbsTime: Long
|
||||
|
|
|
@ -51,7 +51,11 @@ import info.nightscout.androidaps.plugins.constraints.bgQualityCheck.BgQualityCh
|
|||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSDeviceStatus
|
||||
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.*
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewCalcProgress
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewGraph
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewIobCob
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventUpdateOverviewSensitivity
|
||||
import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||
|
@ -66,7 +70,6 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
|||
import info.nightscout.androidaps.utils.ToastUtils
|
||||
import info.nightscout.androidaps.utils.TrendCalculator
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||
import info.nightscout.androidaps.interfaces.BuildHelper
|
||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||
|
@ -236,10 +239,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
.debounce(1L, TimeUnit.SECONDS)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.subscribe({ updateGraph() }, fabricPrivacy::logException)
|
||||
disposable += activePlugin.activeOverview.overviewBus
|
||||
.toObservable(EventUpdateOverviewPumpStatus::class.java)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
.subscribe({ updatePumpStatus() }, fabricPrivacy::logException)
|
||||
disposable += activePlugin.activeOverview.overviewBus
|
||||
.toObservable(EventUpdateOverviewNotification::class.java)
|
||||
.observeOn(aapsSchedulers.main)
|
||||
|
@ -308,7 +307,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
}
|
||||
handler.postDelayed(refreshLoop, 60 * 1000L)
|
||||
|
||||
refreshAll()
|
||||
handler.post { refreshAll() }
|
||||
updatePumpStatus()
|
||||
updateCalcProgress()
|
||||
}
|
||||
|
|
|
@ -6,11 +6,7 @@ import dagger.android.HasAndroidInjector
|
|||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.events.EventPumpStatusChanged
|
||||
import info.nightscout.androidaps.extensions.*
|
||||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Overview
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
|
@ -21,7 +17,6 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Scale
|
|||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationStore
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
|
@ -175,46 +170,4 @@ class OverviewPlugin @Inject constructor(
|
|||
.storeDouble(R.string.key_statuslights_bat_critical, sp, rh)
|
||||
.storeInt(R.string.key_boluswizard_percentage, sp, rh)
|
||||
}
|
||||
/*
|
||||
@Volatile
|
||||
var runningRefresh = false
|
||||
override fun refreshLoop(from: String) {
|
||||
if (runningRefresh) return
|
||||
runningRefresh = true
|
||||
overviewBus.send(EventUpdateOverviewNotification(from))
|
||||
loadIobCobResults(from)
|
||||
overviewBus.send(EventUpdateOverviewProfile(from))
|
||||
overviewBus.send(EventUpdateOverviewBg(from))
|
||||
overviewBus.send(EventUpdateOverviewTime(from))
|
||||
overviewBus.send(EventUpdateOverviewTemporaryBasal(from))
|
||||
overviewBus.send(EventUpdateOverviewExtendedBolus(from))
|
||||
overviewBus.send(EventUpdateOverviewTemporaryTarget(from))
|
||||
loadAsData(from)
|
||||
overviewData.preparePredictions(from)
|
||||
overviewData.prepareBasalData(from)
|
||||
overviewData.prepareTemporaryTargetData(from)
|
||||
overviewData.prepareTreatmentsData(from)
|
||||
overviewData.prepareIobAutosensData(from)
|
||||
overviewBus.send(EventUpdateOverviewGraph(from))
|
||||
overviewBus.send(EventUpdateOverviewIobCob(from))
|
||||
aapsLogger.debug(LTag.UI, "refreshLoop finished")
|
||||
runningRefresh = false
|
||||
}
|
||||
|
||||
@Suppress("SameParameterValue")
|
||||
private fun loadAll(from: String) {
|
||||
loadBg(from)
|
||||
loadProfile(from)
|
||||
loadTemporaryTarget(from)
|
||||
loadIobCobResults(from)
|
||||
loadAsData(from)
|
||||
overviewData.prepareBasalData(from)
|
||||
overviewData.prepareTemporaryTargetData(from)
|
||||
overviewData.prepareTreatmentsData(from)
|
||||
// prepareIobAutosensData(from)
|
||||
// preparePredictions(from)
|
||||
overviewBus.send(EventUpdateOverviewGraph(from))
|
||||
aapsLogger.debug(LTag.UI, "loadAll finished")
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview
|
||||
|
||||
import android.graphics.Color
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.R
|
||||
|
@ -97,7 +96,7 @@ class StatusLightHandler @Inject constructor(
|
|||
if (level > OmnipodConstants.MAX_RESERVOIR_READING) {
|
||||
@Suppress("SetTextI18n")
|
||||
view?.text = " 50+$units"
|
||||
view?.setTextColor(Color.WHITE)
|
||||
view?.setTextColor(rh.gac(view.context, R.attr.defaultTextColor))
|
||||
} else {
|
||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview.events
|
||||
|
||||
import info.nightscout.androidaps.events.Event
|
||||
|
||||
class EventUpdateOverviewPumpStatus(val from: String) : Event()
|
|
@ -966,6 +966,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
var keyTarget = 0
|
||||
var defaultTargetMMOL = 0.0
|
||||
var defaultTargetMGDL = 0.0
|
||||
var reason = TemporaryTarget.Reason.EATING_SOON
|
||||
when {
|
||||
isMeal -> {
|
||||
keyDuration = R.string.key_eatingsoon_duration
|
||||
|
@ -973,6 +974,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
keyTarget = R.string.key_eatingsoon_target
|
||||
defaultTargetMMOL = Constants.defaultEatingSoonTTmmol
|
||||
defaultTargetMGDL = Constants.defaultEatingSoonTTmgdl
|
||||
reason = TemporaryTarget.Reason.EATING_SOON
|
||||
}
|
||||
|
||||
isActivity -> {
|
||||
|
@ -981,6 +983,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
keyTarget = R.string.key_activity_target
|
||||
defaultTargetMMOL = Constants.defaultActivityTTmmol
|
||||
defaultTargetMGDL = Constants.defaultActivityTTmgdl
|
||||
reason = TemporaryTarget.Reason.ACTIVITY
|
||||
}
|
||||
|
||||
isHypo -> {
|
||||
|
@ -989,6 +992,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
keyTarget = R.string.key_hypo_target
|
||||
defaultTargetMMOL = Constants.defaultHypoTTmmol
|
||||
defaultTargetMGDL = Constants.defaultHypoTTmgdl
|
||||
reason = TemporaryTarget.Reason.HYPOGLYCEMIA
|
||||
}
|
||||
}
|
||||
var ttDuration = sp.getInt(keyDuration, defaultTargetDuration)
|
||||
|
@ -999,7 +1003,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
disposable += repository.runTransactionForResult(InsertAndCancelCurrentTemporaryTargetTransaction(
|
||||
timestamp = dateUtil.now(),
|
||||
duration = TimeUnit.MINUTES.toMillis(ttDuration.toLong()),
|
||||
reason = TemporaryTarget.Reason.EATING_SOON,
|
||||
reason = reason,
|
||||
lowTarget = Profile.toMgdl(tt, profileFunction.getUnits()),
|
||||
highTarget = Profile.toMgdl(tt, profileFunction.getUnits())
|
||||
)).subscribe({ result ->
|
||||
|
|
|
@ -27,6 +27,7 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Gluco
|
|||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import info.nightscout.androidaps.receivers.ReceiverStatusStore
|
||||
import info.nightscout.androidaps.services.AlarmSoundServiceHelper
|
||||
import info.nightscout.androidaps.utils.*
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.androidaps.utils.wizard.BolusWizard
|
||||
|
@ -73,7 +74,8 @@ class DataHandlerMobile @Inject constructor(
|
|||
private val uel: UserEntryLogger,
|
||||
private val activePlugin: ActivePlugin,
|
||||
private val commandQueue: CommandQueue,
|
||||
private val fabricPrivacy: FabricPrivacy
|
||||
private val fabricPrivacy: FabricPrivacy,
|
||||
private val alarmSoundServiceHelper: AlarmSoundServiceHelper
|
||||
) {
|
||||
|
||||
private val disposable = CompositeDisposable()
|
||||
|
@ -260,6 +262,13 @@ class DataHandlerMobile @Inject constructor(
|
|||
}
|
||||
lastBolusWizard = null
|
||||
}, fabricPrivacy::logException)
|
||||
disposable += rxBus
|
||||
.toObservable(EventData.SnoozeAlert::class.java)
|
||||
.observeOn(aapsSchedulers.io)
|
||||
.subscribe({
|
||||
aapsLogger.debug(LTag.WEAR, "SnoozeAlert received $it from ${it.sourceNodeId}")
|
||||
alarmSoundServiceHelper.stopService(context, "Muted from wear")
|
||||
}, fabricPrivacy::logException)
|
||||
}
|
||||
|
||||
private fun handleTddStatus() {
|
||||
|
@ -463,7 +472,7 @@ class DataHandlerMobile @Inject constructor(
|
|||
}
|
||||
|
||||
private fun handleECarbsPreCheck(command: EventData.ActionECarbsPreCheck) {
|
||||
val startTimeStamp = System.currentTimeMillis() + T.hours(command.carbsTimeShift.toLong()).msecs()
|
||||
val startTimeStamp = System.currentTimeMillis() + T.mins(command.carbsTimeShift.toLong()).msecs()
|
||||
val carbsAfterConstraints = constraintChecker.applyCarbsConstraints(Constraint(command.carbs)).value()
|
||||
var message = rh.gs(R.string.carbs) + ": " + carbsAfterConstraints + "g" +
|
||||
"\n" + rh.gs(R.string.time) + ": " + dateUtil.timeString(startTimeStamp) +
|
||||
|
|
|
@ -8,12 +8,11 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.events.*
|
||||
import info.nightscout.androidaps.extensions.toStringShort
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.rx.AapsSchedulers
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
|
@ -123,8 +122,8 @@ class StatusLinePlugin @Inject constructor(
|
|||
status += activeTemp.toStringShort() + " "
|
||||
}
|
||||
//IOB
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round(fabricPrivacy)
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round(fabricPrivacy)
|
||||
val bolusIob = iobCobCalculator.calculateIobFromBolus().round()
|
||||
val basalIob = iobCobCalculator.calculateIobFromTempBasalsIncludingConvertedExtended().round()
|
||||
status += DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U"
|
||||
if (sp.getBoolean(R.string.key_xdripstatus_detailediob, true)) {
|
||||
status += ("("
|
||||
|
|
|
@ -8,6 +8,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -19,8 +20,9 @@ class InsulinLyumjevPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_LYUMJEV
|
||||
override val friendlyName get(): String = rh.gs(R.string.lyumjev)
|
||||
|
|
|
@ -6,12 +6,12 @@ import info.nightscout.androidaps.data.Iob
|
|||
import info.nightscout.androidaps.database.embedments.InsulinConfiguration
|
||||
import info.nightscout.androidaps.database.entities.Bolus
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import kotlin.math.exp
|
||||
import kotlin.math.pow
|
||||
|
||||
|
@ -27,7 +27,8 @@ abstract class InsulinOrefBasePlugin(
|
|||
val profileFunction: ProfileFunction,
|
||||
val rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
config: Config,
|
||||
val hardLimits: HardLimits
|
||||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.INSULIN)
|
||||
|
@ -43,18 +44,18 @@ abstract class InsulinOrefBasePlugin(
|
|||
override val dia
|
||||
get(): Double {
|
||||
val dia = userDefinedDia
|
||||
return if (dia >= MIN_DIA) {
|
||||
return if (dia >= hardLimits.minDia()) {
|
||||
dia
|
||||
} else {
|
||||
sendShortDiaNotification(dia)
|
||||
MIN_DIA
|
||||
hardLimits.minDia()
|
||||
}
|
||||
}
|
||||
|
||||
open fun sendShortDiaNotification(dia: Double) {
|
||||
if (System.currentTimeMillis() - lastWarned > 60 * 1000) {
|
||||
lastWarned = System.currentTimeMillis()
|
||||
val notification = Notification(Notification.SHORT_DIA, String.format(notificationPattern, dia, MIN_DIA), Notification.URGENT)
|
||||
val notification = Notification(Notification.SHORT_DIA, String.format(notificationPattern, dia, hardLimits.minDia()), Notification.URGENT)
|
||||
rxBus.send(EventNewNotification(notification))
|
||||
}
|
||||
}
|
||||
|
@ -65,12 +66,13 @@ abstract class InsulinOrefBasePlugin(
|
|||
open val userDefinedDia: Double
|
||||
get() {
|
||||
val profile = profileFunction.getProfile()
|
||||
return profile?.dia ?: MIN_DIA
|
||||
return profile?.dia ?: hardLimits.minDia()
|
||||
}
|
||||
|
||||
override fun iobCalcForTreatment(bolus: Bolus, time: Long, dia: Double): Iob {
|
||||
assert(dia != 0.0)
|
||||
assert(peak != 0)
|
||||
val result = Iob()
|
||||
val peak = peak
|
||||
if (bolus.amount != 0.0) {
|
||||
val bolusTime = bolus.timestamp
|
||||
val t = (time - bolusTime) / 1000.0 / 60.0
|
||||
|
@ -80,9 +82,9 @@ abstract class InsulinOrefBasePlugin(
|
|||
if (t < td) {
|
||||
val tau = tp * (1 - tp / td) / (1 - 2 * tp / td)
|
||||
val a = 2 * tau / td
|
||||
val S = 1 / (1 - a + (1 + a) * exp(-td / tau))
|
||||
result.activityContrib = bolus.amount * (S / tau.pow(2.0)) * t * (1 - t / td) * exp(-t / tau)
|
||||
result.iobContrib = bolus.amount * (1 - S * (1 - a) * ((t.pow(2.0) / (tau * td * (1 - a)) - t / tau - 1) * Math.exp(-t / tau) + 1))
|
||||
val s = 1 / (1 - a + (1 + a) * exp(-td / tau))
|
||||
result.activityContrib = bolus.amount * (s / tau.pow(2.0)) * t * (1 - t / td) * exp(-t / tau)
|
||||
result.iobContrib = bolus.amount * (1 - s * (1 - a) * ((t.pow(2.0) / (tau * td * (1 - a)) - t / tau - 1) * exp(-t / tau) + 1))
|
||||
}
|
||||
}
|
||||
return result
|
||||
|
@ -95,17 +97,12 @@ abstract class InsulinOrefBasePlugin(
|
|||
get(): String {
|
||||
var comment = commentStandardText()
|
||||
val userDia = userDefinedDia
|
||||
if (userDia < MIN_DIA) {
|
||||
comment += "\n" + rh.gs(R.string.dia_too_short, userDia, MIN_DIA)
|
||||
if (userDia < hardLimits.minDia()) {
|
||||
comment += "\n" + rh.gs(R.string.dia_too_short, userDia, hardLimits.minDia())
|
||||
}
|
||||
return comment
|
||||
}
|
||||
|
||||
override abstract val peak: Int
|
||||
abstract override val peak: Int
|
||||
abstract fun commentStandardText(): String
|
||||
|
||||
companion object {
|
||||
|
||||
const val MIN_DIA = 5.0
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
|
@ -26,8 +27,9 @@ class InsulinOrefFreePeakPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_FREE_PEAK
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -22,8 +23,9 @@ class InsulinOrefRapidActingPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_RAPID_ACTING
|
||||
override val friendlyName get(): String = rh.gs(R.string.rapid_acting_oref)
|
||||
|
|
|
@ -8,6 +8,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction
|
|||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
@ -22,8 +23,9 @@ class InsulinOrefUltraRapidActingPlugin @Inject constructor(
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override val id get(): Insulin.InsulinType = Insulin.InsulinType.OREF_ULTRA_RAPID_ACTING
|
||||
override val friendlyName get(): String = rh.gs(R.string.ultrarapid_oref)
|
||||
|
|
|
@ -481,6 +481,7 @@ class IobCobCalculatorPlugin @Inject constructor(
|
|||
val profile = profileFunction.getProfile() ?: return total
|
||||
val dia = profile.dia
|
||||
val divisor = sp.getDouble(R.string.key_openapsama_bolussnooze_dia_divisor, 2.0)
|
||||
assert(divisor > 0)
|
||||
|
||||
val boluses = repository.getBolusesDataFromTime(toTime - range(), true).blockingGet()
|
||||
|
||||
|
|
|
@ -461,6 +461,7 @@ class LocalProfilePlugin @Inject constructor(
|
|||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var config: Config
|
||||
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
|
||||
@Inject lateinit var xDripBroadcast: XDripBroadcast
|
||||
|
||||
init {
|
||||
(context.applicationContext as HasAndroidInjector).androidInjector().inject(this)
|
||||
|
@ -469,6 +470,7 @@ class LocalProfilePlugin @Inject constructor(
|
|||
override fun doWork(): Result {
|
||||
val profileJson = dataWorker.pickupJSONObject(inputData.getLong(DataWorker.STORE_KEY, -1))
|
||||
?: return Result.failure(workDataOf("Error" to "missing input data"))
|
||||
xDripBroadcast.sendProfile(profileJson)
|
||||
if (sp.getBoolean(R.string.key_ns_receive_profile_store, true) || config.NSCLIENT) {
|
||||
val store = ProfileStore(injector, profileJson, dateUtil)
|
||||
val createdAt = store.getStartDate()
|
||||
|
|
|
@ -115,11 +115,11 @@ class NSClientSourcePlugin @Inject constructor(
|
|||
@Suppress("SpellCheckingInspection")
|
||||
override fun doWork(): Result {
|
||||
var ret = Result.success()
|
||||
|
||||
if (!nsClientSourcePlugin.isEnabled() && !sp.getBoolean(R.string.key_ns_receive_cgm, false)) return Result.success(workDataOf("Result" to "Sync not enabled"))
|
||||
|
||||
val sgvs = dataWorker.pickupJSONArray(inputData.getLong(DataWorker.STORE_KEY, -1))
|
||||
?: return Result.failure(workDataOf("Error" to "missing input data"))
|
||||
xDripBroadcast.sendSgvs(sgvs)
|
||||
if (!nsClientSourcePlugin.isEnabled() && !sp.getBoolean(R.string.key_ns_receive_cgm, false))
|
||||
return Result.success(workDataOf("Result" to "Sync not enabled"))
|
||||
|
||||
try {
|
||||
var latestDateInReceivedData: Long = 0
|
||||
|
|
|
@ -8,15 +8,13 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.entities.GlucoseValue
|
||||
import info.nightscout.androidaps.database.transactions.CgmSourceTransaction
|
||||
import info.nightscout.androidaps.interfaces.BgSource
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.androidaps.utils.XDripBroadcast
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
|
||||
import info.nightscout.androidaps.utils.extensions.isRunningTest
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||
|
@ -33,7 +31,9 @@ class RandomBgPlugin @Inject constructor(
|
|||
aapsLogger: AAPSLogger,
|
||||
private val sp: SP,
|
||||
private val repository: AppRepository,
|
||||
private val xDripBroadcast: XDripBroadcast
|
||||
private val xDripBroadcast: XDripBroadcast,
|
||||
private val virtualPumpPlugin: VirtualPumpPlugin,
|
||||
private val buildHelper: BuildHelper
|
||||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
|
@ -89,8 +89,8 @@ class RandomBgPlugin @Inject constructor(
|
|||
}
|
||||
|
||||
override fun specialEnableCondition(): Boolean {
|
||||
// return isRunningTest() || virtualPumpPlugin.isEnabled() && buildHelper.isEngineeringMode()
|
||||
return true
|
||||
return isRunningTest() || virtualPumpPlugin.isEnabled() && buildHelper.isEngineeringMode()
|
||||
// return true
|
||||
}
|
||||
|
||||
private fun handleNewData() {
|
||||
|
|
|
@ -321,13 +321,13 @@ class CommandQueueImplementation @Inject constructor(
|
|||
}
|
||||
|
||||
@Synchronized
|
||||
override fun cancelAllBoluses() {
|
||||
override fun cancelAllBoluses(id: Long) {
|
||||
if (!isRunning(CommandType.BOLUS)) {
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(PumpEnactResult(injector).success(true).enacted(false), null))
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(PumpEnactResult(injector).success(true).enacted(false), id))
|
||||
}
|
||||
removeAll(CommandType.BOLUS)
|
||||
removeAll(CommandType.SMB_BOLUS)
|
||||
Thread { activePlugin.activePump.stopBolusDelivering() }.run()
|
||||
Thread { activePlugin.activePump.stopBolusDelivering() }.start()
|
||||
}
|
||||
|
||||
// returns true if command is queued
|
||||
|
@ -598,12 +598,12 @@ class CommandQueueImplementation @Inject constructor(
|
|||
if (detailedBolusInfo.context != null) {
|
||||
val bolusProgressDialog = BolusProgressDialog()
|
||||
bolusProgressDialog.setInsulin(detailedBolusInfo.insulin)
|
||||
bolusProgressDialog.setTimestamp(detailedBolusInfo.timestamp)
|
||||
bolusProgressDialog.setId(detailedBolusInfo.id)
|
||||
bolusProgressDialog.show((detailedBolusInfo.context as AppCompatActivity).supportFragmentManager, "BolusProgress")
|
||||
} else {
|
||||
val i = Intent()
|
||||
i.putExtra("insulin", detailedBolusInfo.insulin)
|
||||
i.putExtra("timestamp", detailedBolusInfo.timestamp)
|
||||
i.putExtra("id", detailedBolusInfo.id)
|
||||
i.setClass(context, BolusProgressHelperActivity::class.java)
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
|
|
|
@ -26,7 +26,7 @@ class CommandBolus(
|
|||
val r = activePlugin.activePump.deliverTreatment(detailedBolusInfo)
|
||||
if (r.success) carbsRunnable.run()
|
||||
BolusProgressDialog.bolusEnded = true
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(r, detailedBolusInfo.timestamp))
|
||||
rxBus.send(EventDismissBolusProgressIfRunning(r, detailedBolusInfo.id))
|
||||
aapsLogger.debug(LTag.PUMPQUEUE, "Result success: ${r.success} enacted: ${r.enacted}")
|
||||
callback?.result(r)?.run()
|
||||
}
|
||||
|
|
|
@ -99,41 +99,9 @@ class TddCalculator @Inject constructor(
|
|||
return result
|
||||
}
|
||||
|
||||
fun calculateDaily(): TotalDailyDose {
|
||||
val startTime = MidnightTime.calc(dateUtil.now())
|
||||
val endTime = dateUtil.now()
|
||||
val tdd = TotalDailyDose(timestamp = startTime)
|
||||
//val result = TotalDailyDose()
|
||||
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
|
||||
.filter { it.type != Bolus.Type.PRIMING }
|
||||
.forEach { t ->
|
||||
tdd.bolusAmount += t.amount
|
||||
}
|
||||
repository.getCarbsDataFromTimeToTimeExpanded(startTime, endTime, true).blockingGet().forEach { t ->
|
||||
tdd.carbs += t.amount
|
||||
}
|
||||
val calculationStep = T.mins(5).msecs()
|
||||
for (t in startTime until endTime step calculationStep) {
|
||||
val tbr = iobCobCalculator.getTempBasalIncludingConvertedExtended(t)
|
||||
val profile = profileFunction.getProfile(t) ?: continue
|
||||
val absoluteRate = tbr?.convertedToAbsolute(t, profile) ?: profile.getBasal(t)
|
||||
tdd.basalAmount += absoluteRate / 60.0 * 5.0
|
||||
|
||||
if (!activePlugin.activePump.isFakingTempsByExtendedBoluses) {
|
||||
// they are not included in TBRs
|
||||
val eb = iobCobCalculator.getExtendedBolus(t)
|
||||
val absoluteEbRate = eb?.rate ?: 0.0
|
||||
tdd.bolusAmount += absoluteEbRate / 60.0 * 5.0
|
||||
}
|
||||
}
|
||||
tdd.totalAmount = tdd.bolusAmount + tdd.basalAmount
|
||||
aapsLogger.debug(LTag.CORE, tdd.toString())
|
||||
return tdd
|
||||
}
|
||||
|
||||
fun calculate24Daily(): TotalDailyDose {
|
||||
val startTime = dateUtil.now() - T.hours(hour = 24).msecs()
|
||||
val endTime = dateUtil.now()
|
||||
fun calculateDaily(startHours: Long, endHours: Long): TotalDailyDose {
|
||||
val startTime = dateUtil.now() + T.hours(hour = startHours).msecs()
|
||||
val endTime = dateUtil.now() + T.hours(hour = endHours).msecs()
|
||||
val tdd = TotalDailyDose(timestamp = startTime)
|
||||
repository.getBolusesDataFromTimeToTime(startTime, endTime, true).blockingGet()
|
||||
.filter { it.type != Bolus.Type.PRIMING }
|
||||
|
|
|
@ -8,6 +8,8 @@ import android.content.Context
|
|||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.graphics.Paint
|
||||
import android.os.Handler
|
||||
import android.os.HandlerThread
|
||||
import android.view.View
|
||||
import android.widget.RemoteViews
|
||||
import dagger.android.HasAndroidInjector
|
||||
|
@ -26,7 +28,6 @@ import info.nightscout.androidaps.plugins.general.overview.OverviewData
|
|||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatusProvider
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.TrendCalculator
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.logging.LTag
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
|
@ -53,6 +54,7 @@ class Widget : AppWidgetProvider() {
|
|||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var constraintChecker: ConstraintChecker
|
||||
|
||||
private var handler = Handler(HandlerThread(this::class.simpleName + "Handler").also { it.start() }.looper)
|
||||
private val intentAction = "OpenApp"
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent?) {
|
||||
|
@ -88,16 +90,17 @@ class Widget : AppWidgetProvider() {
|
|||
views.setOnClickPendingIntent(R.id.widget_layout, pendingIntent)
|
||||
views.setInt(R.id.widget_layout, "setBackgroundColor", Color.argb(alpha, 0, 0, 0))
|
||||
|
||||
updateBg(views)
|
||||
updateTemporaryBasal(views)
|
||||
updateExtendedBolus(views)
|
||||
updateIobCob(views)
|
||||
updateTemporaryTarget(views)
|
||||
updateProfile(views)
|
||||
updateSensitivity(views)
|
||||
|
||||
// Instruct the widget manager to update the widget
|
||||
appWidgetManager.updateAppWidget(appWidgetId, views)
|
||||
handler.post {
|
||||
updateBg(views)
|
||||
updateTemporaryBasal(views)
|
||||
updateExtendedBolus(views)
|
||||
updateIobCob(views)
|
||||
updateTemporaryTarget(views)
|
||||
updateProfile(views)
|
||||
updateSensitivity(views)
|
||||
// Instruct the widget manager to update the widget
|
||||
appWidgetManager.updateAppWidget(appWidgetId, views)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateBg(views: RemoteViews) {
|
||||
|
|
|
@ -127,6 +127,7 @@
|
|||
<string name="end_user_license_agreement">Eindverbruiker Lisensie Ooreenkoms</string>
|
||||
<string name="end_user_license_agreement_text">MOET NIE GEBRUIK WORD OM MEDIESE BESLUITE TE MAAK NIE. DAAR IS GEEN WAARBORG DAT DIE PROGRAM, ONDERWORPE AAN TOEPASSELIKE WETTE EN WETGEWING. TENSY ANDERS GEMELD IN TEKS VOORSIEN DIE KOPIEREG-HOUERS EN / OF ANDER PARTYE DIE PROGRAM \"AS IS\" SONDER ËNIGE WAARBORG VAN ENIGE ORDE, UITDRUKKELIK OF IMPLISIET, INKLUSIEF, MAAR NIE BEPERK TOT DIE IMPLISIETE WAARBORG VAN TOEPAASBAARHEID OF NUT VIR EEN SPESIFIEKE DOEL. DIE TOTALE EN ALLE RISIKOVIR DIE KWALITEIT EN PRESTASIE VAN DIE PROGRAM RUS MET JOUSELF. VIR ENIGE PROGRAM DEFEKTIEWE OF FALINGS MOET JY PERSOONLIK DIE KOSTE EN REGSAANSPREEKLIKHEID DRA VAN ALLE NODIGE AKSIES, DIENS, REPARASIES OF KORREKSIES VIR USELF OF ENIGE DERDE PARTYE EN/OF AKSIES, DIENS, REPARASIES OF KORREKSIES WAT DEUR DIE PROGRAM GEDOEN WAS.</string>
|
||||
<string name="end_user_license_agreement_i_understand">EK VERSTAAN en STEM IN</string>
|
||||
<string name="save">Stoor</string>
|
||||
<string name="reloadprofile">Herlaai profiel</string>
|
||||
<string name="smscommunicator">SMS Communicator</string>
|
||||
<string name="smscommunicator_allowednumbers">Toegelate telefoon nommers</string>
|
||||
|
|
|
@ -879,5 +879,6 @@
|
|||
<string name="not_available_full">Недостъпно</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Вход</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -154,6 +154,7 @@
|
|||
<string name="end_user_license_agreement">Acord de llicència per a l\'usuari final</string>
|
||||
<string name="end_user_license_agreement_text">NO S\'HA D\'UTILITZAR PER A PRENDRE DECISIONS MÈDIQUES. EL PROGRAMA NO TÉ GARANTIA, EN LA MESURA QUE HO PERMET LA LLEI APLICABLE. EXCEPTE QUAN S\'INDIQUI EL CONTRARI PER ESCRIT, ELS PROPIETARIS DEL COPYRIGHT I/O ALTRES PARTS PROPORCIONEN EL PROGRAMA \"TAL QUAL\" SENSE CAP MENA DE GARANTIA, NI IMPLÍCITA NI EXPLÍCITA, INCLOENT, PERÒ SENSE ESTAR LIMITADES A, LES GARANTIES IMPLÍCITES DE COMERCIALITZACIÓ I ADEQUACIÓ A UN OBJECTIU PARTICULAR. US FEU RESPONSABLES TOTALMENT DELS RISCOS EN QUANT A LA QUALITAT I EL RENDIMENT DEL PROGRAMA. SI EL PROGRAMA FOS DEFECTUÓS, VOSALTRES ASSUMIU EL COST DE TOT SERVEI, REPARACIÓ O CORRECCIÓ.</string>
|
||||
<string name="end_user_license_agreement_i_understand">ENTENC I ACCEPTO</string>
|
||||
<string name="save">Desar</string>
|
||||
<string name="reloadprofile">Recarregar perfil</string>
|
||||
<string name="smscommunicator">Comunicador SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Nrs. de telèfon permesos</string>
|
||||
|
@ -314,5 +315,6 @@
|
|||
<!-- SMS Communicator & OTP Authenticator -->
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Iniciar sessió</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Bezpečnost zadání ošetřeni</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximální povolený bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximální počet sacharidů [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Hodnota glykémie pro zastavení inzulínu</string>
|
||||
<string name="nav_preferences_plugin">Nastavení pluginu %1$s</string>
|
||||
<string name="nav_preferences">Nastavení</string>
|
||||
<string name="nav_refreshtreatments">Obnovit ošetření z NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Povolení odesílaní</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamická ISF</string>
|
||||
<string name="DynISFAdjust_title">Korekční faktor pro DynamicISF v %%</string>
|
||||
<string name="DynISFAdjust_summary">Korekční faktor pro DynamicISF. Pro agresivnější korekční dávky nastavte hodnoty větší než 100%%, a pro méně agresivní korekce menší než 100%%.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Korekční faktor pro DynamicISF v %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Korekční faktor pro DynamicISF. Pro agresivnější korekční dávky nastavte hodnoty vyšší než 100 %, pro méně agresivní korekce nižší než 100 %.</string>
|
||||
<string name="enableuam">Povolit UAM</string>
|
||||
<string name="enablesmb">Povolit SMB</string>
|
||||
<string name="enablesmb_summary">Použít super mikro bolusy místo dočasných bazálů pro zrychlení účinku</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Tato hodnota je v kontextu OpenAPS nazývána Max IOB.\nOpenAPS nikdy nepřidá inzulín, pokud je současné IOB větší než tato hodnota</string>
|
||||
<string name="absorption_cutoff_title">Maximální doba absorpce sacharidů [h]</string>
|
||||
<string name="absorption_cutoff_summary">Doba, po které jsou všechny sacharidy považovány za strávené. Zbylé budou oříznuty.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Hodnota glykémie, při níž bude vydávání inzulinu zastaveno. Výchozí hodnota využívá standardní cílový model. Uživatel může nastavit hodnoty od 3,3 mmol/l do 5,5 mmol/l. Při hodnotách pod 3,6 mmol/l se použije výchozí model. </string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Zobrazovat kolonku poznámky v dialozích ošetření</string>
|
||||
<string name="next_button">Další</string>
|
||||
<string name="previous_button">Zpět</string>
|
||||
|
|
|
@ -432,8 +432,6 @@
|
|||
<string name="ns_localbroadcasts_title">Aktiver lokale udsendelser.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamisk ISF</string>
|
||||
<string name="DynISFAdjust_title">DynamicISF-justeringsfaktor %%</string>
|
||||
<string name="DynISFAdjust_summary">Justeringsfaktor for Dynamisk ISF. Indstil mere end 100%% for mere aggressive korrektionsdoser og mindre end 100%% for mindre aggressive korrektioner.</string>
|
||||
<string name="enableuam">Aktiver UAM</string>
|
||||
<string name="enablesmb">Aktiver SMB</string>
|
||||
<string name="enablesmb_summary">Brug Super Mikro Boluser i stedet for midlertidig basal for hurtigere handling</string>
|
||||
|
@ -956,7 +954,6 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max-BS udenfor området!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Midlertidigt mål:\nMin: %1$s\nMax: %2$s\nVarighed: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Midlertigt mål:\nMål: %1$s\nVarighed: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Midlertigt mål:\Grund: %1$s\nMål: %2$s\nVarighed: %3$s</string>
|
||||
<string name="quick_wizard_message">Hurtigguide: %1$s\nInsulin: %2$.2fE\nKH: %3$dg</string>
|
||||
<string name="wizard_result">Guide:\nInsulin: %1$.2fE\nKH: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Vis post på enhed:</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Endbenutzervereinbarung</string>
|
||||
<string name="end_user_license_agreement_text">DAS PROGRAMM DARF NICHT FÜR MEDIZINISCHE ENTSCHEIDUNGEN BENUTZT WERDEN. ES GIBT IN DIESEM PROJEKT KEINE GEWÄHRLEISTUNG ODER GARANTIERTE UNTERSTÜTZUNG IN IRGENDEINER ART. WENN DU DICH ENTSCHEIDEST, ES ZU NUTZEN, HÄNGT DIE QUALITÄT UND LEISTUNGSFÄHIGKEIT DIESES PROJEKTES VON DIR SELBST AB. ES WIRD \"WIE BESEHEN\" ZUR VERFÜGUNG GESTELLT. SOLLTE SICH DAS PROGRAMM ALS FEHLERHAFT ERWEISEN, ÜBERNIMMST DU ALLE NOTWENDIGEN KRANKHEITSKOSTEN, SERVICELEISTUNGEN, REPARATUREN ODER KORREKTUREN.</string>
|
||||
<string name="end_user_license_agreement_i_understand">Ich verstehe und stimme zu.</string>
|
||||
<string name="save">Speichern</string>
|
||||
<string name="reloadprofile">Profil neuladen</string>
|
||||
<string name="smscommunicator">SMS-Kommunikator</string>
|
||||
<string name="smscommunicator_allowednumbers">Erlaubte Telefonnummern</string>
|
||||
|
@ -939,5 +940,7 @@ Unerwartetes Verhalten.</string>
|
|||
<string name="carbs_and_bolus">Kohlenhydrate & Bolus</string>
|
||||
<string name="confirm_remove_multiple_items">Sind Sie sicher, dass Sie diese(s) %1$d Element(e) löschen möchten?</string>
|
||||
<string name="count_selected">%1$d ausgewählt</string>
|
||||
<string name="sort_label">Sortieren</string>
|
||||
<string name="login">Login</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Seguridad de tratamientos</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Máximo bolo permitido [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Máximos carbohidratos permitidos [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Nivel de glucosa por debajo de valor LGS (Suspensión por glucosa baja)</string>
|
||||
<string name="nav_preferences_plugin">Preferencias de %1$s</string>
|
||||
<string name="nav_preferences">Preferencias</string>
|
||||
<string name="nav_refreshtreatments">Actualizar los tratamientos desde Nightscout</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Habilitar la emisión de mensajes localmente.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">ISF Dinámico</string>
|
||||
<string name="DynISFAdjust_title">Factor de ajuste de ISF Dinámico %</string>
|
||||
<string name="DynISFAdjust_summary">Porcentaje del factor de ajuste de ISF Dinámico\nValor predeterminado: 100\nEstablecer valores por encima del 100%% para que el algoritmo aplique correcciones más agresivas y valores por debajo del 100%% para correcciones menos agresivas.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Factor de ajuste de ISF Dinámico %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Porcentaje del factor de ajuste de ISF Dinámico\nValor predeterminado: 100\nEstablecer valores por encima del 100% para que el algoritmo aplique correcciones más agresivas y valores por debajo del 100% para correcciones menos agresivas.</string>
|
||||
<string name="enableuam">Activar UAM</string>
|
||||
<string name="enablesmb">Activar SMB</string>
|
||||
<string name="enablesmb_summary">Usar microbolos en lugar de basales temporales, para corregir más rápidamente</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Este valor se denomina \"Max IOB\", en el contexto de OpenAPS\nOpenAPS no podrá superar esta cantidad de insulina activa (IOB)</string>
|
||||
<string name="absorption_cutoff_title">Tiempo máximo de absorción de la comida [h]</string>
|
||||
<string name="absorption_cutoff_summary">Tiempo en el que cualquier comida se considera absorbida. Los carbohidratos restantes serán cortados. </string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Valor de glucosa por debajo del cual se suspende la administración de insulina. El valor predeterminado utiliza el modelo de objetivo estándar. El usuario puede establecer un valor entre 60mg/dl (3. mmol/l) y 100mg/dl (5.5mmol/l). Valores por debajo de 65/3.6 usan el modelo predeterminado</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Mostrar el campo notas en diálogos de tratamientos</string>
|
||||
<string name="next_button">Siguiente</string>
|
||||
<string name="previous_button">Anterior</string>
|
||||
|
@ -968,7 +970,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">¡Glucosa máxima fuera de rango!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Objetivo temporal:\nMin: %1$s\nMax: %2$s\nDuración: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Objetivo temporal:\nObjetivo: %1$s\nDuración: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ObjetivoTemporal:\Razón: %1$s\nObjetivo: %2$s\nDuración: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ObjetivoTemporal:\nRazón: %1$s\nObjetivo: %2$s\nDuración: %3$s</string>
|
||||
<string name="quick_wizard_message">Asistente Rápido: %1$s\nInsulina: %2$.2fU\nCarbohidratos: %3$dg</string>
|
||||
<string name="wizard_result">Calc. Asistente:\nInsulina: %1$.2fU\nCarbohidratos: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Mostrar entrada en dispositivo:</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Traitements de sécurité</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximum Bolus autorisé [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximum de Glucides autorisé [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Glycémie au-dessous de laquelle se déclenche l\'Arrêt Glycémie Basse</string>
|
||||
<string name="nav_preferences_plugin">Préférences de %1$s</string>
|
||||
<string name="nav_preferences">Préférences</string>
|
||||
<string name="nav_refreshtreatments">Actualiser les données depuis NS</string>
|
||||
|
@ -433,8 +434,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="ns_localbroadcasts_title">Activer les transmissions locales</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">SI dynamique</string>
|
||||
<string name="DynISFAdjust_title">Facteur d\'ajustement SI dynamique %%</string>
|
||||
<string name="DynISFAdjust_summary">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.</string>
|
||||
<string name="enableuam">Activer RNS</string>
|
||||
<string name="enablesmb">Activer SMB</string>
|
||||
<string name="enablesmb_summary">Utiliser les Super Micro Bolus au lieu des débits de base temporaires pour une action rapide</string>
|
||||
|
@ -593,6 +592,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="openapssmb_maxiob_summary">Cette valeur est appelée Max IA (Insuline Active) dans le contaxte OpenAPS\nOpenAPS n’ajoutera pas plus d’insuline si l\'IA (Insuline Active) actuelle est supérieure à cette valeur</string>
|
||||
<string name="absorption_cutoff_title">Durée maximale d’absorption pour un repas [h]</string>
|
||||
<string name="absorption_cutoff_summary">Durée où n’importe quel repas est considéré absorbé. Les glucides restants ne seront pas pris en compte.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Valeur glycémique au-dessous de laquelle l\'injection de l\'insuline est suspendu. La valeur par défaut utilise le modèle standard de la cible. L\'utilisateur peut choisir entre 60mg/dl (3.3mmol/l) et 100mg/dl (5.5mmol/l). Les valeurs au-dessous de 65/3.6 déclenchent l\'utilisation du modèle standard</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Affiche les notes dans les dialogues</string>
|
||||
<string name="next_button">Suivant</string>
|
||||
<string name="previous_button">Préc</string>
|
||||
|
@ -968,7 +968,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="wear_action_tempt_max_bg_error">Gly maxi hors limite!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Cible temporaire:\nMin: %1$s\nMax : %2$s\nDurée : %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Cible temporaire:\nCible: %1$s\nDurée: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Cible temporaire:\nRaison: %1$s\nCible : %2$s\nDurée : %3$s</string>
|
||||
<string name="quick_wizard_message">Assistant: %1$s\nInsuline : %2$.2fU\nGlucides : %3$dg</string>
|
||||
<string name="wizard_result">Assistant Calc :\nInsuline : %1$.2fU\nGlucides : %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Afficher l\'entrée sur l\'appareil :</string>
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
<string name="nav_export">Socruithe Easpórtáil</string>
|
||||
<string name="nav_import">Socruithe Iompórtáil</string>
|
||||
<string name="check_preferences_import_btn">Iompórtáil</string>
|
||||
<string name="save">Sábháil</string>
|
||||
<string name="reloadprofile">Athlódáil próifíl</string>
|
||||
<string name="smscommunicator_loophasbeendisabled">Is lúb díchumasaithe</string>
|
||||
<string name="smscommunicator_loophasbeenenabled">Is lúb cumasaithe</string>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
<string name="sensitivity_cannula">La registrazione di un cambio cannula ripristinerà il rapporto Autosens al 100%.</string>
|
||||
<string name="sensitivity_time">Alcune opzioni del plugin hanno intervalli di tempo configurabili che possono essere impostati dall\'utente.</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivity_hint2">https://androidaps.readthedocs.io/en/latest/Usage/Open-APS-features.html?highlight=Autosens#autosens</string>
|
||||
<string name="wrongcarbs_label">Errori inserimento CHO</string>
|
||||
<string name="wrongcarbs_whattodo">Cosa dovresti fare se hai fatto un inserimento non corretto di carboidrati?</string>
|
||||
<string name="wrongcarbs_treatmentstab">Eliminare nei Trattamenti l\'inserimento non corretto e immettere il nuovo valore CHO.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Sicurezza trattamenti</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max bolo consentito [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max CHO consentiti [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Glicemia sotto la quale si attiva la sospensione per glicemia bassa</string>
|
||||
<string name="nav_preferences_plugin">%1$s Preferenze</string>
|
||||
<string name="nav_preferences">Preferenze</string>
|
||||
<string name="nav_refreshtreatments">Aggiorna trattamenti da NS</string>
|
||||
|
@ -432,14 +433,15 @@
|
|||
<string name="ns_localbroadcasts_title">Abilita trasmissioni locali</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">ISF Dinamico</string>
|
||||
<string name="DynISFAdjust_title">%% fattore di regolazione ISF dinamico</string>
|
||||
<string name="DynISFAdjust_summary">Fattore di regolazione per ISF dinamico. Imposta più del 100%% per correzioni più aggressive, meno del 100%% per correzioni meno aggressive.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Fattore di regolazione per ISF Dinamico (%)</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Fattore di regolazione per ISF Dinamico. Imposta più del 100% per dosi di correzione più aggressive e meno del 100% per correzioni meno aggressive.</string>
|
||||
<string name="enableuam">Abilita UAM</string>
|
||||
<string name="enablesmb">Abilita SMB</string>
|
||||
<string name="enablesmb_summary">Usa super-micro-boli al posto della basale temporanea per un\'azione più veloce</string>
|
||||
<string name="enableuam_summary">Rilevamento dei pasti non annunciati</string>
|
||||
<string name="insulin_oref_peak">Tempo picco Curva IOB</string>
|
||||
<string name="insulin_peak_time">Tempo del picco [min]</string>
|
||||
<string name="insulin_peak">Picco</string>
|
||||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
|
||||
|
@ -591,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Questo valore è chiamato Max IOB nel contesto OpenAPS\nOpenAPS non aggiungerà ulteriore insulina se IOB corrente è maggiore di questo valore</string>
|
||||
<string name="absorption_cutoff_title">Max tempo assorbimento pasto [h]</string>
|
||||
<string name="absorption_cutoff_summary">Tempo entro il quale ogni pasto si considera assorbito. Eventuali carboidrati rimanenti verranno tagliati fuori.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Glicemia sotto la quale l\'erogazione d\'insulina è sospesa. Il valore predefinito utilizza il modello target standard. L\'utente può impostare un valore compreso tra 60 mg/dl (3.3mmol/l) e 100mg/dl (5.5mmol/l). Con valori inferiori a 65/3.6 viene usato il modello predefinito</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Finestre tratt.nto: mostra campo note</string>
|
||||
<string name="next_button">Avanti</string>
|
||||
<string name="previous_button">Indietro</string>
|
||||
|
@ -603,7 +606,11 @@
|
|||
<string name="secondcarbsincrement">Secondo incremento di CHO</string>
|
||||
<string name="thirdcarbsincrement">Terzo incremento di CHO</string>
|
||||
<string name="cgm">CGM</string>
|
||||
<string name="ns_cellular">Usa connessione cellulare</string>
|
||||
<string name="ns_wifi">Usa connessione WiFi</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
<string name="ns_charging">Durante la ricarica</string>
|
||||
<string name="ns_battery">Utilizzo batteria</string>
|
||||
<string name="connectionsettings_title">Impostazioni connessione</string>
|
||||
<string name="ns_wifi_allowedssids">SSID ammessi (separati da punto e virgola)</string>
|
||||
<string name="ns_allowroaming">Consenti connessione in roaming</string>
|
||||
|
@ -678,6 +685,8 @@
|
|||
<string name="error_adding_treatment_message">Un trattamento (insulina: %1$.2f, carboidrati: %2$d, a: %3$s) non può essere aggiunto ai trattamenti. Controlla e aggiungi il record necessario.</string>
|
||||
<string name="generated_ecarbs_note">eCarbs: %1$d g (%2$d h), ritardo: %3$d m</string>
|
||||
<string name="openaps_noasdata">Nessun dato autosens disponibile</string>
|
||||
<string name="log_files">File di log</string>
|
||||
<string name="miscellaneous">Miscellanea</string>
|
||||
<string name="nav_logsettings">Impostazioni Log</string>
|
||||
<string name="resettodefaults">Ripristina valori predefiniti</string>
|
||||
<string name="nsmalfunction">Malfunzionamento NSClient. Considera il riavvio di NS e NSClient.</string>
|
||||
|
@ -770,6 +779,11 @@
|
|||
<string name="invalidpct">Inserimento % non valido</string>
|
||||
<string name="average">Media</string>
|
||||
<string name="tir">TIR</string>
|
||||
<string name="day_tir">TIR giorno</string>
|
||||
<string name="night_tir">TIR notte</string>
|
||||
<string name="detailed_14_days">Dettaglio 14 giorni</string>
|
||||
<string name="std_deviation">SD: %1$s</string>
|
||||
<string name="hba1c">HbA1c: </string>
|
||||
<string name="activitymonitor">Monitor attività</string>
|
||||
<string name="doyouwantresetstats">Vuoi resettare le statistiche sull\'attività?</string>
|
||||
<string name="statistics">Statistiche</string>
|
||||
|
@ -956,7 +970,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max-BG fuori range!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Temptarget:\nMin: %1$s\nMax: %2$s\nDurata: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Temptarget:\nTarget: %1$s\nDurata: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temptarget:\Motivo: %1$s\nTarget: %2$s\nDurata: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temptarget:\nMotivo: %1$s\nTarget: %2$s\nDurata: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\nInsulina: %2$.2fU\nCHO: %3$dg</string>
|
||||
<string name="wizard_result">Calc. Wizard:\nInsulina: %1$.2fU\nCHO: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Mostra voce sul dispositivo:</string>
|
||||
|
@ -965,9 +979,11 @@
|
|||
<string name="wizard_no_active_profile">Nessun profilo attivo!</string>
|
||||
<string name="wizard_no_cob">Valore COB sconosciuto! Lettura BG mancante o recente riavvio dell\'app?</string>
|
||||
<string name="wizard_carbs_constraint">Violazione vincolo CHO!</string>
|
||||
<string name="wizard_explain_calc">Calc (IC: %1$.1f, ISF: %2$.1f)</string>
|
||||
<string name="wizard_explain_carbs">CHO: %1$.2fU</string>
|
||||
<string name="wizard_explain_cob">COB: %1$.0fg %2$.2fU</string>
|
||||
<string name="wizard_explain_bg">BG: %1$.2fU</string>
|
||||
<string name="wizard_explain_iob">IOB: %1$.2fU</string>
|
||||
<string name="wizard_explain_superbolus">Superbolo: %1$.2fU</string>
|
||||
<string name="wizard_explain_trend">Trend di 15\': %1$.2fU</string>
|
||||
<string name="wizard_explain_percent">Percentuale: %1$.2fU x %2$d%% ≈ %3$.2fU</string>
|
||||
|
@ -994,6 +1010,10 @@
|
|||
<string name="count_selected">%1$d selezionati</string>
|
||||
<string name="sort_label">Ordina</string>
|
||||
<string name="dialog_canceled">Finestra di dialogo cancellata</string>
|
||||
<string name="veryLow" comment="below 3.1">Molto basso</string>
|
||||
<string name="low" comment="3.1-3.9">Basso</string>
|
||||
<string name="high" comment="10.0-13.9">Alto</string>
|
||||
<string name="veryHigh" comment="above 13.9">Molto alto</string>
|
||||
<string name="below" comment="below "in range"">Sotto</string>
|
||||
<string name="in_range">In range</string>
|
||||
<string name="above" comment="above "in range"">Sopra</string>
|
||||
|
@ -1001,6 +1021,13 @@
|
|||
<string name="show_hide_records">Nascondi record di loop</string>
|
||||
<string name="widget_description">Widget di AndroidAPS</string>
|
||||
<string name="configure">Configura opacità</string>
|
||||
<string name="loop_status">Stato loop</string>
|
||||
<string name="graph_scale">Scala del grafico</string>
|
||||
<string name="profile1">Profilo 1</string>
|
||||
<string name="profile2">Profilo 2</string>
|
||||
<string name="login">Login</string>
|
||||
<string name="remove_all">Rimuovi tutto</string>
|
||||
<string name="reset_start">Avvio reset</string>
|
||||
<string name="a11y_otp_qr_code">Codice QR per configurare OTP</string>
|
||||
<string name="a11y_open_settings">apri impostazioni</string>
|
||||
<string name="a11y_set_carb_timer">imposta allarme timer CHO</string>
|
||||
|
@ -1014,4 +1041,6 @@
|
|||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">GlucoRx Aidex</string>
|
||||
<string name="description_source_aidex">Ricevi valori glicemia da CGM GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">Bloccato dalle opzioni di ricarica</string>
|
||||
<string name="blocked_by_connectivity">Bloccato dalle opzioni di connettività</string>
|
||||
</resources>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
<string name="sensitivity_cannula">רישום החלפת צינורית יאפס את היחס של Autosens בחזרה ל-100%.</string>
|
||||
<string name="sensitivity_time">חלק מאפשרויות התוסף כוללות טווחי זמן הניתנים להגדרה ע\"י המשתמש.</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivity_hint2">https://androidaps.readthedocs.io/en/latest/Usage/Open-APS-features.html?highlight=Autosens#autosens</string>
|
||||
<string name="wrongcarbs_label">שגיאות רישום פחמימות</string>
|
||||
<string name="wrongcarbs_whattodo">מה לעשות אם טעיתם ברישום הפחמימות?</string>
|
||||
<string name="wrongcarbs_treatmentstab">מחקו את הרשומה השגויה בטיפולים וציינו את ערך הפחמימות הנכון.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">בטיחות טיפולים</string>
|
||||
<string name="treatmentssafety_maxbolus_title">בולוס מקסימלי מותר [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">מקסימום פחמימות מותר [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">רמת הסוכר נמוכה מסף ההשהיה עקב סוכר נמוך</string>
|
||||
<string name="nav_preferences_plugin">העדפות %1$s</string>
|
||||
<string name="nav_preferences">העדפות</string>
|
||||
<string name="nav_refreshtreatments">רענן טיפול מ-Nightscout</string>
|
||||
|
@ -432,14 +433,15 @@
|
|||
<string name="ns_localbroadcasts_title">אפשר שידורים מקומיים.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">רגישות דינאמית</string>
|
||||
<string name="DynISFAdjust_title">כיוונון פקטור הרגישות הדינאמית %%</string>
|
||||
<string name="DynISFAdjust_summary">כיוונון פקטור הרגישות הדינאמית. קבעו יותר מ-100%% לקבלת תיקונים אגרסיביים יותר ופחות מ-100%% לקבלת תיקונים עדינים יותר.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">כיוונון פקטור הרגישות הדינאמית %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">כיוונון פקטור הרגישות הדינאמית. הגדירו יותר מ-100% לקבלת תיקונים אגרסיביים יותר ופחות מ-100% לקבלת תיקונים עדינים יותר.</string>
|
||||
<string name="enableuam">הפעלת UAM</string>
|
||||
<string name="enablesmb">אפשר SMB</string>
|
||||
<string name="enablesmb_summary">השתמש בסופר מיקרו בולוסים במקום בבזאלי זמני לפעילות מהירה יותר</string>
|
||||
<string name="enableuam_summary">זיהוי של ארוחות לא מוכרזות</string>
|
||||
<string name="insulin_oref_peak">שעת שיא של עקומת IOB</string>
|
||||
<string name="insulin_peak_time">זמן שיא [min]</string>
|
||||
<string name="insulin_peak">שיא</string>
|
||||
<string name="free_peak_oref">Oref שיא חופשי</string>
|
||||
<string name="rapid_acting_oref">Oref אינסולין מהיר</string>
|
||||
<string name="ultrarapid_oref">Oref אינסולין אולטרה מהיר</string>
|
||||
|
@ -591,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">ב-OpenAPS ערך זה נקרא מקסימום אינסולין פעיל (maxIOB). \nלא יוזרק עוד אינסולין אם כמות האינסולין הפעיל הנוכחי גדול מערך זה</string>
|
||||
<string name="absorption_cutoff_title">זמן ספיגה מקסימלי של הארוחה [h]</string>
|
||||
<string name="absorption_cutoff_summary">משך זמן בו כל ארוחה תחשב כנספגה. לא תהיה התחשבות בפחמימות שנותרו.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">ערך הסוכר שמתחתיו מושעה הזרקת אינסולין. ערך ברירת המחדל משתמש במודל מטרה סטנדרטי. המשתמש יכול להגדיר ערך בין 60 ל-100 מג\"\\ד\"ל. ערכים מתחת ל-65 מביאים לשימוש במודל ברירת המחדל</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">הצגת שדות הערות בתיבות דו-שיח של טיפול</string>
|
||||
<string name="next_button">הבא</string>
|
||||
<string name="previous_button">הקודם</string>
|
||||
|
@ -603,7 +606,11 @@
|
|||
<string name="secondcarbsincrement">תוספת פחמימות שניה</string>
|
||||
<string name="thirdcarbsincrement">תוספת פחמימות שלישית</string>
|
||||
<string name="cgm">סנסור</string>
|
||||
<string name="ns_cellular">השתמש באינטרנט סלולרי</string>
|
||||
<string name="ns_wifi">השתמש בחיבור WiFi</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
<string name="ns_charging">בזמן טעינה</string>
|
||||
<string name="ns_battery">משתמש בסוללה</string>
|
||||
<string name="connectionsettings_title">הגדרות חיבור</string>
|
||||
<string name="ns_wifi_allowedssids">SSID מורשים (מופרדים בנקודה-פסיק)</string>
|
||||
<string name="ns_allowroaming">אפשר חיבור בנדידה</string>
|
||||
|
@ -770,6 +777,11 @@
|
|||
<string name="invalidpct">רשומת אחוזים לא חוקית</string>
|
||||
<string name="average">ממוצע</string>
|
||||
<string name="tir">זמן בטווח</string>
|
||||
<string name="day_tir">זמן בטווח ביום</string>
|
||||
<string name="night_tir">זמן בטווח בלילה</string>
|
||||
<string name="detailed_14_days">פירוט 14 יום</string>
|
||||
<string name="std_deviation">סטיית תקן: %1$s</string>
|
||||
<string name="hba1c">HbA1c: </string>
|
||||
<string name="activitymonitor">מוניטור פעילות</string>
|
||||
<string name="doyouwantresetstats">האם ברצונכם לאפס את הסטטיסטיקות הפעילות?</string>
|
||||
<string name="statistics">סטטיסטיקה</string>
|
||||
|
@ -880,6 +892,8 @@
|
|||
<string name="ns_receive_profile_switch_summary">קבלת החלפות פרופיל שהוגדרו בנייטסקאוט או ב-NSClient</string>
|
||||
<string name="ns_receive_offline_event">אחזר אירועים לא מקוונים</string>
|
||||
<string name="ns_receive_offline_event_summary">קבל אירועים לא מקוונים שנרשמו דרך נייטסקאוט או NSClient</string>
|
||||
<string name="ns_receive_tbr_eb">קבל מינון בזאלי זמני ובולוס מושהה</string>
|
||||
<string name="ns_receive_tbr_eb_summary">קבל מינוני בזאלי זמני ובולוסים מושהים שהופעלו ממכשיר עוקב</string>
|
||||
<string name="ns_receive_insulin">קבלת אינסולין</string>
|
||||
<string name="ns_receive_insulin_summary">קבלת אינסולין שהוזן באמצעות נייטסקאוט או NSClient (הוא לא מוזרק, רק מחושב רק כאינסולין פעיל)</string>
|
||||
<string name="ns_receive_carbs">קבלת פחמימות</string>
|
||||
|
@ -946,12 +960,34 @@
|
|||
<string name="light_theme">ערכת נושא בהירה</string>
|
||||
<string name="follow_system_theme">השתמש בערכת הנושא של המכשיר</string>
|
||||
<!-- WEAR OS-->
|
||||
<string name="wear_action_tempt_cancel_message">מבטל ערך מטרה זמני נוכחי</string>
|
||||
<string name="wear_action_tempt_unit_error">יחידות המידה שונות בין הטלפון והשעון!</string>
|
||||
<string name="wear_action_tempt_min_bg_error">ערך הסוכר המינימלי מחוץ לטווח!</string>
|
||||
<string name="wear_action_tempt_max_bg_error">ערך הסוכר המקסימלי מחוץ לטווח!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">ע\' מטרה זמני:\nמינ\': %1$s\nמקס\': %2$s\nמשך: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">ע\' מטרה זמני:\nמטרה: %1$s\n משך: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ע\' מטרה זמני:\nסיבה: %1$s\nמטרה: %2$s\nמשך: %3$s</string>
|
||||
<string name="quick_wizard_message">אשף מהיר: %1$s\n אינס\': %2$.2f יח\'\nפחמ\': %3$d גר\'</string>
|
||||
<string name="wizard_result">מחשבון: %1$s\n אינס\': %2$.2f יח\'\nפחמ\': %3$d גר\'</string>
|
||||
<string name="overview_editquickwizard_show_on_device">הצג רשומה על המכשיר:</string>
|
||||
<string name="quick_wizard_not_available">האשף המהיר שנבחר אינו זמין, נא לרענן את האריח</string>
|
||||
<string name="wizard_no_actual_bg">אין נתוני סוכר לביסוס חישוב!</string>
|
||||
<string name="wizard_no_active_profile">לא הופעל פרופיל!</string>
|
||||
<string name="wizard_no_cob">הפחמימות הפעילות לא ידועות! חסרות קריאות סוכר או שאותחל היישום לאחרונה?</string>
|
||||
<string name="wizard_carbs_constraint">הפרת מגבלות פחמימה!</string>
|
||||
<string name="wizard_explain_calc">מחשבון (IC: %1$.1f, ISF: %2$.1f)</string>
|
||||
<string name="wizard_explain_carbs">פחמ\': %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_cob">פחמ\': %1$.0f גר\' %2$.2f יח\'</string>
|
||||
<string name="wizard_explain_bg">סוכר: %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_iob">אינ\' פעיל: %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_superbolus">סופר בולוס: %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_trend">מגמת 15 דק\': %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_percent">אחוזים: %1$.2f יח\' x %2$d%% ≈ %3$.2f יח\'</string>
|
||||
<string name="wizard_constraint_bolus_size">הופעלה מגבלת אינסולין!\nלא ניתן להזריק %1$.2f יח\'</string>
|
||||
<string name="wizard_explain_tt">ע\' מטרה זמני: %1$s</string>
|
||||
<string name="wizard_explain_tt_to">%1$s ל-%2$s</string>
|
||||
<string name="wizard_pump_not_available">המשאבה אינה זמינה!</string>
|
||||
<string name="wear_unknown_action_string">פקודה לא ידועה:</string>
|
||||
<string name="overview_editquickwizard_percentage">אחוזים</string>
|
||||
<string name="app_default">ברירת המחדל של היישום</string>
|
||||
<string name="show_invalidated_records">הצג רשומות מבוטלות\\מחוקות</string>
|
||||
|
@ -970,6 +1006,10 @@
|
|||
<string name="count_selected">%1$d נבחרו</string>
|
||||
<string name="sort_label">מיין</string>
|
||||
<string name="dialog_canceled">דו-שיח בוטל</string>
|
||||
<string name="veryLow" comment="below 3.1">נמוך מאוד</string>
|
||||
<string name="low" comment="3.1-3.9">נמוך</string>
|
||||
<string name="high" comment="10.0-13.9">גבוה</string>
|
||||
<string name="veryHigh" comment="above 13.9">גבוה מאוד</string>
|
||||
<string name="below" comment="below "in range"">מתחת</string>
|
||||
<string name="in_range">בטווח</string>
|
||||
<string name="above" comment="above "in range"">מעל</string>
|
||||
|
@ -977,7 +1017,17 @@
|
|||
<string name="show_hide_records">החבא רשומות לולאה</string>
|
||||
<string name="widget_description">ווידג\'ט AndroidAPS</string>
|
||||
<string name="configure">הגדרת אטימות</string>
|
||||
<string name="loop_status">סטטוס הלולאה</string>
|
||||
<string name="graph_scale">קנה מידה של הגרף</string>
|
||||
<string name="profile1">פרופיל 1</string>
|
||||
<string name="profile2">פרופיל 2</string>
|
||||
<string name="login">התחברות</string>
|
||||
<string name="remove_all">הסר הכל</string>
|
||||
<string name="reset_start">אתחל התחלה</string>
|
||||
<string name="a11y_otp_qr_code">ברקוד QR ליצירת סיסמה חד פעמית</string>
|
||||
<string name="a11y_open_settings">פתח הגדרות</string>
|
||||
<string name="a11y_set_carb_timer">הגדרת אזעקה טיימר פחמימות</string>
|
||||
<string name="device_all">הכול</string>
|
||||
<string name="device_phone">טלפון</string>
|
||||
<string name="device_watch">שעון</string>
|
||||
<string name="a11y_only_on_watch">על השעון בלבד</string>
|
||||
|
@ -987,4 +1037,6 @@
|
|||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">קבלת נתוני סוכר מחיישני GlucoRx Aidex.</string>
|
||||
<string name="blocked_by_charging">חסום ע\"י הגדרות טעינה</string>
|
||||
<string name="blocked_by_connectivity">חסום ע\"י הגדרות חיבור</string>
|
||||
</resources>
|
||||
|
|
|
@ -155,6 +155,7 @@
|
|||
<string name="end_user_license_agreement">최종 사용자 라이선스 동의서</string>
|
||||
<string name="end_user_license_agreement_text">이 프로그램을 의학적 결정을 내리는 데 사용해서는 안되며, 여기에 대한 어떠한 보증도 없습니다. 이 프로그램의 품질과 성능에 관한 모든 위험은 사용자에게 있습니다.\nMUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</string>
|
||||
<string name="end_user_license_agreement_i_understand">모두 이해하였고 동의합니다.</string>
|
||||
<string name="save">저장</string>
|
||||
<string name="reloadprofile">프로파일 새로고침</string>
|
||||
<string name="smscommunicator">SMS 통신기</string>
|
||||
<string name="smscommunicator_allowednumbers">허가된 전화번호</string>
|
||||
|
@ -849,5 +850,6 @@
|
|||
<string name="calculation_in_progress">계산 진행 중</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">로그인</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Licencinė sutartis su vartotoju</string>
|
||||
<string name="end_user_license_agreement_text">PROGRAMA NEGALI BŪTI NAUDOJAMA GYDYMO SPRENDIMAMS PRIIMTI. PAGAL GALIOJANČIUS ĮSTATYMUS PROGRAMA NESUTEIKIA JOKIŲ GARANTIJŲ VARTOTOJUI. JEI RAŠTU NENURODYTA KITAIP, PROGRAMOS AUTORINIŲ TEISIŲ TURĖTOJAS IR/AR KITOS ŠALYS PATEIKIA PROGRAMĄ \"KAIP YRA\" BE JOKIŲ GARANTIJŲ, TIEK AKIVAIZDŽIŲ, TIEK NUMANOMŲ, ĮSKAITANT, BET NEAPSIRIBOJANT GALIMYBĘ NAUDOTI PROGRAMĄ KOMERCINIAMS AR KITOKIEMS DALINIAMS TIKSLAMS. RIZIKĄ, KYLANČIĄ NAUDOJANT PROGRAMĄ PRISIIMA PATS VARTOTOJAS. JEI PROGRAMA VEIKIA NETINKAMAI, IŠLAIDOS, SUSIJUSIOS SU PROGRAMOS SERVISU, TAISYMU AR KOREGAVIMU, TENKA VARTOTOJUI.</string>
|
||||
<string name="end_user_license_agreement_i_understand">SUPRATAU IR SUTINKU</string>
|
||||
<string name="save">Išsaugoti</string>
|
||||
<string name="reloadprofile">Atnaujinti profilį</string>
|
||||
<string name="smscommunicator">SMS komunikatorius</string>
|
||||
<string name="smscommunicator_allowednumbers">Leidžiami telefono numeriai</string>
|
||||
|
@ -893,5 +894,6 @@
|
|||
<string name="not_available_full">Negalimas</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Prisijungti</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -123,6 +123,7 @@
|
|||
<string name="sensitivity_cannula">Het vastleggen van een canulewissel zet de Autosens-ratio terug naar 100%.</string>
|
||||
<string name="sensitivity_time">Sommige van de plugins hebben configureerbare tijdbereiken die kunnen worden ingesteld door de gebruiker.</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivity_hint2">https://androidaps.readthedocs.io/nl/latest/Usage/Open-APS-features.html?highlight=Autosens#autosens</string>
|
||||
<string name="wrongcarbs_label">Koolhydraatinvoerfouten</string>
|
||||
<string name="wrongcarbs_whattodo">Wat moet u doen als u een onjuiste hoeveelheid koolhydraten hebt ingevoerd?</string>
|
||||
<string name="wrongcarbs_treatmentstab">Verwijder het onjuiste record in Behandelingen en voer de juiste koolhydraten opnieuw in.</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Behandelingen veiligheid</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max toegestane bolus [E]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max toegestane koolhydraten [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">BG niveau waarbij lage glucose onderbreking wordt geactiveerd</string>
|
||||
<string name="nav_preferences_plugin">%1$s Instellingen</string>
|
||||
<string name="nav_preferences">Instellingen</string>
|
||||
<string name="nav_refreshtreatments">Haal behandelingen op van NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Activeer locaal delen.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamische ISF</string>
|
||||
<string name="DynISFAdjust_title">Dynamische ISF aanpassingsfactor %%</string>
|
||||
<string name="DynISFAdjust_summary">Aanpassingsfactor voor Dynamische ISF. Stel meer dan 100%% in voor een agressievere correctie dosis en minder dan 100%% voor minder agressieve correcties.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Dynamische Isf aanpassingsfactor %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Aanpassingsfactor voor DynamicISF. Stel meer dan 100% in voor een agressievere correctie en minder dan 100% voor minder agressieve correctie.</string>
|
||||
<string name="enableuam">Activeer UAM</string>
|
||||
<string name="enablesmb">Activeer SMB</string>
|
||||
<string name="enablesmb_summary">SMB in plaats van tijdelijke basalen voor snellere reactie</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Deze waarde heet MAX IOB in OpenAPS context\nOpenAPS zal geen extra insuline toedienen als de actuele IOB onderstaande waarde overschreden heeft</string>
|
||||
<string name="absorption_cutoff_title">Maximum maaltijd absorptie tijd [uur]</string>
|
||||
<string name="absorption_cutoff_summary">Tijdspanne waarbinnen elke maaltijd volledig is opgenomen. Resterende KH worden niet mee gerekend.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">BG waarde waarbij insuline afgifte wordt onderbroken. De standaard waarde gebruikt het standaard doelmodel. Gebruiker kan waarde instellen tussen 60 mg/dl (3.3 mmol/l) en 100mg/dl(5.6mmol/l). Waarden lager dan 65/3.6 resulteren in gebruik van het standaard model</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Toon notities veld in behandeling dialoogvensters</string>
|
||||
<string name="next_button">Volgende</string>
|
||||
<string name="previous_button">Vorige</string>
|
||||
|
@ -604,7 +606,11 @@
|
|||
<string name="secondcarbsincrement">Tweede koolhydraten increment</string>
|
||||
<string name="thirdcarbsincrement">Derde koolhydraten increment</string>
|
||||
<string name="cgm">CGM</string>
|
||||
<string name="ns_cellular">Mobiele verbinding gebruiken</string>
|
||||
<string name="ns_wifi">Gebruik WiFi verbinding</string>
|
||||
<string name="ns_wifi_ssids">WiFi SSID</string>
|
||||
<string name="ns_charging">Tijdens opladen</string>
|
||||
<string name="ns_battery">Op batterij</string>
|
||||
<string name="connectionsettings_title">Verbindings instellingen</string>
|
||||
<string name="ns_wifi_allowedssids">Toegelaten SSIDs (gescheiden door puntkomma)</string>
|
||||
<string name="ns_allowroaming">Sta verbinding tijdens roaming toe</string>
|
||||
|
@ -679,6 +685,8 @@
|
|||
<string name="error_adding_treatment_message">Een Behandeling (insuline: %1$.2f, koolhydraten: %2$d, in: %3$s) niet konden worden toegevoegd aan Behandelingen. Gelieve te controleren en handmatig een record toe te voegen indien nodig.</string>
|
||||
<string name="generated_ecarbs_note">eCarbs: %1$d g (%2$d h), vertraging: %3$d m</string>
|
||||
<string name="openaps_noasdata">Geen autosens-gegevens beschikbaar</string>
|
||||
<string name="log_files">Logbestanden</string>
|
||||
<string name="miscellaneous">Overige</string>
|
||||
<string name="nav_logsettings">Log instellingen</string>
|
||||
<string name="resettodefaults">Terug naar standaardinstellingen</string>
|
||||
<string name="nsmalfunction">NSClient werkt niet goed. Overweg een herstart van NS en NSClient.</string>
|
||||
|
@ -771,6 +779,11 @@
|
|||
<string name="invalidpct">Ongeldig % invoer</string>
|
||||
<string name="average">Gemiddelde</string>
|
||||
<string name="tir">TIR</string>
|
||||
<string name="day_tir">TIR overdag</string>
|
||||
<string name="night_tir">TIR s\'nachts</string>
|
||||
<string name="detailed_14_days">14 dagen details</string>
|
||||
<string name="std_deviation">SD: %1$s</string>
|
||||
<string name="hba1c">HbA1c: </string>
|
||||
<string name="activitymonitor">Activiteitsmonitor</string>
|
||||
<string name="doyouwantresetstats">Wil je de activiteitenstatistieken resetten?</string>
|
||||
<string name="statistics">Statistieken</string>
|
||||
|
@ -957,7 +970,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max BG buiten bereik!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Tijdelijk streefdoel:\nMin: %1$s\nMax: %2$s\nDuur: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Tijdelijk streefdoel:\nDoel: %1$s\nDuur: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Tijdelijk streefdoel:\Reden: %1$s\nDoel: %2$s\nDuur: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Tijdelijk streefdoel:\nReden: %1$s\nDoel: %2$s\nDuur: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\nInsuline: %2$.2fE\nKoolhy.: %3$dg</string>
|
||||
<string name="wizard_result">Reken. Wizard:\nInsuline: %1$.2fE\nKoolhy.: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Toon invoer op apparaat:</string>
|
||||
|
@ -997,6 +1010,10 @@
|
|||
<string name="count_selected">%1$d geselecteerd</string>
|
||||
<string name="sort_label">Sorteren</string>
|
||||
<string name="dialog_canceled">Dialoog geannuleerd</string>
|
||||
<string name="veryLow" comment="below 3.1">Zeer laag</string>
|
||||
<string name="low" comment="3.1-3.9">Laag</string>
|
||||
<string name="high" comment="10.0-13.9">Hoog</string>
|
||||
<string name="veryHigh" comment="above 13.9">Zeer hoog</string>
|
||||
<string name="below" comment="below "in range"">Onder</string>
|
||||
<string name="in_range">Binnen bereik</string>
|
||||
<string name="above" comment="above "in range"">Boven</string>
|
||||
|
@ -1004,6 +1021,7 @@
|
|||
<string name="show_hide_records">Verberg loop records</string>
|
||||
<string name="widget_description">AndroidAPS widget</string>
|
||||
<string name="configure">Configureer transparantie</string>
|
||||
<string name="loop_status">Loop status</string>
|
||||
<string name="graph_scale">Grafiek schaal</string>
|
||||
<string name="profile1">Profiel 1</string>
|
||||
<string name="profile2">Profiel 2</string>
|
||||
|
@ -1023,4 +1041,6 @@
|
|||
<string name="aidex">GlucoRx Aidex</string>
|
||||
<string name="aidex_short">Aidex</string>
|
||||
<string name="description_source_aidex">Ontvang BG waarden van GlucoRx Aidex CGMS.</string>
|
||||
<string name="blocked_by_charging">Geblokkeerd door oplaad instellingen</string>
|
||||
<string name="blocked_by_connectivity">Geblokkeerd door verbindings instellingen</string>
|
||||
</resources>
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
<string name="treatmentssafety_title">Sikkerhet ved behandlinger</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maks tillat bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maks tillat karbo [g]</string>
|
||||
<string name="nav_preferences_plugin">%1$s innstillinger</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Insulintilførsel stoppes når BS er under denne terskelverdien</string>
|
||||
<string name="nav_preferences_plugin">%1$s Innstillinger</string>
|
||||
<string name="nav_preferences">Innstillinger</string>
|
||||
<string name="nav_refreshtreatments">Oppdater behandlinger fra NS</string>
|
||||
<string name="nav_resetdb">Nullstill databasene</string>
|
||||
|
@ -14,12 +15,12 @@
|
|||
<string name="nav_exit">Avslutt</string>
|
||||
<string name="alert_dialog_permission_battery_optimization_failed">Det ser ikke ut som mobilen støtter registrering av apper som unntas fra batterioptimalisering - du kan oppleve ytelsesproblemer.</string>
|
||||
<string name="description_actions">Knapper for rask tilgang til ofte brukte funksjoner</string>
|
||||
<string name="description_config_builder">Brukt for innstilling av aktive plugin</string>
|
||||
<string name="description_config_builder">Brukes for innstilling av aktive plugins</string>
|
||||
<string name="description_objectives">Opplæringsprogram</string>
|
||||
<string name="description_food">Viser forhåndsinnstillinger for mat som er definert i Nightscout</string>
|
||||
<string name="description_insulin_rapid">Innstillinger for Humalog og NovoRapid / NovoLog insulin</string>
|
||||
<string name="description_food">Viser forhåndsinnstillinger for mat fra Nightscout</string>
|
||||
<string name="description_insulin_rapid">Innstillinger for Humalog og NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Innstillinger for Fiasp</string>
|
||||
<string name="description_insulin_lyumjev">Insulin innstillinger for Lyumjev</string>
|
||||
<string name="description_insulin_lyumjev">Innstillinger for Lyumjev</string>
|
||||
<string name="description_insulin_free_peak">Lar deg stille inn tidspunktet for toppen av insulinvirkningen. Bør bare benyttes av erfarne brukere</string>
|
||||
<string name="description_loop">Aktiver eller deaktiver hendelsen som trigger loop.</string>
|
||||
<string name="description_ns_client">Synkroniserer dine data med Nightscout</string>
|
||||
|
@ -31,17 +32,17 @@
|
|||
<string name="description_profile_local">Definer en profil som er tilgjengelig offline.</string>
|
||||
<string name="description_pump_virtual">Integrasjon mot pumper som ikke støttes av AndroidAPS (åpen loop)</string>
|
||||
<string name="description_sensitivity_aaps">Sensitiviteten beregnes på samme måte som i Oref0, men du kan angi hvor mye av historikken som skal tas med i beregningen. Minimum opptak av karbohydrater beregnes ut fra maks karbohydratopptak angitt i dine innstillinger.</string>
|
||||
<string name="description_sensitivity_oref1">Sensitivitet beregnes fra 8t og 24t historiske dat (velger alltid det resultatet som gir høyest insulinsensitivitet. Karbohydrater som ikke er absorbert blir avsluttet etter tiden som er angitt i innstillinger. Plugin beregner også UAM.</string>
|
||||
<string name="description_sensitivity_oref1">Sensitivitet beregnes fra 8t og 24t historiske data (velger alltid det resultatet som gir høyest insulinsensitivitet). Karbohydrater (som ikke er absorbert) blir avsluttet etter tiden som er angitt i innstillinger. Plugin beregner også UAM.</string>
|
||||
<string name="description_sensitivity_weighted_average">Sensitivitet beregnes som en vektet gjennomsnittsverdi av avvikene. Ferske avvik har høyere vekting. Minimum opptak av karbohydrater beregnes ut fra maks opptakstid for karbohydrater angitt i dine innstillinger. Denne algoritmen er den raskeste for å justere endringer i sensitivitet.</string>
|
||||
<string name="description_source_eversense">Motta BS verdier fra den modifiserte Eversense appen.</string>
|
||||
<string name="description_source_glimp">Motta BS verdier fra Glimp.</string>
|
||||
<string name="description_source_mm640g">Motta BS verdier fra 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Last ned BS verdier fra Nightscout</string>
|
||||
<string name="description_source_xdrip">Motta BS verdier fra xDrip+.</string>
|
||||
<string name="description_source_eversense">Motta BS-verdier fra den modifiserte Eversense-appen.</string>
|
||||
<string name="description_source_glimp">Motta BS-verdier fra Glimp.</string>
|
||||
<string name="description_source_mm640g">Motta BS-verdier fra 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Last ned BS-verdier fra Nightscout</string>
|
||||
<string name="description_source_xdrip">Motta BS-verdier fra xDrip+.</string>
|
||||
<string name="description_treatments">Lagre data om alle behandlinger som er utført</string>
|
||||
<string name="description_wear">Monitorer og kontroller AndroidAPS med din WearOS klokke.</string>
|
||||
<string name="description_wear">Overvåke og styre AndroidAPS med din WearOS-klokke.</string>
|
||||
<string name="description_xdrip_status_line">Vis informasjon om loop på din xDrip+ urskive.</string>
|
||||
<string name="description_sms_communicator">Fjernstyr AndroidAPS med SMS kommandoer.</string>
|
||||
<string name="description_sms_communicator">Fjernstyre AndroidAPS med SMS-kommandoer.</string>
|
||||
<string name="treatments_insulin_label_string">Insulin:</string>
|
||||
<string name="treatments_carbs_label_string">Karbo:</string>
|
||||
<string name="treatments_iob_label_string">IOB:</string>
|
||||
|
@ -69,7 +70,7 @@
|
|||
<string name="openapsma_mealdata_label">Måltidsdata</string>
|
||||
<string name="result">Resultat</string>
|
||||
<string name="result_insulin_carbs">Resultat: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Ingen BS data tilgjengelig</string>
|
||||
<string name="openapsma_noglucosedata">Ingen BS-data tilgjengelig</string>
|
||||
<string name="openapsma_request_label">Forespørsel</string>
|
||||
<string name="delta">Delta</string>
|
||||
<string name="sms_delta">Delta:</string>
|
||||
|
@ -82,7 +83,7 @@
|
|||
<string name="configbuilder_profile">Profil</string>
|
||||
<string name="configbuilder_profile_description">Hvilken profil bør AndroidAPS bruke?</string>
|
||||
<string name="configbuilder_aps">APS</string>
|
||||
<string name="configbuilder_aps_description">Hvilken APS algoritme skal brukes for administrasjon av behandlinger?</string>
|
||||
<string name="configbuilder_aps_description">Hvilken algoritme skal APS benytte for behandlinger?</string>
|
||||
<string name="configbuilder_general">Generelt</string>
|
||||
<string name="configbuilder_general_description">Det er noen generelle plugins som kan være nyttige.</string>
|
||||
<string name="configbuilder_constraints_description">Hvilke begrensninger brukes?</string>
|
||||
|
@ -91,12 +92,12 @@
|
|||
<string name="configbuilder_loop_description">Bruk dette for å aktivere AndroidAPS loop integrasjon.</string>
|
||||
<string name="loop_aps_label">APS</string>
|
||||
<string name="loop_constraintsprocessed_label">Etter behandling av begrensninger</string>
|
||||
<string name="loop_tbrsetbypump_label">Temp Basal satt av pumpen</string>
|
||||
<string name="loop_tbrsetbypump_label">Temp basal satt av pumpen</string>
|
||||
<string name="noapsselected">INGEN APS ER VALGT ELLER HAR LEVERT RESULTAT</string>
|
||||
<string name="safety">Sikkerhet</string>
|
||||
<string name="openapsma_disabled">Plugin er deaktivert</string>
|
||||
<string name="constraints_violation">Brudd på begrensninger</string>
|
||||
<string name="treatmentdeliveryerror">Er registrert en feil med bolus leveransen. Sjekk manuelt om den er levert og hvor mye!</string>
|
||||
<string name="treatmentdeliveryerror">Det er registrert en feil med bolus-leveransen. Sjekk manuelt om den er levert og hvor mye</string>
|
||||
<string name="setbasalquestion">Aksepter ny temp basal:</string>
|
||||
<string name="overview_treatment_label">Behandling</string>
|
||||
<string name="overview_calculator_label">Kalkulator</string>
|
||||
|
@ -104,24 +105,24 @@
|
|||
<string name="sms_bolus">Bolus:</string>
|
||||
<string name="sms_basal">Basal:</string>
|
||||
<string name="changeyourinput">Endre dine inndata!</string>
|
||||
<string name="configbuilder_bgsource">BS kilde</string>
|
||||
<string name="configbuilder_bgsource">BS-kilde</string>
|
||||
<string name="configbuilder_bgsource_description">Hvor skal AndroidAPS hente sine data fra?</string>
|
||||
<string name="xdrip">xDrip+</string>
|
||||
<string name="apsmode_title">APS modus</string>
|
||||
<string name="closedloop">Lukket loop</string>
|
||||
<string name="openloop">Åpen loop</string>
|
||||
<string name="lowglucosesuspend">Stopp hvis lavt BS</string>
|
||||
<string name="closedloop">Lukket Loop</string>
|
||||
<string name="openloop">Åpen Loop</string>
|
||||
<string name="lowglucosesuspend">Stopp ved lavt BS</string>
|
||||
<string name="disabledloop">Loop er deaktivert</string>
|
||||
<string name="openloop_newsuggestion">Ny anbefaling tilgjengelig</string>
|
||||
<string name="carbssuggestion">Karbo forslag</string>
|
||||
<string name="unsupportednsversion">Versjonen av Nightscout støttes ikke</string>
|
||||
<string name="treatments_wizard_basaliob_label">Basal IOB</string>
|
||||
<string name="bolusconstraintapplied">Bolus begrensning utført</string>
|
||||
<string name="carbsconstraintapplied">Karbohydrat begrensning utført</string>
|
||||
<string name="bolusconstraintapplied">Bolus-begrensning utført</string>
|
||||
<string name="carbsconstraintapplied">Karbohydrat-begrensning utført</string>
|
||||
<string name="careportal_newnstreatment_other">Annet</string>
|
||||
<string name="careportal_newnstreatment_meter">Meter</string>
|
||||
<string name="careportal_newnstreatment_sensor">Sensor</string>
|
||||
<string name="carb_time_label">Karbo tid</string>
|
||||
<string name="carb_time_label">Karbo-tid</string>
|
||||
<string name="careportal_newnstreatment_duration_label">Varighet</string>
|
||||
<string name="profile_label">Profil</string>
|
||||
<string name="careportal_newnstreatment_glucosetype">Glukosetype</string>
|
||||
|
@ -129,7 +130,7 @@
|
|||
<string name="overview_extendedbolus_button">Forlenget bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout versjon:</string>
|
||||
<string name="missing_carbs">Mangler %1$d g</string>
|
||||
<string name="exported">Innstillinger lagret</string>
|
||||
<string name="exported">Innstillinger er eksportert</string>
|
||||
<string name="ue_exported">Brukeroppføringer er eksportert</string>
|
||||
<string name="export_to">Eksporter innstillinger til</string>
|
||||
<string name="import_from">Importer innstillinger fra</string>
|
||||
|
@ -162,27 +163,27 @@
|
|||
<string name="end_user_license_agreement_i_understand">JEG FORSTÅR OG GODTAR</string>
|
||||
<string name="save">Lagre</string>
|
||||
<string name="reloadprofile">Les inn profil på nytt</string>
|
||||
<string name="smscommunicator">SMS tjeneste</string>
|
||||
<string name="smscommunicator">SMS-tjeneste</string>
|
||||
<string name="smscommunicator_allowednumbers">Godkjente mobilnumre</string>
|
||||
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
|
||||
<string name="smscommunicator_bolusreplywithcode">For å levere bolus på %1$.2fE, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_mealbolusreplywithcode">For å levere måltidsbolus på %1$.2fE, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_temptargetwithcode">For å sette Temp Target på %1$s, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_temptargetcancel">For å avbryte Temp Target, svar med kode %1$s</string>
|
||||
<string name="smscommunicator_stopsmswithcode">For å deaktivere fjernstyring via SMS meldinger, svar med kode %1$s.\n\nHusk at du vil kunne reaktivere den igjen kun fra AAPS master telefon.</string>
|
||||
<string name="smscommunicator_stoppedsms">Fjernstyring via SMS meldinger er stanset. For å reaktivere, bruk AAPS på master telefonen.</string>
|
||||
<string name="smscommunicator_stopsmswithcode">For å deaktivere fjernstyring via SMS-meldinger, svar med kode %1$s.\n\nHusk at du vil kunne reaktivere den igjen kun fra AAPS hovedtelefon.</string>
|
||||
<string name="smscommunicator_stoppedsms">Fjernstyring via SMS-meldinger er stanset. For å reaktivere, bruk AAPS på hovedtelefonen.</string>
|
||||
<string name="smscommunicator_calibrationreplywithcode">For å sende kalibrering %1$.2f, svar med kode %2$s</string>
|
||||
<string name="smscommunicator_bolusfailed">Bolus mislyktes</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_summary">Minimum antall minutter som må forløpe mellom en fjernstyrt bolus og den neste</string>
|
||||
<string name="smscommunicator_remotebolusmindistance">Minimum antall minutter mellom en fjernstyrt bolus og neste</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_caveat">For din egen sikkerhet, for å endre denne innstillingen må du legge til minst 2 telefonnumre.</string>
|
||||
<string name="smscommunicator_remotebolusmindistance_caveat">For din egen sikkerhet, må du legge til minst 2 telefonnumre for å endre denne innstillingen.</string>
|
||||
<string name="bolusrequested">Skal levere %1$.2f E</string>
|
||||
<string name="smscommunicator_bolusdelivered">Bolus %1$.2f E levert vellykket</string>
|
||||
<string name="smscommunicator_mealbolusdelivered">Måltidsbolus %1$.2f E levert vellykket</string>
|
||||
<string name="smscommunicator_mealbolusdelivered_tt">Temp target på %1$s er satt for %2$d minutter</string>
|
||||
<string name="smscommunicator_tt_set">Temp target på %1$s for %2$d minutter ble vellykket definert</string>
|
||||
<string name="smscommunicator_tt_canceled">Temp Target ble vellykket avbrutt</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Tillat fjernstyring via SMS meldinger</string>
|
||||
<string name="smscommunicator_bolusdelivered">Bolus på %1$.2f E er levert</string>
|
||||
<string name="smscommunicator_mealbolusdelivered">Måltidsbolus på %1$.2f E er levert</string>
|
||||
<string name="smscommunicator_mealbolusdelivered_tt">Temp target på %1$s er satt i %2$d minutter</string>
|
||||
<string name="smscommunicator_tt_set">Temp target på %1$s i %2$d minutter ble lagret</string>
|
||||
<string name="smscommunicator_tt_canceled">Temp Target ble fjernet</string>
|
||||
<string name="smscommunicator_remotecommandsallowed">Tillat fjernstyring via SMS-meldinger</string>
|
||||
<string name="smscommunicator_loophasbeendisabled">Loop har blitt deaktivert</string>
|
||||
<string name="smscommunicator_loophasbeenenabled">Loop har blitt aktivert</string>
|
||||
<string name="smscommunicator_loopisenabled">Loop er aktivert</string>
|
||||
|
@ -192,7 +193,7 @@
|
|||
<string name="smscommunicator_pumpdisconnected">Pumpe frakoblet</string>
|
||||
<string name="smscommunicator_reconnect">Pumpen tilkoblet igjen</string>
|
||||
<string name="smscommunicator_remotecommandnotallowed">Fjernstyringskommando er ikke tillatt</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Fjernstyrings bolus er ikke tilgjengelig. Prøv igjen senere.</string>
|
||||
<string name="smscommunicator_remotebolusnotallowed">Fjernstyringsbolus er ikke tilgjengelig. Prøv igjen senere.</string>
|
||||
<string name="smscommunicator_basalreplywithcode">For å starte basal %1$.2f E/t i %2$d minutter, svar med kode %3$s</string>
|
||||
<string name="smscommunicator_profilereplywithcode">For å bytte profil til %1$s %2$d%%, svar med kode %3$s</string>
|
||||
<string name="smscommunicator_extendedreplywithcode">For å starte forlenget bolus %1$.2f E i %2$d minutter, svar med kode %3$s</string>
|
||||
|
@ -226,9 +227,9 @@
|
|||
<string name="mealbolus">Måltid</string>
|
||||
<string name="correctionbous">Korreksjon</string>
|
||||
<string name="actions">Handlinger</string>
|
||||
<string name="ns_upload_only">(FARLIG Å DEAKTIVERE) Kun NS opplast</string>
|
||||
<string name="ns_upload_only">(FARLIG Å DEAKTIVERE) Kun NS opplasting</string>
|
||||
<string name="ns_upload_only_summary">Kun NS opplasting (deaktivert sync). Ikke effektiv på SGV med mindre en lokal kilde som xDrip+ er valgt. Ikke effektiv på Profiler mens NS-Profiler brukes.\n!!! ADVARSEL !!! Deaktivering av dette alternativet kan føre til funksjonsfeil og overdosering av insulin hvis noen av dine komponenter (AAPS, NS, xDrip+) er feil konfigurert. Observer at data som vises i AAPS samsvarer med pumpestatus!</string>
|
||||
<string name="pumpNotInitialized">Pumpen ikke initialisert!</string>
|
||||
<string name="pumpNotInitialized">Pumpen er ikke startet!</string>
|
||||
<string name="primefill">Prime/fylling</string>
|
||||
<string name="fillwarning">Kontroller at mengden samsvarer med spesifikasjonen for slangesettet ditt!</string>
|
||||
<string name="fillbolus_title">Standardverdier for påfyll/prime</string>
|
||||
|
@ -245,8 +246,8 @@
|
|||
<string name="wear">Klokke</string>
|
||||
<string name="resend_all_data">Send alle data på nytt</string>
|
||||
<string name="open_settings_on_wear">Åpne Innstillinger på klokken</string>
|
||||
<string name="basal_rate">Basal rate</string>
|
||||
<string name="basalvaluebelowminimum">Basal verdi under minimum. Profilen settes ikke!</string>
|
||||
<string name="basal_rate">Basalrate</string>
|
||||
<string name="basalvaluebelowminimum">Basalverdi under minimum. Profilen settes ikke!</string>
|
||||
<string name="sms_actualbg">BS:</string>
|
||||
<string name="sms_lastbg">Siste BS:</string>
|
||||
<string name="MM640g">MM640G</string>
|
||||
|
@ -256,11 +257,11 @@
|
|||
<string name="localprofile">Profil</string>
|
||||
<string name="openapsama">OpenAPS AMA</string>
|
||||
<string name="array_of_elements">Liste med %1$d elementer.\nFaktisk verdi:</string>
|
||||
<string name="openapsma_autosensdata_label">Autosens data</string>
|
||||
<string name="openapsma_autosensdata_label">Autosens-data</string>
|
||||
<string name="openapsma_scriptdebugdata_label">Script feilsøking</string>
|
||||
<string name="openapsama_useautosens">Bruk Autosens funksjon</string>
|
||||
<string name="refresheventsfromnightscout">Gjenoppfrisk fra NS</string>
|
||||
<string name="deletefuturetreatments">Slett behandlinger i fremtiden</string>
|
||||
<string name="deletefuturetreatments">Slett fremtidige behandlinger</string>
|
||||
<string name="actions_shortname">ACT</string>
|
||||
<string name="configbuilder_shortname">KONF</string>
|
||||
<string name="loop_shortname">LOOP</string>
|
||||
|
@ -281,12 +282,12 @@
|
|||
<string name="openapsama_current_basal_safety_multiplier_summary">Standardverdi: 4 Dette er en viktig OpenAPS sikkerhetsbegrensning. Dette begrenser dine temp basal til max 4 ganger din nåværende basal dose, uansett hva som er maks basal i pumpen. Dette er for å unngå at man setter farlige høye maks basal doser uten at man har forstått algoritmene. Når du taket i denne begrensningen bør du i stedet fokusere på å endre andre innstillinger.</string>
|
||||
<string name="openapsama_autosens_max_summary">Standardverdi: 1.2\nDetta er en multiplikatorbegrensning for autosens (og snart autotune) som begrenser at autosens ikke kan øke med mer enn 20%%, som dermed begrenser hvor mye autosens kan justere opp dine basaler, hvor mye ISK kan reduseres og hvor lavt BS målverdi kan settes.</string>
|
||||
<string name="openapsama_autosens_min_summary">Standardverdi: 0.7\nDette er en multiplikatorbegrensning for autosens sikkerhet. Den begrenser autosens til å redusere basalverdier, og øke isulinssensitivitet (ISF) og BS mål med ikke mer enn enn 30%.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens justerer også BS målverdier</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Standard verdi: sann\nGir autosens tillatelse til å justere BS mål, i tillegg til ISF og basaler.</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Standard verdi: 2\nBolus snooze er aktivt etter at du har gitt en måltidsbolus slik at loop ikke skal forsøke å sette lav-temp når du nettopp har spist. I dette eksempelet brukesg standardverdi på 2, så med en 3 timers DIA vil bolus snooze begrensning gradvis forsvinne etter 1.5 timer (3DIA / 2). Bolus snooze brukes ikke hvis SMB er aktivert.</string>
|
||||
<string name="openapsama_min_5m_carbimpact_summary">Standardverdi er: 3.0 (AMA) eller 8.0 (SMB). Dette er grunninnstillingen for KH opptak per 5 minutt. Den påvirker hvor raskt COB skal reduseres, og benyttes i beregning av fremtidig BS kurve når BS enten synker eller øker mer enn forventet. Standardverdi er 3mg/dl/5 min.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens justerer også BS-målverdier</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Standard verdi: sann\nGir autosens tillatelse til å justere BS-mål, i tillegg til ISF og basaler.</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Standard verdi: 2\nBolus-snooze er aktivt etter at du har gitt en måltidsbolus slik at loop ikke skal forsøke å sette lav-temp når du nettopp har spist. I dette eksempelet brukes standardverdi på 2, så med en 3 timers DIA vil bolus-snoozebegrensning gradvis forsvinne etter 1.5 timer (3DIA / 2). Bolus-snooze brukes ikke hvis SMB er aktivert.</string>
|
||||
<string name="openapsama_min_5m_carbimpact_summary">Standardverdi er: 3.0 (AMA) eller 8.0 (SMB). Dette er grunninnstillingen for KH-opptak per 5 minutt. Den påvirker hvor raskt COB skal reduseres, og benyttes i beregning av fremtidig BS-kurve når BS enten synker eller øker mer enn forventet. Standardverdi er 3mg/dl/5 min.</string>
|
||||
<string name="openapsama_link_to_preferncejson_doc_txt">Advarsel!\nNormalt vil du ikke trenge å endre verdiene under. Vennligst TRYKK HER og LES teksten for å være sikker på at du FORSTÅR konsekvensene før du gjør endringer.</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Ugyldig SMS mobilnummer</string>
|
||||
<string name="smscommunicator_invalidphonennumber">Ugyldig mobilnummer for SMS</string>
|
||||
<string name="overview_calibration">Kalibrering</string>
|
||||
<string name="xdripnotinstalled">xDrip+ ikke installert</string>
|
||||
<string name="calibrationsent">Kalibrering er sendt til xDrip+</string>
|
||||
|
@ -294,7 +295,7 @@
|
|||
<string name="smscommunicator_calibrationfailed">xDrip+ tar ikke imot kalibreringer</string>
|
||||
<string name="pumpsuspended">Pumpen er pauset</string>
|
||||
<string name="executing">Utfører</string>
|
||||
<string name="virtualpump_settings">Virtuelle pumpe innstillinger</string>
|
||||
<string name="virtualpump_settings">Innstillinger for virtuell pumpe</string>
|
||||
<string name="virtualpump_uploadstatus_title">Last opp status til Nightscout</string>
|
||||
<string name="nsclientinternal">NSClient</string>
|
||||
<string name="nsclientinternal_shortname">NSCI</string>
|
||||
|
@ -304,40 +305,40 @@
|
|||
<string name="nsclientinternal_title">NSClient</string>
|
||||
<string name="nsclientinternal_url_title">Nightscout URL</string>
|
||||
<string name="nsclientinternal_url_dialogmessage">Oppgi din Nightscout URL</string>
|
||||
<string name="nsclientinternal_secret_title">Nightscout API secret</string>
|
||||
<string name="nsclientinternal_secret_dialogtitle">Nightscout API secret</string>
|
||||
<string name="nsclientinternal_secret_dialogmessage">Oppgi NS API secret (min 12 tegn)</string>
|
||||
<string name="nsclientinternal_secret_title">Nightscout API-nøkkel</string>
|
||||
<string name="nsclientinternal_secret_dialogtitle">Nightscout API-nøkkel</string>
|
||||
<string name="nsclientinternal_secret_dialogmessage">Oppgi NS API-nøkkel (min 12 tegn)</string>
|
||||
<string name="deliver_now">Lever nå</string>
|
||||
<string name="clear_queue">Tøm kø</string>
|
||||
<string name="show_queue">Vis kø</string>
|
||||
<string name="queue">Kø:</string>
|
||||
<string name="status">Status:</string>
|
||||
<string name="clearlog">Tøm logg</string>
|
||||
<string name="nowritepermission">NSCLIENT har ingen skriverettighet. Feil API secret?</string>
|
||||
<string name="wear_settings">Klokke innstillinger</string>
|
||||
<string name="nowritepermission">NSCLIENT har ingen skriverettighet. Feil API-nøkkel?</string>
|
||||
<string name="wear_settings">Klokkeinnstillinger</string>
|
||||
<string name="wear_detailedIOB_title">Vis detaljert IOB</string>
|
||||
<string name="wear_detailedIOB_summary">Vis IOB med bolus och basal IOB på klokke</string>
|
||||
<string name="nosuccess">mislykket - sjekk telefonen</string>
|
||||
<string name="wear_detailedIOB_summary">Splitt IOB til bolus- og basal-IOB på klokken</string>
|
||||
<string name="nosuccess">feilet - sjekk telefonen</string>
|
||||
<string name="notavailable">n/a</string>
|
||||
<string name="patientage">Pasient type</string>
|
||||
<string name="patientage">Pasienttype</string>
|
||||
<string name="child">Barn</string>
|
||||
<string name="teenage">Tenåring</string>
|
||||
<string name="adult">Voksen</string>
|
||||
<string name="resistantadult">Insulin resistent voksen</string>
|
||||
<string name="resistantadult">Insulinresistent voksen</string>
|
||||
<string name="pregnant">Graviditet</string>
|
||||
<string name="patientage_summary">Velg pasientens type for oppsett av sikkerhetsgrenser</string>
|
||||
<string name="patient_name">Pasientens navn</string>
|
||||
<string name="patientage_summary">Velg pasienttype for oppsett av sikkerhetsgrenser</string>
|
||||
<string name="patient_name">Pasientnavn</string>
|
||||
<string name="patient_name_summary">Angi pasientnavn eller kallenavn for å kunne skille mellom flere oppsett</string>
|
||||
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Bruker</string>
|
||||
<string name="Glimp">Glimp</string>
|
||||
<string name="needwhitelisting">%1$s behøver å omgå batterispare funksjonene for å fungere tilfredsstillende</string>
|
||||
<string name="needwhitelisting">%1$s behøver å omgå batterisparefunksjonene for å fungere tilfredsstillende</string>
|
||||
<string name="loopsuspended">Loop pauset</string>
|
||||
<string name="loopsuspendedfor">Pauset (%1$d m)</string>
|
||||
<string name="suspendloopfor1h">Pause loop i 1t</string>
|
||||
<string name="suspendloopfor2h">Pause loop i 2t</string>
|
||||
<string name="suspendloopfor3h">Pause loop i 3t</string>
|
||||
<string name="suspendloopfor10h">Pause loop i 10t</string>
|
||||
<string name="disconnectpump">Frakoble pumpe</string>
|
||||
<string name="disconnectpump">Koble fra pumpen</string>
|
||||
<string name="disconnectpumpfor15m">Koble fra pumpen i 15 min</string>
|
||||
<string name="disconnectpumpfor30m">Koble fra pumpen i 30 min</string>
|
||||
<string name="disconnectpumpfor1h">Koble fra pumpen i 1t</string>
|
||||
|
@ -350,36 +351,36 @@
|
|||
<string name="duration3h">3 timer</string>
|
||||
<string name="duration10h">10 timer</string>
|
||||
<string name="resume">Gjenoppta</string>
|
||||
<string name="reconnect">Tilkoble pumpen</string>
|
||||
<string name="reconnect">Koble til pumpen</string>
|
||||
<string name="smscommunicator_wrongduration">Feil varighet</string>
|
||||
<string name="smscommunicator_loopsuspended">Loop er pauset</string>
|
||||
<string name="smscommunicator_loopresumed">Loop gjenopptatt</string>
|
||||
<string name="bg_trend_label">15 min trend</string>
|
||||
<string name="treatments_wizard_cob_label">COB</string>
|
||||
<string name="superbolus">Superbolus</string>
|
||||
<string name="ns_logappstartedevent">Logg app start til NS</string>
|
||||
<string name="restartingapp">Avslutter appen for at innstillinger skal tas i bruk.</string>
|
||||
<string name="ns_logappstartedevent">Logg app-start til NS</string>
|
||||
<string name="restartingapp">Avslutter appen for å aktivere innstillinger.</string>
|
||||
<string name="configbuilder_insulin_description">Hvilken type insulin bruker du?</string>
|
||||
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
||||
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
||||
<string name="insulin_shortname">INS</string>
|
||||
<string name="enablesuperbolus">Aktiver superbolus i veiviser</string>
|
||||
<string name="enablesuperbolus_summary">Aktiver superbolus funksjonen i wizard. Ikke aktiver denne før du vet hvordan den fungerer. DEN KAN LEDE TIL EN OVERDOSERING AV INSULIN HVIS DEN BRUKES BLINDT!</string>
|
||||
<string name="show_statuslights">Vis statusindikatorer på hjem skjermen</string>
|
||||
<string name="statuslights_cage_warning">OBS: alder slangesett [h]</string>
|
||||
<string name="statuslights_cage_critical">Advarsel: alder slangesett [h]</string>
|
||||
<string name="statuslights_iage_warning">OBS: alder insulin [h]</string>
|
||||
<string name="statuslights_iage_critical">Advarsel: alder insulin [h]</string>
|
||||
<string name="statuslights_sage_warning">OBS: alder CGM [h]</string>
|
||||
<string name="statuslights_sage_critical">Advarsel: alder CGM [h]</string>
|
||||
<string name="statuslights_sbat_warning">Nivå for når batterivarsel skal gis [%]</string>
|
||||
<string name="statuslights_sbat_critical">Nivå for når kritisk batteriadvarsel skal gis [%]</string>
|
||||
<string name="statuslights_bage_warning">Nivå for når batterivarsel for pumpe skal gis [h]</string>
|
||||
<string name="statuslights_bage_critical">Nivå for når kritisk batteriadvarsel for pumpe skal gis [h]</string>
|
||||
<string name="statuslights_res_warning">OBS: nivå insulinreservoar [U]</string>
|
||||
<string name="statuslights_res_critical">Advarsel: nivå insulinreservoar [U]</string>
|
||||
<string name="statuslights_bat_warning">Nivå for når batterivarsel for pumpe skal gis [%]</string>
|
||||
<string name="statuslights_bat_critical">Nivå for når kritisk batteriadvarsel for pumpe skal gis [%]</string>
|
||||
<string name="enablesuperbolus_summary">Aktiver superbolus-funksjonen i veiviseren. Ikke aktiver denne før du vet hvordan den fungerer. DEN KAN LEDE TIL EN OVERDOSERING AV INSULIN HVIS DEN BRUKES BLINDT!</string>
|
||||
<string name="show_statuslights">Vis statusindikatorer på hjem-skjermen</string>
|
||||
<string name="statuslights_cage_warning">Terskel for advarsel, alder på slangesett [h]</string>
|
||||
<string name="statuslights_cage_critical">Terskel for kritisk alder på slangesett [h]</string>
|
||||
<string name="statuslights_iage_warning">Terskel for advarsel, alder på insulin [h]</string>
|
||||
<string name="statuslights_iage_critical">Terskel for kritisk alder på insulin [h]</string>
|
||||
<string name="statuslights_sage_warning">Terskel for advarsel, alder på CGM [h]</string>
|
||||
<string name="statuslights_sage_critical">Terskel for kritisk alder på CGM [h]</string>
|
||||
<string name="statuslights_sbat_warning">Terskel for advarsel, batterinivå for sensor [%]</string>
|
||||
<string name="statuslights_sbat_critical">Terskel for kritisk batterinivå for sensor [%]</string>
|
||||
<string name="statuslights_bage_warning">Terskel for advarsel, batterialder for pumpe [h]</string>
|
||||
<string name="statuslights_bage_critical">Terskel for kritisk batterialder for pumpe [h]</string>
|
||||
<string name="statuslights_res_warning">Terskel for advarsel, insulinreservoar [U]</string>
|
||||
<string name="statuslights_res_critical">Terskel for kritisk insulinreservoar [U]</string>
|
||||
<string name="statuslights_bat_warning">Terskel for advarsel, batterinivå for pumpe [%]</string>
|
||||
<string name="statuslights_bat_critical">Terskel for kritisk batterinivå for pumpe [%]</string>
|
||||
<string name="prediction_shortname">PROGN</string>
|
||||
<string name="basal_shortname">BAS</string>
|
||||
<string name="deviation_shortname">DEV</string>
|
||||
|
@ -388,8 +389,8 @@
|
|||
<string name="abs_insulin_shortname">ABS</string>
|
||||
<string name="devslope_shortname">DEVSLOPE</string>
|
||||
<string name="nav_about">Om</string>
|
||||
<string name="smscommunicator_missingsmspermission">Mangler SMS tillatelse</string>
|
||||
<string name="smscommunicator_missingphonestatepermission">Mangler app tillatelse til telefon</string>
|
||||
<string name="smscommunicator_missingsmspermission">Mangler SMS-tillatelse</string>
|
||||
<string name="smscommunicator_missingphonestatepermission">Appen mangler tilgang til telefonstatus</string>
|
||||
<string name="xdripstatus_settings">xDrip+ Status (klokke)</string>
|
||||
<string name="xdripstatus">xDrip+ Statuslinje (klokke)</string>
|
||||
<string name="xdripstatus_shortname">xds</string>
|
||||
|
@ -399,47 +400,47 @@
|
|||
<string name="doprofileswitch">Gjør profilbytte</string>
|
||||
<string name="careportal_sensor_label">Sensor</string>
|
||||
<string name="careportal_insulin_label">Insulin</string>
|
||||
<string name="careportal_pb_label">Pumpe batteri</string>
|
||||
<string name="careportal_pb_label">Pumpebatteri</string>
|
||||
<string name="careportal_age_label">alder:</string>
|
||||
<string name="careportal_level_label">nivå:</string>
|
||||
<string name="ns_alarmoptions">Alarm valg</string>
|
||||
<string name="ns_alarms">Opprett varsler fra NS alarmer</string>
|
||||
<string name="ns_announcements">Opprett varsler fra NS meldinger</string>
|
||||
<string name="nsalarm_staledatavalue_label">Ingen data advarsel [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Kritisk mangel på data advarsel [min]</string>
|
||||
<string name="ns_alarmoptions">Alarmvalg</string>
|
||||
<string name="ns_alarms">Opprett varsler fra NS-alarmer</string>
|
||||
<string name="ns_announcements">Opprett varsler fra NS-meldinger</string>
|
||||
<string name="nsalarm_staledatavalue_label">Advarsel ved manglende data [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Advarsel ved kritisk mangel på data [min]</string>
|
||||
<string name="openapsama_autosens_period">Intervall for autosens [h]</string>
|
||||
<string name="openapsama_autosens_period_summary">Antall timer med historiske data for beregning av sensitivitet (absorpsjonstid for KH er ekskludert)</string>
|
||||
<string name="openaps">OpenAPS</string>
|
||||
<string name="uploader">Opplaster</string>
|
||||
<string name="configbuilder_sensitivity">Sensitivitets deteksjon</string>
|
||||
<string name="configbuilder_sensitivity">Sensitivitetsdeteksjon</string>
|
||||
<string name="configbuilder_sensitivity_description">Hvilken sensitivitetsalgoritme skal benyttes?</string>
|
||||
<string name="sensitivity_shortname">SENS</string>
|
||||
<string name="sensitivityoref1">Sensitivitet Oref1</string>
|
||||
<string name="sensitivityaaps">Sensitivitet AAPS</string>
|
||||
<string name="absorptionsettings_title">Absorpsjon innstillinger</string>
|
||||
<string name="absorptionsettings_title">Absorpsjonsinnstillinger</string>
|
||||
<string name="absorption_maxtime_title">Maks absorpsjonstid for måltid [h]</string>
|
||||
<string name="absorption_maxtime_summary">Tid i timer hvor det forventes at alle karbohydrater fra måltid vil være absorbert</string>
|
||||
<string name="openaps_short">OAPS</string>
|
||||
<string name="uploader_short">UPLD</string>
|
||||
<string name="basal_short">BAS</string>
|
||||
<string name="keep_screen_on_title">Hold skjermen påslått</string>
|
||||
<string name="keep_screen_on_summary">Forhindre Android å slå av skjermen. Mobil vil bruke mye batteri hvis den ikke plugges til strømledning.</string>
|
||||
<string name="sensitivity_warning">Hvis du slår på Autosense funksjonen må du huske å angi alle spiste karbohydrater. Ellers vil KH avvik gi feil i sensitivitetsberegningen !!</string>
|
||||
<string name="keep_screen_on_summary">Forhindre Android fra å slå av skjermen. Mobilen vil bruke mye batteri hvis den ikke plugges til strømledning.</string>
|
||||
<string name="sensitivity_warning">Hvis du slår på Autosense-funksjonen må du huske å angi alle spiste karbohydrater. Ellers vil KH-avvik gi feil i sensitivitetsberegningen !!</string>
|
||||
<string name="sensitivityweightedaverage">Sensitivitet vektet middelverdi</string>
|
||||
<string name="notloadedplugins">Ikke alle profiler ble lastet!</string>
|
||||
<string name="valuesnotstored">Verdier ikke lagret!</string>
|
||||
<string name="ns_localbroadcasts">Aktiver kringkasting til andre apper (som xDrip+). Ikke aktiver dette hvis du har mer enn en AAPS eller NSClient installert!</string>
|
||||
<string name="ns_localbroadcasts_title">Aktiver lokale sendinger.</string>
|
||||
<string name="ns_localbroadcasts">Aktiver kringkasting til andre apper (som xDrip+). Ikke aktiver dette hvis du har mer enn én AAPS eller NSClient installert!</string>
|
||||
<string name="ns_localbroadcasts_title">Aktiver deling av data mellom apper på telefonen.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamisk ISF</string>
|
||||
<string name="DynISFAdjust_title">DynamiskISF justeringsfaktor %%</string>
|
||||
<string name="DynISFAdjust_summary">Justeringsfaktor for dynamisk ISF. Verdier over 100%% vil gi mer aggressive korreksjonsdoser, mens verdier under 100%% vil gi mildere korreksjonsdoser.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">DynamiskISF justeringsfaktor %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Justeringsfaktor for dynamisk ISF. Verdier over 100% vil gi mer aggressive korreksjonsdoser, mens verdier under 100% vil gi mildere korreksjonsdoser.</string>
|
||||
<string name="enableuam">Aktiver UAM</string>
|
||||
<string name="enablesmb">Aktiver SMB</string>
|
||||
<string name="enablesmb_summary">Bruk Super Mikro Solen i stedet for temp basal for raskere resultat</string>
|
||||
<string name="enableuam_summary">Oppdaget uannonsert måltid (UAM)</string>
|
||||
<string name="insulin_oref_peak">IOB kurvens topp tid</string>
|
||||
<string name="insulin_peak_time">Topp tid [min]</string>
|
||||
<string name="enablesmb_summary">Bruk Super Mikro Bolus i stedet for temp basal for raskere resultat</string>
|
||||
<string name="enableuam_summary">Oppdag uannonsert måltid (UAM)</string>
|
||||
<string name="insulin_oref_peak">IOB-kurvens topptid</string>
|
||||
<string name="insulin_peak_time">Topptid [min]</string>
|
||||
<string name="insulin_peak">Topp</string>
|
||||
<string name="free_peak_oref">Free-Peak Oref</string>
|
||||
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
|
||||
|
@ -451,10 +452,10 @@
|
|||
<string name="careportal_newnstreatment_percentage_label">Prosent</string>
|
||||
<string name="careportal_newnstreatment_timeshift_label">Tidsforskyving</string>
|
||||
<string name="default_temptargets">Standard temp mål</string>
|
||||
<string name="eatingsoon_duration">spise snart varighet</string>
|
||||
<string name="eatingsoon_target">spise snart målverdi</string>
|
||||
<string name="activity_duration">aktivitet varighet</string>
|
||||
<string name="activity_target">aktivitet målverdi</string>
|
||||
<string name="eatingsoon_duration">spise snart-varighet</string>
|
||||
<string name="eatingsoon_target">spise snart-målverdi</string>
|
||||
<string name="activity_duration">varighet for aktivitet</string>
|
||||
<string name="activity_target">målverdi ved aktivitet</string>
|
||||
<string name="hypo_duration">hypo varighet</string>
|
||||
<string name="hypo_target">hypo målverdi</string>
|
||||
<string name="reuse_profile_pct_hours">Gjenbruk %1$d%% %2$dt</string>
|
||||
|
@ -468,52 +469,52 @@
|
|||
<string name="shortprotein">Pr</string>
|
||||
<string name="shortfat">Fett</string>
|
||||
<string name="executingrightnow">Kommandoen utføres akkurat nå</string>
|
||||
<string name="missed_bg_readings">Mangler BS målinger</string>
|
||||
<string name="missed_bg_readings">Mangler BS-målinger</string>
|
||||
<string name="raise_notifications_as_android_notifications">Bruk systemvarslinger for alarmer og varslinger</string>
|
||||
<string name="gradually_increase_notification_volume">Øk volumet gradvis for alarmer og varsler</string>
|
||||
<string name="localalertsettings_title">Lokale varsler</string>
|
||||
<string name="enable_missed_bg_readings_alert">Varsel hvis ingen BS data mottas</string>
|
||||
<string name="enable_missed_bg_readings_alert">Varsel hvis ingen BS-data mottas</string>
|
||||
<string name="enable_pump_unreachable_alert">Varsel hvis pumpen er utilgjengelig</string>
|
||||
<string name="pump_unreachable_threshold">Pumpen er ikke tilgjengelig etter [min]</string>
|
||||
<string name="enable_carbs_req_alert">Varsel hvis karbohydrater må tilføres</string>
|
||||
<string name="urgent_alarm">Kritisk alarm</string>
|
||||
<string name="info">INFO</string>
|
||||
<string name="eversense">Eversense App (patched)</string>
|
||||
<string name="dexcomg5_nsupload_title">Last opp BS data til NS</string>
|
||||
<string name="bgsource_upload">BS opplast innstillinger</string>
|
||||
<string name="dexcomg5_nsupload_title">Last opp BS-data til NS</string>
|
||||
<string name="bgsource_upload">Innstillinger for opplasting av BS</string>
|
||||
<string name="wear_detailed_delta_title">Vis detaljer om delta</string>
|
||||
<string name="wear_detailed_delta_summary">Vis delta med én ekstra desimal</string>
|
||||
<string name="smbinterval_summary">Minste antall minutter mellom hver SMB</string>
|
||||
<string name="smbmaxminutes_summary">Maks antall minutter med basal som kan bli SMB</string>
|
||||
<string name="uamsmbmaxminutes">UAM SMB maks minutter</string>
|
||||
<string name="uamsmbmaxminutes_summary">Maks antall minutter basal som kan bli SMB ved UAM</string>
|
||||
<string name="carbsReqThreshold">Minimumsgrense for KH forslag</string>
|
||||
<string name="carbsReqThreshold">Minimumsgrense for KH-forslag</string>
|
||||
<string name="carbsReqThreshold_summary">Minimum mengde karbohydrater i gram for å vise advarsel. Behov under denne grenseverdien vil ikke vises som et varsel.</string>
|
||||
<string name="dexcomg5_xdripupload_title">Send BS data til xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">I xDrip+ velg 640G/Eversens som datakilde</string>
|
||||
<string name="dexcomg5_xdripupload_title">Send BS-data til xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">I xDrip+, velg 640G/Eversens som datakilde</string>
|
||||
<string name="nsclientbg">NSClient BS</string>
|
||||
<string name="nsclientbgshort">NS BS</string>
|
||||
<string name="overview_editquickwizard_usebg">BS beregning</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolus IOB beregning</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Basal IOB beregning</string>
|
||||
<string name="overview_editquickwizard_usetrend">Trend beregning</string>
|
||||
<string name="overview_editquickwizard_usesuperbolus">Superbolus beregning</string>
|
||||
<string name="overview_editquickwizard_usebg">BS-beregning</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Bolus IOB-beregning</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Basal IOB-beregning</string>
|
||||
<string name="overview_editquickwizard_usetrend">Trendberegning</string>
|
||||
<string name="overview_editquickwizard_usesuperbolus">Superbolus-beregning</string>
|
||||
<string name="positiveonly">Bare positive</string>
|
||||
<string name="negativeonly">Bare negative</string>
|
||||
<string name="overview_editquickwizard_usecob">COB beregning</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Temp target beregning</string>
|
||||
<string name="overview_editquickwizard_usepercentage">Prosent beregning</string>
|
||||
<string name="overview_editquickwizard_usecob">COB-beregning</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Beregning av temp target</string>
|
||||
<string name="overview_editquickwizard_usepercentage">Prosentvis beregning</string>
|
||||
<string name="loopenabled">Loop er aktivert</string>
|
||||
<string name="apsselected">APS valgt</string>
|
||||
<string name="nsclienthaswritepermission">NSClient har skrive rettigheter</string>
|
||||
<string name="nsclienthaswritepermission">NSClient har skriverettigheter</string>
|
||||
<string name="closedmodeenabled">Lukket loop aktivert</string>
|
||||
<string name="maxiobset">Maks IOB er angitt riktig</string>
|
||||
<string name="hasbgdata">BS tilgjengelig fra valgt kilde</string>
|
||||
<string name="extendedbolusdeliveryerror">Forlenget bolus feilet</string>
|
||||
<string name="enablesmbalways">Aktiverer alltid SMB</string>
|
||||
<string name="enablesmbalways">Aktiver alltid SMB</string>
|
||||
<string name="enablesmbalways_summary">Aktiver alltid SMB uavhengig av boluser. Bare mulig med en bra filtrert BS kilde som f.eks. Dexcom G5/G6</string>
|
||||
<string name="enablesmbaftercarbs">Aktiver SMB etter karbohydrater</string>
|
||||
<string name="enablesmbaftercarbs_summary">Aktiver SMB i 6t etter karbohydrat inntak, selv med 0 IOB. Bare mulig med en bra filtrert BS kilde som f. eks. Dexcom G5/G6</string>
|
||||
<string name="enablesmbaftercarbs_summary">Aktiver SMB i 6t etter karbohydratinntak, selv med 0 IOB. Bare mulig med en bra filtrert BS kilde som f. eks. Dexcom G5/G6</string>
|
||||
<string name="enablesmbwithcob">Aktiver SMB med COB</string>
|
||||
<string name="enablesmbwithcob_summary">Aktiver SMB når COB er aktiv.</string>
|
||||
<string name="enablesmbwithtemptarget">Aktiver SMB med temp målverdi</string>
|
||||
|
@ -523,7 +524,7 @@
|
|||
<string name="overview_insulin_label">Insulin</string>
|
||||
<string name="overview_buttons_selection">Knapper</string>
|
||||
<string name="show_calibration_button_summary">Sender en kalibrering til xDrip+ eller åpne kalibreringsdialogen i BYODA</string>
|
||||
<string name="show_cgm_button_summary">Åpner xDrip+ eller BYODA, tilbake knappen får deg tilbake til AAPS</string>
|
||||
<string name="show_cgm_button_summary">Åpner xDrip+ eller BYODA, tilbake-knappen får deg tilbake til AAPS</string>
|
||||
<string name="carb_increment_button_message">Antall karbohydrater som skal legges til når knappen trykkes</string>
|
||||
<string name="insulin_increment_button_message">Mengde insulin som skal legges til når knappen trykkes inn</string>
|
||||
<string name="error_starting_cgm">Kunne ikke starte CGM-programmet. Kontroller at det er installert.</string>
|
||||
|
@ -565,7 +566,7 @@
|
|||
<string name="start_hypo_tt">Start Hypo TT</string>
|
||||
<string name="closed_loop_disabled_on_dev_branch">Du kjører dev-versjonen. Lukket loop ikke aktivert.</string>
|
||||
<string name="engineering_mode_enabled">Engineering Mode aktivert</string>
|
||||
<string name="profileswitch_ismissing">Profil bytte mangler. Utfør et profil bytte og trykk på \"Aktiver profil\" i din lokale profil.</string>
|
||||
<string name="profileswitch_ismissing">Profilbytte mangler. Utfør et profilbytte og trykk på \"Aktiver profil\" i din lokale profil.</string>
|
||||
<string name="pumpisnottempbasalcapable">Pumpen støtter ikke temp basaler</string>
|
||||
<string name="closedmodedisabledinpreferences">Lukket Loop deaktivert i innstillinger</string>
|
||||
<string name="autosensdisabledinpreferences">Autosens deaktivert i innstillinger</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Denne verdien kalles Maks IOB av OpenAPS\nOpenAPS vil ikke gi mere insulin hvis mengden insulin ombord (IOB) overstiger denne verdien</string>
|
||||
<string name="absorption_cutoff_title">Maks absorpsjonstid for måltid [h]</string>
|
||||
<string name="absorption_cutoff_summary">Etter denne tiden forventes det at måltidet er absorbert. Eventuelle gjenværende karbo vil tas ut av beregninger.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">BS er under terskelverdi slik at all insulintilførsel stoppes. Mulighet for bruker å definere verdier mellom 3.3mmol/l (60mg/dl) og 5.5mmol/l (100mg/dl). Verdier under 3.6/65 bruker standard målverdier</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Vis merknadsfelt i dialogvindu for Behandlinger</string>
|
||||
<string name="next_button">Neste</string>
|
||||
<string name="previous_button">Forrige</string>
|
||||
|
@ -968,7 +970,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Maks-BS utenfor område!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Temp target:\nMin: %1$s\nMaks: %2$s\nVarighet: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">TempTarget:\nMål: %1$s\nVarighet: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">TempTarget:\nMin: %1$s\nMål: %2$s\nVarighet: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">TempTarget:\nÅrsak: %1$s\nMål: %2$s\nVarighet: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\ninsulin: %2$.2fE\nKarbo: %3$dg</string>
|
||||
<string name="wizard_result">Kalk. Wizard:\nInsulin: %1$.2fE\nKarbo: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Vis oppføring på enhet:</string>
|
||||
|
@ -998,7 +1000,7 @@
|
|||
<string name="refresh_from_nightscout">Oppdater fra Nightscout</string>
|
||||
<string name="remove_selected_items">Fjern valgte elementer</string>
|
||||
<string name="select_for_removal">Velg hva som skal fjernes</string>
|
||||
<string name="profile_changes">Profil endringer</string>
|
||||
<string name="profile_changes">Profilendringer</string>
|
||||
<string name="tempt_targets">Temp Target</string>
|
||||
<string name="carbs_and_bolus">Karbohydrater og bolus</string>
|
||||
<string name="confirm_remove_multiple_items">Er du sikker på at du vil fjerne %1$d elementer</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Umowa licencyjna użytkownika końcowego</string>
|
||||
<string name="end_user_license_agreement_text">NIE MOŻE BY WYKORZYSTYWANY DO PODEJMOWANIA DECYZJI MEDYCZNYCH. NIE MA ŻADNEJ GWARANCJI NA PROGRAM, W ZAKRESIE DOZWOLONYM PRZEZ OBOWIĄZUJĄCE PRAWO. Z WYJĄTKIEM PRZYPADKÓW, GDY W INNY SPOSÓB PISMO OŚWIADCZENIA PRAW AUTORSKICH I / LUB INNYCH STRON, PRZEDSTAWIAĆ PROGRAM \"W STANIE TAKIM, W JAKIM SIĘ ZNAJDUJE\" BEZ JAKIEJKOLWIEK GWARANCJI, WYRAŹNEJ LUB DOMNIEMANEJ, W TYM MIĘDZY INNYMI DOMNIEMANYCH GWARANCJI PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. CAŁKOWITE RYZYKO ZWIĄZANE Z JAKOŚCIĄ I WYNIKIEM PROGRAMU JEST PO PAŃSTWA STRONIE. W PRZYPADKU USZKODZENIA PROGRAMU UŻYTKOWNIK PONOSI KOSZT CAŁEGO NIEZBĘDNEGO SERWISU, NAPRAWY LUB POPRAWEK. W PRZYPADKU NIEPOROZUMIEŃ ZASTOSOWANIE PRAWNE MA UMOWA W ANGIELSKIEJ WERSJI JĘZYKOWEJ!!!</string>
|
||||
<string name="end_user_license_agreement_i_understand">ROZUMIEM I WYRAŻAM ZGODĘ</string>
|
||||
<string name="save">ZACHOWAJ</string>
|
||||
<string name="reloadprofile">Załaduj profil ponownie</string>
|
||||
<string name="smscommunicator">Komunikator SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Dozwolone numery telefonów</string>
|
||||
|
@ -893,5 +894,10 @@
|
|||
<string name="not_available_full">Niedostępne</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="remove_selected_items">Usuń wybrane pozycje</string>
|
||||
<string name="confirm_remove_multiple_items">Czy na pewno chcesz usunąć %1$d pozycji</string>
|
||||
<string name="count_selected">Wybrany %1$d</string>
|
||||
<string name="sort_label">Sortuj</string>
|
||||
<string name="login">Zaloguj się</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -413,8 +413,6 @@
|
|||
<string name="ns_localbroadcasts_title">Ativar partilha local.</string>
|
||||
<string name="openapssmb">SMB OpenAPS</string>
|
||||
<string name="openaps_smb_dynamic_isf">FSI Dinâmico</string>
|
||||
<string name="DynISFAdjust_title">Fator de Ajuste FSI dinâmico %%</string>
|
||||
<string name="DynISFAdjust_summary">Fator de ajuste para FSI dinâmico. Defina mais de 100%% para doses de correção mais agressivas e menos de 100%% para correções menos agressivas.</string>
|
||||
<string name="enableuam">Ativar UAM</string>
|
||||
<string name="enablesmb">Ativar SMB</string>
|
||||
<string name="enablesmb_summary">Use Super Micro Boluses em vez de basal temp para uma ação mais rápida</string>
|
||||
|
@ -865,7 +863,6 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Glicemia maxima fora da meta!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Alvo temporário:\nMin: %1$s\nMax: %2$s\nDuração: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Alvo temporário:\nTarget: %1$s\nDuration: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Alvo temporário:\Reason: %1$s\nTarget: %2$s\nDuration: %3$s</string>
|
||||
<string name="quick_wizard_message">Assistente rápido: %1$s\nInsulin: %2$.2fU\nCarbs: %3$dg</string>
|
||||
<string name="wizard_result">Calculadora:\nInsulin: %1$.2fU\nCarbs: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Mostrar entrada no dispositivo:</string>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Condições de Utilização</string>
|
||||
<string name="end_user_license_agreement_text">NÃO DEVE SER USADO PARA FAZER DECISÕES MÉDICAS. NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELA LEGISLAÇÃO APLICÁVEL. EXCEPTO QUANDO DE OUTRA FORMA, POR ESCRITO, OS TITULARES DOS DIREITOS DE AUTOR E / OU OUTRAS PARTES FORNECEM O PROGRAMA “TAL COMO ESTÁ”, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. TODO O RISCO QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É CONSIGO. CASO O PROGRAMA SEJA DEFEITUOSO, ASSUME O CUSTO DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIOS.</string>
|
||||
<string name="end_user_license_agreement_i_understand">EU ENTENDO E CONCORDO</string>
|
||||
<string name="save">Guardar</string>
|
||||
<string name="reloadprofile">Recarregar perfil</string>
|
||||
<string name="smscommunicator">Comunicador SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Número de telefones permitidos</string>
|
||||
|
@ -894,5 +895,6 @@
|
|||
<string name="not_available_full">Indisponível</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="login">Login</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -159,6 +159,7 @@
|
|||
<string name="end_user_license_agreement">Licență utilizator final</string>
|
||||
<string name="end_user_license_agreement_text">NU FOLOSIȚI PENTRU LUAREA DE DECIZII MEDICALE. NU EXISTĂ RĂSPUNDERE LEGALĂ SAU GARANȚIE PENTRU ACEST PROGRAM, ÎN LIMITA APLICABILĂ A LEGII. CU EXCEPTIA CAZURILOR SPECIAL MENȚIONATE, AUTORUL ȘI/SAU ALTE PERSOANE IMPLICATE PUN LA DISPOZIȚIE ACEST PROGRAM FĂRĂ NICIO GARANȚIE, IMPLICITĂ SAU EXPLICITĂ, INCLUZÂND, DAR FĂRĂ A SE LIMITA LA, GARANȚIILE LEGATE DE VĂNZAREA SAU POTRIVIREA PENTRU UN ANUME SCOP. ÎNTREGUL RISC LEGAT DE CALITATEA ȘI PERFORMANȚA ACESTUI PROGRAM CAD ÎN RESPONSABILITATEA DUMNEAVOASTRĂ. DACĂ PROGRAMUL SE DOVEDEȘTE A FI DEFECT, DUMNEAVOASTRĂ VĂ ASUMAȚI ÎNTREAGA RĂSPUNDERE, PRECUM ȘI TOATE COSTURILE LEGATE DE SERVICE, REPARAȚII SAU CORECȚII.</string>
|
||||
<string name="end_user_license_agreement_i_understand">ÎNȚELEG ȘI SUNT DE ACORD</string>
|
||||
<string name="save">Salvează</string>
|
||||
<string name="reloadprofile">Reîncarcă profilul</string>
|
||||
<string name="smscommunicator">Comunicator SMS</string>
|
||||
<string name="smscommunicator_allowednumbers">Numere de telefon permise</string>
|
||||
|
@ -894,5 +895,8 @@
|
|||
<string name="not_available_full">Nu este disponibil</string>
|
||||
<!-- Theme switcher dark and light mode-->
|
||||
<!-- WEAR OS-->
|
||||
<string name="confirm_remove_multiple_items">Sigur vrei să elimini %1$d element(e)</string>
|
||||
<string name="sort_label">Sortează</string>
|
||||
<string name="login">Autentificare</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -432,8 +432,6 @@
|
|||
<string name="ns_localbroadcasts_title">Активировать локальную передачу</string>
|
||||
<string name="openapssmb">Супер микро болюс OpenAPS</string>
|
||||
<string name="openaps_smb_dynamic_isf">Динамический ISF</string>
|
||||
<string name="DynISFAdjust_title">Коэффициент регулировки динамического диапазона чувствительности ISF %%</string>
|
||||
<string name="DynISFAdjust_summary">Коэффициент корректировки динамического диапазона чувствительности ISF. Установите более 100%% для более агрессивных доз коррекции и менее 100%% для менее агрессивной коррекции.</string>
|
||||
<string name="enableuam">Включить непредвиденный прием пищи UAM</string>
|
||||
<string name="enablesmb">Включить супер микро болюс SMB</string>
|
||||
<string name="enablesmb_summary">Для ускорения действия используйте супер микро болюсы SMB вместо временного базала</string>
|
||||
|
@ -967,7 +965,6 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Макс ГК вне диапазона!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">ВремЦель:\nМин: %1$s\nМакс.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">ВремЦель:\nЦель: %1$s\nДлительность: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">ВремЦель:\Причина: %1$s\nЦель.: %2$s\nДлительность: %3$s</string>
|
||||
<string name="quick_wizard_message">Мастер: %1$s\nИнсулин: %2$.2fЕд\nУгл: %3$dg</string>
|
||||
<string name="wizard_result">Мастер:\nИнсулин: %1$.2fЕд\nУгл: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Показать запись на устройстве:</string>
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<string name="treatmentssafety_title">Bezpečnosť zadania ošetrenia</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximálny povolený bolus [JI]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximálne povolené množstvo sacharidov [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">Hodnota glykémie, pri ktorej sa aktivuje LGS</string>
|
||||
<string name="nav_preferences_plugin">Nastavenie pluginu %1$s</string>
|
||||
<string name="nav_preferences">Nastavenia</string>
|
||||
<string name="nav_refreshtreatments">Obnoviť ošetrenia z NS</string>
|
||||
|
@ -432,8 +433,8 @@
|
|||
<string name="ns_localbroadcasts_title">Povoliť lokálne vysielanie.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamická ISF</string>
|
||||
<string name="DynISFAdjust_title">Korekčný faktor pre Dynamickú ISF v %%</string>
|
||||
<string name="DynISFAdjust_summary">Korekčný faktor pre dynamickú ISF. Pre agresivnejšie korekčné dávky nastavte hodnoty väčšie ako 100%% a pre menej agresivne korekcie menšie než 100%%.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">Korekčný faktor pre Dynamickú ISF v %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">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%.</string>
|
||||
<string name="enableuam">Povoliť UAM</string>
|
||||
<string name="enablesmb">Povoliť SMB</string>
|
||||
<string name="enablesmb_summary">Použiť Super Mikro Bolusy namiesto dočasných bazálov, pre zrýchleniu účinku</string>
|
||||
|
@ -592,6 +593,7 @@
|
|||
<string name="openapssmb_maxiob_summary">Táto hodnota je v kontexte OpenAPS nazývaná Max IOB.\nOpenAPS nikdy nepridá inzulín, pokiaľ je súčasné IOB väčšie, ako táto hodnota</string>
|
||||
<string name="absorption_cutoff_title">Maximálna doba vstrebávania sacharidov [h]</string>
|
||||
<string name="absorption_cutoff_summary">Doba, po ktorej sú všetky sacharidy považované za vstrebané. Zvyšné budú orezané.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Hodnota glykémie, pri ktorej bude podávanie inzulínu zastavené. Východzia hodnota využíva štandardný cieľový model. Užívateľ môže nastaviť hodnoty od 3,3 mmol/l do 5,5 mmol/l. Pri hodnotách pod 3,6 mmol/l se použije východzí model.</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Zobrazovať kolónku poznámky v dialógoch ošetrení</string>
|
||||
<string name="next_button">Ďalšia</string>
|
||||
<string name="previous_button">Späť</string>
|
||||
|
|
|
@ -161,6 +161,7 @@ Eversense-appen.</string>
|
|||
<string name="end_user_license_agreement">Licensavtal för slutanvändare</string>
|
||||
<string name="end_user_license_agreement_text">FÅR INTE ANVÄNDAS FÖR ATT FATTA MEDICINSKA BESLUT. DET FINNS INGEN GARANTI FÖR PROGRAMMET I DEN UTSTRÄCKNING SOM TILLÅTS AV GÄLLANDE LAG. FÖRUTOM NÄR ANNAT ANGES SKRIFTLIGEN LEVERERAS APPLIKATIONEN SOM DEN ÄR HELT UTAN GARANTIER I NÅGON SOM HELST FORM, VARKEN UTTRYCKTA ELLER UNDERFÖRSTÅDDA, INKLUSIVE MEN INTE BEGRÄNSAT TILL SÄLJBARHET OCH LÄMPLIGHET FÖR ETT VISST ÄNDAMÅL. HELA RISKEN VAD GÄLLER KVALITET OCH PRESTANDA AV PROGRAMMET ÅLIGGER ANVÄNDAREN. OM PROGRAMMET VISAR SIG VARA DEFEKT ANTAR ANVÄNDAREN DEN FULLA FÖR KOSTNADEN FÖR ALL NÖDVÄNDIG SERVICE, REPARATION ELLER KORRIGERING.</string>
|
||||
<string name="end_user_license_agreement_i_understand">JAG FÖRSTÅR OCH GODKÄNNER</string>
|
||||
<string name="save">Spara</string>
|
||||
<string name="reloadprofile">Ladda om profil</string>
|
||||
<string name="smscommunicator">SMS-tjänst</string>
|
||||
<string name="smscommunicator_allowednumbers">Godkända telefonnummer</string>
|
||||
|
@ -940,7 +941,6 @@ Eversense-appen.</string>
|
|||
<string name="wear_action_tempt_max_bg_error">Ogiltigt maximum BG!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Temp-mål:\nMin: %1$s\nMax: %2$s\nVaraktighet: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Temp-mål:\nMål: %1$s\nDuration: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temp-mål:\Orsak: %1$s\nMål: %2$s\nVaraktighet: %3$s</string>
|
||||
<string name="quick_wizard_message">Snabbsteg: %1$s\nInsulin: %2$.2fU\nKolhydrater: %3$dg</string>
|
||||
<string name="wizard_result">Kalkylator:\nInsulin: %1$.2fU\nKolhydrater: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Visa post på enhet:</string>
|
||||
|
@ -962,5 +962,6 @@ Eversense-appen.</string>
|
|||
<string name="wear_unknown_action_string">Okänt kommando:</string>
|
||||
<string name="overview_editquickwizard_percentage">Procent</string>
|
||||
<string name="app_default">Appens standardinställning</string>
|
||||
<string name="login">Logga in</string>
|
||||
<!-- Aidex Cgms -->
|
||||
</resources>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<string name="objectives_openloop_gate">Birkaç gün boyunca Açık Döngü modunda çalıştırın ve birçok geçici bazalı el yordamı ile girin. Geçici ve varsayılan geçici hedefleri düzenleyin ve kullanın (örn. egzersiz ve hipo-tedaviyi desteklemek için)</string>
|
||||
<string name="objectives_maxbasal_objective">Geçici bazal tavsiyeleri de dahil olmak üzere Açık Döngüyü anlamak</string>
|
||||
<string name="objectives_maxbasal_gate">Bu deneyime dayanarak, max bazalın ne olması gerektiğine karar vermeli ve bunu pompa ve tercihlere koymalısınız</string>
|
||||
<string name="objectives_maxiobzero_objective">Kapalı Döngü, (LGS) Düşük Glikoz Süspansiyonu modunda başlatılıyor</string>
|
||||
<string name="objectives_maxiobzero_objective">Kapalı Döngü, (LGS) Düşük Glikoz Duraklatma modunda başlatılıyor</string>
|
||||
<string name="objectives_maxiobzero_gate">Kapalı Döngüyü, maks IOB = 0 olacak şekilde çok sayıda LGS (düşük KŞ) olmadan birkaç gün boyunca deneyin</string>
|
||||
<string name="objectives_maxiob_objective">Kapalı Döngü\'de ince ayarlar, maks (IOB) Aktif İnsülini 0\'ın üzerine yükseltme ve yavaş yavaş KŞ hedeflerini aşağıya çekme</string>
|
||||
<string name="objectives_maxiob_gate">KŞ hedefini azaltmadan önce birkaç gün ve en az bir gece düşük KŞ (Hipo) alarmı olmadan deneyin</string>
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
<string name="apsmode_title">APS modu</string>
|
||||
<string name="closedloop">Kapalı Döngü</string>
|
||||
<string name="openloop">Açık Döngü</string>
|
||||
<string name="lowglucosesuspend">Düşük Glikoz Süspansiyonu</string>
|
||||
<string name="lowglucosesuspend">Düşük Glikoz Duraklatma (LGS)</string>
|
||||
<string name="disabledloop">Döngü devre dışı</string>
|
||||
<string name="openloop_newsuggestion">Yeni öneri mevcut</string>
|
||||
<string name="carbssuggestion">Karbonhidrat Önerisi</string>
|
||||
|
@ -140,7 +140,7 @@
|
|||
<string name="openapsma_maxbasal_title">Maks Ü/s geçici Bazal ayarlanabilir</string>
|
||||
<string name="openapsma_maxbasal_summary">Bu değer OpenAPS\'te \"maksimum bazal\" olarak adlandırılır</string>
|
||||
<string name="openapsma_maxiob_title">OpenAPS\'nin vermesine izin verilen maksimum bazal IOB (Aktif insülin) [U]</string>
|
||||
<string name="openapsma_maxiob_summary">Bu değere OpenAPS bağlamında Max IOB denir.\nAPS\'de bir kerede verilebilen maksimum insülin [U] ü.</string>
|
||||
<string name="openapsma_maxiob_summary">Bu değere OpenAPS bağlamında Maks IOB denir.\nAPS\'de bir kerede verilebilen maksimum insülin [U] ü.</string>
|
||||
<string name="password_preferences_encrypt_prompt">Dışa aktarılan tercihleri şifrelemek için kullanılacak ana parola sorulacaktır.</string>
|
||||
<string name="password_preferences_decrypt_prompt">İçe aktarılan tercihlerin şifresini çözmek için gerekli olan ana parola sorulacaktır.</string>
|
||||
<string name="preferences_export_canceled">Aktarım iptal edildi! Tercihler dışa aktarılmadı!</string>
|
||||
|
@ -283,7 +283,7 @@
|
|||
<string name="openapsama_autosens_min_summary">Varsayılan değer: 0.7\nBu otoduyarlılık için diğer güvenlik önlemidir. Otoduyarlılığın bazal oranlarını ne kadar düşürebileceğini ve İnsülin Duyarlılık Faktörü ve KŞ hedeflerini ne kadar yüksek tutabileceğini gösterir.</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Otoduyarlılık, hedefleri de ayarlar</string>
|
||||
<string name="openapsama_autosens_adjusttargets_summary">Varsayılan değer: true\nBu otoduyarlılığın İnsülin Duyarlılık Faktörü ve bazallara ek olarak KŞ hedeflerinin ayarlanmasında kullanılır.</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Varsayılan değer: 2\nYemek bolusu yaptıktan sonra bolus erteleme devreye girer, bu nedenle döngü, yeni yemek yediğinizde düşük geçici bazallar-hedefler ile etkileşime girmez. Buradaki örnek ve varsayılan 2\'dir; bu nedenle 3 saatlik bir DIA, bolus ertelemenin kademeli olarak 1,5 saat (3DIA/2) üzerinden aşamalı olarak sonlandırılacağı anlamına gelir.</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor_summary">Varsayılan değer: 2\nYemek bolusu yaptıktan sonra bolus erteleme devreye girer, bu nedenle döngü, yeni yemek yediğinizde düşük geçici bazallar-hedefler ile etkileşime girmez. Buradaki örnek ve varsayılan 2\'dir; bu nedenle 3 saatlik bir İES, bolus ertelemenin kademeli olarak 1,5 saat (3İES/2) üzerinden aşamalı olarak sonlandırılacağı anlamına gelir.</string>
|
||||
<string name="openapsama_min_5m_carbimpact_summary">Varsayılan değer: 3.0 (AMA) Gelişmiş Yemek Asistanı veya 8.0 (SMB) Super Micro Bolus. Bu 5 dakika başına varsayılan karbonhidrat emilimi için bir ayardır. Standart değer AMA için 3mg/dl/5dk aynı şekilde SMB 8mg/dl/5dk dir.
|
||||
Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden daha fazla düştüğü veya beklenildiği kadar yükselmediği zamanlarda gelecekte yapılacak tahminlerde KŞ\'nin hesaplanmasında ne kadar karbonhidrat emilimi gerçekleşeceğini öngörür.</string>
|
||||
<string name="openapsama_link_to_preferncejson_doc_txt">Dikkat!\nNormalde aşağıdaki bu değerleri değiştirmek zorunda değilsiniz. Lütfen burayı TIKLAYIN ve metni OKUYUN ve bu değerlerden herhangi birini değiştirmeden önce ANLADIĞINIZDAN emin olun.</string>
|
||||
|
@ -433,8 +433,8 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="ns_localbroadcasts_title">Yerel yayınları etkinleştirin.</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dinamik İDF</string>
|
||||
<string name="DynISFAdjust_title">DinamikİDF ayarlama faktörü %%</string>
|
||||
<string name="DynISFAdjust_summary">DinamikİDF için ayarlama faktörü. Daha agresif düzeltme dozları için %%100\'den fazla ve de az agresif düzeltmeler için %%100\'den az ayarlayın.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">DinamikİDF Ayar Faktörü %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">DinamikİDF için ayarlama faktörü. Daha agresif düzeltme dozları için %100\'den fazla ve daha az agresif düzeltmeler için %100\'den az ayarlayın.</string>
|
||||
<string name="enableuam">UAM etkinleştir</string>
|
||||
<string name="enablesmb">SMB (Super Micro Bolus) etkinleştir</string>
|
||||
<string name="enablesmb_summary">Daha hızlı bir etki için geçici bazal yerine Super Micro Bolus kullanın</string>
|
||||
|
@ -593,6 +593,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="openapssmb_maxiob_summary">Bu değer OpenAPS bağlamında Max IOB (Aktif İnsülin) olarak adlandırılır\nOpenAPS, mevcut IOB bu değerden daha büyükse daha fazla insülin eklemez</string>
|
||||
<string name="absorption_cutoff_title">Besinin maksimum emilim süresi [h]</string>
|
||||
<string name="absorption_cutoff_summary">Herhangi bir öğünün emildiği kabul edilen zaman. Kalan karbonhidratlar kesilecek.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">Altına düştüğünde insülinin askıya alındığı KŞ değeri. Varsayılan değer, standart hedef modeli kullanır. Kullanıcı değeri 60mg/dl (3,3mmol/l) ile 100mg/dl(5.5mmol/l) arasında ayarlayabilir. 65/3,6\'nın altındaki değerler varsayılan modelin kullanılmasına neden olur</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Tedavi diyaloglarında not alanını göster</string>
|
||||
<string name="next_button">İleri</string>
|
||||
<string name="previous_button">Önceki</string>
|
||||
|
@ -969,7 +970,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
|
|||
<string name="wear_action_tempt_max_bg_error">Maks-KŞ aralık dışında!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Geçici Hedef:\nMin: %1$s\nMaks: %2$s\nSüre: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Geçici Hedef:\nHedef: %1$s\nSüre: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Geçici Hedef:\Neden: %1$s\nHedef: %2$s\nSüre: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Geçicihedef:\nNeden: %1$s\nHedef: %2$s\nSüre: %3$s</string>
|
||||
<string name="quick_wizard_message">Hızlı Asistan: %1$s\nİnsülin: %2$.2fU\nKarb: %3$dg</string>
|
||||
<string name="wizard_result">Hesap Mak.:\nİnsulin: %1$.2fÜ\nKarb: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Girişi cihazda göster:</string>
|
||||
|
|
|
@ -432,8 +432,6 @@
|
|||
<string name="ns_localbroadcasts_title">启用本地广播。</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">动态ISF(胰岛素敏感系数)</string>
|
||||
<string name="DynISFAdjust_title">动态ISF胰岛素敏系数调整比例 %%</string>
|
||||
<string name="DynISFAdjust_summary">动态ISF的调整因子。设置100%%以上用于更积极的校正,100%%以下则不那么积极校正。</string>
|
||||
<string name="enableuam">启用 UAM</string>
|
||||
<string name="enablesmb">启用微型大剂量</string>
|
||||
<string name="enablesmb_summary">使用微型大剂量代替使用临时基础率,更快的干预</string>
|
||||
|
@ -957,7 +955,6 @@
|
|||
<string name="wear_action_tempt_max_bg_error">目标血糖最大值超出范围!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">临时目标:\n最小: %1$s\n最大: %2$s\n持续时间: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">临时目标:\n目标: %1$s\n持续时间: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">临时目标:\原因: %1$s\n目标: %2$s\n持续时间: %3$s</string>
|
||||
<string name="quick_wizard_message">快速向导: %1$s\n胰岛素: %2$.2fU\n碳水: %3$d克</string>
|
||||
<string name="wizard_result">计算. 向导:\n胰岛素: %1$.2fU\n碳水: %2$d克</string>
|
||||
<string name="overview_editquickwizard_show_on_device">在设备上显示条目:</string>
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
<string name="treatmentssafety_title">Treatments safety</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max allowed bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max allowed carbs [g]</string>
|
||||
<string name="treatmentssafety_lgsThreshold_title">BG level below which low glucose suspend occurs</string>
|
||||
<string name="nav_preferences_plugin">%1$s Preferences</string>
|
||||
<string name="nav_preferences">Preferences</string>
|
||||
<string name="nav_refreshtreatments">Refresh treatments from NS</string>
|
||||
|
@ -162,7 +163,7 @@
|
|||
<string name="apsmode_title">APS Mode</string>
|
||||
<string name="closedloop">Closed Loop</string>
|
||||
<string name="openloop">Open Loop</string>
|
||||
<string name="lowglucosesuspend">Low Glucose Suspend</string>
|
||||
<string name="lowglucosesuspend">Low Glucose Suspend</string>
|
||||
<string name="disabledloop">Loop Disabled</string>
|
||||
<string name="openloop_newsuggestion">New suggestion available</string>
|
||||
<string name="carbssuggestion">Carbs Suggestion</string>
|
||||
|
@ -519,8 +520,8 @@
|
|||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="openaps_smb_dynamic_isf">Dynamic ISF</string>
|
||||
<string name="key_DynISFAdjust" translatable="false">DynISFAdjust</string>
|
||||
<string name="DynISFAdjust_title">DynamicISF Adjustment Factor %%</string>
|
||||
<string name="DynISFAdjust_summary">Adjustment factor for DynamicISF. Set more than 100%% for more aggressive correction doses, and less than 100%% for less aggressive corrections.</string>
|
||||
<string name="DynISFAdjust_title" formatted="false">DynamicISF Adjustment Factor %</string>
|
||||
<string name="DynISFAdjust_summary" formatted="false">Adjustment factor for DynamicISF. Set more than 100% for more aggressive correction doses, and less than 100% for less aggressive corrections.</string>
|
||||
<string name="key_use_smb" translatable="false">use_smb</string>
|
||||
<string name="key_use_uam" translatable="false">use_uam</string>
|
||||
<string name="key_smb_enable_carbs_suggestions_threshold" translatable="false">smb_enable_carbs_suggestions_threshold</string>
|
||||
|
@ -701,6 +702,7 @@
|
|||
<string name="smb_frequency_exceeded">A bolus was delivered within the last 3 minutes, skipping SMB</string>
|
||||
<string name="basal_set_correctly">Basal set correctly</string>
|
||||
<string name="key_treatmentssafety_maxbolus" translatable="false">treatmentssafety_maxbolus</string>
|
||||
<string name="key_lgs_threshold" translatable="false">lgsThreshold</string>
|
||||
<string name="limitingextendedbolus">Limiting extended bolus to %1$.1f U because of %2$s</string>
|
||||
<string name="limitingcarbs">Limiting carbs to %1$d g because of %2$s</string>
|
||||
<string name="limitingiob">Limiting IOB to %1$.1f U because of %2$s</string>
|
||||
|
@ -720,6 +722,7 @@
|
|||
<string name="openapssmb_maxiob_summary">This value is called Max IOB in OpenAPS context\nOpenAPS will not add more insulin if current IOB is greater than this value</string>
|
||||
<string name="absorption_cutoff_title">Meal max absorption time [h]</string>
|
||||
<string name="absorption_cutoff_summary">Time at which any meal is considered absorbed. Remaining carbs will be cut off.</string>
|
||||
<string name="treatmentssafety_lgsThreshold_summary">BG value below which insulin is suspended. Default value uses standard target model. User can set value between 60mg/dl (3.3mmol/l) and 100mg/dl(5.5mmol/l). Values below 65/3.6 result in use of default model</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Show notes field in treatment dialogs</string>
|
||||
<string name="title_activity_setup_wizard" translatable="false">SetupWizardActivity</string>
|
||||
<string name="next_button">Next</string>
|
||||
|
@ -1172,7 +1175,7 @@
|
|||
<string name="wear_action_tempt_max_bg_error">Max-BG out of range!</string>
|
||||
<string name="wear_action_tempt_manual_range_message">Temptarget:\nMin: %1$s\nMax: %2$s\nDuration: %3$s</string>
|
||||
<string name="wear_action_tempt_manual_message">Temptarget:\nTarget: %1$s\nDuration: %2$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temptarget:\Reason: %1$s\nTarget: %2$s\nDuration: %3$s</string>
|
||||
<string name="wear_action_tempt_preset_message">Temptarget:\nReason: %1$s\nTarget: %2$s\nDuration: %3$s</string>
|
||||
<string name="quick_wizard_message">QuickWizard: %1$s\nInsulin: %2$.2fU\nCarbs: %3$dg</string>
|
||||
<string name="wizard_result">Calc. Wizard:\nInsulin: %1$.2fU\nCarbs: %2$dg</string>
|
||||
<string name="overview_editquickwizard_show_on_device">Show entry on device:</string>
|
||||
|
|
|
@ -36,6 +36,11 @@
|
|||
android:summary="@string/ns_upload_summary"
|
||||
android:title="@string/ns_upload" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_dexcomg5_nsupload"
|
||||
android:title="@string/dexcomg5_nsupload_title" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_ns_receive_cgm"
|
||||
|
|
|
@ -39,6 +39,16 @@
|
|||
validate:floatminNumber="1"
|
||||
validate:testType="floatNumericRange" />
|
||||
|
||||
<info.nightscout.androidaps.utils.textValidator.ValidatingEditTextPreference
|
||||
android:defaultValue="65"
|
||||
android:inputType="numberDecimal"
|
||||
android:dialogMessage="@string/treatmentssafety_lgsThreshold_summary"
|
||||
android:key="@string/key_lgs_threshold"
|
||||
android:title="@string/treatmentssafety_lgsThreshold_title"
|
||||
validate:floatmaxNumber="120"
|
||||
validate:floatminNumber="65"
|
||||
validate:testType="bgRange" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="openapsama_useautosens"
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.mockito.ArgumentMatchers.anyInt
|
|||
import org.mockito.ArgumentMatchers.anyString
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.invocation.InvocationOnMock
|
||||
|
||||
@Suppress("SpellCheckingInspection")
|
||||
|
@ -52,7 +53,8 @@ open class TestBaseWithProfile : TestBase() {
|
|||
validProfileJSON = "{\"dia\":\"5\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"3\"}," +
|
||||
"{\"time\":\"2:00\",\"value\":\"3.4\"}],\"timezone\":\"UTC\",\"basal\":[{\"time\":\"00:00\",\"value\":\"1\"}],\"target_low\":[{\"time\":\"00:00\",\"value\":\"4.5\"}]," +
|
||||
"\"target_high\":[{\"time\":\"00:00\",\"value\":\"7\"}],\"startDate\":\"1970-01-01T00:00:00.000Z\",\"units\":\"mmol\"}"
|
||||
dateUtil = DateUtil(context)
|
||||
dateUtil = Mockito.spy(DateUtil(context))
|
||||
`when`(dateUtil.now()).thenReturn(1656358822000)
|
||||
validProfile = ProfileSealed.Pure(pureProfileFromJson(JSONObject(validProfileJSON), dateUtil)!!)
|
||||
effectiveProfileSwitch = EffectiveProfileSwitch(
|
||||
timestamp = dateUtil.now(),
|
||||
|
|
|
@ -1,16 +1,52 @@
|
|||
package info.nightscout.androidaps.plugins.constraints.versionChecker
|
||||
|
||||
import org.joda.time.DateTime
|
||||
import org.joda.time.LocalDate
|
||||
import org.junit.Assert
|
||||
import org.junit.Assert.*
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
|
||||
class AllowedVersionsTest {
|
||||
|
||||
fun generateSupportedVersions(): String =
|
||||
JSONArray()
|
||||
// Android API versions
|
||||
.put(JSONObject().apply {
|
||||
put("minAndroid", 1) // 1.0
|
||||
put("maxAndroid", 23) // 6.0.1
|
||||
})
|
||||
.put(JSONObject().apply {
|
||||
put("minAndroid", 24) // 7.0
|
||||
put("maxAndroid", 25) // 7.1.2
|
||||
put("supported", "2.6.2")
|
||||
})
|
||||
.put(JSONObject().apply {
|
||||
put("minAndroid", 26) // 8.0
|
||||
put("maxAndroid", 27) // 8.1
|
||||
put("supported", "2.8.2")
|
||||
})
|
||||
.put(JSONObject().apply {
|
||||
put("minAndroid", 28) // 9.0
|
||||
put("maxAndroid", 99)
|
||||
put("supported", "2.8.2")
|
||||
})
|
||||
// Version time limitation
|
||||
.put(JSONObject().apply {
|
||||
put("endDate", "2021-11-07")
|
||||
put("version", "2.9.0-beta1")
|
||||
})
|
||||
.put(JSONObject().apply {
|
||||
put("endDate", "2021-11-07")
|
||||
put("version", "3.0-beta1")
|
||||
})
|
||||
.toString()
|
||||
|
||||
@Test
|
||||
fun generateSupportedVersionsTest() {
|
||||
val definition = AllowedVersions().generateSupportedVersions()
|
||||
val definition = generateSupportedVersions()
|
||||
assertNull(AllowedVersions().findByApi(definition, 0))
|
||||
assertFalse(AllowedVersions().findByApi(definition, 1)?.has("supported") ?: true)
|
||||
assertFalse(AllowedVersions().findByApi(definition, 23)?.has("supported") ?: true)
|
||||
|
@ -24,9 +60,10 @@ class AllowedVersionsTest {
|
|||
@Test
|
||||
fun findByVersionTest() {
|
||||
//val definition = AllowedVersions().generateSupportedVersions()
|
||||
val definition = "[{\"minAndroid\":1,\"maxAndroid\":23},{\"minAndroid\":24,\"maxAndroid\":25,\"supported\":\"2.6.2\"},{\"minAndroid\":26,\"maxAndroid\":27,\"supported\":\"2.8.2\"},{\"minAndroid\":28,\"maxAndroid\":99,\"supported\":\"2.8.2\"},{\"endDate\":\"2021-11-07\",\"version\":\"2.9.0-beta1\"},{\"endDate\":\"2021-11-02\",\"version\":\"3.0-beta1\"},{\"endDate\":\"2021-11-04\",\"version\":\"3.0-beta2\"},{\"endDate\":\"2021-11-10\",\"version\":\"3.0-beta3\"},{\"endDate\":\"2021-11-14\",\"version\":\"3.0-beta4\"}\n" +
|
||||
" ,{\"endDate\":\"2021-11-16\",\"version\":\"3.0-beta5\"}\n" +
|
||||
"]"
|
||||
val definition =
|
||||
"[{\"minAndroid\":1,\"maxAndroid\":23},{\"minAndroid\":24,\"maxAndroid\":25,\"supported\":\"2.6.2\"},{\"minAndroid\":26,\"maxAndroid\":27,\"supported\":\"2.8.2\"},{\"minAndroid\":28,\"maxAndroid\":99,\"supported\":\"2.8.2\"},{\"endDate\":\"2021-11-07\",\"version\":\"2.9.0-beta1\"},{\"endDate\":\"2021-11-02\",\"version\":\"3.0-beta1\"},{\"endDate\":\"2021-11-04\",\"version\":\"3.0-beta2\"},{\"endDate\":\"2021-11-10\",\"version\":\"3.0-beta3\"},{\"endDate\":\"2021-11-14\",\"version\":\"3.0-beta4\"}\n" +
|
||||
" ,{\"endDate\":\"2021-11-16\",\"version\":\"3.0-beta5\"}\n" +
|
||||
"]"
|
||||
assertNull(AllowedVersions().findByVersion(definition, "2.6.0"))
|
||||
assertTrue(AllowedVersions().findByVersion(definition, "2.9.0-beta1")?.has("endDate") ?: false)
|
||||
assertEquals("2021-11-07", AllowedVersions().findByVersion(definition, "2.9.0-beta1")?.getString("endDate"))
|
||||
|
@ -34,7 +71,7 @@ class AllowedVersionsTest {
|
|||
|
||||
@Test
|
||||
fun endDateToMilliseconds() {
|
||||
val definition = AllowedVersions().generateSupportedVersions()
|
||||
val definition = generateSupportedVersions()
|
||||
val endDate = AllowedVersions().endDateToMilliseconds(AllowedVersions().findByVersion(definition, "2.9.0-beta1")?.getString("endDate") ?: "1000/01/01")
|
||||
val dateTime = LocalDate(endDate)
|
||||
assertEquals(2021, dateTime.year)
|
||||
|
|
|
@ -0,0 +1,161 @@
|
|||
package info.nightscout.androidaps.plugins.general.autotune
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.TestBaseWithProfile
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.data.PureProfile
|
||||
import info.nightscout.androidaps.database.data.Block
|
||||
import info.nightscout.androidaps.database.data.TargetBlock
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.*
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.JsonHelper
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
class AutotuneCoreTest : TestBaseWithProfile() {
|
||||
|
||||
@Mock lateinit var sp: SP
|
||||
@Mock lateinit var autotuneFS: AutotuneFS
|
||||
@Mock lateinit var injector: HasAndroidInjector
|
||||
@Mock lateinit var activePlugin: ActivePlugin
|
||||
private lateinit var autotuneCore: AutotuneCore
|
||||
private var min5mCarbImpact = 0.0
|
||||
private var autotuneMin = 0.0
|
||||
private var autotuneMax = 0.0
|
||||
|
||||
@Before
|
||||
fun initData() {
|
||||
autotuneCore = AutotuneCore(sp, autotuneFS)
|
||||
TimeZone.setDefault(TimeZone.getTimeZone("GMT+2"))
|
||||
}
|
||||
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@Test
|
||||
fun autotuneCoreTest1() { // Test if AutotuneCore with input files of OpenAPS categorisation gives correct output profile
|
||||
val prepJson = File("src/test/res/autotune/test1/autotune.2022-05-21.json").readText()
|
||||
val inputProfileJson = File("src/test/res/autotune/test1/profile.pump.json").readText()
|
||||
val inputProfile = atProfileFromOapsJson(JSONObject(inputProfileJson), dateUtil)!!
|
||||
val prep = PreppedGlucose(JSONObject(prepJson), dateUtil)
|
||||
|
||||
`when`(sp.getDouble(R.string.key_openapsama_autosens_max, 1.2)).thenReturn(autotuneMax)
|
||||
`when`(sp.getDouble(R.string.key_openapsama_autosens_min, 0.7)).thenReturn(autotuneMin)
|
||||
`when`(sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0)).thenReturn(min5mCarbImpact)
|
||||
val oapsOutputProfileJson = File("src/test/res/autotune/test1/aapsorefprofile.json").readText()
|
||||
val oapsOutputProfile = atProfileFromOapsJson(JSONObject(oapsOutputProfileJson), dateUtil)
|
||||
val outProfile = autotuneCore.tuneAllTheThings(prep, inputProfile, inputProfile)
|
||||
oapsOutputProfile?.let {
|
||||
Assert.assertEquals(oapsOutputProfile.isf, outProfile.isf, 0.0)
|
||||
Assert.assertEquals(oapsOutputProfile.ic, outProfile.ic, 0.0)
|
||||
for (i in 0..23)
|
||||
Assert.assertEquals(oapsOutputProfile.basal[i], outProfile.basal[i], 0.0)
|
||||
}
|
||||
?: Assert.fail()
|
||||
}
|
||||
|
||||
@Suppress("SpellCheckingInspection")
|
||||
@Test
|
||||
fun autotuneCoreTest4() { // Test if limiting modification with Min Max Autosens parameter works (18h on basal and on ISF value)
|
||||
val prepJson = File("src/test/res/autotune/test4/autotune.2022-05-30.json").readText()
|
||||
val inputProfileJson = File("src/test/res/autotune/test4/profile.2022-05-30.json").readText()
|
||||
val inputProfile = atProfileFromOapsJson(JSONObject(inputProfileJson), dateUtil)!!
|
||||
val pumpProfileJson = File("src/test/res/autotune/test4/profile.pump.json").readText()
|
||||
val pumpProfile = atProfileFromOapsJson(JSONObject(pumpProfileJson), dateUtil)!!
|
||||
val prep = PreppedGlucose(JSONObject(prepJson), dateUtil)
|
||||
`when`(sp.getDouble(R.string.key_openapsama_autosens_max, 1.2)).thenReturn(autotuneMax)
|
||||
`when`(sp.getDouble(R.string.key_openapsama_autosens_min, 0.7)).thenReturn(autotuneMin)
|
||||
`when`(sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0)).thenReturn(min5mCarbImpact)
|
||||
val oapsOutputProfileJson = File("src/test/res/autotune/test4/newprofile.2022-05-30.json").readText()
|
||||
val oapsOutputProfile = atProfileFromOapsJson(JSONObject(oapsOutputProfileJson), dateUtil)
|
||||
val outProfile = autotuneCore.tuneAllTheThings(prep, inputProfile, pumpProfile)
|
||||
oapsOutputProfile?.let {
|
||||
Assert.assertEquals(oapsOutputProfile.isf, outProfile.isf, 0.0)
|
||||
Assert.assertEquals(oapsOutputProfile.ic, outProfile.ic, 0.0)
|
||||
for (i in 0..23)
|
||||
Assert.assertEquals(oapsOutputProfile.basal[i], outProfile.basal[i], 0.0)
|
||||
}
|
||||
?: Assert.fail()
|
||||
}
|
||||
|
||||
/**
|
||||
* OpenAPS profile for Autotune only have one ISF value and one IC value
|
||||
*/
|
||||
@Suppress("SpellCheckingInspection")
|
||||
private fun atProfileFromOapsJson(jsonObject: JSONObject, dateUtil: DateUtil, defaultUnits: String? = null): ATProfile? {
|
||||
try {
|
||||
min5mCarbImpact = JsonHelper.safeGetDoubleAllowNull(jsonObject, "min_5m_carbimpact") ?: return null
|
||||
autotuneMin = JsonHelper.safeGetDoubleAllowNull(jsonObject, "autosens_min") ?: return null
|
||||
autotuneMax = JsonHelper.safeGetDoubleAllowNull(jsonObject, "autosens_max") ?: return null
|
||||
val txtUnits = JsonHelper.safeGetStringAllowNull(jsonObject, "units", defaultUnits) ?: return null
|
||||
val units = GlucoseUnit.fromText(txtUnits)
|
||||
val dia = JsonHelper.safeGetDoubleAllowNull(jsonObject, "dia") ?: return null
|
||||
val peak = JsonHelper.safeGetIntAllowNull(jsonObject, "insulinPeakTime") ?: return null
|
||||
val localInsulin = LocalInsulin("insulin", peak, dia)
|
||||
val timezone = TimeZone.getTimeZone(JsonHelper.safeGetString(jsonObject, "timezone", "UTC"))
|
||||
val isfJson = jsonObject.getJSONObject("isfProfile")
|
||||
val isfBlocks = ArrayList<Block>(1).also {
|
||||
val isfJsonArray = isfJson.getJSONArray("sensitivities")
|
||||
val value = isfJsonArray.getJSONObject(0).getDouble("sensitivity")
|
||||
it.add(0, Block((T.hours(24).secs()) * 1000L, value))
|
||||
}
|
||||
val icBlocks = ArrayList<Block>(1).also {
|
||||
val value = jsonObject.getDouble("carb_ratio")
|
||||
it.add(0, Block((T.hours(24).secs()) * 1000L, value))
|
||||
}
|
||||
val basalBlocks = blockFromJsonArray(jsonObject.getJSONArray("basalprofile"))
|
||||
?: return null
|
||||
val targetBlocks = ArrayList<TargetBlock>(1).also {
|
||||
it.add(0, TargetBlock((T.hours(24).secs()) * 1000L, 100.0, 100.0))
|
||||
}
|
||||
|
||||
val pure = PureProfile(
|
||||
jsonObject = jsonObject,
|
||||
basalBlocks = basalBlocks,
|
||||
isfBlocks = isfBlocks,
|
||||
icBlocks = icBlocks,
|
||||
targetBlocks = targetBlocks,
|
||||
glucoseUnit = units,
|
||||
timeZone = timezone,
|
||||
dia = dia
|
||||
)
|
||||
return ATProfile(ProfileSealed.Pure(pure), localInsulin, profileInjector).also { it.dateUtil = dateUtil }
|
||||
} catch (ignored: Exception) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private fun blockFromJsonArray(jsonArray: JSONArray?): List<Block>? {
|
||||
val size = jsonArray?.length() ?: return null
|
||||
val ret = ArrayList<Block>(size)
|
||||
try {
|
||||
for (index in 0 until jsonArray.length() - 1) {
|
||||
val o = jsonArray.getJSONObject(index)
|
||||
val tas = o.getInt("minutes") * 60
|
||||
val next = jsonArray.getJSONObject(index + 1)
|
||||
val nextTas = next.getInt("minutes") * 60
|
||||
val value = o.getDouble("rate")
|
||||
if (tas % 3600 != 0) return null
|
||||
if (nextTas % 3600 != 0) return null
|
||||
ret.add(index, Block((nextTas - tas) * 1000L, value))
|
||||
}
|
||||
val last: JSONObject = jsonArray.getJSONObject(jsonArray.length() - 1)
|
||||
val lastTas = last.getInt("minutes") * 60
|
||||
val value = last.getDouble("rate")
|
||||
ret.add(jsonArray.length() - 1, Block((T.hours(24).secs() - lastTas) * 1000L, value))
|
||||
} catch (e: Exception) {
|
||||
return null
|
||||
}
|
||||
return ret
|
||||
}
|
||||
}
|
|
@ -0,0 +1,333 @@
|
|||
package info.nightscout.androidaps.plugins.general.autotune
|
||||
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.TestBaseWithProfile
|
||||
import info.nightscout.androidaps.data.IobTotal
|
||||
import info.nightscout.androidaps.data.LocalInsulin
|
||||
import info.nightscout.androidaps.data.ProfileSealed
|
||||
import info.nightscout.androidaps.data.PureProfile
|
||||
import info.nightscout.androidaps.database.AppRepository
|
||||
import info.nightscout.androidaps.database.data.Block
|
||||
import info.nightscout.androidaps.database.data.TargetBlock
|
||||
import info.nightscout.androidaps.database.entities.Bolus
|
||||
import info.nightscout.androidaps.database.entities.Carbs
|
||||
import info.nightscout.androidaps.database.entities.GlucoseValue
|
||||
import info.nightscout.androidaps.extensions.shiftBlock
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.*
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.JsonHelper
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.json.JSONArray
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
class AutotunePrepTest : TestBaseWithProfile() {
|
||||
|
||||
@Mock lateinit var sp: SP
|
||||
@Mock lateinit var autotuneFS: AutotuneFS
|
||||
@Mock lateinit var injector: HasAndroidInjector
|
||||
@Mock lateinit var activePlugin: ActivePlugin
|
||||
@Mock lateinit var repository: AppRepository
|
||||
private lateinit var autotunePrep: AutotunePrep
|
||||
private lateinit var autotuneIob: TestAutotuneIob
|
||||
private var ts = 0
|
||||
private var min5mCarbImpact = 0.0
|
||||
private var autotuneMin = 0.0
|
||||
private var autotuneMax = 0.0
|
||||
private var startDayTime = 0L
|
||||
|
||||
@Before
|
||||
fun initData() {
|
||||
ts = T.msecs(TimeZone.getDefault().getOffset(System.currentTimeMillis()).toLong()).hours().toInt() - 2
|
||||
}
|
||||
|
||||
@Test
|
||||
fun autotunePrepTest1() { // Test if categorisation with standard treatments with carbs is Ok
|
||||
val inputIobJson = File("src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json").readText() //json files build with iob/activity calculated by OAPS
|
||||
val iobOapsCalculation = buildIobOaps(JSONArray(inputIobJson))
|
||||
autotuneIob = TestAutotuneIob(aapsLogger, repository, profileFunction, sp, dateUtil, activePlugin, autotuneFS, iobOapsCalculation)
|
||||
autotunePrep = AutotunePrep(aapsLogger, sp, dateUtil, autotuneFS, autotuneIob)
|
||||
val inputProfileJson = File("src/test/res/autotune/test1/profile.pump.json").readText()
|
||||
val inputProfile = atProfileFromOapsJson(JSONObject(inputProfileJson), dateUtil)!!
|
||||
val prepJson = File("src/test/res/autotune/test1/autotune.2022-05-21.json").readText()
|
||||
val oapsPreppedGlucose = PreppedGlucose(JSONObject(prepJson), dateUtil) //prep data calculated by OpenAPS autotune
|
||||
val oapsEntriesJson = File("src/test/res/autotune/test1/aaps-entries.2022-05-21.json").readText()
|
||||
autotuneIob.glucose = buildGlucose(JSONArray(oapsEntriesJson))
|
||||
val oapsTreatmentsJson = File("src/test/res/autotune/test1/aaps-treatments.2022-05-21.json").readText()
|
||||
autotuneIob.meals = buildMeals(JSONArray(oapsTreatmentsJson)) //Only meals is used in unit test, Insulin only used for iob calculation
|
||||
autotuneIob.boluses = buildBoluses(oapsPreppedGlucose) //Values from oapsPrepData because linked to iob calculation method for TBR
|
||||
`when`(sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0)).thenReturn(min5mCarbImpact)
|
||||
`when`(sp.getBoolean(R.string.key_autotune_categorize_uam_as_basal, false)).thenReturn(false)
|
||||
val aapsPreppedGlucose = autotunePrep.categorizeBGDatums(inputProfile, inputProfile.localInsulin, false)
|
||||
try {
|
||||
aapsPreppedGlucose?.let { // compare all categorization calculated by aaps plugin (aapsPreppedGlucose) with categorization calculated by OpenAPS (oapsPreppedGlucose)
|
||||
for (i in aapsPreppedGlucose.crData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.crData[i].equals(aapsPreppedGlucose.crData[i]))
|
||||
for (i in aapsPreppedGlucose.csfGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.csfGlucoseData[i].equals(aapsPreppedGlucose.csfGlucoseData[i]))
|
||||
oapsPreppedGlucose.isfGlucoseData = oapsPreppedGlucose.isfGlucoseData.sortedBy { it.date }
|
||||
aapsPreppedGlucose.isfGlucoseData = aapsPreppedGlucose.isfGlucoseData.sortedBy { it.date }
|
||||
for (i in aapsPreppedGlucose.isfGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.isfGlucoseData[i].equals(aapsPreppedGlucose.isfGlucoseData[i]))
|
||||
oapsPreppedGlucose.basalGlucoseData = oapsPreppedGlucose.basalGlucoseData.sortedBy { it.date }
|
||||
aapsPreppedGlucose.basalGlucoseData = aapsPreppedGlucose.basalGlucoseData.sortedBy { it.date }
|
||||
for (i in aapsPreppedGlucose.basalGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.basalGlucoseData[i].equals(aapsPreppedGlucose.basalGlucoseData[i]))
|
||||
}
|
||||
?: Assert.fail()
|
||||
} catch (e: Exception) {
|
||||
Assert.fail()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun autotunePrepTest2() { // Test if categorisation without carbs (full UAM) and categorize UAM as basal false is Ok
|
||||
val inputIobJson = File("src/test/res/autotune/test2/oaps-iobCalc.2022-05-21.json").readText() //json files build with iob/activity calculated by OAPS
|
||||
val iobOapsCalculation = buildIobOaps(JSONArray(inputIobJson))
|
||||
autotuneIob = TestAutotuneIob(aapsLogger, repository, profileFunction, sp, dateUtil, activePlugin, autotuneFS, iobOapsCalculation)
|
||||
autotunePrep = AutotunePrep(aapsLogger, sp, dateUtil, autotuneFS, autotuneIob)
|
||||
val inputProfileJson = File("src/test/res/autotune/test2/profile.pump.json").readText()
|
||||
val inputProfile = atProfileFromOapsJson(JSONObject(inputProfileJson), dateUtil)!!
|
||||
val prepJson = File("src/test/res/autotune/test2/autotune.2022-05-21.json").readText()
|
||||
val oapsPreppedGlucose = PreppedGlucose(JSONObject(prepJson), dateUtil) //prep data calculated by OpenAPS autotune
|
||||
val oapsEntriesJson = File("src/test/res/autotune/test2/aaps-entries.2022-05-21.json").readText()
|
||||
autotuneIob.glucose = buildGlucose(JSONArray(oapsEntriesJson))
|
||||
val oapsTreatmentsJson = File("src/test/res/autotune/test2/aaps-treatments.2022-05-21.json").readText()
|
||||
autotuneIob.meals = buildMeals(JSONArray(oapsTreatmentsJson)) //Only meals is used in unit test, Insulin only used for iob calculation
|
||||
autotuneIob.boluses = buildBoluses(oapsPreppedGlucose) //Values from oapsPrepData because linked to iob calculation method for TBR
|
||||
`when`(sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0)).thenReturn(min5mCarbImpact)
|
||||
`when`(sp.getBoolean(R.string.key_autotune_categorize_uam_as_basal, false)).thenReturn(false) // CategorizeUAM as Basal = False
|
||||
val aapsPreppedGlucose = autotunePrep.categorizeBGDatums(inputProfile, inputProfile.localInsulin, false)
|
||||
try {
|
||||
aapsPreppedGlucose?.let { // compare all categorization calculated by aaps plugin (aapsPreppedGlucose) with categorization calculated by OpenAPS (oapsPreppedGlucose)
|
||||
for (i in aapsPreppedGlucose.crData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.crData[i].equals(aapsPreppedGlucose.crData[i]))
|
||||
for (i in aapsPreppedGlucose.csfGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.csfGlucoseData[i].equals(aapsPreppedGlucose.csfGlucoseData[i]))
|
||||
oapsPreppedGlucose.isfGlucoseData = oapsPreppedGlucose.isfGlucoseData.sortedBy { it.date }
|
||||
aapsPreppedGlucose.isfGlucoseData = aapsPreppedGlucose.isfGlucoseData.sortedBy { it.date }
|
||||
for (i in aapsPreppedGlucose.isfGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.isfGlucoseData[i].equals(aapsPreppedGlucose.isfGlucoseData[i]))
|
||||
oapsPreppedGlucose.basalGlucoseData = oapsPreppedGlucose.basalGlucoseData.sortedBy { it.date }
|
||||
aapsPreppedGlucose.basalGlucoseData = aapsPreppedGlucose.basalGlucoseData.sortedBy { it.date }
|
||||
for (i in aapsPreppedGlucose.basalGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.basalGlucoseData[i].equals(aapsPreppedGlucose.basalGlucoseData[i]))
|
||||
}
|
||||
?: Assert.fail()
|
||||
} catch (e: Exception) {
|
||||
Assert.fail()
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun autotunePrepTest3() { // Test if categorisation without carbs (full UAM) and categorize UAM as basal true is Ok
|
||||
val inputIobJson = File("src/test/res/autotune/test3/oaps-iobCalc.2022-05-21.json").readText() //json files build with iob/activity calculated by OAPS
|
||||
val iobOapsCalculation = buildIobOaps(JSONArray(inputIobJson))
|
||||
autotuneIob = TestAutotuneIob(aapsLogger, repository, profileFunction, sp, dateUtil, activePlugin, autotuneFS, iobOapsCalculation)
|
||||
autotunePrep = AutotunePrep(aapsLogger, sp, dateUtil, autotuneFS, autotuneIob)
|
||||
val inputProfileJson = File("src/test/res/autotune/test3/profile.pump.json").readText()
|
||||
val inputProfile = atProfileFromOapsJson(JSONObject(inputProfileJson), dateUtil)!!
|
||||
val prepJson = File("src/test/res/autotune/test3/autotune.2022-05-21.json").readText()
|
||||
val oapsPreppedGlucose = PreppedGlucose(JSONObject(prepJson), dateUtil) //prep data calculated by OpenAPS autotune
|
||||
val oapsEntriesJson = File("src/test/res/autotune/test3/aaps-entries.2022-05-21.json").readText()
|
||||
autotuneIob.glucose = buildGlucose(JSONArray(oapsEntriesJson))
|
||||
val oapsTreatmentsJson = File("src/test/res/autotune/test3/aaps-treatments.2022-05-21.json").readText()
|
||||
autotuneIob.meals = buildMeals(JSONArray(oapsTreatmentsJson)) //Only meals is used in unit test, Insulin only used for iob calculation
|
||||
autotuneIob.boluses = buildBoluses(oapsPreppedGlucose) //Values from oapsPrepData because linked to iob calculation method for TBR
|
||||
`when`(sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, 3.0)).thenReturn(min5mCarbImpact)
|
||||
`when`(sp.getBoolean(R.string.key_autotune_categorize_uam_as_basal, false)).thenReturn(true) // CategorizeUAM as Basal = True
|
||||
val aapsPreppedGlucose = autotunePrep.categorizeBGDatums(inputProfile, inputProfile.localInsulin, false)
|
||||
try {
|
||||
aapsPreppedGlucose?.let { // compare all categorization calculated by aaps plugin (aapsPreppedGlucose) with categorization calculated by OpenAPS (oapsPreppedGlucose)
|
||||
for (i in aapsPreppedGlucose.crData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.crData[i].equals(aapsPreppedGlucose.crData[i]))
|
||||
for (i in aapsPreppedGlucose.csfGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.csfGlucoseData[i].equals(aapsPreppedGlucose.csfGlucoseData[i]))
|
||||
oapsPreppedGlucose.isfGlucoseData = oapsPreppedGlucose.isfGlucoseData.sortedBy { it.date }
|
||||
aapsPreppedGlucose.isfGlucoseData = aapsPreppedGlucose.isfGlucoseData.sortedBy { it.date }
|
||||
for (i in aapsPreppedGlucose.isfGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.isfGlucoseData[i].equals(aapsPreppedGlucose.isfGlucoseData[i]))
|
||||
oapsPreppedGlucose.basalGlucoseData = oapsPreppedGlucose.basalGlucoseData.sortedBy { it.date }
|
||||
aapsPreppedGlucose.basalGlucoseData = aapsPreppedGlucose.basalGlucoseData.sortedBy { it.date }
|
||||
for (i in aapsPreppedGlucose.basalGlucoseData.indices)
|
||||
Assert.assertTrue(oapsPreppedGlucose.basalGlucoseData[i].equals(aapsPreppedGlucose.basalGlucoseData[i]))
|
||||
}
|
||||
?: Assert.fail()
|
||||
} catch (e: Exception) {
|
||||
Assert.fail()
|
||||
}
|
||||
}
|
||||
|
||||
/*************************************************************************************************************************************************************************************
|
||||
* OpenAPS profile for Autotune only have one ISF value and one IC value
|
||||
*/
|
||||
@Suppress("SpellCheckingInspection")
|
||||
private fun atProfileFromOapsJson(jsonObject: JSONObject, dateUtil: DateUtil, defaultUnits: String? = null): ATProfile? {
|
||||
try {
|
||||
min5mCarbImpact = JsonHelper.safeGetDoubleAllowNull(jsonObject, "min_5m_carbimpact") ?: return null
|
||||
autotuneMin = JsonHelper.safeGetDoubleAllowNull(jsonObject, "autosens_min") ?: return null
|
||||
autotuneMax = JsonHelper.safeGetDoubleAllowNull(jsonObject, "autosens_max") ?: return null
|
||||
val txtUnits = JsonHelper.safeGetStringAllowNull(jsonObject, "units", defaultUnits) ?: return null
|
||||
val units = GlucoseUnit.fromText(txtUnits)
|
||||
val dia = JsonHelper.safeGetDoubleAllowNull(jsonObject, "dia") ?: return null
|
||||
val peak = JsonHelper.safeGetIntAllowNull(jsonObject, "insulinPeakTime") ?: return null
|
||||
val localInsulin = LocalInsulin("insulin", peak, dia)
|
||||
val timezone = TimeZone.getTimeZone(JsonHelper.safeGetString(jsonObject, "timezone", "UTC"))
|
||||
val isfJson = jsonObject.getJSONObject("isfProfile")
|
||||
val isfBlocks = ArrayList<Block>(1).also {
|
||||
val isfJsonArray = isfJson.getJSONArray("sensitivities")
|
||||
val value = isfJsonArray.getJSONObject(0).getDouble("sensitivity")
|
||||
it.add(0, Block((T.hours(24).secs()) * 1000L, value))
|
||||
}
|
||||
val icBlocks = ArrayList<Block>(1).also {
|
||||
val value = jsonObject.getDouble("carb_ratio")
|
||||
it.add(0, Block((T.hours(24).secs()) * 1000L, value))
|
||||
}
|
||||
val basalBlocks = blockFromJsonArray(jsonObject.getJSONArray("basalprofile"))
|
||||
?: return null
|
||||
val targetBlocks = ArrayList<TargetBlock>(1).also {
|
||||
it.add(0, TargetBlock((T.hours(24).secs()) * 1000L, 100.0, 100.0))
|
||||
}
|
||||
|
||||
val pure = PureProfile(
|
||||
jsonObject = jsonObject,
|
||||
basalBlocks = basalBlocks.shiftBlock(1.0,ts),
|
||||
isfBlocks = isfBlocks,
|
||||
icBlocks = icBlocks,
|
||||
targetBlocks = targetBlocks,
|
||||
glucoseUnit = units,
|
||||
timeZone = timezone,
|
||||
dia = dia
|
||||
)
|
||||
return ATProfile(ProfileSealed.Pure(pure), localInsulin, profileInjector).also { it.dateUtil = dateUtil }
|
||||
} catch (ignored: Exception) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
private fun blockFromJsonArray(jsonArray: JSONArray?): List<Block>? {
|
||||
val size = jsonArray?.length() ?: return null
|
||||
val ret = ArrayList<Block>(size)
|
||||
try {
|
||||
for (index in 0 until jsonArray.length() - 1) {
|
||||
val o = jsonArray.getJSONObject(index)
|
||||
val tas = o.getInt("minutes") * 60
|
||||
val next = jsonArray.getJSONObject(index + 1)
|
||||
val nextTas = next.getInt("minutes") * 60
|
||||
val value = o.getDouble("rate")
|
||||
if (tas % 3600 != 0) return null
|
||||
if (nextTas % 3600 != 0) return null
|
||||
ret.add(index, Block((nextTas - tas) * 1000L, value))
|
||||
}
|
||||
val last: JSONObject = jsonArray.getJSONObject(jsonArray.length() - 1)
|
||||
val lastTas = last.getInt("minutes") * 60
|
||||
val value = last.getDouble("rate")
|
||||
ret.add(jsonArray.length() - 1, Block((T.hours(24).secs() - lastTas) * 1000L, value))
|
||||
} catch (e: Exception) {
|
||||
return null
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
private fun buildBoluses(preppedGlucose: PreppedGlucose): ArrayList<Bolus> { //if categorization is correct then I return for dose function the crInsulin calculated in Oaps
|
||||
val boluses: ArrayList<Bolus> = ArrayList()
|
||||
for (i in preppedGlucose.crData.indices) {
|
||||
boluses.add(
|
||||
Bolus(
|
||||
timestamp = preppedGlucose.crData[i].crEndTime,
|
||||
amount = preppedGlucose.crData[i].crInsulin,
|
||||
type = Bolus.Type.NORMAL
|
||||
)
|
||||
)
|
||||
}
|
||||
if (boluses.size == 0) //Add at least one insulin treatment for tests to avoid return null in categorization
|
||||
boluses.add(
|
||||
Bolus(
|
||||
timestamp = startDayTime,
|
||||
amount = 1.0,
|
||||
type = Bolus.Type.NORMAL
|
||||
)
|
||||
)
|
||||
return boluses
|
||||
}
|
||||
|
||||
private fun buildMeals(jsonArray: JSONArray): ArrayList<Carbs> {
|
||||
val list: ArrayList<Carbs> = ArrayList()
|
||||
for (index in 0 until jsonArray.length()) {
|
||||
val json = jsonArray.getJSONObject(index)
|
||||
val value = JsonHelper.safeGetDouble(json, "carbs", 0.0)
|
||||
val timestamp = JsonHelper.safeGetLong(json, "date")
|
||||
if (value > 0.0 && timestamp > startDayTime) {
|
||||
list.add(Carbs(timestamp = timestamp, amount = value, duration = 0))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
private fun buildGlucose(jsonArray: JSONArray): List<GlucoseValue> {
|
||||
val list: ArrayList<GlucoseValue> = ArrayList()
|
||||
for (index in 0 until jsonArray.length()) {
|
||||
val json = jsonArray.getJSONObject(index)
|
||||
val value = JsonHelper.safeGetDouble(json, "sgv")
|
||||
val timestamp = JsonHelper.safeGetLong(json, "date")
|
||||
list.add(GlucoseValue(raw = value, noise = 0.0, value = value, timestamp = timestamp, sourceSensor = GlucoseValue.SourceSensor.UNKNOWN, trendArrow = GlucoseValue.TrendArrow.FLAT))
|
||||
}
|
||||
if (list.size > 0)
|
||||
startDayTime = list[list.size - 1].timestamp
|
||||
return list
|
||||
}
|
||||
|
||||
private fun buildIobOaps(jsonArray: JSONArray): ArrayList<IobTotal> { //if categorization is correct then I return for dose function the crInsulin calculated in Oaps
|
||||
val list: ArrayList<IobTotal> = ArrayList()
|
||||
for (index in 0 until jsonArray.length()) {
|
||||
val json = jsonArray.getJSONObject(index)
|
||||
val time = JsonHelper.safeGetLong(json, "date")
|
||||
val iob = JsonHelper.safeGetDouble(json, "iob")
|
||||
val activity = JsonHelper.safeGetDouble(json, "activity")
|
||||
val iobTotal = IobTotal(time)
|
||||
iobTotal.iob = iob
|
||||
iobTotal.activity = activity
|
||||
list.add(iobTotal)
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
class TestAutotuneIob(
|
||||
val aapsLogger: AAPSLogger,
|
||||
repository: AppRepository,
|
||||
val profileFunction: ProfileFunction,
|
||||
val sp: SP,
|
||||
val dateUtil: DateUtil,
|
||||
val activePlugin: ActivePlugin,
|
||||
autotuneFS: AutotuneFS,
|
||||
private val iobOapsCalculation: ArrayList<IobTotal>
|
||||
) : AutotuneIob(
|
||||
aapsLogger,
|
||||
repository,
|
||||
profileFunction,
|
||||
sp,
|
||||
dateUtil,
|
||||
activePlugin,
|
||||
autotuneFS
|
||||
) {
|
||||
|
||||
override fun getIOB(time: Long, localInsulin: LocalInsulin): IobTotal {
|
||||
val bolusIob = IobTotal(time)
|
||||
iobOapsCalculation.forEach {
|
||||
if (it.time == time)
|
||||
return it
|
||||
}
|
||||
return bolusIob
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
package info.nightscout.androidaps.plugins.general.autotune
|
||||
|
||||
import info.nightscout.androidaps.TestBaseWithProfile
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.BGDatum
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.CRDatum
|
||||
import info.nightscout.androidaps.plugins.general.autotune.data.PreppedGlucose
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import java.io.File
|
||||
|
||||
class PreppedGlucoseTest : TestBaseWithProfile() {
|
||||
|
||||
private lateinit var prep1: PreppedGlucose
|
||||
private lateinit var prepJson1: String
|
||||
|
||||
@Before
|
||||
fun initData() {
|
||||
prepJson1 = File("src/test/res/autotune/test1/autotune.2022-05-21.json").readText()
|
||||
prep1 = PreppedGlucose(JSONObject(prepJson1), dateUtil)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun preppedGlucoseLoadTest() { // Test if load from file of OpenAPS categorisation is Ok
|
||||
val crData0 =
|
||||
CRDatum(
|
||||
JSONObject("{\"CRInitialIOB\":13.594,\"CRInitialBG\":123,\"CRInitialCarbTime\":\"2022-05-21T07:54:09.000Z\",\"CREndIOB\":-0.155,\"CREndBG\":98,\"CREndTime\":\"2022-05-21T11:19:08.000Z\",\"CRCarbs\":70,\"CRInsulin\":-2.13}"),
|
||||
dateUtil
|
||||
)
|
||||
val csfDataEnd =
|
||||
BGDatum(
|
||||
JSONObject("{\"device\":\"AndroidAPS-DexcomG6\",\"date\":1653176050000,\"dateString\":\"2022-05-21T23:34:10.000Z\",\"isValid\":true,\"sgv\":127,\"direction\":\"Flat\",\"type\":\"sgv\",\"_id\":\"6289771371a363000480abc1\",\"glucose\":127,\"avgDelta\":\"2.50\",\"BGI\":-2.93,\"deviation\":\"5.43\",\"mealCarbs\":0,\"mealAbsorption\":\"end\"}"),
|
||||
dateUtil
|
||||
)
|
||||
val isfData0 =
|
||||
BGDatum(
|
||||
JSONObject("{\"device\":\"AndroidAPS-DexcomG6\",\"date\":1653108249000,\"dateString\":\"2022-05-21T04:44:09.000Z\",\"isValid\":true,\"sgv\":123,\"direction\":\"FortyFiveDown\",\"type\":\"sgv\",\"_id\":\"62886e2919e2e60004989bba\",\"glucose\":123,\"avgDelta\":\"-7.50\",\"BGI\":-7.59,\"deviation\":\"0.09\"}"),
|
||||
dateUtil
|
||||
)
|
||||
val basalDataEnd =
|
||||
BGDatum(
|
||||
JSONObject("{\"device\":\"AndroidAPS-DexcomG6\",\"date\":1653180549000,\"dateString\":\"2022-05-22T00:49:09.000Z\",\"isValid\":true,\"sgv\":121,\"direction\":\"FortyFiveDown\",\"type\":\"sgv\",\"_id\":\"628988a3da46aa0004d1e0f5\",\"glucose\":121,\"avgDelta\":\"-5.25\",\"BGI\":-3.32,\"deviation\":\"-1.93\"}"),
|
||||
dateUtil
|
||||
)
|
||||
Assert.assertEquals(3, prep1.crData.size)
|
||||
Assert.assertTrue(crData0.equals(prep1.crData[0]))
|
||||
Assert.assertTrue(csfDataEnd.equals(prep1.csfGlucoseData[prep1.csfGlucoseData.size - 1]))
|
||||
Assert.assertTrue(isfData0.equals(prep1.isfGlucoseData[0]))
|
||||
Assert.assertTrue(basalDataEnd.equals(prep1.basalGlucoseData[prep1.basalGlucoseData.size - 1]))
|
||||
}
|
||||
}
|
|
@ -6,9 +6,10 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Insulin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
|
@ -31,6 +32,7 @@ class InsulinLyumjevPluginTest {
|
|||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var config: Config
|
||||
@Mock lateinit var hardLimits: HardLimits
|
||||
|
||||
private var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
|
@ -39,7 +41,7 @@ class InsulinLyumjevPluginTest {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
sut = InsulinLyumjevPlugin(injector, rh, profileFunction, rxBus, aapsLogger, config)
|
||||
sut = InsulinLyumjevPlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -9,17 +9,17 @@ import info.nightscout.androidaps.interfaces.ActivePlugin
|
|||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Insulin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefBasePlugin.Companion.MIN_DIA
|
||||
import info.nightscout.androidaps.utils.DefaultValueHelper
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import org.json.JSONObject
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.`when`
|
||||
import org.mockito.junit.MockitoJUnit
|
||||
import org.mockito.junit.MockitoRule
|
||||
|
||||
|
@ -35,10 +35,9 @@ class InsulinOrefBasePluginTest {
|
|||
profileFunction: ProfileFunction,
|
||||
rxBus: RxBus,
|
||||
aapsLogger: AAPSLogger,
|
||||
config: Config
|
||||
) : InsulinOrefBasePlugin(
|
||||
injector, rh, profileFunction, rxBus, aapsLogger, config
|
||||
) {
|
||||
config: Config,
|
||||
hardLimits: HardLimits
|
||||
) : InsulinOrefBasePlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits) {
|
||||
|
||||
override fun sendShortDiaNotification(dia: Double) {
|
||||
shortDiaNotificationSend = true
|
||||
|
@ -62,13 +61,13 @@ class InsulinOrefBasePluginTest {
|
|||
|
||||
private lateinit var sut: InsulinBaseTest
|
||||
|
||||
@Mock lateinit var defaultValueHelper: DefaultValueHelper
|
||||
@Mock lateinit var rh: ResourceHelper
|
||||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var rxBus: RxBus
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var activePlugin: ActivePlugin
|
||||
@Mock lateinit var config: Config
|
||||
@Mock lateinit var hardLimits: HardLimits
|
||||
|
||||
private var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
|
@ -77,30 +76,23 @@ class InsulinOrefBasePluginTest {
|
|||
|
||||
@Before
|
||||
fun setUp() {
|
||||
sut = InsulinBaseTest(injector, rh, profileFunction, rxBus, aapsLogger, config)
|
||||
sut = InsulinBaseTest(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits)
|
||||
`when`(hardLimits.minDia()).thenReturn(5.0)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testGetDia() {
|
||||
Assert.assertEquals(MIN_DIA, sut.dia, 0.0)
|
||||
testUserDefinedDia = MIN_DIA + 1
|
||||
Assert.assertEquals(MIN_DIA + 1, sut.dia, 0.0)
|
||||
testUserDefinedDia = MIN_DIA - 1
|
||||
Assert.assertEquals(MIN_DIA, sut.dia, 0.0)
|
||||
Assert.assertEquals(5.0, sut.dia, 0.0)
|
||||
testUserDefinedDia = 5.0 + 1
|
||||
Assert.assertEquals(5.0 + 1, sut.dia, 0.0)
|
||||
testUserDefinedDia = 5.0 - 1
|
||||
Assert.assertEquals(5.0, sut.dia, 0.0)
|
||||
Assert.assertTrue(shortDiaNotificationSend)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun minDiaTes() {
|
||||
Assert.assertEquals(5.0, MIN_DIA, 0.0001)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testIobCalcForTreatment() {
|
||||
val treatment = Bolus(timestamp = 0, amount = 10.0, type = Bolus.Type.NORMAL)
|
||||
val expected = Iob()
|
||||
Assert.assertEquals(expected.iobContrib, sut.iobCalcForTreatment(treatment, 0, 0.0).iobContrib, 0.001)
|
||||
Assert.assertEquals(expected.activityContrib, sut.iobCalcForTreatment(treatment, 0, 0.0).activityContrib, 0.001)
|
||||
testPeak = 30
|
||||
testUserDefinedDia = 4.0
|
||||
val time = System.currentTimeMillis()
|
||||
|
|
|
@ -7,8 +7,9 @@ import info.nightscout.androidaps.TestBase
|
|||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Insulin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.sharedPreferences.SP
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
|
@ -31,6 +32,7 @@ class InsulinOrefFreePeakPluginTest : TestBase() {
|
|||
@Mock lateinit var rxBus: RxBus
|
||||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var config: Config
|
||||
@Mock lateinit var hardLimits: HardLimits
|
||||
|
||||
private var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
|
@ -39,7 +41,7 @@ class InsulinOrefFreePeakPluginTest : TestBase() {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
sut = InsulinOrefFreePeakPlugin( injector, sp, rh, profileFunction, rxBus, aapsLogger, config)
|
||||
sut = InsulinOrefFreePeakPlugin(injector, sp, rh, profileFunction, rxBus, aapsLogger, config, hardLimits)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -6,9 +6,10 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Insulin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
|
@ -31,6 +32,7 @@ class InsulinOrefRapidActingPluginTest {
|
|||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var config: Config
|
||||
@Mock lateinit var hardLimits: HardLimits
|
||||
|
||||
private var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
|
@ -39,7 +41,7 @@ class InsulinOrefRapidActingPluginTest {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
sut = InsulinOrefRapidActingPlugin(injector, rh, profileFunction, rxBus, aapsLogger, config)
|
||||
sut = InsulinOrefRapidActingPlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -6,9 +6,10 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.interfaces.Config
|
||||
import info.nightscout.androidaps.interfaces.Insulin
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.interfaces.ResourceHelper
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.utils.HardLimits
|
||||
import info.nightscout.shared.logging.AAPSLogger
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Rule
|
||||
|
@ -31,6 +32,7 @@ class InsulinOrefUltraRapidActingPluginTest {
|
|||
@Mock lateinit var profileFunction: ProfileFunction
|
||||
@Mock lateinit var aapsLogger: AAPSLogger
|
||||
@Mock lateinit var config: Config
|
||||
@Mock lateinit var hardLimits: HardLimits
|
||||
|
||||
private var injector: HasAndroidInjector = HasAndroidInjector {
|
||||
AndroidInjector {
|
||||
|
@ -39,7 +41,7 @@ class InsulinOrefUltraRapidActingPluginTest {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
sut = InsulinOrefUltraRapidActingPlugin(injector, rh, profileFunction, rxBus, aapsLogger, config)
|
||||
sut = InsulinOrefUltraRapidActingPlugin(injector, rh, profileFunction, rxBus, aapsLogger, config, hardLimits)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -241,7 +241,7 @@ class CommandQueueImplementationTest : TestBaseWithProfile() {
|
|||
Assert.assertEquals(2, commandQueue.size())
|
||||
|
||||
// when
|
||||
commandQueue.cancelAllBoluses()
|
||||
commandQueue.cancelAllBoluses(anyLong())
|
||||
|
||||
// then
|
||||
Assert.assertEquals(0, commandQueue.size())
|
||||
|
|
BIN
app/src/test/res/autotune/test1/Convert_Log2JSON.xlsx
Normal file
BIN
app/src/test/res/autotune/test1/Convert_Log2JSON.xlsx
Normal file
Binary file not shown.
16
app/src/test/res/autotune/test1/Oref0-Autotune_Command.txt
Normal file
16
app/src/test/res/autotune/test1/Oref0-Autotune_Command.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
aaps-autotune -d=~/aaps -s=2022-05-21 -e=2022-05-21 -c=false
|
||||
(note oref0-autotune was modified and rename aaps-autotune to run autotune without NS queries with input files exported from aaps plugin)
|
||||
|
||||
Input files:
|
||||
- Input profile: profile.pump.json
|
||||
- aaps-entries.2022-05-21.json (BG values)
|
||||
- aaps-treatments.2022-05-21.json (all treatments)
|
||||
|
||||
Output files:
|
||||
- Output profile: aapsorefprofile.json and aapsorefautotune_recommendations.log
|
||||
- log file: autotune.2022-06-17-212315.log
|
||||
|
||||
Intermediate daily files (also used for unit test)
|
||||
- categorization: autotune.2022-05-21.json
|
||||
- aapsorefprofile.2022-05-21.json (intermediate input profile, for run with one day equals input profile)
|
||||
- newaapsorefprofile.2022-05-21.json (intermediate output profile, for run with one day equals output profile)
|
2882
app/src/test/res/autotune/test1/aaps-entries.2022-05-21.json
Normal file
2882
app/src/test/res/autotune/test1/aaps-entries.2022-05-21.json
Normal file
File diff suppressed because it is too large
Load diff
3194
app/src/test/res/autotune/test1/aaps-treatments.2022-05-21.json
Normal file
3194
app/src/test/res/autotune/test1/aaps-treatments.2022-05-21.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,53 @@
|
|||
Parameter | Pump | Autotune | Days Missing
|
||||
---------------------------------------------------------
|
||||
ISF [mg/dL/U] | 86.200 | 85.993 |
|
||||
Carb Ratio[g/U]| 5.750 | 5.817 |
|
||||
Basals [U/hr] | - | |
|
||||
00:00 | 0.966 | 1.002 | 0
|
||||
00:30 | | |
|
||||
01:00 | 0.977 | 1.091 | 0
|
||||
01:30 | | |
|
||||
02:00 | 0.971 | 1.118 | 0
|
||||
02:30 | | |
|
||||
03:00 | 1.111 | 1.321 | 0
|
||||
03:30 | | |
|
||||
04:00 | 0.974 | 1.091 | 0
|
||||
04:30 | | |
|
||||
05:00 | 0.923 | 0.965 | 0
|
||||
05:30 | | |
|
||||
06:00 | 0.823 | 0.825 | 0
|
||||
06:30 | | |
|
||||
07:00 | 0.855 | 0.849 | 0
|
||||
07:30 | | |
|
||||
08:00 | 0.902 | 0.909 | 0
|
||||
08:30 | | |
|
||||
09:00 | 0.934 | 0.903 | 1
|
||||
09:30 | | |
|
||||
10:00 | 0.938 | 0.906 | 1
|
||||
10:30 | | |
|
||||
11:00 | 0.903 | 0.878 | 1
|
||||
11:30 | | |
|
||||
12:00 | 0.882 | 0.861 | 1
|
||||
12:30 | | |
|
||||
13:00 | 0.874 | 0.855 | 1
|
||||
13:30 | | |
|
||||
14:00 | 0.866 | 0.848 | 1
|
||||
14:30 | | |
|
||||
15:00 | 0.848 | 0.834 | 1
|
||||
15:30 | | |
|
||||
16:00 | 0.758 | 0.762 | 1
|
||||
16:30 | | |
|
||||
17:00 | 0.650 | 0.647 | 0
|
||||
17:30 | | |
|
||||
18:00 | 0.648 | 0.631 | 0
|
||||
18:30 | | |
|
||||
19:00 | 0.738 | 0.728 | 0
|
||||
19:30 | | |
|
||||
20:00 | 0.847 | 0.838 | 0
|
||||
20:30 | | |
|
||||
21:00 | 0.861 | 0.871 | 0
|
||||
21:30 | | |
|
||||
22:00 | 0.863 | 0.886 | 0
|
||||
22:30 | | |
|
||||
23:00 | 0.843 | 0.893 | 0
|
||||
23:30 | | |
|
147
app/src/test/res/autotune/test1/aapsorefprofile.2022-05-21.json
Normal file
147
app/src/test/res/autotune/test1/aapsorefprofile.2022-05-21.json
Normal file
|
@ -0,0 +1,147 @@
|
|||
{
|
||||
"name": "Tuned Dyn2",
|
||||
"min_5m_carbimpact": 8,
|
||||
"dia": 6,
|
||||
"curve": "ultra-rapid",
|
||||
"useCustomPeakTime": true,
|
||||
"insulinPeakTime": 45,
|
||||
"basalprofile": [
|
||||
{
|
||||
"start": "00:00:00",
|
||||
"minutes": 0,
|
||||
"rate": 0.966
|
||||
},
|
||||
{
|
||||
"start": "01:00:00",
|
||||
"minutes": 60,
|
||||
"rate": 0.977
|
||||
},
|
||||
{
|
||||
"start": "02:00:00",
|
||||
"minutes": 120,
|
||||
"rate": 0.971
|
||||
},
|
||||
{
|
||||
"start": "03:00:00",
|
||||
"minutes": 180,
|
||||
"rate": 1.111
|
||||
},
|
||||
{
|
||||
"start": "04:00:00",
|
||||
"minutes": 240,
|
||||
"rate": 0.974
|
||||
},
|
||||
{
|
||||
"start": "05:00:00",
|
||||
"minutes": 300,
|
||||
"rate": 0.923
|
||||
},
|
||||
{
|
||||
"start": "06:00:00",
|
||||
"minutes": 360,
|
||||
"rate": 0.823
|
||||
},
|
||||
{
|
||||
"start": "07:00:00",
|
||||
"minutes": 420,
|
||||
"rate": 0.855
|
||||
},
|
||||
{
|
||||
"start": "08:00:00",
|
||||
"minutes": 480,
|
||||
"rate": 0.902
|
||||
},
|
||||
{
|
||||
"start": "09:00:00",
|
||||
"minutes": 540,
|
||||
"rate": 0.934
|
||||
},
|
||||
{
|
||||
"start": "10:00:00",
|
||||
"minutes": 600,
|
||||
"rate": 0.938
|
||||
},
|
||||
{
|
||||
"start": "11:00:00",
|
||||
"minutes": 660,
|
||||
"rate": 0.903
|
||||
},
|
||||
{
|
||||
"start": "12:00:00",
|
||||
"minutes": 720,
|
||||
"rate": 0.882
|
||||
},
|
||||
{
|
||||
"start": "13:00:00",
|
||||
"minutes": 780,
|
||||
"rate": 0.874
|
||||
},
|
||||
{
|
||||
"start": "14:00:00",
|
||||
"minutes": 840,
|
||||
"rate": 0.866
|
||||
},
|
||||
{
|
||||
"start": "15:00:00",
|
||||
"minutes": 900,
|
||||
"rate": 0.848
|
||||
},
|
||||
{
|
||||
"start": "16:00:00",
|
||||
"minutes": 960,
|
||||
"rate": 0.758
|
||||
},
|
||||
{
|
||||
"start": "17:00:00",
|
||||
"minutes": 1020,
|
||||
"rate": 0.65
|
||||
},
|
||||
{
|
||||
"start": "18:00:00",
|
||||
"minutes": 1080,
|
||||
"rate": 0.648
|
||||
},
|
||||
{
|
||||
"start": "19:00:00",
|
||||
"minutes": 1140,
|
||||
"rate": 0.738
|
||||
},
|
||||
{
|
||||
"start": "20:00:00",
|
||||
"minutes": 1200,
|
||||
"rate": 0.847
|
||||
},
|
||||
{
|
||||
"start": "21:00:00",
|
||||
"minutes": 1260,
|
||||
"rate": 0.861
|
||||
},
|
||||
{
|
||||
"start": "22:00:00",
|
||||
"minutes": 1320,
|
||||
"rate": 0.863
|
||||
},
|
||||
{
|
||||
"start": "23:00:00",
|
||||
"minutes": 1380,
|
||||
"rate": 0.843
|
||||
}
|
||||
],
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"i": 0,
|
||||
"start": "00:00:00",
|
||||
"sensitivity": 86.2,
|
||||
"offset": 0,
|
||||
"x": 0,
|
||||
"endoffset": 1440
|
||||
}
|
||||
]
|
||||
},
|
||||
"carb_ratio": 5.75,
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"units": "mg/dl",
|
||||
"timezone": "Europe/Paris"
|
||||
}
|
181
app/src/test/res/autotune/test1/aapsorefprofile.json
Normal file
181
app/src/test/res/autotune/test1/aapsorefprofile.json
Normal file
|
@ -0,0 +1,181 @@
|
|||
{
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"basalprofile": [
|
||||
{
|
||||
"i": 0,
|
||||
"minutes": 0,
|
||||
"rate": 1.002,
|
||||
"start": "00:00:00"
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"minutes": 60,
|
||||
"rate": 1.091,
|
||||
"start": "01:00:00"
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"minutes": 120,
|
||||
"rate": 1.118,
|
||||
"start": "02:00:00"
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"minutes": 180,
|
||||
"rate": 1.321,
|
||||
"start": "03:00:00"
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"minutes": 240,
|
||||
"rate": 1.091,
|
||||
"start": "04:00:00"
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"minutes": 300,
|
||||
"rate": 0.965,
|
||||
"start": "05:00:00"
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"minutes": 360,
|
||||
"rate": 0.825,
|
||||
"start": "06:00:00"
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"minutes": 420,
|
||||
"rate": 0.849,
|
||||
"start": "07:00:00"
|
||||
},
|
||||
{
|
||||
"i": 8,
|
||||
"minutes": 480,
|
||||
"rate": 0.909,
|
||||
"start": "08:00:00"
|
||||
},
|
||||
{
|
||||
"i": 9,
|
||||
"minutes": 540,
|
||||
"rate": 0.903,
|
||||
"start": "09:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 10,
|
||||
"minutes": 600,
|
||||
"rate": 0.906,
|
||||
"start": "10:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"minutes": 660,
|
||||
"rate": 0.878,
|
||||
"start": "11:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"minutes": 720,
|
||||
"rate": 0.861,
|
||||
"start": "12:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"minutes": 780,
|
||||
"rate": 0.855,
|
||||
"start": "13:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 14,
|
||||
"minutes": 840,
|
||||
"rate": 0.848,
|
||||
"start": "14:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 15,
|
||||
"minutes": 900,
|
||||
"rate": 0.834,
|
||||
"start": "15:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 16,
|
||||
"minutes": 960,
|
||||
"rate": 0.762,
|
||||
"start": "16:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 17,
|
||||
"minutes": 1020,
|
||||
"rate": 0.647,
|
||||
"start": "17:00:00"
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"minutes": 1080,
|
||||
"rate": 0.631,
|
||||
"start": "18:00:00"
|
||||
},
|
||||
{
|
||||
"i": 19,
|
||||
"minutes": 1140,
|
||||
"rate": 0.728,
|
||||
"start": "19:00:00"
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"minutes": 1200,
|
||||
"rate": 0.838,
|
||||
"start": "20:00:00"
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"minutes": 1260,
|
||||
"rate": 0.871,
|
||||
"start": "21:00:00"
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"minutes": 1320,
|
||||
"rate": 0.886,
|
||||
"start": "22:00:00"
|
||||
},
|
||||
{
|
||||
"i": 23,
|
||||
"minutes": 1380,
|
||||
"rate": 0.893,
|
||||
"start": "23:00:00"
|
||||
}
|
||||
],
|
||||
"carb_ratio": 5.817,
|
||||
"csf": 16.025,
|
||||
"curve": "ultra-rapid",
|
||||
"dia": 6,
|
||||
"insulinPeakTime": 45,
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"endoffset": 1440,
|
||||
"i": 0,
|
||||
"offset": 0,
|
||||
"sensitivity": 85.993,
|
||||
"start": "00:00:00",
|
||||
"x": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"min_5m_carbimpact": 8,
|
||||
"name": "Tuned Dyn2",
|
||||
"sens": 85.993,
|
||||
"timezone": "Europe/Paris",
|
||||
"units": "mg/dl",
|
||||
"useCustomPeakTime": true
|
||||
}
|
1
app/src/test/res/autotune/test1/autotune.2022-05-21.json
Normal file
1
app/src/test/res/autotune/test1/autotune.2022-05-21.json
Normal file
File diff suppressed because one or more lines are too long
425
app/src/test/res/autotune/test1/autotune.2022-06-17-212314.log
Normal file
425
app/src/test/res/autotune/test1/autotune.2022-06-17-212314.log
Normal file
|
@ -0,0 +1,425 @@
|
|||
Autotune disk usage:
|
||||
388K .
|
||||
Overall disk used/avail:
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
rootfs 930G 434G 497G 47% /
|
||||
Grabbing AAPS treatments.json and entries/sgv.json for date range...
|
||||
oref0-autotune-prep ns-treatments.2022-05-21.json profile.json ns-entries.2022-05-21.json profile.pump.json > autotune.2022-05-21.json
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -16.9 IOB: 5.249 Activity: 0.0391 at 04:24:08 dev: 26.10 avgDelta: 9.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -18.9 IOB: 5.292 Activity: 0.0438 at 04:29:08 dev: 27.88 avgDelta: 9.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -20.3 IOB: 4.964 Activity: 0.047 at 04:34:09 dev: 24.01 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.1 IOB: 4.674 Activity: 0.0489 at 04:39:08 dev: 17.83 avgDelta: -3.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.5 IOB: 4.377 Activity: 0.0498 at 04:44:08 dev: 11.21 avgDelta: -10.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.5 IOB: 4.077 Activity: 0.0498 at 04:49:08 dev: 7.96 avgDelta: -13.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.2 IOB: 3.73 Activity: 0.0491 at 04:54:08 dev: 7.16 avgDelta: -14.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -20.5 IOB: 3.389 Activity: 0.0476 at 04:59:08 dev: 6.77 avgDelta: -13.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -19.7 IOB: 3.055 Activity: 0.0457 at 05:04:09 dev: 6.95 avgDelta: -12.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -18.8 IOB: 2.782 Activity: 0.0436 at 05:09:08 dev: 6.54 avgDelta: -12.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -17.7 IOB: 2.47 Activity: 0.0411 at 05:14:08 dev: 5.71 avgDelta: -12.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -16.6 IOB: 2.22 Activity: 0.0386 at 05:19:09 dev: 5.14 avgDelta: -11.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -15.4 IOB: 1.935 Activity: 0.0358 at 05:24:08 dev: 4.93 avgDelta: -10.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -14.3 IOB: 1.711 Activity: 0.0332 at 05:29:08 dev: 6.06 avgDelta: -8.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -13.1 IOB: 1.452 Activity: 0.0304 at 05:34:09 dev: 7.35 avgDelta: -5.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -12.1 IOB: 1.927 Activity: 0.028 at 05:39:09 dev: 8.32 avgDelta: -3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -11.6 IOB: 1.84 Activity: 0.027 at 05:44:08 dev: 8.64 avgDelta: -3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -11.1 IOB: 1.658 Activity: 0.0258 at 05:49:09 dev: 7.12 avgDelta: -4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -10.6 IOB: 1.482 Activity: 0.0245 at 05:54:08 dev: 5.31 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -9.9 IOB: 1.264 Activity: 0.0229 at 05:59:09 dev: 4.62 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -9.1 IOB: 1.104 Activity: 0.0212 at 06:04:08 dev: 5.14 avgDelta: -4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.4 IOB: 0.952 Activity: 0.0194 at 06:09:09 dev: 7.36 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.8 IOB: 1.619 Activity: 0.0181 at 06:14:09 dev: 9.30 avgDelta: 1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.9 IOB: 1.678 Activity: 0.0184 at 06:19:09 dev: 10.68 avgDelta: 2.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.1 IOB: 1.775 Activity: 0.0187 at 06:24:08 dev: 9.81 avgDelta: 1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.2 IOB: 1.581 Activity: 0.019 at 06:29:08 dev: 6.44 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.1 IOB: 1.437 Activity: 0.0188 at 06:34:08 dev: 2.35 avgDelta: -5.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.9 IOB: 1.294 Activity: 0.0183 at 06:39:08 dev: -0.36 avgDelta: -8.25 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.6 IOB: 1.153 Activity: 0.0176 at 06:44:09 dev: 0.09 avgDelta: -7.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.2 IOB: 1.017 Activity: 0.0167 at 06:49:08 dev: 3.20 avgDelta: -4.00 ISF
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -6.7 IOB: 0.887 Activity: 0.0156 at 06:54:08 dev: 6.22 avgDelta: -0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -6.3 IOB: 1.011 Activity: 0.0147 at 06:59:08 dev: 7.59 avgDelta: 1.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -6.1 IOB: 0.889 Activity: 0.0141 at 07:04:08 dev: 6.58 avgDelta: 0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -5.7 IOB: 0.771 Activity: 0.0133 at 07:09:08 dev: 2.98 avgDelta: -2.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -5.3 IOB: 0.656 Activity: 0.0124 at 07:14:09 dev: 0.09 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -4.9 IOB: 0.547 Activity: 0.0114 at 07:19:08 dev: -1.84 avgDelta: -6.75 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -4.4 IOB: 0.392 Activity: 0.0103 at 07:24:09 dev: -2.31 avgDelta: -6.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -3.9 IOB: 0.294 Activity: 0.0091 at 07:29:09 dev: -1.08 avgDelta: -5.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -3.5 IOB: 0.2 Activity: 0.008 at 07:34:09 dev: 0.45 avgDelta: -3.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.8 IOB: 0.065 Activity: 0.0066 at 07:39:09 dev: 2.34 avgDelta: -0.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.4 IOB: 0.034 Activity: 0.0055 at 07:44:09 dev: 3.37 avgDelta: 1.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.1 IOB: 0.549 Activity: 0.0048 at 07:49:08 dev: 3.57 avgDelta: 1.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.3 IOB: 0.674 Activity: 0.0053 at 07:54:09 dev: 3.53 avgDelta: 1.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.5 IOB: 0.597 Activity: 0.0057 at 07:59:09 dev: 2.71 avgDelta: 0.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.5 IOB: 0.468 Activity: 0.0058 at 08:04:09 dev: 1.50 avgDelta: -1.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.5 IOB: 0.389 Activity: 0.0057 at 08:09:09 dev: 0.21 avgDelta: -2.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.3 IOB: 0.262 Activity: 0.0053 at 08:14:09 dev: -0.47 avgDelta: -2.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.1 IOB: 0.186 Activity: 0.0048 at 08:19:09 dev: -0.93 avgDelta: -3.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -1.8 IOB: 0.064 Activity: 0.0041 at 08:24:09 dev: -1.48 avgDelta: -3.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -1.5 IOB: -0.005 Activity: 0.0034 at 08:29:09 dev: -2.03 avgDelta: -3.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -1.1 IOB: -0.12 Activity: 0.0026 at 08:34:09 dev: -2.13 avgDelta: -3.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -0.8 IOB: -0.181 Activity: 0.0018 at 08:39:09 dev: -2.47 avgDelta: -3.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -0.3 IOB: -0.287 Activity: 0.0008 at 08:44:09 dev: -2.41 avgDelta: -2.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: 0.0 IOB: -0.34 Activity: 0 at 08:49:09 dev: -2.50 avgDelta: -2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: 0.4 IOB: -0.436 Activity: -0.001 at 08:54:09 dev: -2.68 avgDelta: -2.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: 0.8 IOB: -0.48 Activity: -0.0018 at 08:59:09 dev: -2.28 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 1.1 IOB: -0.519 Activity: -0.0026 at 09:04:09 dev: -1.12 avgDelta: 0.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 1.5 IOB: -0.554 Activity: -0.0034 at 09:09:09 dev: 0.00 avgDelta: 1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 1.8 IOB: -0.585 Activity: -0.0041 at 09:14:09 dev: 0.00 avgDelta: 2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.1 IOB: -0.662 Activity: -0.0049 at 09:19:09 dev: 0.39 avgDelta: 2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.4 IOB: -0.687 Activity: -0.0055 at 09:24:08 dev: -0.37 avgDelta: 2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.6 IOB: -0.708 Activity: -0.0061 at 09:29:09 dev: -0.13 avgDelta: 2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.8 IOB: -0.726 Activity: -0.0066 at 09:34:09 dev: 0.41 avgDelta: 3.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 3.1 IOB: -0.351 Activity: -0.0071 at 09:39:08 dev: 1.19 avgDelta: 4.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.8 IOB: -0.218 Activity: -0.0064 at 09:44:09 dev: 2.99 avgDelta: 5.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.4 IOB: -0.088 Activity: -0.0055 at 09:49:09 dev: 4.63 avgDelta: 7.00 basal
|
||||
CRInitialIOB: 13.594 CRInitialBG: 123 CRInitialCarbTime: 2022-05-21T07:54:09.000Z
|
||||
start carb absorption
|
||||
1 mealCOB: 69.4 mealCarbs: 70 basalBGI: 6.7 BGI: -1.0 IOB: 13.594 Activity: 0.0023 at 09:54:09 dev: 8.74 avgDelta: 7.75 csf
|
||||
1 mealCOB: 67.9 mealCarbs: 70 basalBGI: 6.7 BGI: -14.3 IOB: 13.552 Activity: 0.0331 at 09:59:09 dev: 23.02 avgDelta: 8.75 csf
|
||||
1 mealCOB: 65.6 mealCarbs: 70 basalBGI: 6.7 BGI: -24.7 IOB: 13.224 Activity: 0.0573 at 10:04:09 dev: 33.70 avgDelta: 9.00 csf
|
||||
1 mealCOB: 62.9 mealCarbs: 70 basalBGI: 6.7 BGI: -32.8 IOB: 12.838 Activity: 0.076 at 10:09:08 dev: 40.76 avgDelta: 8.00 csf
|
||||
1 mealCOB: 59.9 mealCarbs: 70 basalBGI: 6.7 BGI: -38.8 IOB: 12.322 Activity: 0.09 at 10:14:09 dev: 45.04 avgDelta: 6.25 csf
|
||||
1 mealCOB: 56.8 mealCarbs: 70 basalBGI: 6.7 BGI: -43.1 IOB: 11.794 Activity: 0.1001 at 10:19:09 dev: 46.89 avgDelta: 3.75 csf
|
||||
1 mealCOB: 53.6 mealCarbs: 70 basalBGI: 6.7 BGI: -46.0 IOB: 11.177 Activity: 0.1068 at 10:24:09 dev: 47.03 avgDelta: 1.00 csf
|
||||
1 mealCOB: 50.6 mealCarbs: 70 basalBGI: 6.7 BGI: -47.8 IOB: 10.58 Activity: 0.111 at 10:29:09 dev: 45.84 avgDelta: -2.00 csf
|
||||
1 mealCOB: 47.7 mealCarbs: 70 basalBGI: 6.7 BGI: -48.7 IOB: 9.919 Activity: 0.1129 at 10:34:09 dev: 43.66 avgDelta: -5.00 csf
|
||||
1 mealCOB: 44.9 mealCarbs: 70 basalBGI: 6.7 BGI: -48.7 IOB: 9.254 Activity: 0.1129 at 10:39:09 dev: 41.41 avgDelta: -7.25 csf
|
||||
1 mealCOB: 42.3 mealCarbs: 70 basalBGI: 6.7 BGI: -48.0 IOB: 8.643 Activity: 0.1114 at 10:44:09 dev: 39.51 avgDelta: -8.50 csf
|
||||
1 mealCOB: 39.6 mealCarbs: 70 basalBGI: 6.7 BGI: -46.9 IOB: 7.992 Activity: 0.1088 at 10:49:09 dev: 39.39 avgDelta: -7.50 csf
|
||||
1 mealCOB: 37.0 mealCarbs: 70 basalBGI: 6.7 BGI: -45.4 IOB: 7.406 Activity: 0.1053 at 10:54:08 dev: 40.13 avgDelta: -5.25 csf
|
||||
1 mealCOB: 34.2 mealCarbs: 70 basalBGI: 6.7 BGI: -43.6 IOB: 7.111 Activity: 0.1012 at 10:59:09 dev: 41.37 avgDelta: -2.25 csf
|
||||
1 mealCOB: 31.4 mealCarbs: 70 basalBGI: 6.5 BGI: -41.9 IOB: 6.515 Activity: 0.0971 at 11:04:09 dev: 42.35 avgDelta: 0.50 csf
|
||||
1 mealCOB: 28.5 mealCarbs: 70 basalBGI: 6.5 BGI: -40.0 IOB: 5.99 Activity: 0.0927 at 11:09:09 dev: 42.70 avgDelta: 2.75 csf
|
||||
1 mealCOB: 25.7 mealCarbs: 70 basalBGI: 6.5 BGI: -37.8 IOB: 5.439 Activity: 0.0878 at 11:14:08 dev: 42.09 avgDelta: 4.25 csf
|
||||
1 mealCOB: 23.1 mealCarbs: 70 basalBGI: 6.5 BGI: -35.7 IOB: 4.962 Activity: 0.0828 at 11:19:09 dev: 39.69 avgDelta: 4.00 csf
|
||||
1 mealCOB: 20.7 mealCarbs: 70 basalBGI: 6.5 BGI: -33.4 IOB: 4.462 Activity: 0.0775 at 11:24:08 dev: 35.65 avgDelta: 2.25 csf
|
||||
1 mealCOB: 18.6 mealCarbs: 70 basalBGI: 6.5 BGI: -31.2 IOB: 4.036 Activity: 0.0724 at 11:29:09 dev: 31.45 avgDelta: 0.25 csf
|
||||
1 mealCOB: 16.8 mealCarbs: 70 basalBGI: 6.5 BGI: -29.0 IOB: 3.638 Activity: 0.0672 at 11:34:09 dev: 27.46 avgDelta: -1.50 csf
|
||||
1 mealCOB: 15.1 mealCarbs: 70 basalBGI: 6.5 BGI: -26.8 IOB: 3.214 Activity: 0.0621 at 11:39:08 dev: 25.02 avgDelta: -1.75 csf
|
||||
1 mealCOB: 13.5 mealCarbs: 70 basalBGI: 6.5 BGI: -24.6 IOB: 2.866 Activity: 0.0571 at 11:44:09 dev: 23.61 avgDelta: -1.00 csf
|
||||
1 mealCOB: 12.1 mealCarbs: 70 basalBGI: 6.5 BGI: -22.5 IOB: 2.494 Activity: 0.0522 at 11:49:09 dev: 21.75 avgDelta: -0.75 csf
|
||||
1 mealCOB: 10.7 mealCarbs: 70 basalBGI: 6.5 BGI: -20.5 IOB: 2.193 Activity: 0.0476 at 11:54:09 dev: 20.52 avgDelta: 0.00 csf
|
||||
1 mealCOB: 9.5 mealCarbs: 70 basalBGI: 6.5 BGI: -18.6 IOB: 1.867 Activity: 0.0431 at 11:59:09 dev: 18.83 avgDelta: 0.25 csf
|
||||
1 mealCOB: 8.3 mealCarbs: 70 basalBGI: 6.3 BGI: -16.7 IOB: 1.563 Activity: 0.0388 at 12:04:09 dev: 16.97 avgDelta: 0.25 csf
|
||||
1 mealCOB: 7.4 mealCarbs: 70 basalBGI: 6.3 BGI: -15.0 IOB: 1.329 Activity: 0.0347 at 12:09:08 dev: 14.46 avgDelta: -0.50 csf
|
||||
1 mealCOB: 6.6 mealCarbs: 70 basalBGI: 6.3 BGI: -13.3 IOB: 1.115 Activity: 0.0309 at 12:14:09 dev: 11.32 avgDelta: -2.00 csf
|
||||
1 mealCOB: 6.1 mealCarbs: 70 basalBGI: 6.3 BGI: -11.7 IOB: 0.87 Activity: 0.0272 at 12:19:09 dev: 7.97 avgDelta: -3.75 csf
|
||||
1 mealCOB: 5.5 mealCarbs: 70 basalBGI: 6.3 BGI: -10.3 IOB: 0.692 Activity: 0.0239 at 12:24:09 dev: 5.80 avgDelta: -4.50 csf
|
||||
1 mealCOB: 5.0 mealCarbs: 70 basalBGI: 6.3 BGI: -8.9 IOB: 0.482 Activity: 0.0206 at 12:29:08 dev: 4.88 avgDelta: -4.00 csf
|
||||
0 mealCOB: 4.5 mealCarbs: 70 basalBGI: 6.3 BGI: -7.6 IOB: 0.287 Activity: 0.0176 at 12:34:09 dev: 4.09 avgDelta: -3.50 csf
|
||||
0 mealCOB: 3.9 mealCarbs: 70 basalBGI: 6.3 BGI: -6.4 IOB: 0.156 Activity: 0.0148 at 12:39:08 dev: 3.88 avgDelta: -2.50 csf
|
||||
0 mealCOB: 3.4 mealCarbs: 70 basalBGI: 6.3 BGI: -5.3 IOB: 0.038 Activity: 0.0122 at 12:44:08 dev: 3.26 avgDelta: -2.00 csf
|
||||
0 mealCOB: 2.9 mealCarbs: 70 basalBGI: 6.3 BGI: -4.3 IOB: -0.067 Activity: 0.0099 at 12:49:09 dev: 2.27 avgDelta: -2.00 csf
|
||||
0 mealCOB: 2.3 mealCarbs: 70 basalBGI: 6.3 BGI: -3.4 IOB: -0.161 Activity: 0.0078 at 12:54:08 dev: 1.36 avgDelta: -2.00 csf
|
||||
0 mealCOB: 1.8 mealCarbs: 70 basalBGI: 6.3 BGI: -2.6 IOB: -0.195 Activity: 0.006 at 12:59:08 dev: 0.09 avgDelta: -2.50 csf
|
||||
0 mealCOB: 1.3 mealCarbs: 70 basalBGI: 6.3 BGI: -1.9 IOB: -0.271 Activity: 0.0044 at 13:04:09 dev: -1.10 avgDelta: -3.00 csf
|
||||
0 mealCOB: 0.7 mealCarbs: 70 basalBGI: 6.3 BGI: -1.3 IOB: -0.339 Activity: 0.0029 at 13:09:09 dev: -1.00 avgDelta: -2.25 csf
|
||||
0 mealCOB: 0.2 mealCarbs: 70 basalBGI: 6.3 BGI: -0.7 IOB: -0.4 Activity: 0.0015 at 13:14:09 dev: 0.90 avgDelta: 0.25 csf
|
||||
CREndIOB: -0.155 CREndBG: 98 CREndTime: 2022-05-21T11:19:08.000Z
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -0.3 IOB: -0.155 Activity: 0.0007 at 13:19:08 dev: 3.80 avgDelta: 3.50 csf
|
||||
CRInitialIOB: 8.11 CRInitialBG: 109 CRInitialCarbTime: 2022-05-21T11:24:09.000Z
|
||||
1 mealCOB: 49.4 mealCarbs: 50 basalBGI: 6.3 BGI: -1.9 IOB: 8.11 Activity: 0.0045 at 13:24:09 dev: 8.94 avgDelta: 7.00 csf
|
||||
1 mealCOB: 48.2 mealCarbs: 50 basalBGI: 6.3 BGI: -9.6 IOB: 7.992 Activity: 0.0222 at 13:29:09 dev: 18.57 avgDelta: 9.00 csf
|
||||
1 mealCOB: 46.6 mealCarbs: 50 basalBGI: 6.3 BGI: -15.5 IOB: 7.745 Activity: 0.0359 at 13:34:09 dev: 23.47 avgDelta: 8.00 csf
|
||||
1 mealCOB: 45.0 mealCarbs: 50 basalBGI: 6.3 BGI: -20.0 IOB: 7.488 Activity: 0.0465 at 13:39:09 dev: 24.04 avgDelta: 4.00 csf
|
||||
1 mealCOB: 43.6 mealCarbs: 50 basalBGI: 6.3 BGI: -23.3 IOB: 7.136 Activity: 0.0541 at 13:44:09 dev: 21.32 avgDelta: -2.00 csf
|
||||
1 mealCOB: 42.4 mealCarbs: 50 basalBGI: 6.3 BGI: -25.7 IOB: 6.8 Activity: 0.0596 at 13:49:09 dev: 17.94 avgDelta: -7.75 csf
|
||||
0 mealCOB: 41.8 mealCarbs: 50 basalBGI: 6.3 BGI: -27.3 IOB: 6.441 Activity: 0.0633 at 13:54:09 dev: 0.00 avgDelta: -10.50 csf
|
||||
0 mealCOB: 41.3 mealCarbs: 50 basalBGI: 6.3 BGI: -28.1 IOB: 6.022 Activity: 0.0651 at 13:59:09 dev: 0.00 avgDelta: -9.50 csf
|
||||
0 mealCOB: 40.8 mealCarbs: 50 basalBGI: 6.2 BGI: -28.3 IOB: 5.644 Activity: 0.0657 at 14:04:09 dev: 0.00 avgDelta: -6.00 csf
|
||||
0 mealCOB: 40.2 mealCarbs: 50 basalBGI: 6.2 BGI: -28.1 IOB: 5.216 Activity: 0.0653 at 14:09:09 dev: 0.00 avgDelta: -2.25 csf
|
||||
0 mealCOB: 69.7 mealCarbs: 80 basalBGI: 6.2 BGI: -27.8 IOB: 4.962 Activity: 0.0644 at 14:14:09 dev: 0.00 avgDelta: 0.00 csf
|
||||
0 mealCOB: 69.2 mealCarbs: 80 basalBGI: 6.2 BGI: -27.0 IOB: 4.544 Activity: 0.0627 at 14:19:09 dev: 0.00 avgDelta: 0.50 csf
|
||||
0 mealCOB: 68.6 mealCarbs: 80 basalBGI: 6.2 BGI: -26.1 IOB: 4.185 Activity: 0.0606 at 14:24:09 dev: 0.00 avgDelta: -0.25 csf
|
||||
0 mealCOB: 68.1 mealCarbs: 80 basalBGI: 6.2 BGI: -25.0 IOB: 3.839 Activity: 0.058 at 14:29:09 dev: 0.00 avgDelta: -1.25 csf
|
||||
0 mealCOB: 67.6 mealCarbs: 80 basalBGI: 6.2 BGI: -23.7 IOB: 3.456 Activity: 0.055 at 14:34:09 dev: 0.00 avgDelta: -2.25 csf
|
||||
0 mealCOB: 67.0 mealCarbs: 80 basalBGI: 6.2 BGI: -22.4 IOB: 3.139 Activity: 0.0519 at 14:39:09 dev: 0.00 avgDelta: -2.50 csf
|
||||
0 mealCOB: 66.5 mealCarbs: 80 basalBGI: 6.2 BGI: -20.9 IOB: 2.788 Activity: 0.0486 at 14:44:09 dev: 0.00 avgDelta: -1.75 csf
|
||||
0 mealCOB: 66.0 mealCarbs: 80 basalBGI: 6.2 BGI: -19.5 IOB: 2.503 Activity: 0.0453 at 14:49:10 dev: 0.00 avgDelta: -0.25 csf
|
||||
0 mealCOB: 65.4 mealCarbs: 80 basalBGI: 6.2 BGI: -18.0 IOB: 2.186 Activity: 0.0418 at 14:54:09 dev: 0.00 avgDelta: 2.25 csf
|
||||
1 mealCOB: 64.0 mealCarbs: 80 basalBGI: 6.2 BGI: -17.5 IOB: 3.17 Activity: 0.0407 at 14:59:09 dev: 22.04 avgDelta: 4.50 csf
|
||||
1 mealCOB: 62.4 mealCarbs: 80 basalBGI: 6.1 BGI: -17.8 IOB: 3.956 Activity: 0.0413 at 15:04:09 dev: 23.80 avgDelta: 6.00 csf
|
||||
1 mealCOB: 60.8 mealCarbs: 80 basalBGI: 6.1 BGI: -18.1 IOB: 3.648 Activity: 0.042 at 15:09:09 dev: 23.85 avgDelta: 5.75 csf
|
||||
1 mealCOB: 59.3 mealCarbs: 80 basalBGI: 6.1 BGI: -18.5 IOB: 4.126 Activity: 0.043 at 15:14:09 dev: 22.28 avgDelta: 3.75 csf
|
||||
1 mealCOB: 57.9 mealCarbs: 80 basalBGI: 6.1 BGI: -18.8 IOB: 3.81 Activity: 0.0437 at 15:19:10 dev: 20.58 avgDelta: 1.75 csf
|
||||
1 mealCOB: 56.7 mealCarbs: 80 basalBGI: 6.1 BGI: -18.8 IOB: 3.541 Activity: 0.0437 at 15:24:10 dev: 19.08 avgDelta: 0.25 csf
|
||||
1 mealCOB: 55.4 mealCarbs: 80 basalBGI: 6.1 BGI: -18.6 IOB: 3.272 Activity: 0.0431 at 15:29:09 dev: 19.33 avgDelta: 0.75 csf
|
||||
1 mealCOB: 54.0 mealCarbs: 80 basalBGI: 6.1 BGI: -18.4 IOB: 3.588 Activity: 0.0428 at 15:34:09 dev: 21.20 avgDelta: 2.75 csf
|
||||
1 mealCOB: 52.4 mealCarbs: 80 basalBGI: 6.1 BGI: -18.6 IOB: 3.875 Activity: 0.0431 at 15:39:09 dev: 23.83 avgDelta: 5.25 csf
|
||||
1 mealCOB: 50.7 mealCarbs: 80 basalBGI: 6.1 BGI: -18.7 IOB: 3.608 Activity: 0.0434 at 15:44:08 dev: 25.46 avgDelta: 6.75 csf
|
||||
1 mealCOB: 48.9 mealCarbs: 80 basalBGI: 6.1 BGI: -19.1 IOB: 4.271 Activity: 0.0442 at 15:49:09 dev: 26.05 avgDelta: 7.00 csf
|
||||
1 mealCOB: 47.2 mealCarbs: 80 basalBGI: 6.1 BGI: -19.5 IOB: 3.996 Activity: 0.0452 at 15:54:09 dev: 25.98 avgDelta: 6.50 csf
|
||||
1 mealCOB: 45.5 mealCarbs: 80 basalBGI: 6.1 BGI: -19.9 IOB: 4.298 Activity: 0.0462 at 15:59:08 dev: 26.16 avgDelta: 6.25 csf
|
||||
1 mealCOB: 43.7 mealCarbs: 80 basalBGI: 5.4 BGI: -20.2 IOB: 4.015 Activity: 0.0468 at 16:04:09 dev: 26.67 avgDelta: 6.50 csf
|
||||
1 mealCOB: 41.8 mealCarbs: 80 basalBGI: 5.4 BGI: -20.7 IOB: 4.538 Activity: 0.0481 at 16:09:09 dev: 27.98 avgDelta: 7.25 csf
|
||||
1 mealCOB: 39.9 mealCarbs: 80 basalBGI: 5.4 BGI: -21.1 IOB: 4.245 Activity: 0.0489 at 16:14:09 dev: 28.33 avgDelta: 7.25 csf
|
||||
1 mealCOB: 38.0 mealCarbs: 80 basalBGI: 5.4 BGI: -21.6 IOB: 4.729 Activity: 0.05 at 16:19:09 dev: 28.30 avgDelta: 6.75 csf
|
||||
1 mealCOB: 36.1 mealCarbs: 80 basalBGI: 5.4 BGI: -21.9 IOB: 4.426 Activity: 0.0508 at 16:24:09 dev: 28.64 avgDelta: 6.75 csf
|
||||
1 mealCOB: 34.2 mealCarbs: 80 basalBGI: 5.4 BGI: -22.0 IOB: 4.353 Activity: 0.051 at 16:29:09 dev: 28.73 avgDelta: 6.75 csf
|
||||
1 mealCOB: 32.3 mealCarbs: 80 basalBGI: 5.4 BGI: -21.9 IOB: 4.049 Activity: 0.0507 at 16:34:10 dev: 28.10 avgDelta: 6.25 csf
|
||||
1 mealCOB: 30.6 mealCarbs: 80 basalBGI: 5.4 BGI: -21.5 IOB: 3.747 Activity: 0.0498 at 16:39:09 dev: 25.96 avgDelta: 4.50 csf
|
||||
1 mealCOB: 29.1 mealCarbs: 80 basalBGI: 5.4 BGI: -20.8 IOB: 3.402 Activity: 0.0483 at 16:44:09 dev: 22.32 avgDelta: 1.50 csf
|
||||
1 mealCOB: 27.8 mealCarbs: 80 basalBGI: 5.4 BGI: -20.0 IOB: 3.115 Activity: 0.0464 at 16:49:10 dev: 19.00 avgDelta: -1.00 csf
|
||||
1 mealCOB: 26.7 mealCarbs: 80 basalBGI: 5.4 BGI: -19.0 IOB: 2.788 Activity: 0.0441 at 16:54:09 dev: 17.01 avgDelta: -2.00 csf
|
||||
1 mealCOB: 25.6 mealCarbs: 80 basalBGI: 5.4 BGI: -18.0 IOB: 2.524 Activity: 0.0417 at 16:59:09 dev: 15.97 avgDelta: -2.00 csf
|
||||
1 mealCOB: 24.6 mealCarbs: 80 basalBGI: 4.7 BGI: -16.9 IOB: 2.271 Activity: 0.0391 at 17:04:09 dev: 16.10 avgDelta: -0.75 csf
|
||||
1 mealCOB: 23.5 mealCarbs: 80 basalBGI: 4.7 BGI: -15.7 IOB: 2.033 Activity: 0.0365 at 17:09:10 dev: 15.48 avgDelta: -0.25 csf
|
||||
1 mealCOB: 22.6 mealCarbs: 80 basalBGI: 4.7 BGI: -14.6 IOB: 1.807 Activity: 0.0338 at 17:14:10 dev: 14.57 avgDelta: 0.00 csf
|
||||
1 mealCOB: 21.6 mealCarbs: 80 basalBGI: 4.7 BGI: -13.4 IOB: 1.594 Activity: 0.0312 at 17:19:09 dev: 13.70 avgDelta: 0.25 csf
|
||||
1 mealCOB: 20.8 mealCarbs: 80 basalBGI: 4.7 BGI: -12.3 IOB: 1.395 Activity: 0.0286 at 17:24:10 dev: 12.58 avgDelta: 0.25 csf
|
||||
1 mealCOB: 20.0 mealCarbs: 80 basalBGI: 4.7 BGI: -11.3 IOB: 1.258 Activity: 0.0262 at 17:29:09 dev: 11.54 avgDelta: 0.25 csf
|
||||
1 mealCOB: 19.4 mealCarbs: 80 basalBGI: 4.7 BGI: -10.2 IOB: 1.034 Activity: 0.0236 at 17:34:09 dev: 10.17 avgDelta: 0.00 csf
|
||||
1 mealCOB: 18.8 mealCarbs: 80 basalBGI: 4.7 BGI: -9.3 IOB: 0.971 Activity: 0.0215 at 17:39:09 dev: 9.02 avgDelta: -0.25 csf
|
||||
1 mealCOB: 18.2 mealCarbs: 80 basalBGI: 4.7 BGI: -8.5 IOB: 1.008 Activity: 0.0197 at 17:44:09 dev: 7.74 avgDelta: -0.75 csf
|
||||
1 mealCOB: 17.7 mealCarbs: 80 basalBGI: 4.7 BGI: -7.9 IOB: 0.963 Activity: 0.0183 at 17:49:09 dev: 6.89 avgDelta: -1.00 csf
|
||||
1 mealCOB: 17.2 mealCarbs: 80 basalBGI: 4.7 BGI: -7.4 IOB: 1.046 Activity: 0.0171 at 17:54:10 dev: 7.12 avgDelta: -0.25 csf
|
||||
1 mealCOB: 16.6 mealCarbs: 80 basalBGI: 4.7 BGI: -6.9 IOB: 0.912 Activity: 0.0161 at 17:59:09 dev: 6.94 avgDelta: 0.00 csf
|
||||
1 mealCOB: 16.1 mealCarbs: 80 basalBGI: 4.7 BGI: -6.7 IOB: 1.254 Activity: 0.0156 at 18:04:09 dev: 6.97 avgDelta: 0.25 csf
|
||||
1 mealCOB: 15.6 mealCarbs: 80 basalBGI: 4.7 BGI: -6.6 IOB: 1.176 Activity: 0.0154 at 18:09:09 dev: 6.64 avgDelta: 0.00 csf
|
||||
1 mealCOB: 15.0 mealCarbs: 80 basalBGI: 4.7 BGI: -6.4 IOB: 1.051 Activity: 0.0149 at 18:14:10 dev: 5.67 avgDelta: -0.75 csf
|
||||
1 mealCOB: 14.5 mealCarbs: 80 basalBGI: 4.7 BGI: -6.1 IOB: 0.928 Activity: 0.0142 at 18:19:09 dev: 5.12 avgDelta: -1.00 csf
|
||||
1 mealCOB: 14.0 mealCarbs: 80 basalBGI: 4.7 BGI: -6.0 IOB: 1.008 Activity: 0.0138 at 18:24:09 dev: 4.45 avgDelta: -1.50 csf
|
||||
1 mealCOB: 13.4 mealCarbs: 80 basalBGI: 4.7 BGI: -5.7 IOB: 0.89 Activity: 0.0133 at 18:29:09 dev: 3.48 avgDelta: -2.25 csf
|
||||
1 mealCOB: 12.9 mealCarbs: 80 basalBGI: 4.7 BGI: -5.5 IOB: 0.775 Activity: 0.0127 at 18:34:09 dev: 2.47 avgDelta: -3.00 csf
|
||||
1 mealCOB: 12.4 mealCarbs: 80 basalBGI: 4.7 BGI: -5.1 IOB: 0.664 Activity: 0.0118 at 18:39:09 dev: 1.59 avgDelta: -3.50 csf
|
||||
1 mealCOB: 11.8 mealCarbs: 80 basalBGI: 4.7 BGI: -4.7 IOB: 0.606 Activity: 0.011 at 18:44:09 dev: 1.74 avgDelta: -3.00 csf
|
||||
1 mealCOB: 11.3 mealCarbs: 80 basalBGI: 4.7 BGI: -4.5 IOB: 0.703 Activity: 0.0105 at 18:49:09 dev: 3.03 avgDelta: -1.50 csf
|
||||
1 mealCOB: 10.8 mealCarbs: 80 basalBGI: 4.7 BGI: -4.3 IOB: 0.702 Activity: 0.0101 at 18:54:09 dev: 4.10 avgDelta: -0.25 csf
|
||||
1 mealCOB: 10.2 mealCarbs: 80 basalBGI: 4.7 BGI: -4.3 IOB: 0.902 Activity: 0.0101 at 18:59:09 dev: 4.35 avgDelta: 0.00 csf
|
||||
1 mealCOB: 9.7 mealCarbs: 80 basalBGI: 5.3 BGI: -4.3 IOB: 0.801 Activity: 0.0101 at 19:04:09 dev: 2.10 avgDelta: -2.25 csf
|
||||
0 mealCOB: 9.2 mealCarbs: 80 basalBGI: 5.3 BGI: -4.2 IOB: 0.701 Activity: 0.0098 at 19:09:09 dev: -1.03 avgDelta: -5.25 csf
|
||||
0 mealCOB: 8.6 mealCarbs: 80 basalBGI: 5.3 BGI: -4.0 IOB: 0.603 Activity: 0.0094 at 19:14:09 dev: -4.95 avgDelta: -9.00 csf
|
||||
0 mealCOB: 8.1 mealCarbs: 80 basalBGI: 5.3 BGI: -3.8 IOB: 0.508 Activity: 0.0088 at 19:19:09 dev: -8.21 avgDelta: -12.00 csf
|
||||
0 mealCOB: 7.6 mealCarbs: 80 basalBGI: 5.3 BGI: -3.5 IOB: 0.415 Activity: 0.0081 at 19:24:09 dev: -9.76 avgDelta: -13.25 csf
|
||||
0 mealCOB: 7.0 mealCarbs: 80 basalBGI: 5.3 BGI: -3.2 IOB: 0.327 Activity: 0.0074 at 19:29:09 dev: -8.06 avgDelta: -11.25 csf
|
||||
0 mealCOB: 6.5 mealCarbs: 80 basalBGI: 5.3 BGI: -2.8 IOB: 0.242 Activity: 0.0066 at 19:34:09 dev: -3.91 avgDelta: -6.75 csf
|
||||
0 mealCOB: 6.0 mealCarbs: 80 basalBGI: 5.3 BGI: -2.5 IOB: 0.161 Activity: 0.0058 at 19:39:09 dev: 2.00 avgDelta: -0.50 csf
|
||||
0 mealCOB: 5.4 mealCarbs: 80 basalBGI: 5.3 BGI: -2.2 IOB: 0.134 Activity: 0.005 at 19:44:09 dev: 7.16 avgDelta: 5.00 csf
|
||||
1 mealCOB: 4.8 mealCarbs: 80 basalBGI: 5.3 BGI: -2.1 IOB: 0.4 Activity: 0.0048 at 19:49:09 dev: 9.57 avgDelta: 7.50 csf
|
||||
1 mealCOB: 4.2 mealCarbs: 80 basalBGI: 5.3 BGI: -2.1 IOB: 0.475 Activity: 0.0049 at 19:54:09 dev: 8.86 avgDelta: 6.75 csf
|
||||
1 mealCOB: 3.7 mealCarbs: 80 basalBGI: 5.3 BGI: -2.2 IOB: 0.401 Activity: 0.005 at 19:59:10 dev: 5.91 avgDelta: 3.75 csf
|
||||
0 mealCOB: 3.1 mealCarbs: 80 basalBGI: 6.1 BGI: -2.1 IOB: 0.327 Activity: 0.0048 at 20:04:10 dev: 2.82 avgDelta: 0.75 csf
|
||||
0 mealCOB: 2.6 mealCarbs: 80 basalBGI: 6.1 BGI: -1.9 IOB: 0.203 Activity: 0.0044 at 20:09:09 dev: -0.35 avgDelta: -2.25 csf
|
||||
0 mealCOB: 2.1 mealCarbs: 80 basalBGI: 6.1 BGI: -1.7 IOB: 0.132 Activity: 0.004 at 20:14:09 dev: -1.78 avgDelta: -3.50 csf
|
||||
0 mealCOB: 1.5 mealCarbs: 80 basalBGI: 6.1 BGI: -1.5 IOB: 0.064 Activity: 0.0034 at 20:19:09 dev: -2.28 avgDelta: -3.75 csf
|
||||
0 mealCOB: 1.0 mealCarbs: 80 basalBGI: 6.1 BGI: -1.2 IOB: -0.002 Activity: 0.0028 at 20:24:09 dev: -1.54 avgDelta: -2.75 csf
|
||||
0 mealCOB: 0.5 mealCarbs: 80 basalBGI: 6.1 BGI: -0.9 IOB: -0.064 Activity: 0.0022 at 20:29:10 dev: -1.05 avgDelta: -2.00 csf
|
||||
CREndIOB: -0.073 CREndBG: 104 CREndTime: 2022-05-21T18:34:09.000Z
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.7 IOB: -0.073 Activity: 0.0016 at 20:34:09 dev: -0.81 avgDelta: -1.50 csf
|
||||
end carb absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.5 IOB: -0.08 Activity: 0.0011 at 20:39:09 dev: -1.03 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.3 IOB: -0.085 Activity: 0.0007 at 20:44:09 dev: -1.45 avgDelta: -1.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.2 IOB: -0.087 Activity: 0.0004 at 20:49:09 dev: -1.33 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.0 IOB: -0.088 Activity: 0.0001 at 20:54:09 dev: -1.21 avgDelta: -1.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: 0.0 IOB: -0.088 Activity: -0.0001 at 20:59:09 dev: -0.79 avgDelta: -0.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.2 IOB: -0.137 Activity: -0.0004 at 21:04:09 dev: -0.92 avgDelta: -0.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.3 IOB: -0.184 Activity: -0.0007 at 21:09:10 dev: -0.80 avgDelta: -0.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.4 IOB: -0.18 Activity: -0.001 at 21:14:09 dev: -0.68 avgDelta: -0.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.5 IOB: -0.175 Activity: -0.0012 at 21:19:09 dev: -1.02 avgDelta: -0.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.6 IOB: -0.168 Activity: -0.0014 at 21:24:09 dev: -1.35 avgDelta: -0.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.7 IOB: -0.211 Activity: -0.0015 at 21:29:10 dev: -1.65 avgDelta: -1.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.7 IOB: -0.203 Activity: -0.0017 at 21:34:09 dev: -1.98 avgDelta: -1.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.9 IOB: -0.243 Activity: -0.002 at 21:39:10 dev: -2.36 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.0 IOB: -0.282 Activity: -0.0023 at 21:44:10 dev: -2.49 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.1 IOB: -0.32 Activity: -0.0026 at 21:49:09 dev: -2.62 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.3 IOB: -0.357 Activity: -0.0029 at 21:54:10 dev: -2.25 avgDelta: -1.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.4 IOB: -0.391 Activity: -0.0032 at 21:59:10 dev: -1.38 avgDelta: 0.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.5 IOB: -0.375 Activity: -0.0035 at 22:04:09 dev: -0.01 avgDelta: 1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.6 IOB: -0.357 Activity: -0.0036 at 22:09:09 dev: 1.45 avgDelta: 3.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.5 IOB: -0.149 Activity: -0.0035 at 22:14:09 dev: 3.49 avgDelta: 5.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.3 IOB: -0.132 Activity: -0.0031 at 22:19:10 dev: 5.91 avgDelta: 7.25 basal
|
||||
CRInitialIOB: 9.296 CRInitialBG: 133 CRInitialCarbTime: 2022-05-21T20:24:09.000Z
|
||||
start carb absorption
|
||||
1 mealCOB: 48.9 mealCarbs: 50 basalBGI: 6.2 BGI: -6.5 IOB: 9.296 Activity: 0.015 at 22:24:09 dev: 15.96 avgDelta: 9.50 csf
|
||||
1 mealCOB: 47.3 mealCarbs: 50 basalBGI: 6.2 BGI: -14.3 IOB: 9.123 Activity: 0.0332 at 22:29:10 dev: 25.06 avgDelta: 10.75 csf
|
||||
1 mealCOB: 45.3 mealCarbs: 50 basalBGI: 6.2 BGI: -20.4 IOB: 8.96 Activity: 0.0474 at 22:34:09 dev: 29.43 avgDelta: 9.00 csf
|
||||
1 mealCOB: 43.3 mealCarbs: 50 basalBGI: 6.2 BGI: -25.2 IOB: 8.644 Activity: 0.0584 at 22:39:10 dev: 29.92 avgDelta: 4.75 csf
|
||||
1 mealCOB: 41.5 mealCarbs: 50 basalBGI: 6.2 BGI: -28.6 IOB: 8.282 Activity: 0.0664 at 22:44:10 dev: 27.37 avgDelta: -1.25 csf
|
||||
1 mealCOB: 39.8 mealCarbs: 50 basalBGI: 6.2 BGI: -30.9 IOB: 7.835 Activity: 0.0718 at 22:49:09 dev: 24.70 avgDelta: -6.25 csf
|
||||
1 mealCOB: 38.3 mealCarbs: 50 basalBGI: 6.2 BGI: -32.5 IOB: 7.416 Activity: 0.0753 at 22:54:10 dev: 23.70 avgDelta: -8.75 csf
|
||||
1 mealCOB: 36.6 mealCarbs: 50 basalBGI: 6.2 BGI: -33.3 IOB: 6.984 Activity: 0.0772 at 22:59:09 dev: 24.52 avgDelta: -8.75 csf
|
||||
1 mealCOB: 34.8 mealCarbs: 50 basalBGI: 6.1 BGI: -33.5 IOB: 6.547 Activity: 0.0776 at 23:04:09 dev: 26.70 avgDelta: -6.75 csf
|
||||
1 mealCOB: 32.9 mealCarbs: 50 basalBGI: 6.1 BGI: -33.1 IOB: 6.061 Activity: 0.0769 at 23:09:10 dev: 28.39 avgDelta: -4.75 csf
|
||||
1 mealCOB: 31.0 mealCarbs: 50 basalBGI: 6.1 BGI: -32.5 IOB: 5.68 Activity: 0.0754 at 23:14:10 dev: 29.50 avgDelta: -3.00 csf
|
||||
1 mealCOB: 29.0 mealCarbs: 50 basalBGI: 6.1 BGI: -31.6 IOB: 5.458 Activity: 0.0734 at 23:19:09 dev: 30.14 avgDelta: -1.50 csf
|
||||
1 mealCOB: 27.0 mealCarbs: 50 basalBGI: 6.1 BGI: -30.7 IOB: 5.046 Activity: 0.0712 at 23:24:10 dev: 29.94 avgDelta: -0.75 csf
|
||||
1 mealCOB: 25.0 mealCarbs: 50 basalBGI: 6.1 BGI: -29.7 IOB: 4.925 Activity: 0.069 at 23:29:09 dev: 29.49 avgDelta: -0.25 csf
|
||||
1 mealCOB: 23.1 mealCarbs: 50 basalBGI: 6.1 BGI: -28.6 IOB: 4.487 Activity: 0.0663 at 23:34:09 dev: 29.08 avgDelta: 0.50 csf
|
||||
1 mealCOB: 21.2 mealCarbs: 50 basalBGI: 6.1 BGI: -27.3 IOB: 4.113 Activity: 0.0633 at 23:39:10 dev: 28.28 avgDelta: 1.00 csf
|
||||
1 mealCOB: 19.3 mealCarbs: 50 basalBGI: 6.1 BGI: -25.8 IOB: 3.706 Activity: 0.0599 at 23:44:09 dev: 27.57 avgDelta: 1.75 csf
|
||||
1 mealCOB: 17.6 mealCarbs: 50 basalBGI: 6.1 BGI: -24.4 IOB: 3.363 Activity: 0.0566 at 23:49:09 dev: 26.64 avgDelta: 2.25 csf
|
||||
1 mealCOB: 15.9 mealCarbs: 50 basalBGI: 6.1 BGI: -22.8 IOB: 3.039 Activity: 0.053 at 23:54:09 dev: 25.34 avgDelta: 2.50 csf
|
||||
1 mealCOB: 14.3 mealCarbs: 50 basalBGI: 6.1 BGI: -21.3 IOB: 2.733 Activity: 0.0494 at 23:59:10 dev: 23.79 avgDelta: 2.50 csf
|
||||
1 mealCOB: 12.8 mealCarbs: 50 basalBGI: 6.9 BGI: -19.7 IOB: 2.395 Activity: 0.0457 at 00:04:10 dev: 22.20 avgDelta: 2.50 csf
|
||||
1 mealCOB: 11.4 mealCarbs: 50 basalBGI: 6.9 BGI: -18.1 IOB: 2.126 Activity: 0.0421 at 00:09:10 dev: 20.65 avgDelta: 2.50 csf
|
||||
1 mealCOB: 10.2 mealCarbs: 50 basalBGI: 6.9 BGI: -16.6 IOB: 1.824 Activity: 0.0385 at 00:14:10 dev: 18.59 avgDelta: 2.00 csf
|
||||
1 mealCOB: 9.0 mealCarbs: 50 basalBGI: 6.9 BGI: -15.1 IOB: 1.64 Activity: 0.0351 at 00:19:09 dev: 17.13 avgDelta: 2.00 csf
|
||||
1 mealCOB: 8.0 mealCarbs: 50 basalBGI: 6.9 BGI: -13.8 IOB: 1.473 Activity: 0.0319 at 00:24:09 dev: 15.50 avgDelta: 1.75 csf
|
||||
1 mealCOB: 7.1 mealCarbs: 50 basalBGI: 6.9 BGI: -12.4 IOB: 1.273 Activity: 0.0288 at 00:29:10 dev: 14.16 avgDelta: 1.75 csf
|
||||
1 mealCOB: 6.2 mealCarbs: 50 basalBGI: 6.9 BGI: -11.2 IOB: 1.136 Activity: 0.026 at 00:34:10 dev: 12.71 avgDelta: 1.50 csf
|
||||
1 mealCOB: 5.5 mealCarbs: 50 basalBGI: 6.9 BGI: -10.1 IOB: 1.011 Activity: 0.0235 at 00:39:09 dev: 10.13 avgDelta: 0.00 csf
|
||||
1 mealCOB: 5.0 mealCarbs: 50 basalBGI: 6.9 BGI: -9.1 IOB: 0.852 Activity: 0.021 at 00:44:10 dev: 7.30 avgDelta: -1.75 csf
|
||||
1 mealCOB: 4.5 mealCarbs: 50 basalBGI: 6.9 BGI: -8.2 IOB: 0.752 Activity: 0.0189 at 00:49:10 dev: 4.65 avgDelta: -3.50 csf
|
||||
1 mealCOB: 3.9 mealCarbs: 50 basalBGI: 6.9 BGI: -7.3 IOB: 0.662 Activity: 0.0169 at 00:54:10 dev: 3.28 avgDelta: -4.00 csf
|
||||
1 mealCOB: 3.4 mealCarbs: 50 basalBGI: 6.9 BGI: -6.4 IOB: 0.534 Activity: 0.0149 at 00:59:09 dev: 3.42 avgDelta: -3.00 csf
|
||||
0 mealCOB: 2.9 mealCarbs: 50 basalBGI: 7.0 BGI: -5.7 IOB: 0.463 Activity: 0.0132 at 01:04:09 dev: 4.69 avgDelta: -1.00 csf
|
||||
0 mealCOB: 2.3 mealCarbs: 50 basalBGI: 7.0 BGI: -5.0 IOB: 0.352 Activity: 0.0115 at 01:09:10 dev: 5.96 avgDelta: 1.00 csf
|
||||
0 mealCOB: 1.8 mealCarbs: 50 basalBGI: 7.0 BGI: -4.3 IOB: 0.298 Activity: 0.0101 at 01:14:10 dev: 6.60 avgDelta: 2.25 csf
|
||||
0 mealCOB: 1.3 mealCarbs: 50 basalBGI: 7.0 BGI: -3.8 IOB: 0.25 Activity: 0.0089 at 01:19:09 dev: 6.84 avgDelta: 3.00 csf
|
||||
0 mealCOB: 0.7 mealCarbs: 50 basalBGI: 7.0 BGI: -3.4 IOB: 0.329 Activity: 0.0079 at 01:24:10 dev: 6.40 avgDelta: 3.00 csf
|
||||
0 mealCOB: 0.2 mealCarbs: 50 basalBGI: 7.0 BGI: -3.2 IOB: 0.34 Activity: 0.0074 at 01:29:10 dev: 5.69 avgDelta: 2.50 csf
|
||||
CREndIOB: 0.304 CREndBG: 127 CREndTime: 2022-05-21T23:34:10.000Z
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.9 IOB: 0.304 Activity: 0.0068 at 01:34:10 dev: 5.43 avgDelta: 2.50 csf
|
||||
end carb absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.7 IOB: 0.272 Activity: 0.0062 at 01:39:10 dev: 5.67 avgDelta: 3.00 ISF
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.6 IOB: 0.512 Activity: 0.006 at 01:44:10 dev: 6.59 avgDelta: 4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.6 IOB: 0.581 Activity: 0.0061 at 01:49:10 dev: 7.38 avgDelta: 4.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.2 IOB: 1.238 Activity: 0.0075 at 01:54:10 dev: 7.98 avgDelta: 4.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.8 IOB: 1.147 Activity: 0.0088 at 01:59:10 dev: 7.54 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.2 IOB: 1.151 Activity: 0.0098 at 02:04:10 dev: 6.72 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.5 IOB: 1.05 Activity: 0.0104 at 02:09:09 dev: 5.98 avgDelta: 1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.6 IOB: 0.947 Activity: 0.0107 at 02:14:09 dev: 4.86 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.6 IOB: 0.844 Activity: 0.0106 at 02:19:10 dev: 3.82 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.5 IOB: 0.741 Activity: 0.0104 at 02:24:10 dev: 2.73 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.3 IOB: 0.59 Activity: 0.0099 at 02:29:10 dev: 2.52 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.0 IOB: 0.542 Activity: 0.0093 at 02:34:09 dev: 3.01 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.8 IOB: 0.497 Activity: 0.0087 at 02:39:09 dev: 3.50 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.5 IOB: 0.456 Activity: 0.0081 at 02:44:10 dev: 1.74 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.3 IOB: 0.516 Activity: 0.0077 at 02:49:09 dev: -1.93 avgDelta: -5.25 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.1 IOB: 0.429 Activity: 0.0072 at 02:54:09 dev: -6.40 avgDelta: -9.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.8 IOB: 0.294 Activity: 0.0066 at 02:59:10 dev: -8.66 avgDelta: -11.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -2.5 IOB: 0.163 Activity: 0.0058 at 03:04:10 dev: -8.25 avgDelta: -10.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -2.1 IOB: 0.037 Activity: 0.0049 at 03:09:10 dev: -6.39 avgDelta: -8.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -1.7 IOB: -0.085 Activity: 0.0039 at 03:14:10 dev: -4.32 avgDelta: -6.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -1.3 IOB: -0.153 Activity: 0.0029 at 03:19:09 dev: -3.75 avgDelta: -5.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -0.8 IOB: -0.265 Activity: 0.0018 at 03:24:10 dev: -3.72 avgDelta: -4.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -0.3 IOB: -0.371 Activity: 0.0007 at 03:29:09 dev: -3.45 avgDelta: -3.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 0.2 IOB: -0.471 Activity: -0.0005 at 03:34:09 dev: -2.22 avgDelta: -2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 0.7 IOB: -0.566 Activity: -0.0016 at 03:39:10 dev: -0.94 avgDelta: -0.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 1.1 IOB: -0.606 Activity: -0.0026 at 03:44:10 dev: 0.00 avgDelta: 1.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 1.6 IOB: -0.64 Activity: -0.0036 at 03:49:10 dev: 0.45 avgDelta: 2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 1.9 IOB: -0.67 Activity: -0.0044 at 03:54:10 dev: -0.15 avgDelta: 1.75 basal
|
||||
Found at least 1h of carb absorption: assuming all meals were announced, and categorizing UAM data as basal.
|
||||
oref0-autotune-core autotune.2022-05-21.json profile.json profile.pump.json > newprofile.2022-05-21.json
|
||||
CRTotalCarbs: 200 CRTotalInsulin: 32.862 totalCR: 6.086
|
||||
Hour 0 total deviations: 0 mg/dL
|
||||
Hour 0 basal adjustment needed: 0 U/hr
|
||||
Hour 1 total deviations: 29.49 mg/dL
|
||||
Hour 1 basal adjustment needed: 0.07 U/hr
|
||||
Hour 2 total deviations: 32.95 mg/dL
|
||||
Hour 2 basal adjustment needed: 0.08 U/hr
|
||||
Hour 3 total deviations: -18.1 mg/dL
|
||||
Hour 3 basal adjustment needed: -0.04 U/hr
|
||||
Hour 4 total deviations: 128.92 mg/dL
|
||||
Hour 4 basal adjustment needed: 0.3 U/hr
|
||||
Hour 5 total deviations: 76.69 mg/dL
|
||||
Hour 5 basal adjustment needed: 0.18 U/hr
|
||||
Hour 6 total deviations: 64.53 mg/dL
|
||||
Hour 6 basal adjustment needed: 0.15 U/hr
|
||||
Hour 7 total deviations: 7.81 mg/dL
|
||||
Hour 7 basal adjustment needed: 0.02 U/hr
|
||||
Hour 8 total deviations: -16.5 mg/dL
|
||||
Hour 8 basal adjustment needed: -0.04 U/hr
|
||||
Hour 9 total deviations: 7.99 mg/dL
|
||||
Hour 9 basal adjustment needed: 0.02 U/hr
|
||||
Hour 10 total deviations: 0 mg/dL
|
||||
Hour 10 basal adjustment needed: 0 U/hr
|
||||
Hour 11 total deviations: 0 mg/dL
|
||||
Hour 11 basal adjustment needed: 0 U/hr
|
||||
Hour 12 total deviations: 0 mg/dL
|
||||
Hour 12 basal adjustment needed: 0 U/hr
|
||||
Hour 13 total deviations: 0 mg/dL
|
||||
Hour 13 basal adjustment needed: 0 U/hr
|
||||
Hour 14 total deviations: 0 mg/dL
|
||||
Hour 14 basal adjustment needed: 0 U/hr
|
||||
Hour 15 total deviations: 0 mg/dL
|
||||
Hour 15 basal adjustment needed: 0 U/hr
|
||||
Hour 16 total deviations: 0 mg/dL
|
||||
Hour 16 basal adjustment needed: 0 U/hr
|
||||
Hour 17 total deviations: 0 mg/dL
|
||||
Hour 17 basal adjustment needed: 0 U/hr
|
||||
Hour 18 total deviations: 0 mg/dL
|
||||
Hour 18 basal adjustment needed: 0 U/hr
|
||||
Hour 19 total deviations: 0 mg/dL
|
||||
Hour 19 basal adjustment needed: 0 U/hr
|
||||
Hour 20 total deviations: -5.81 mg/dL
|
||||
Hour 20 basal adjustment needed: -0.01 U/hr
|
||||
Hour 21 total deviations: -19.5 mg/dL
|
||||
Hour 21 basal adjustment needed: -0.05 U/hr
|
||||
Hour 22 total deviations: 10.84 mg/dL
|
||||
Hour 22 basal adjustment needed: 0.03 U/hr
|
||||
Hour 23 total deviations: 0 mg/dL
|
||||
Hour 23 basal adjustment needed: 0 U/hr
|
||||
Adjusting hour 9 basal from 0.934 to 0.903 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 10 basal from 0.938 to 0.906 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 11 basal from 0.903 to 0.878 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 12 basal from 0.882 to 0.861 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 13 basal from 0.874 to 0.855 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 14 basal from 0.866 to 0.848 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 15 basal from 0.848 to 0.834 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
Adjusting hour 16 basal from 0.758 to 0.762 based on hour 8 = 0.909 and hour 17 = 0.647
|
||||
[ { start: '00:00:00', minutes: 0, rate: 1.002, i: 0 },
|
||||
{ start: '01:00:00', minutes: 60, rate: 1.091, i: 1 },
|
||||
{ start: '02:00:00', minutes: 120, rate: 1.118, i: 2 },
|
||||
{ start: '03:00:00', minutes: 180, rate: 1.321, i: 3 },
|
||||
{ start: '04:00:00', minutes: 240, rate: 1.091, i: 4 },
|
||||
{ start: '05:00:00', minutes: 300, rate: 0.965, i: 5 },
|
||||
{ start: '06:00:00', minutes: 360, rate: 0.825, i: 6 },
|
||||
{ start: '07:00:00', minutes: 420, rate: 0.849, i: 7 },
|
||||
{ start: '08:00:00', minutes: 480, rate: 0.909, i: 8 },
|
||||
{ start: '09:00:00', minutes: 540, rate: 0.903, i: 9, untuned: 1 },
|
||||
{ start: '10:00:00', minutes: 600, rate: 0.906, i: 10, untuned: 1 },
|
||||
{ start: '11:00:00', minutes: 660, rate: 0.878, i: 11, untuned: 1 },
|
||||
{ start: '12:00:00', minutes: 720, rate: 0.861, i: 12, untuned: 1 },
|
||||
{ start: '13:00:00', minutes: 780, rate: 0.855, i: 13, untuned: 1 },
|
||||
{ start: '14:00:00', minutes: 840, rate: 0.848, i: 14, untuned: 1 },
|
||||
{ start: '15:00:00', minutes: 900, rate: 0.834, i: 15, untuned: 1 },
|
||||
{ start: '16:00:00', minutes: 960, rate: 0.762, i: 16, untuned: 1 },
|
||||
{ start: '17:00:00', minutes: 1020, rate: 0.647, i: 17 },
|
||||
{ start: '18:00:00', minutes: 1080, rate: 0.631, i: 18 },
|
||||
{ start: '19:00:00', minutes: 1140, rate: 0.728, i: 19 },
|
||||
{ start: '20:00:00', minutes: 1200, rate: 0.838, i: 20 },
|
||||
{ start: '21:00:00', minutes: 1260, rate: 0.871, i: 21 },
|
||||
{ start: '22:00:00', minutes: 1320, rate: 0.886, i: 22 },
|
||||
{ start: '23:00:00', minutes: 1380, rate: 0.893, i: 23 } ]
|
||||
totalMealCarbs: 130 totalDeviations: 2620.81 oldCSF 14.991 fullNewCSF: 20.16 newCSF: 16.025
|
||||
oldCR: 5.75 fullNewCR: 6.086 newCR: 5.817
|
||||
p50deviation: 0.21 p50BGI -2.5 p50ratios: 0.988 Old ISF: 86.2 fullNewISF: 85.166 adjustedISF: 85.166 newISF: 85.993 newDIA: 6 newPeak: 45
|
||||
|
||||
Autotune pump profile recommendations:
|
||||
---------------------------------------------------------
|
||||
Recommendations Log File: /home/titi/aaps/autotune/aapsorefautotune_recommendations.log
|
||||
|
||||
Parameter | Pump | Autotune | Days Missing
|
||||
---------------------------------------------------------
|
||||
ISF [mg/dL/U] | 86.200 | 85.993 |
|
||||
Carb Ratio[g/U]| 5.750 | 5.817 |
|
||||
00:00 | 0.966 | 1.002 | 0
|
||||
01:00 | 0.977 | 1.091 | 0
|
||||
02:00 | 0.971 | 1.118 | 0
|
||||
03:00 | 1.111 | 1.321 | 0
|
||||
04:00 | 0.974 | 1.091 | 0
|
||||
05:00 | 0.923 | 0.965 | 0
|
||||
06:00 | 0.823 | 0.825 | 0
|
||||
07:00 | 0.855 | 0.849 | 0
|
||||
08:00 | 0.902 | 0.909 | 0
|
||||
09:00 | 0.934 | 0.903 | 1
|
||||
10:00 | 0.938 | 0.906 | 1
|
||||
11:00 | 0.903 | 0.878 | 1
|
||||
12:00 | 0.882 | 0.861 | 1
|
||||
13:00 | 0.874 | 0.855 | 1
|
||||
14:00 | 0.866 | 0.848 | 1
|
||||
15:00 | 0.848 | 0.834 | 1
|
||||
16:00 | 0.758 | 0.762 | 1
|
||||
17:00 | 0.650 | 0.647 | 0
|
||||
18:00 | 0.648 | 0.631 | 0
|
||||
19:00 | 0.738 | 0.728 | 0
|
||||
20:00 | 0.847 | 0.838 | 0
|
||||
21:00 | 0.861 | 0.871 | 0
|
||||
22:00 | 0.863 | 0.886 | 0
|
||||
23:00 | 0.843 | 0.893 | 0
|
|
@ -0,0 +1,181 @@
|
|||
{
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"basalprofile": [
|
||||
{
|
||||
"i": 0,
|
||||
"minutes": 0,
|
||||
"rate": 1.002,
|
||||
"start": "00:00:00"
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"minutes": 60,
|
||||
"rate": 1.091,
|
||||
"start": "01:00:00"
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"minutes": 120,
|
||||
"rate": 1.118,
|
||||
"start": "02:00:00"
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"minutes": 180,
|
||||
"rate": 1.321,
|
||||
"start": "03:00:00"
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"minutes": 240,
|
||||
"rate": 1.091,
|
||||
"start": "04:00:00"
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"minutes": 300,
|
||||
"rate": 0.965,
|
||||
"start": "05:00:00"
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"minutes": 360,
|
||||
"rate": 0.825,
|
||||
"start": "06:00:00"
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"minutes": 420,
|
||||
"rate": 0.849,
|
||||
"start": "07:00:00"
|
||||
},
|
||||
{
|
||||
"i": 8,
|
||||
"minutes": 480,
|
||||
"rate": 0.909,
|
||||
"start": "08:00:00"
|
||||
},
|
||||
{
|
||||
"i": 9,
|
||||
"minutes": 540,
|
||||
"rate": 0.903,
|
||||
"start": "09:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 10,
|
||||
"minutes": 600,
|
||||
"rate": 0.906,
|
||||
"start": "10:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"minutes": 660,
|
||||
"rate": 0.878,
|
||||
"start": "11:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"minutes": 720,
|
||||
"rate": 0.861,
|
||||
"start": "12:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"minutes": 780,
|
||||
"rate": 0.855,
|
||||
"start": "13:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 14,
|
||||
"minutes": 840,
|
||||
"rate": 0.848,
|
||||
"start": "14:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 15,
|
||||
"minutes": 900,
|
||||
"rate": 0.834,
|
||||
"start": "15:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 16,
|
||||
"minutes": 960,
|
||||
"rate": 0.762,
|
||||
"start": "16:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 17,
|
||||
"minutes": 1020,
|
||||
"rate": 0.647,
|
||||
"start": "17:00:00"
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"minutes": 1080,
|
||||
"rate": 0.631,
|
||||
"start": "18:00:00"
|
||||
},
|
||||
{
|
||||
"i": 19,
|
||||
"minutes": 1140,
|
||||
"rate": 0.728,
|
||||
"start": "19:00:00"
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"minutes": 1200,
|
||||
"rate": 0.838,
|
||||
"start": "20:00:00"
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"minutes": 1260,
|
||||
"rate": 0.871,
|
||||
"start": "21:00:00"
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"minutes": 1320,
|
||||
"rate": 0.886,
|
||||
"start": "22:00:00"
|
||||
},
|
||||
{
|
||||
"i": 23,
|
||||
"minutes": 1380,
|
||||
"rate": 0.893,
|
||||
"start": "23:00:00"
|
||||
}
|
||||
],
|
||||
"carb_ratio": 5.817,
|
||||
"csf": 16.025,
|
||||
"curve": "ultra-rapid",
|
||||
"dia": 6,
|
||||
"insulinPeakTime": 45,
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"endoffset": 1440,
|
||||
"i": 0,
|
||||
"offset": 0,
|
||||
"sensitivity": 85.993,
|
||||
"start": "00:00:00",
|
||||
"x": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"min_5m_carbimpact": 8,
|
||||
"name": "Tuned Dyn2",
|
||||
"sens": 85.993,
|
||||
"timezone": "Europe/Paris",
|
||||
"units": "mg/dl",
|
||||
"useCustomPeakTime": true
|
||||
}
|
286
app/src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json
Normal file
286
app/src/test/res/autotune/test1/oaps-iobCalc.2022-05-21.json
Normal file
|
@ -0,0 +1,286 @@
|
|||
[
|
||||
{ "iob": 5.249, "activity": 0.0391, "date": 1653099848000},
|
||||
{ "iob": 5.292, "activity": 0.0438, "date": 1653100148000},
|
||||
{ "iob": 4.964, "activity": 0.047, "date": 1653100449000},
|
||||
{ "iob": 4.674, "activity": 0.0489, "date": 1653100748000},
|
||||
{ "iob": 4.377, "activity": 0.0498, "date": 1653101048000},
|
||||
{ "iob": 4.077, "activity": 0.0498, "date": 1653101348000},
|
||||
{ "iob": 3.73, "activity": 0.0491, "date": 1653101648000},
|
||||
{ "iob": 3.389, "activity": 0.0476, "date": 1653101948000},
|
||||
{ "iob": 3.055, "activity": 0.0457, "date": 1653102249000},
|
||||
{ "iob": 2.782, "activity": 0.0436, "date": 1653102548000},
|
||||
{ "iob": 2.47, "activity": 0.0411, "date": 1653102848000},
|
||||
{ "iob": 2.22, "activity": 0.0386, "date": 1653103149000},
|
||||
{ "iob": 1.935, "activity": 0.0358, "date": 1653103448000},
|
||||
{ "iob": 1.711, "activity": 0.0332, "date": 1653103748000},
|
||||
{ "iob": 1.452, "activity": 0.0304, "date": 1653104049000},
|
||||
{ "iob": 1.927, "activity": 0.028, "date": 1653104349000},
|
||||
{ "iob": 1.84, "activity": 0.027, "date": 1653104648000},
|
||||
{ "iob": 1.658, "activity": 0.0258, "date": 1653104949000},
|
||||
{ "iob": 1.482, "activity": 0.0245, "date": 1653105248000},
|
||||
{ "iob": 1.264, "activity": 0.0229, "date": 1653105549000},
|
||||
{ "iob": 1.104, "activity": 0.0212, "date": 1653105848000},
|
||||
{ "iob": 0.952, "activity": 0.0194, "date": 1653106149000},
|
||||
{ "iob": 1.619, "activity": 0.0181, "date": 1653106449000},
|
||||
{ "iob": 1.678, "activity": 0.0184, "date": 1653106749000},
|
||||
{ "iob": 1.775, "activity": 0.0187, "date": 1653107048000},
|
||||
{ "iob": 1.581, "activity": 0.019, "date": 1653107348000},
|
||||
{ "iob": 1.437, "activity": 0.0188, "date": 1653107648000},
|
||||
{ "iob": 1.294, "activity": 0.0183, "date": 1653107948000},
|
||||
{ "iob": 1.153, "activity": 0.0176, "date": 1653108249000},
|
||||
{ "iob": 1.017, "activity": 0.0167, "date": 1653108548000},
|
||||
{ "iob": 0.887, "activity": 0.0156, "date": 1653108848000},
|
||||
{ "iob": 1.011, "activity": 0.0147, "date": 1653109148000},
|
||||
{ "iob": 0.889, "activity": 0.0141, "date": 1653109448000},
|
||||
{ "iob": 0.771, "activity": 0.0133, "date": 1653109748000},
|
||||
{ "iob": 0.656, "activity": 0.0124, "date": 1653110049000},
|
||||
{ "iob": 0.547, "activity": 0.0114, "date": 1653110348000},
|
||||
{ "iob": 0.392, "activity": 0.0103, "date": 1653110649000},
|
||||
{ "iob": 0.294, "activity": 0.0091, "date": 1653110949000},
|
||||
{ "iob": 0.2, "activity": 0.008, "date": 1653111249000},
|
||||
{ "iob": 0.065, "activity": 0.0066, "date": 1653111549000},
|
||||
{ "iob": 0.034, "activity": 0.0055, "date": 1653111849000},
|
||||
{ "iob": 0.549, "activity": 0.0048, "date": 1653112148000},
|
||||
{ "iob": 0.674, "activity": 0.0053, "date": 1653112449000},
|
||||
{ "iob": 0.597, "activity": 0.0057, "date": 1653112749000},
|
||||
{ "iob": 0.468, "activity": 0.0058, "date": 1653113049000},
|
||||
{ "iob": 0.389, "activity": 0.0057, "date": 1653113349000},
|
||||
{ "iob": 0.262, "activity": 0.0053, "date": 1653113649000},
|
||||
{ "iob": 0.186, "activity": 0.0048, "date": 1653113949000},
|
||||
{ "iob": 0.064, "activity": 0.0041, "date": 1653114249000},
|
||||
{ "iob": -0.005, "activity": 0.0034, "date": 1653114549000},
|
||||
{ "iob": -0.12, "activity": 0.0026, "date": 1653114849000},
|
||||
{ "iob": -0.181, "activity": 0.0018, "date": 1653115149000},
|
||||
{ "iob": -0.287, "activity": 0.0008, "date": 1653115449000},
|
||||
{ "iob": -0.34, "activity": 0, "date": 1653115749000},
|
||||
{ "iob": -0.436, "activity": -0.001, "date": 1653116049000},
|
||||
{ "iob": -0.48, "activity": -0.0018, "date": 1653116349000},
|
||||
{ "iob": -0.519, "activity": -0.0026, "date": 1653116649000},
|
||||
{ "iob": -0.554, "activity": -0.0034, "date": 1653116949000},
|
||||
{ "iob": -0.585, "activity": -0.0041, "date": 1653117249000},
|
||||
{ "iob": -0.662, "activity": -0.0049, "date": 1653117549000},
|
||||
{ "iob": -0.687, "activity": -0.0055, "date": 1653117848000},
|
||||
{ "iob": -0.708, "activity": -0.0061, "date": 1653118149000},
|
||||
{ "iob": -0.726, "activity": -0.0066, "date": 1653118449000},
|
||||
{ "iob": -0.351, "activity": -0.0071, "date": 1653118748000},
|
||||
{ "iob": -0.218, "activity": -0.0064, "date": 1653119049000},
|
||||
{ "iob": -0.088, "activity": -0.0055, "date": 1653119349000},
|
||||
{ "iob": 13.594, "activity": 0.0023, "date": 1653119649000},
|
||||
{ "iob": 13.552, "activity": 0.0331, "date": 1653119949000},
|
||||
{ "iob": 13.224, "activity": 0.0573, "date": 1653120249000},
|
||||
{ "iob": 12.838, "activity": 0.076, "date": 1653120548000},
|
||||
{ "iob": 12.322, "activity": 0.09, "date": 1653120849000},
|
||||
{ "iob": 11.794, "activity": 0.1001, "date": 1653121149000},
|
||||
{ "iob": 11.177, "activity": 0.1068, "date": 1653121449000},
|
||||
{ "iob": 10.58, "activity": 0.111, "date": 1653121749000},
|
||||
{ "iob": 9.919, "activity": 0.1129, "date": 1653122049000},
|
||||
{ "iob": 9.254, "activity": 0.1129, "date": 1653122349000},
|
||||
{ "iob": 8.643, "activity": 0.1114, "date": 1653122649000},
|
||||
{ "iob": 7.992, "activity": 0.1088, "date": 1653122949000},
|
||||
{ "iob": 7.406, "activity": 0.1053, "date": 1653123248000},
|
||||
{ "iob": 7.111, "activity": 0.1012, "date": 1653123549000},
|
||||
{ "iob": 6.515, "activity": 0.0971, "date": 1653123849000},
|
||||
{ "iob": 5.99, "activity": 0.0927, "date": 1653124149000},
|
||||
{ "iob": 5.439, "activity": 0.0878, "date": 1653124448000},
|
||||
{ "iob": 4.962, "activity": 0.0828, "date": 1653124749000},
|
||||
{ "iob": 4.462, "activity": 0.0775, "date": 1653125048000},
|
||||
{ "iob": 4.036, "activity": 0.0724, "date": 1653125349000},
|
||||
{ "iob": 3.638, "activity": 0.0672, "date": 1653125649000},
|
||||
{ "iob": 3.214, "activity": 0.0621, "date": 1653125948000},
|
||||
{ "iob": 2.866, "activity": 0.0571, "date": 1653126249000},
|
||||
{ "iob": 2.494, "activity": 0.0522, "date": 1653126549000},
|
||||
{ "iob": 2.193, "activity": 0.0476, "date": 1653126849000},
|
||||
{ "iob": 1.867, "activity": 0.0431, "date": 1653127149000},
|
||||
{ "iob": 1.563, "activity": 0.0388, "date": 1653127449000},
|
||||
{ "iob": 1.329, "activity": 0.0347, "date": 1653127748000},
|
||||
{ "iob": 1.115, "activity": 0.0309, "date": 1653128049000},
|
||||
{ "iob": 0.87, "activity": 0.0272, "date": 1653128349000},
|
||||
{ "iob": 0.692, "activity": 0.0239, "date": 1653128649000},
|
||||
{ "iob": 0.482, "activity": 0.0206, "date": 1653128948000},
|
||||
{ "iob": 0.287, "activity": 0.0176, "date": 1653129249000},
|
||||
{ "iob": 0.156, "activity": 0.0148, "date": 1653129548000},
|
||||
{ "iob": 0.038, "activity": 0.0122, "date": 1653129848000},
|
||||
{ "iob": -0.067, "activity": 0.0099, "date": 1653130149000},
|
||||
{ "iob": -0.161, "activity": 0.0078, "date": 1653130448000},
|
||||
{ "iob": -0.195, "activity": 0.006, "date": 1653130748000},
|
||||
{ "iob": -0.271, "activity": 0.0044, "date": 1653131049000},
|
||||
{ "iob": -0.339, "activity": 0.0029, "date": 1653131349000},
|
||||
{ "iob": -0.4, "activity": 0.0015, "date": 1653131649000},
|
||||
{ "iob": -0.155, "activity": 0.0007, "date": 1653131948000},
|
||||
{ "iob": 8.11, "activity": 0.0045, "date": 1653132249000},
|
||||
{ "iob": 7.992, "activity": 0.0222, "date": 1653132549000},
|
||||
{ "iob": 7.745, "activity": 0.0359, "date": 1653132849000},
|
||||
{ "iob": 7.488, "activity": 0.0465, "date": 1653133149000},
|
||||
{ "iob": 7.136, "activity": 0.0541, "date": 1653133449000},
|
||||
{ "iob": 6.8, "activity": 0.0596, "date": 1653133749000},
|
||||
{ "iob": 6.441, "activity": 0.0633, "date": 1653134049000},
|
||||
{ "iob": 6.022, "activity": 0.0651, "date": 1653134349000},
|
||||
{ "iob": 5.644, "activity": 0.0657, "date": 1653134649000},
|
||||
{ "iob": 5.216, "activity": 0.0653, "date": 1653134949000},
|
||||
{ "iob": 4.962, "activity": 0.0644, "date": 1653135249000},
|
||||
{ "iob": 4.544, "activity": 0.0627, "date": 1653135549000},
|
||||
{ "iob": 4.185, "activity": 0.0606, "date": 1653135849000},
|
||||
{ "iob": 3.839, "activity": 0.058, "date": 1653136149000},
|
||||
{ "iob": 3.456, "activity": 0.055, "date": 1653136449000},
|
||||
{ "iob": 3.139, "activity": 0.0519, "date": 1653136749000},
|
||||
{ "iob": 2.788, "activity": 0.0486, "date": 1653137049000},
|
||||
{ "iob": 2.503, "activity": 0.0453, "date": 1653137350000},
|
||||
{ "iob": 2.186, "activity": 0.0418, "date": 1653137649000},
|
||||
{ "iob": 3.17, "activity": 0.0407, "date": 1653137949000},
|
||||
{ "iob": 3.956, "activity": 0.0413, "date": 1653138249000},
|
||||
{ "iob": 3.648, "activity": 0.042, "date": 1653138549000},
|
||||
{ "iob": 4.126, "activity": 0.043, "date": 1653138849000},
|
||||
{ "iob": 3.81, "activity": 0.0437, "date": 1653139150000},
|
||||
{ "iob": 3.541, "activity": 0.0437, "date": 1653139450000},
|
||||
{ "iob": 3.272, "activity": 0.0431, "date": 1653139749000},
|
||||
{ "iob": 3.588, "activity": 0.0428, "date": 1653140049000},
|
||||
{ "iob": 3.875, "activity": 0.0431, "date": 1653140349000},
|
||||
{ "iob": 3.608, "activity": 0.0434, "date": 1653140648000},
|
||||
{ "iob": 4.271, "activity": 0.0442, "date": 1653140949000},
|
||||
{ "iob": 3.996, "activity": 0.0452, "date": 1653141249000},
|
||||
{ "iob": 4.298, "activity": 0.0462, "date": 1653141548000},
|
||||
{ "iob": 4.015, "activity": 0.0468, "date": 1653141849000},
|
||||
{ "iob": 4.538, "activity": 0.0481, "date": 1653142149000},
|
||||
{ "iob": 4.245, "activity": 0.0489, "date": 1653142449000},
|
||||
{ "iob": 4.729, "activity": 0.05, "date": 1653142749000},
|
||||
{ "iob": 4.426, "activity": 0.0508, "date": 1653143049000},
|
||||
{ "iob": 4.353, "activity": 0.051, "date": 1653143349000},
|
||||
{ "iob": 4.049, "activity": 0.0507, "date": 1653143650000},
|
||||
{ "iob": 3.747, "activity": 0.0498, "date": 1653143949000},
|
||||
{ "iob": 3.402, "activity": 0.0483, "date": 1653144249000},
|
||||
{ "iob": 3.115, "activity": 0.0464, "date": 1653144550000},
|
||||
{ "iob": 2.788, "activity": 0.0441, "date": 1653144849000},
|
||||
{ "iob": 2.524, "activity": 0.0417, "date": 1653145149000},
|
||||
{ "iob": 2.271, "activity": 0.0391, "date": 1653145449000},
|
||||
{ "iob": 2.033, "activity": 0.0365, "date": 1653145750000},
|
||||
{ "iob": 1.807, "activity": 0.0338, "date": 1653146050000},
|
||||
{ "iob": 1.594, "activity": 0.0312, "date": 1653146349000},
|
||||
{ "iob": 1.395, "activity": 0.0286, "date": 1653146650000},
|
||||
{ "iob": 1.258, "activity": 0.0262, "date": 1653146949000},
|
||||
{ "iob": 1.034, "activity": 0.0236, "date": 1653147249000},
|
||||
{ "iob": 0.971, "activity": 0.0215, "date": 1653147549000},
|
||||
{ "iob": 1.008, "activity": 0.0197, "date": 1653147849000},
|
||||
{ "iob": 0.963, "activity": 0.0183, "date": 1653148149000},
|
||||
{ "iob": 1.046, "activity": 0.0171, "date": 1653148450000},
|
||||
{ "iob": 0.912, "activity": 0.0161, "date": 1653148749000},
|
||||
{ "iob": 1.254, "activity": 0.0156, "date": 1653149049000},
|
||||
{ "iob": 1.176, "activity": 0.0154, "date": 1653149349000},
|
||||
{ "iob": 1.051, "activity": 0.0149, "date": 1653149650000},
|
||||
{ "iob": 0.928, "activity": 0.0142, "date": 1653149949000},
|
||||
{ "iob": 1.008, "activity": 0.0138, "date": 1653150249000},
|
||||
{ "iob": 0.89, "activity": 0.0133, "date": 1653150549000},
|
||||
{ "iob": 0.775, "activity": 0.0127, "date": 1653150849000},
|
||||
{ "iob": 0.664, "activity": 0.0118, "date": 1653151149000},
|
||||
{ "iob": 0.606, "activity": 0.011, "date": 1653151449000},
|
||||
{ "iob": 0.703, "activity": 0.0105, "date": 1653151749000},
|
||||
{ "iob": 0.702, "activity": 0.0101, "date": 1653152049000},
|
||||
{ "iob": 0.902, "activity": 0.0101, "date": 1653152349000},
|
||||
{ "iob": 0.801, "activity": 0.0101, "date": 1653152649000},
|
||||
{ "iob": 0.701, "activity": 0.0098, "date": 1653152949000},
|
||||
{ "iob": 0.603, "activity": 0.0094, "date": 1653153249000},
|
||||
{ "iob": 0.508, "activity": 0.0088, "date": 1653153549000},
|
||||
{ "iob": 0.415, "activity": 0.0081, "date": 1653153849000},
|
||||
{ "iob": 0.327, "activity": 0.0074, "date": 1653154149000},
|
||||
{ "iob": 0.242, "activity": 0.0066, "date": 1653154449000},
|
||||
{ "iob": 0.161, "activity": 0.0058, "date": 1653154749000},
|
||||
{ "iob": 0.134, "activity": 0.005, "date": 1653155049000},
|
||||
{ "iob": 0.4, "activity": 0.0048, "date": 1653155349000},
|
||||
{ "iob": 0.475, "activity": 0.0049, "date": 1653155649000},
|
||||
{ "iob": 0.401, "activity": 0.005, "date": 1653155950000},
|
||||
{ "iob": 0.327, "activity": 0.0048, "date": 1653156250000},
|
||||
{ "iob": 0.203, "activity": 0.0044, "date": 1653156549000},
|
||||
{ "iob": 0.132, "activity": 0.004, "date": 1653156849000},
|
||||
{ "iob": 0.064, "activity": 0.0034, "date": 1653157149000},
|
||||
{ "iob": -0.002, "activity": 0.0028, "date": 1653157449000},
|
||||
{ "iob": -0.064, "activity": 0.0022, "date": 1653157750000},
|
||||
{ "iob": -0.073, "activity": 0.0016, "date": 1653158049000},
|
||||
{ "iob": -0.08, "activity": 0.0011, "date": 1653158349000},
|
||||
{ "iob": -0.085, "activity": 0.0007, "date": 1653158649000},
|
||||
{ "iob": -0.087, "activity": 0.0004, "date": 1653158949000},
|
||||
{ "iob": -0.088, "activity": 0.0001, "date": 1653159249000},
|
||||
{ "iob": -0.088, "activity": -0.0001, "date": 1653159549000},
|
||||
{ "iob": -0.137, "activity": -0.0004, "date": 1653159849000},
|
||||
{ "iob": -0.184, "activity": -0.0007, "date": 1653160150000},
|
||||
{ "iob": -0.18, "activity": -0.001, "date": 1653160449000},
|
||||
{ "iob": -0.175, "activity": -0.0012, "date": 1653160749000},
|
||||
{ "iob": -0.168, "activity": -0.0014, "date": 1653161049000},
|
||||
{ "iob": -0.211, "activity": -0.0015, "date": 1653161350000},
|
||||
{ "iob": -0.203, "activity": -0.0017, "date": 1653161649000},
|
||||
{ "iob": -0.243, "activity": -0.002, "date": 1653161950000},
|
||||
{ "iob": -0.282, "activity": -0.0023, "date": 1653162250000},
|
||||
{ "iob": -0.32, "activity": -0.0026, "date": 1653162549000},
|
||||
{ "iob": -0.357, "activity": -0.0029, "date": 1653162850000},
|
||||
{ "iob": -0.391, "activity": -0.0032, "date": 1653163150000},
|
||||
{ "iob": -0.375, "activity": -0.0035, "date": 1653163449000},
|
||||
{ "iob": -0.357, "activity": -0.0036, "date": 1653163749000},
|
||||
{ "iob": -0.149, "activity": -0.0035, "date": 1653164049000},
|
||||
{ "iob": -0.132, "activity": -0.0031, "date": 1653164350000},
|
||||
{ "iob": 9.296, "activity": 0.015, "date": 1653164649000},
|
||||
{ "iob": 9.123, "activity": 0.0332, "date": 1653164950000},
|
||||
{ "iob": 8.96, "activity": 0.0474, "date": 1653165249000},
|
||||
{ "iob": 8.644, "activity": 0.0584, "date": 1653165550000},
|
||||
{ "iob": 8.282, "activity": 0.0664, "date": 1653165850000},
|
||||
{ "iob": 7.835, "activity": 0.0718, "date": 1653166149000},
|
||||
{ "iob": 7.416, "activity": 0.0753, "date": 1653166450000},
|
||||
{ "iob": 6.984, "activity": 0.0772, "date": 1653166749000},
|
||||
{ "iob": 6.547, "activity": 0.0776, "date": 1653167049000},
|
||||
{ "iob": 6.061, "activity": 0.0769, "date": 1653167350000},
|
||||
{ "iob": 5.68, "activity": 0.0754, "date": 1653167650000},
|
||||
{ "iob": 5.458, "activity": 0.0734, "date": 1653167949000},
|
||||
{ "iob": 5.046, "activity": 0.0712, "date": 1653168250000},
|
||||
{ "iob": 4.925, "activity": 0.069, "date": 1653168549000},
|
||||
{ "iob": 4.487, "activity": 0.0663, "date": 1653168849000},
|
||||
{ "iob": 4.113, "activity": 0.0633, "date": 1653169150000},
|
||||
{ "iob": 3.706, "activity": 0.0599, "date": 1653169449000},
|
||||
{ "iob": 3.363, "activity": 0.0566, "date": 1653169749000},
|
||||
{ "iob": 3.039, "activity": 0.053, "date": 1653170049000},
|
||||
{ "iob": 2.733, "activity": 0.0494, "date": 1653170350000},
|
||||
{ "iob": 2.395, "activity": 0.0457, "date": 1653170650000},
|
||||
{ "iob": 2.126, "activity": 0.0421, "date": 1653170950000},
|
||||
{ "iob": 1.824, "activity": 0.0385, "date": 1653171250000},
|
||||
{ "iob": 1.64, "activity": 0.0351, "date": 1653171549000},
|
||||
{ "iob": 1.473, "activity": 0.0319, "date": 1653171849000},
|
||||
{ "iob": 1.273, "activity": 0.0288, "date": 1653172150000},
|
||||
{ "iob": 1.136, "activity": 0.026, "date": 1653172450000},
|
||||
{ "iob": 1.011, "activity": 0.0235, "date": 1653172749000},
|
||||
{ "iob": 0.852, "activity": 0.021, "date": 1653173050000},
|
||||
{ "iob": 0.752, "activity": 0.0189, "date": 1653173350000},
|
||||
{ "iob": 0.662, "activity": 0.0169, "date": 1653173650000},
|
||||
{ "iob": 0.534, "activity": 0.0149, "date": 1653173949000},
|
||||
{ "iob": 0.463, "activity": 0.0132, "date": 1653174249000},
|
||||
{ "iob": 0.352, "activity": 0.0115, "date": 1653174550000},
|
||||
{ "iob": 0.298, "activity": 0.0101, "date": 1653174850000},
|
||||
{ "iob": 0.25, "activity": 0.0089, "date": 1653175149000},
|
||||
{ "iob": 0.329, "activity": 0.0079, "date": 1653175450000},
|
||||
{ "iob": 0.34, "activity": 0.0074, "date": 1653175750000},
|
||||
{ "iob": 0.304, "activity": 0.0068, "date": 1653176050000},
|
||||
{ "iob": 0.272, "activity": 0.0062, "date": 1653176350000},
|
||||
{ "iob": 0.512, "activity": 0.006, "date": 1653176650000},
|
||||
{ "iob": 0.581, "activity": 0.0061, "date": 1653176950000},
|
||||
{ "iob": 1.238, "activity": 0.0075, "date": 1653177250000},
|
||||
{ "iob": 1.147, "activity": 0.0088, "date": 1653177550000},
|
||||
{ "iob": 1.151, "activity": 0.0098, "date": 1653177850000},
|
||||
{ "iob": 1.05, "activity": 0.0104, "date": 1653178149000},
|
||||
{ "iob": 0.947, "activity": 0.0107, "date": 1653178449000},
|
||||
{ "iob": 0.844, "activity": 0.0106, "date": 1653178750000},
|
||||
{ "iob": 0.741, "activity": 0.0104, "date": 1653179050000},
|
||||
{ "iob": 0.59, "activity": 0.0099, "date": 1653179350000},
|
||||
{ "iob": 0.542, "activity": 0.0093, "date": 1653179649000},
|
||||
{ "iob": 0.497, "activity": 0.0087, "date": 1653179949000},
|
||||
{ "iob": 0.456, "activity": 0.0081, "date": 1653180250000},
|
||||
{ "iob": 0.516, "activity": 0.0077, "date": 1653180549000},
|
||||
{ "iob": 0.429, "activity": 0.0072, "date": 1653180849000},
|
||||
{ "iob": 0.294, "activity": 0.0066, "date": 1653181150000},
|
||||
{ "iob": 0.163, "activity": 0.0058, "date": 1653181450000},
|
||||
{ "iob": 0.037, "activity": 0.0049, "date": 1653181750000},
|
||||
{ "iob": -0.085, "activity": 0.0039, "date": 1653182050000},
|
||||
{ "iob": -0.153, "activity": 0.0029, "date": 1653182349000},
|
||||
{ "iob": -0.265, "activity": 0.0018, "date": 1653182650000},
|
||||
{ "iob": -0.371, "activity": 0.0007, "date": 1653182949000},
|
||||
{ "iob": -0.471, "activity": -0.0005, "date": 1653183249000},
|
||||
{ "iob": -0.566, "activity": -0.0016, "date": 1653183550000},
|
||||
{ "iob": -0.606, "activity": -0.0026, "date": 1653183850000},
|
||||
{ "iob": -0.64, "activity": -0.0036, "date": 1653184150000},
|
||||
{ "iob": -0.67, "activity": -0.0044, "date": 1653184450000}
|
||||
]
|
||||
|
147
app/src/test/res/autotune/test1/profile.pump.json
Normal file
147
app/src/test/res/autotune/test1/profile.pump.json
Normal file
|
@ -0,0 +1,147 @@
|
|||
{
|
||||
"name": "Tuned Dyn2",
|
||||
"min_5m_carbimpact": 8,
|
||||
"dia": 6,
|
||||
"curve": "ultra-rapid",
|
||||
"useCustomPeakTime": true,
|
||||
"insulinPeakTime": 45,
|
||||
"basalprofile": [
|
||||
{
|
||||
"start": "00:00:00",
|
||||
"minutes": 0,
|
||||
"rate": 0.966
|
||||
},
|
||||
{
|
||||
"start": "01:00:00",
|
||||
"minutes": 60,
|
||||
"rate": 0.977
|
||||
},
|
||||
{
|
||||
"start": "02:00:00",
|
||||
"minutes": 120,
|
||||
"rate": 0.971
|
||||
},
|
||||
{
|
||||
"start": "03:00:00",
|
||||
"minutes": 180,
|
||||
"rate": 1.111
|
||||
},
|
||||
{
|
||||
"start": "04:00:00",
|
||||
"minutes": 240,
|
||||
"rate": 0.974
|
||||
},
|
||||
{
|
||||
"start": "05:00:00",
|
||||
"minutes": 300,
|
||||
"rate": 0.923
|
||||
},
|
||||
{
|
||||
"start": "06:00:00",
|
||||
"minutes": 360,
|
||||
"rate": 0.823
|
||||
},
|
||||
{
|
||||
"start": "07:00:00",
|
||||
"minutes": 420,
|
||||
"rate": 0.855
|
||||
},
|
||||
{
|
||||
"start": "08:00:00",
|
||||
"minutes": 480,
|
||||
"rate": 0.902
|
||||
},
|
||||
{
|
||||
"start": "09:00:00",
|
||||
"minutes": 540,
|
||||
"rate": 0.934
|
||||
},
|
||||
{
|
||||
"start": "10:00:00",
|
||||
"minutes": 600,
|
||||
"rate": 0.938
|
||||
},
|
||||
{
|
||||
"start": "11:00:00",
|
||||
"minutes": 660,
|
||||
"rate": 0.903
|
||||
},
|
||||
{
|
||||
"start": "12:00:00",
|
||||
"minutes": 720,
|
||||
"rate": 0.882
|
||||
},
|
||||
{
|
||||
"start": "13:00:00",
|
||||
"minutes": 780,
|
||||
"rate": 0.874
|
||||
},
|
||||
{
|
||||
"start": "14:00:00",
|
||||
"minutes": 840,
|
||||
"rate": 0.866
|
||||
},
|
||||
{
|
||||
"start": "15:00:00",
|
||||
"minutes": 900,
|
||||
"rate": 0.848
|
||||
},
|
||||
{
|
||||
"start": "16:00:00",
|
||||
"minutes": 960,
|
||||
"rate": 0.758
|
||||
},
|
||||
{
|
||||
"start": "17:00:00",
|
||||
"minutes": 1020,
|
||||
"rate": 0.65
|
||||
},
|
||||
{
|
||||
"start": "18:00:00",
|
||||
"minutes": 1080,
|
||||
"rate": 0.648
|
||||
},
|
||||
{
|
||||
"start": "19:00:00",
|
||||
"minutes": 1140,
|
||||
"rate": 0.738
|
||||
},
|
||||
{
|
||||
"start": "20:00:00",
|
||||
"minutes": 1200,
|
||||
"rate": 0.847
|
||||
},
|
||||
{
|
||||
"start": "21:00:00",
|
||||
"minutes": 1260,
|
||||
"rate": 0.861
|
||||
},
|
||||
{
|
||||
"start": "22:00:00",
|
||||
"minutes": 1320,
|
||||
"rate": 0.863
|
||||
},
|
||||
{
|
||||
"start": "23:00:00",
|
||||
"minutes": 1380,
|
||||
"rate": 0.843
|
||||
}
|
||||
],
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"i": 0,
|
||||
"start": "00:00:00",
|
||||
"sensitivity": 86.2,
|
||||
"offset": 0,
|
||||
"x": 0,
|
||||
"endoffset": 1440
|
||||
}
|
||||
]
|
||||
},
|
||||
"carb_ratio": 5.75,
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"units": "mg/dl",
|
||||
"timezone": "Europe/Paris"
|
||||
}
|
2882
app/src/test/res/autotune/test2/aaps-entries.2022-05-21.json
Normal file
2882
app/src/test/res/autotune/test2/aaps-entries.2022-05-21.json
Normal file
File diff suppressed because it is too large
Load diff
3146
app/src/test/res/autotune/test2/aaps-treatments.2022-05-21.json
Normal file
3146
app/src/test/res/autotune/test2/aaps-treatments.2022-05-21.json
Normal file
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,53 @@
|
|||
Parameter | Pump | Autotune | Days Missing
|
||||
---------------------------------------------------------
|
||||
ISF [mg/dL/U] | 86.200 | 82.222 |
|
||||
Carb Ratio[g/U]| 5.750 | 5.750 |
|
||||
Basals [U/hr] | - | |
|
||||
00:00 | 0.966 | 1.009 | 0
|
||||
00:30 | | |
|
||||
01:00 | 0.977 | 0.984 | 0
|
||||
01:30 | | |
|
||||
02:00 | 0.971 | 0.988 | 0
|
||||
02:30 | | |
|
||||
03:00 | 1.111 | 1.158 | 0
|
||||
03:30 | | |
|
||||
04:00 | 0.974 | 1.028 | 0
|
||||
04:30 | | |
|
||||
05:00 | 0.923 | 0.933 | 0
|
||||
05:30 | | |
|
||||
06:00 | 0.823 | 0.824 | 0
|
||||
06:30 | | |
|
||||
07:00 | 0.855 | 0.849 | 0
|
||||
07:30 | | |
|
||||
08:00 | 0.902 | 0.909 | 0
|
||||
08:30 | | |
|
||||
09:00 | 0.934 | 0.954 | 0
|
||||
09:30 | | |
|
||||
10:00 | 0.938 | 0.961 | 0
|
||||
10:30 | | |
|
||||
11:00 | 0.903 | 0.926 | 0
|
||||
11:30 | | |
|
||||
12:00 | 0.882 | 0.885 | 0
|
||||
12:30 | | |
|
||||
13:00 | 0.874 | 0.876 | 1
|
||||
13:30 | | |
|
||||
14:00 | 0.866 | 0.869 | 1
|
||||
14:30 | | |
|
||||
15:00 | 0.848 | 0.881 | 0
|
||||
15:30 | | |
|
||||
16:00 | 0.758 | 0.798 | 0
|
||||
16:30 | | |
|
||||
17:00 | 0.650 | 0.683 | 0
|
||||
17:30 | | |
|
||||
18:00 | 0.648 | 0.634 | 0
|
||||
18:30 | | |
|
||||
19:00 | 0.738 | 0.725 | 0
|
||||
19:30 | | |
|
||||
20:00 | 0.847 | 0.838 | 0
|
||||
20:30 | | |
|
||||
21:00 | 0.861 | 0.881 | 0
|
||||
21:30 | | |
|
||||
22:00 | 0.863 | 0.910 | 0
|
||||
22:30 | | |
|
||||
23:00 | 0.843 | 0.910 | 0
|
||||
23:30 | | |
|
147
app/src/test/res/autotune/test2/aapsorefprofile.2022-05-21.json
Normal file
147
app/src/test/res/autotune/test2/aapsorefprofile.2022-05-21.json
Normal file
|
@ -0,0 +1,147 @@
|
|||
{
|
||||
"name": "Tuned Dyn2",
|
||||
"min_5m_carbimpact": 8,
|
||||
"dia": 6,
|
||||
"curve": "ultra-rapid",
|
||||
"useCustomPeakTime": true,
|
||||
"insulinPeakTime": 45,
|
||||
"basalprofile": [
|
||||
{
|
||||
"start": "00:00:00",
|
||||
"minutes": 0,
|
||||
"rate": 0.966
|
||||
},
|
||||
{
|
||||
"start": "01:00:00",
|
||||
"minutes": 60,
|
||||
"rate": 0.977
|
||||
},
|
||||
{
|
||||
"start": "02:00:00",
|
||||
"minutes": 120,
|
||||
"rate": 0.971
|
||||
},
|
||||
{
|
||||
"start": "03:00:00",
|
||||
"minutes": 180,
|
||||
"rate": 1.111
|
||||
},
|
||||
{
|
||||
"start": "04:00:00",
|
||||
"minutes": 240,
|
||||
"rate": 0.974
|
||||
},
|
||||
{
|
||||
"start": "05:00:00",
|
||||
"minutes": 300,
|
||||
"rate": 0.923
|
||||
},
|
||||
{
|
||||
"start": "06:00:00",
|
||||
"minutes": 360,
|
||||
"rate": 0.823
|
||||
},
|
||||
{
|
||||
"start": "07:00:00",
|
||||
"minutes": 420,
|
||||
"rate": 0.855
|
||||
},
|
||||
{
|
||||
"start": "08:00:00",
|
||||
"minutes": 480,
|
||||
"rate": 0.902
|
||||
},
|
||||
{
|
||||
"start": "09:00:00",
|
||||
"minutes": 540,
|
||||
"rate": 0.934
|
||||
},
|
||||
{
|
||||
"start": "10:00:00",
|
||||
"minutes": 600,
|
||||
"rate": 0.938
|
||||
},
|
||||
{
|
||||
"start": "11:00:00",
|
||||
"minutes": 660,
|
||||
"rate": 0.903
|
||||
},
|
||||
{
|
||||
"start": "12:00:00",
|
||||
"minutes": 720,
|
||||
"rate": 0.882
|
||||
},
|
||||
{
|
||||
"start": "13:00:00",
|
||||
"minutes": 780,
|
||||
"rate": 0.874
|
||||
},
|
||||
{
|
||||
"start": "14:00:00",
|
||||
"minutes": 840,
|
||||
"rate": 0.866
|
||||
},
|
||||
{
|
||||
"start": "15:00:00",
|
||||
"minutes": 900,
|
||||
"rate": 0.848
|
||||
},
|
||||
{
|
||||
"start": "16:00:00",
|
||||
"minutes": 960,
|
||||
"rate": 0.758
|
||||
},
|
||||
{
|
||||
"start": "17:00:00",
|
||||
"minutes": 1020,
|
||||
"rate": 0.65
|
||||
},
|
||||
{
|
||||
"start": "18:00:00",
|
||||
"minutes": 1080,
|
||||
"rate": 0.648
|
||||
},
|
||||
{
|
||||
"start": "19:00:00",
|
||||
"minutes": 1140,
|
||||
"rate": 0.738
|
||||
},
|
||||
{
|
||||
"start": "20:00:00",
|
||||
"minutes": 1200,
|
||||
"rate": 0.847
|
||||
},
|
||||
{
|
||||
"start": "21:00:00",
|
||||
"minutes": 1260,
|
||||
"rate": 0.861
|
||||
},
|
||||
{
|
||||
"start": "22:00:00",
|
||||
"minutes": 1320,
|
||||
"rate": 0.863
|
||||
},
|
||||
{
|
||||
"start": "23:00:00",
|
||||
"minutes": 1380,
|
||||
"rate": 0.843
|
||||
}
|
||||
],
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"i": 0,
|
||||
"start": "00:00:00",
|
||||
"sensitivity": 86.2,
|
||||
"offset": 0,
|
||||
"x": 0,
|
||||
"endoffset": 1440
|
||||
}
|
||||
]
|
||||
},
|
||||
"carb_ratio": 5.75,
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"units": "mg/dl",
|
||||
"timezone": "Europe/Paris"
|
||||
}
|
175
app/src/test/res/autotune/test2/aapsorefprofile.json
Normal file
175
app/src/test/res/autotune/test2/aapsorefprofile.json
Normal file
|
@ -0,0 +1,175 @@
|
|||
{
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"basalprofile": [
|
||||
{
|
||||
"i": 0,
|
||||
"minutes": 0,
|
||||
"rate": 1.009,
|
||||
"start": "00:00:00"
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"minutes": 60,
|
||||
"rate": 0.984,
|
||||
"start": "01:00:00"
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"minutes": 120,
|
||||
"rate": 0.988,
|
||||
"start": "02:00:00"
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"minutes": 180,
|
||||
"rate": 1.158,
|
||||
"start": "03:00:00"
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"minutes": 240,
|
||||
"rate": 1.028,
|
||||
"start": "04:00:00"
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"minutes": 300,
|
||||
"rate": 0.933,
|
||||
"start": "05:00:00"
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"minutes": 360,
|
||||
"rate": 0.824,
|
||||
"start": "06:00:00"
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"minutes": 420,
|
||||
"rate": 0.849,
|
||||
"start": "07:00:00"
|
||||
},
|
||||
{
|
||||
"i": 8,
|
||||
"minutes": 480,
|
||||
"rate": 0.909,
|
||||
"start": "08:00:00"
|
||||
},
|
||||
{
|
||||
"i": 9,
|
||||
"minutes": 540,
|
||||
"rate": 0.954,
|
||||
"start": "09:00:00"
|
||||
},
|
||||
{
|
||||
"i": 10,
|
||||
"minutes": 600,
|
||||
"rate": 0.961,
|
||||
"start": "10:00:00"
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"minutes": 660,
|
||||
"rate": 0.926,
|
||||
"start": "11:00:00"
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"minutes": 720,
|
||||
"rate": 0.885,
|
||||
"start": "12:00:00"
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"minutes": 780,
|
||||
"rate": 0.876,
|
||||
"start": "13:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 14,
|
||||
"minutes": 840,
|
||||
"rate": 0.869,
|
||||
"start": "14:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 15,
|
||||
"minutes": 900,
|
||||
"rate": 0.881,
|
||||
"start": "15:00:00"
|
||||
},
|
||||
{
|
||||
"i": 16,
|
||||
"minutes": 960,
|
||||
"rate": 0.798,
|
||||
"start": "16:00:00"
|
||||
},
|
||||
{
|
||||
"i": 17,
|
||||
"minutes": 1020,
|
||||
"rate": 0.683,
|
||||
"start": "17:00:00"
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"minutes": 1080,
|
||||
"rate": 0.634,
|
||||
"start": "18:00:00"
|
||||
},
|
||||
{
|
||||
"i": 19,
|
||||
"minutes": 1140,
|
||||
"rate": 0.725,
|
||||
"start": "19:00:00"
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"minutes": 1200,
|
||||
"rate": 0.838,
|
||||
"start": "20:00:00"
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"minutes": 1260,
|
||||
"rate": 0.881,
|
||||
"start": "21:00:00"
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"minutes": 1320,
|
||||
"rate": 0.91,
|
||||
"start": "22:00:00"
|
||||
},
|
||||
{
|
||||
"i": 23,
|
||||
"minutes": 1380,
|
||||
"rate": 0.91,
|
||||
"start": "23:00:00"
|
||||
}
|
||||
],
|
||||
"carb_ratio": 5.75,
|
||||
"csf": 14.991,
|
||||
"curve": "ultra-rapid",
|
||||
"dia": 6,
|
||||
"insulinPeakTime": 45,
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"endoffset": 1440,
|
||||
"i": 0,
|
||||
"offset": 0,
|
||||
"sensitivity": 82.222,
|
||||
"start": "00:00:00",
|
||||
"x": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"min_5m_carbimpact": 8,
|
||||
"name": "Tuned Dyn2",
|
||||
"sens": 82.222,
|
||||
"timezone": "Europe/Paris",
|
||||
"units": "mg/dl",
|
||||
"useCustomPeakTime": true
|
||||
}
|
1
app/src/test/res/autotune/test2/autotune.2022-05-21.json
Normal file
1
app/src/test/res/autotune/test2/autotune.2022-05-21.json
Normal file
File diff suppressed because one or more lines are too long
420
app/src/test/res/autotune/test2/autotune.2022-06-25-111214.log
Normal file
420
app/src/test/res/autotune/test2/autotune.2022-06-25-111214.log
Normal file
|
@ -0,0 +1,420 @@
|
|||
Autotune disk usage:
|
||||
160K .
|
||||
Overall disk used/avail:
|
||||
Filesystem Size Used Avail Use% Mounted on
|
||||
rootfs 930G 431G 500G 47% /
|
||||
Grabbing AAPS treatments.json and entries/sgv.json for date range...
|
||||
oref0-autotune-prep ns-treatments.2022-05-21.json profile.json ns-entries.2022-05-21.json profile.pump.json > autotune.2022-05-21.json
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -16.9 IOB: 5.249 Activity: 0.0391 at 04:24:08 dev: 26.10 avgDelta: 9.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -18.9 IOB: 5.292 Activity: 0.0438 at 04:29:08 dev: 27.88 avgDelta: 9.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -20.3 IOB: 4.964 Activity: 0.047 at 04:34:09 dev: 24.01 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.1 IOB: 4.674 Activity: 0.0489 at 04:39:08 dev: 17.83 avgDelta: -3.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.5 IOB: 4.377 Activity: 0.0498 at 04:44:08 dev: 11.21 avgDelta: -10.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.5 IOB: 4.077 Activity: 0.0498 at 04:49:08 dev: 7.96 avgDelta: -13.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -21.2 IOB: 3.73 Activity: 0.0491 at 04:54:08 dev: 7.16 avgDelta: -14.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -20.5 IOB: 3.389 Activity: 0.0476 at 04:59:08 dev: 6.77 avgDelta: -13.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -19.7 IOB: 3.055 Activity: 0.0457 at 05:04:09 dev: 6.95 avgDelta: -12.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -18.8 IOB: 2.782 Activity: 0.0436 at 05:09:08 dev: 6.54 avgDelta: -12.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -17.7 IOB: 2.47 Activity: 0.0411 at 05:14:08 dev: 5.71 avgDelta: -12.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -16.6 IOB: 2.22 Activity: 0.0386 at 05:19:09 dev: 5.14 avgDelta: -11.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -15.4 IOB: 1.935 Activity: 0.0358 at 05:24:08 dev: 4.93 avgDelta: -10.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -14.3 IOB: 1.711 Activity: 0.0332 at 05:29:08 dev: 6.06 avgDelta: -8.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -13.1 IOB: 1.452 Activity: 0.0304 at 05:34:09 dev: 7.35 avgDelta: -5.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -12.1 IOB: 1.927 Activity: 0.028 at 05:39:09 dev: 8.32 avgDelta: -3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -11.6 IOB: 1.84 Activity: 0.027 at 05:44:08 dev: 8.64 avgDelta: -3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -11.1 IOB: 1.658 Activity: 0.0258 at 05:49:09 dev: 7.12 avgDelta: -4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -10.6 IOB: 1.482 Activity: 0.0245 at 05:54:08 dev: 5.31 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.6 BGI: -9.9 IOB: 1.264 Activity: 0.0229 at 05:59:09 dev: 4.62 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -9.1 IOB: 1.104 Activity: 0.0212 at 06:04:08 dev: 5.14 avgDelta: -4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.4 IOB: 0.952 Activity: 0.0194 at 06:09:09 dev: 7.36 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.8 IOB: 1.619 Activity: 0.0181 at 06:14:09 dev: 9.30 avgDelta: 1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.9 IOB: 1.678 Activity: 0.0184 at 06:19:09 dev: 10.68 avgDelta: 2.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.1 IOB: 1.775 Activity: 0.0187 at 06:24:08 dev: 9.81 avgDelta: 1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.2 IOB: 1.581 Activity: 0.019 at 06:29:08 dev: 6.44 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -8.1 IOB: 1.437 Activity: 0.0188 at 06:34:08 dev: 2.35 avgDelta: -5.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.9 IOB: 1.294 Activity: 0.0183 at 06:39:08 dev: -0.36 avgDelta: -8.25 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.6 IOB: 1.153 Activity: 0.0176 at 06:44:09 dev: 0.09 avgDelta: -7.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -7.2 IOB: 1.017 Activity: 0.0167 at 06:49:08 dev: 3.20 avgDelta: -4.00 ISF
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -6.7 IOB: 0.887 Activity: 0.0156 at 06:54:08 dev: 6.22 avgDelta: -0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.9 BGI: -6.3 IOB: 1.011 Activity: 0.0147 at 06:59:08 dev: 7.59 avgDelta: 1.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -6.1 IOB: 0.889 Activity: 0.0141 at 07:04:08 dev: 6.58 avgDelta: 0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -5.7 IOB: 0.771 Activity: 0.0133 at 07:09:08 dev: 2.98 avgDelta: -2.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -5.3 IOB: 0.656 Activity: 0.0124 at 07:14:09 dev: 0.09 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -4.9 IOB: 0.547 Activity: 0.0114 at 07:19:08 dev: -1.84 avgDelta: -6.75 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -4.4 IOB: 0.392 Activity: 0.0103 at 07:24:09 dev: -2.31 avgDelta: -6.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -3.9 IOB: 0.294 Activity: 0.0091 at 07:29:09 dev: -1.08 avgDelta: -5.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -3.5 IOB: 0.2 Activity: 0.008 at 07:34:09 dev: 0.45 avgDelta: -3.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.8 IOB: 0.065 Activity: 0.0066 at 07:39:09 dev: 2.34 avgDelta: -0.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.4 IOB: 0.034 Activity: 0.0055 at 07:44:09 dev: 3.37 avgDelta: 1.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.1 IOB: 0.549 Activity: 0.0048 at 07:49:08 dev: 3.57 avgDelta: 1.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.3 IOB: 0.674 Activity: 0.0053 at 07:54:09 dev: 3.53 avgDelta: 1.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.5 IOB: 0.597 Activity: 0.0057 at 07:59:09 dev: 2.71 avgDelta: 0.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.5 IOB: 0.468 Activity: 0.0058 at 08:04:09 dev: 1.50 avgDelta: -1.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.5 IOB: 0.389 Activity: 0.0057 at 08:09:09 dev: 0.21 avgDelta: -2.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.3 IOB: 0.262 Activity: 0.0053 at 08:14:09 dev: -0.47 avgDelta: -2.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -2.1 IOB: 0.186 Activity: 0.0048 at 08:19:09 dev: -0.93 avgDelta: -3.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -1.8 IOB: 0.064 Activity: 0.0041 at 08:24:09 dev: -1.48 avgDelta: -3.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -1.5 IOB: -0.005 Activity: 0.0034 at 08:29:09 dev: -2.03 avgDelta: -3.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -1.1 IOB: -0.12 Activity: 0.0026 at 08:34:09 dev: -2.13 avgDelta: -3.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -0.8 IOB: -0.181 Activity: 0.0018 at 08:39:09 dev: -2.47 avgDelta: -3.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -0.3 IOB: -0.287 Activity: 0.0008 at 08:44:09 dev: -2.41 avgDelta: -2.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: 0.0 IOB: -0.34 Activity: 0 at 08:49:09 dev: -2.50 avgDelta: -2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: 0.4 IOB: -0.436 Activity: -0.001 at 08:54:09 dev: -2.68 avgDelta: -2.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: 0.8 IOB: -0.48 Activity: -0.0018 at 08:59:09 dev: -2.28 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 1.1 IOB: -0.519 Activity: -0.0026 at 09:04:09 dev: -1.12 avgDelta: 0.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 1.5 IOB: -0.554 Activity: -0.0034 at 09:09:09 dev: 0.00 avgDelta: 1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 1.8 IOB: -0.585 Activity: -0.0041 at 09:14:09 dev: 0.00 avgDelta: 2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.1 IOB: -0.662 Activity: -0.0049 at 09:19:09 dev: 0.39 avgDelta: 2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.4 IOB: -0.687 Activity: -0.0055 at 09:24:08 dev: -0.37 avgDelta: 2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.6 IOB: -0.708 Activity: -0.0061 at 09:29:09 dev: -0.13 avgDelta: 2.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.8 IOB: -0.726 Activity: -0.0066 at 09:34:09 dev: 0.41 avgDelta: 3.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 3.1 IOB: -0.351 Activity: -0.0071 at 09:39:08 dev: 1.19 avgDelta: 4.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.8 IOB: -0.218 Activity: -0.0064 at 09:44:09 dev: 2.99 avgDelta: 5.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: 2.4 IOB: -0.088 Activity: -0.0055 at 09:49:09 dev: 4.63 avgDelta: 7.00 basal
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -1.0 IOB: 13.594 Activity: 0.0023 at 09:54:09 dev: 8.74 avgDelta: 7.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -14.3 IOB: 13.552 Activity: 0.0331 at 09:59:09 dev: 23.02 avgDelta: 8.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -24.7 IOB: 13.224 Activity: 0.0573 at 10:04:09 dev: 33.70 avgDelta: 9.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -32.8 IOB: 12.838 Activity: 0.076 at 10:09:08 dev: 40.76 avgDelta: 8.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -38.8 IOB: 12.322 Activity: 0.09 at 10:14:09 dev: 45.04 avgDelta: 6.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -43.1 IOB: 11.794 Activity: 0.1001 at 10:19:09 dev: 46.89 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -46.0 IOB: 11.177 Activity: 0.1068 at 10:24:09 dev: 47.03 avgDelta: 1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -47.8 IOB: 10.58 Activity: 0.111 at 10:29:09 dev: 45.84 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -48.7 IOB: 9.919 Activity: 0.1129 at 10:34:09 dev: 43.66 avgDelta: -5.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -48.7 IOB: 9.254 Activity: 0.1129 at 10:39:09 dev: 41.41 avgDelta: -7.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -48.0 IOB: 8.643 Activity: 0.1114 at 10:44:09 dev: 39.51 avgDelta: -8.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -46.9 IOB: 7.992 Activity: 0.1088 at 10:49:09 dev: 39.39 avgDelta: -7.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -45.4 IOB: 7.406 Activity: 0.1053 at 10:54:08 dev: 40.13 avgDelta: -5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.7 BGI: -43.6 IOB: 7.111 Activity: 0.1012 at 10:59:09 dev: 41.37 avgDelta: -2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -41.9 IOB: 6.515 Activity: 0.0971 at 11:04:09 dev: 42.35 avgDelta: 0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -40.0 IOB: 5.99 Activity: 0.0927 at 11:09:09 dev: 42.70 avgDelta: 2.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -37.8 IOB: 5.439 Activity: 0.0878 at 11:14:08 dev: 42.09 avgDelta: 4.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -35.7 IOB: 4.962 Activity: 0.0828 at 11:19:09 dev: 39.69 avgDelta: 4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -33.4 IOB: 4.462 Activity: 0.0775 at 11:24:08 dev: 35.65 avgDelta: 2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -31.2 IOB: 4.036 Activity: 0.0724 at 11:29:09 dev: 31.45 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -29.0 IOB: 3.638 Activity: 0.0672 at 11:34:09 dev: 27.46 avgDelta: -1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -26.8 IOB: 3.214 Activity: 0.0621 at 11:39:08 dev: 25.02 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -24.6 IOB: 2.866 Activity: 0.0571 at 11:44:09 dev: 23.61 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -22.5 IOB: 2.494 Activity: 0.0522 at 11:49:09 dev: 21.75 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -20.5 IOB: 2.193 Activity: 0.0476 at 11:54:09 dev: 20.52 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.5 BGI: -18.6 IOB: 1.867 Activity: 0.0431 at 11:59:09 dev: 18.83 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -16.7 IOB: 1.563 Activity: 0.0388 at 12:04:09 dev: 16.97 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -15.0 IOB: 1.329 Activity: 0.0347 at 12:09:08 dev: 14.46 avgDelta: -0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -13.3 IOB: 1.115 Activity: 0.0309 at 12:14:09 dev: 11.32 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -11.7 IOB: 0.87 Activity: 0.0272 at 12:19:09 dev: 7.97 avgDelta: -3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -10.3 IOB: 0.692 Activity: 0.0239 at 12:24:09 dev: 5.80 avgDelta: -4.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -8.9 IOB: 0.482 Activity: 0.0206 at 12:29:08 dev: 4.88 avgDelta: -4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -7.6 IOB: 0.287 Activity: 0.0176 at 12:34:09 dev: 4.09 avgDelta: -3.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -6.4 IOB: 0.156 Activity: 0.0148 at 12:39:08 dev: 3.88 avgDelta: -2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -5.3 IOB: 0.038 Activity: 0.0122 at 12:44:08 dev: 3.26 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -4.3 IOB: -0.067 Activity: 0.0099 at 12:49:09 dev: 2.27 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -3.4 IOB: -0.161 Activity: 0.0078 at 12:54:08 dev: 1.36 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -2.6 IOB: -0.195 Activity: 0.006 at 12:59:08 dev: 0.09 avgDelta: -2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -1.9 IOB: -0.271 Activity: 0.0044 at 13:04:09 dev: -1.10 avgDelta: -3.00 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -1.3 IOB: -0.339 Activity: 0.0029 at 13:09:09 dev: -1.00 avgDelta: -2.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -0.7 IOB: -0.4 Activity: 0.0015 at 13:14:09 dev: 0.90 avgDelta: 0.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -0.3 IOB: -0.155 Activity: 0.0007 at 13:19:08 dev: 3.80 avgDelta: 3.50 basal
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -1.9 IOB: 8.11 Activity: 0.0045 at 13:24:09 dev: 8.94 avgDelta: 7.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -9.6 IOB: 7.992 Activity: 0.0222 at 13:29:09 dev: 18.57 avgDelta: 9.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -15.5 IOB: 7.745 Activity: 0.0359 at 13:34:09 dev: 23.47 avgDelta: 8.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -20.0 IOB: 7.488 Activity: 0.0465 at 13:39:09 dev: 24.04 avgDelta: 4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -23.3 IOB: 7.136 Activity: 0.0541 at 13:44:09 dev: 21.32 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -25.7 IOB: 6.8 Activity: 0.0596 at 13:49:09 dev: 17.94 avgDelta: -7.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -27.3 IOB: 6.441 Activity: 0.0633 at 13:54:09 dev: 0.00 avgDelta: -10.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.3 BGI: -28.1 IOB: 6.022 Activity: 0.0651 at 13:59:09 dev: 0.00 avgDelta: -9.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -28.3 IOB: 5.644 Activity: 0.0657 at 14:04:09 dev: 0.00 avgDelta: -6.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -28.1 IOB: 5.216 Activity: 0.0653 at 14:09:09 dev: 0.00 avgDelta: -2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -27.8 IOB: 4.962 Activity: 0.0644 at 14:14:09 dev: 0.00 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -27.0 IOB: 4.544 Activity: 0.0627 at 14:19:09 dev: 0.00 avgDelta: 0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -26.1 IOB: 4.185 Activity: 0.0606 at 14:24:09 dev: 0.00 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -25.0 IOB: 3.839 Activity: 0.058 at 14:29:09 dev: 0.00 avgDelta: -1.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -23.7 IOB: 3.456 Activity: 0.055 at 14:34:09 dev: 0.00 avgDelta: -2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -22.4 IOB: 3.139 Activity: 0.0519 at 14:39:09 dev: 0.00 avgDelta: -2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -20.9 IOB: 2.788 Activity: 0.0486 at 14:44:09 dev: 0.00 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -19.5 IOB: 2.503 Activity: 0.0453 at 14:49:10 dev: 0.00 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -18.0 IOB: 2.186 Activity: 0.0418 at 14:54:09 dev: 0.00 avgDelta: 2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -17.5 IOB: 3.17 Activity: 0.0407 at 14:59:09 dev: 22.04 avgDelta: 4.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -17.8 IOB: 3.956 Activity: 0.0413 at 15:04:09 dev: 23.80 avgDelta: 6.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.1 IOB: 3.648 Activity: 0.042 at 15:09:09 dev: 23.85 avgDelta: 5.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.5 IOB: 4.126 Activity: 0.043 at 15:14:09 dev: 22.28 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.8 IOB: 3.81 Activity: 0.0437 at 15:19:10 dev: 20.58 avgDelta: 1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.8 IOB: 3.541 Activity: 0.0437 at 15:24:10 dev: 19.08 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.6 IOB: 3.272 Activity: 0.0431 at 15:29:09 dev: 19.33 avgDelta: 0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.4 IOB: 3.588 Activity: 0.0428 at 15:34:09 dev: 21.20 avgDelta: 2.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.6 IOB: 3.875 Activity: 0.0431 at 15:39:09 dev: 23.83 avgDelta: 5.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -18.7 IOB: 3.608 Activity: 0.0434 at 15:44:08 dev: 25.46 avgDelta: 6.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -19.1 IOB: 4.271 Activity: 0.0442 at 15:49:09 dev: 26.05 avgDelta: 7.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -19.5 IOB: 3.996 Activity: 0.0452 at 15:54:09 dev: 25.98 avgDelta: 6.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -19.9 IOB: 4.298 Activity: 0.0462 at 15:59:08 dev: 26.16 avgDelta: 6.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -20.2 IOB: 4.015 Activity: 0.0468 at 16:04:09 dev: 26.67 avgDelta: 6.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -20.7 IOB: 4.538 Activity: 0.0481 at 16:09:09 dev: 27.98 avgDelta: 7.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -21.1 IOB: 4.245 Activity: 0.0489 at 16:14:09 dev: 28.33 avgDelta: 7.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -21.6 IOB: 4.729 Activity: 0.05 at 16:19:09 dev: 28.30 avgDelta: 6.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -21.9 IOB: 4.426 Activity: 0.0508 at 16:24:09 dev: 28.64 avgDelta: 6.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -22.0 IOB: 4.353 Activity: 0.051 at 16:29:09 dev: 28.73 avgDelta: 6.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -21.9 IOB: 4.049 Activity: 0.0507 at 16:34:10 dev: 28.10 avgDelta: 6.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -21.5 IOB: 3.747 Activity: 0.0498 at 16:39:09 dev: 25.96 avgDelta: 4.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -20.8 IOB: 3.402 Activity: 0.0483 at 16:44:09 dev: 22.32 avgDelta: 1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -20.0 IOB: 3.115 Activity: 0.0464 at 16:49:10 dev: 19.00 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -19.0 IOB: 2.788 Activity: 0.0441 at 16:54:09 dev: 17.01 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.4 BGI: -18.0 IOB: 2.524 Activity: 0.0417 at 16:59:09 dev: 15.97 avgDelta: -2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -16.9 IOB: 2.271 Activity: 0.0391 at 17:04:09 dev: 16.10 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -15.7 IOB: 2.033 Activity: 0.0365 at 17:09:10 dev: 15.48 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -14.6 IOB: 1.807 Activity: 0.0338 at 17:14:10 dev: 14.57 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -13.4 IOB: 1.594 Activity: 0.0312 at 17:19:09 dev: 13.70 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -12.3 IOB: 1.395 Activity: 0.0286 at 17:24:10 dev: 12.58 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -11.3 IOB: 1.258 Activity: 0.0262 at 17:29:09 dev: 11.54 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -10.2 IOB: 1.034 Activity: 0.0236 at 17:34:09 dev: 10.17 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -9.3 IOB: 0.971 Activity: 0.0215 at 17:39:09 dev: 9.02 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -8.5 IOB: 1.008 Activity: 0.0197 at 17:44:09 dev: 7.74 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -7.9 IOB: 0.963 Activity: 0.0183 at 17:49:09 dev: 6.89 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -7.4 IOB: 1.046 Activity: 0.0171 at 17:54:10 dev: 7.12 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -6.9 IOB: 0.912 Activity: 0.0161 at 17:59:09 dev: 6.94 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -6.7 IOB: 1.254 Activity: 0.0156 at 18:04:09 dev: 6.97 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -6.6 IOB: 1.176 Activity: 0.0154 at 18:09:09 dev: 6.64 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -6.4 IOB: 1.051 Activity: 0.0149 at 18:14:10 dev: 5.67 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -6.1 IOB: 0.928 Activity: 0.0142 at 18:19:09 dev: 5.12 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -6.0 IOB: 1.008 Activity: 0.0138 at 18:24:09 dev: 4.45 avgDelta: -1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -5.7 IOB: 0.89 Activity: 0.0133 at 18:29:09 dev: 3.48 avgDelta: -2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -5.5 IOB: 0.775 Activity: 0.0127 at 18:34:09 dev: 2.47 avgDelta: -3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -5.1 IOB: 0.664 Activity: 0.0118 at 18:39:09 dev: 1.59 avgDelta: -3.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -4.7 IOB: 0.606 Activity: 0.011 at 18:44:09 dev: 1.74 avgDelta: -3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -4.5 IOB: 0.703 Activity: 0.0105 at 18:49:09 dev: 3.03 avgDelta: -1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -4.3 IOB: 0.702 Activity: 0.0101 at 18:54:09 dev: 4.10 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 4.7 BGI: -4.3 IOB: 0.902 Activity: 0.0101 at 18:59:09 dev: 4.35 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -4.3 IOB: 0.801 Activity: 0.0101 at 19:04:09 dev: 2.10 avgDelta: -2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -4.2 IOB: 0.701 Activity: 0.0098 at 19:09:09 dev: -1.03 avgDelta: -5.25 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -4.0 IOB: 0.603 Activity: 0.0094 at 19:14:09 dev: -4.95 avgDelta: -9.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -3.8 IOB: 0.508 Activity: 0.0088 at 19:19:09 dev: -8.21 avgDelta: -12.00 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -3.5 IOB: 0.415 Activity: 0.0081 at 19:24:09 dev: -9.76 avgDelta: -13.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -3.2 IOB: 0.327 Activity: 0.0074 at 19:29:09 dev: -8.06 avgDelta: -11.25 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -2.8 IOB: 0.242 Activity: 0.0066 at 19:34:09 dev: -3.91 avgDelta: -6.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -2.5 IOB: 0.161 Activity: 0.0058 at 19:39:09 dev: 2.00 avgDelta: -0.50 ISF
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -2.2 IOB: 0.134 Activity: 0.005 at 19:44:09 dev: 7.16 avgDelta: 5.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -2.1 IOB: 0.4 Activity: 0.0048 at 19:49:09 dev: 9.57 avgDelta: 7.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -2.1 IOB: 0.475 Activity: 0.0049 at 19:54:09 dev: 8.86 avgDelta: 6.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 5.3 BGI: -2.2 IOB: 0.401 Activity: 0.005 at 19:59:10 dev: 5.91 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -2.1 IOB: 0.327 Activity: 0.0048 at 20:04:10 dev: 2.82 avgDelta: 0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -1.9 IOB: 0.203 Activity: 0.0044 at 20:09:09 dev: -0.35 avgDelta: -2.25 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -1.7 IOB: 0.132 Activity: 0.004 at 20:14:09 dev: -1.78 avgDelta: -3.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -1.5 IOB: 0.064 Activity: 0.0034 at 20:19:09 dev: -2.28 avgDelta: -3.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -1.2 IOB: -0.002 Activity: 0.0028 at 20:24:09 dev: -1.54 avgDelta: -2.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.9 IOB: -0.064 Activity: 0.0022 at 20:29:10 dev: -1.05 avgDelta: -2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.7 IOB: -0.073 Activity: 0.0016 at 20:34:09 dev: -0.81 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.5 IOB: -0.08 Activity: 0.0011 at 20:39:09 dev: -1.03 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.3 IOB: -0.085 Activity: 0.0007 at 20:44:09 dev: -1.45 avgDelta: -1.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.2 IOB: -0.087 Activity: 0.0004 at 20:49:09 dev: -1.33 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -0.0 IOB: -0.088 Activity: 0.0001 at 20:54:09 dev: -1.21 avgDelta: -1.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: 0.0 IOB: -0.088 Activity: -0.0001 at 20:59:09 dev: -0.79 avgDelta: -0.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.2 IOB: -0.137 Activity: -0.0004 at 21:04:09 dev: -0.92 avgDelta: -0.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.3 IOB: -0.184 Activity: -0.0007 at 21:09:10 dev: -0.80 avgDelta: -0.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.4 IOB: -0.18 Activity: -0.001 at 21:14:09 dev: -0.68 avgDelta: -0.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.5 IOB: -0.175 Activity: -0.0012 at 21:19:09 dev: -1.02 avgDelta: -0.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.6 IOB: -0.168 Activity: -0.0014 at 21:24:09 dev: -1.35 avgDelta: -0.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.7 IOB: -0.211 Activity: -0.0015 at 21:29:10 dev: -1.65 avgDelta: -1.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.7 IOB: -0.203 Activity: -0.0017 at 21:34:09 dev: -1.98 avgDelta: -1.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 0.9 IOB: -0.243 Activity: -0.002 at 21:39:10 dev: -2.36 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.0 IOB: -0.282 Activity: -0.0023 at 21:44:10 dev: -2.49 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.1 IOB: -0.32 Activity: -0.0026 at 21:49:09 dev: -2.62 avgDelta: -1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.3 IOB: -0.357 Activity: -0.0029 at 21:54:10 dev: -2.25 avgDelta: -1.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.4 IOB: -0.391 Activity: -0.0032 at 21:59:10 dev: -1.38 avgDelta: 0.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.5 IOB: -0.375 Activity: -0.0035 at 22:04:09 dev: -0.01 avgDelta: 1.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.6 IOB: -0.357 Activity: -0.0036 at 22:09:09 dev: 1.45 avgDelta: 3.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.5 IOB: -0.149 Activity: -0.0035 at 22:14:09 dev: 3.49 avgDelta: 5.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: 1.3 IOB: -0.132 Activity: -0.0031 at 22:19:10 dev: 5.91 avgDelta: 7.25 basal
|
||||
start uannnounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -6.5 IOB: 9.296 Activity: 0.015 at 22:24:09 dev: 15.96 avgDelta: 9.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -14.3 IOB: 9.123 Activity: 0.0332 at 22:29:10 dev: 25.06 avgDelta: 10.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -20.4 IOB: 8.96 Activity: 0.0474 at 22:34:09 dev: 29.43 avgDelta: 9.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -25.2 IOB: 8.644 Activity: 0.0584 at 22:39:10 dev: 29.92 avgDelta: 4.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -28.6 IOB: 8.282 Activity: 0.0664 at 22:44:10 dev: 27.37 avgDelta: -1.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -30.9 IOB: 7.835 Activity: 0.0718 at 22:49:09 dev: 24.70 avgDelta: -6.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -32.5 IOB: 7.416 Activity: 0.0753 at 22:54:10 dev: 23.70 avgDelta: -8.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.2 BGI: -33.3 IOB: 6.984 Activity: 0.0772 at 22:59:09 dev: 24.52 avgDelta: -8.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -33.5 IOB: 6.547 Activity: 0.0776 at 23:04:09 dev: 26.70 avgDelta: -6.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -33.1 IOB: 6.061 Activity: 0.0769 at 23:09:10 dev: 28.39 avgDelta: -4.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -32.5 IOB: 5.68 Activity: 0.0754 at 23:14:10 dev: 29.50 avgDelta: -3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -31.6 IOB: 5.458 Activity: 0.0734 at 23:19:09 dev: 30.14 avgDelta: -1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -30.7 IOB: 5.046 Activity: 0.0712 at 23:24:10 dev: 29.94 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -29.7 IOB: 4.925 Activity: 0.069 at 23:29:09 dev: 29.49 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -28.6 IOB: 4.487 Activity: 0.0663 at 23:34:09 dev: 29.08 avgDelta: 0.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -27.3 IOB: 4.113 Activity: 0.0633 at 23:39:10 dev: 28.28 avgDelta: 1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -25.8 IOB: 3.706 Activity: 0.0599 at 23:44:09 dev: 27.57 avgDelta: 1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -24.4 IOB: 3.363 Activity: 0.0566 at 23:49:09 dev: 26.64 avgDelta: 2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -22.8 IOB: 3.039 Activity: 0.053 at 23:54:09 dev: 25.34 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.1 BGI: -21.3 IOB: 2.733 Activity: 0.0494 at 23:59:10 dev: 23.79 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -19.7 IOB: 2.395 Activity: 0.0457 at 00:04:10 dev: 22.20 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -18.1 IOB: 2.126 Activity: 0.0421 at 00:09:10 dev: 20.65 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -16.6 IOB: 1.824 Activity: 0.0385 at 00:14:10 dev: 18.59 avgDelta: 2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -15.1 IOB: 1.64 Activity: 0.0351 at 00:19:09 dev: 17.13 avgDelta: 2.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -13.8 IOB: 1.473 Activity: 0.0319 at 00:24:09 dev: 15.50 avgDelta: 1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -12.4 IOB: 1.273 Activity: 0.0288 at 00:29:10 dev: 14.16 avgDelta: 1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -11.2 IOB: 1.136 Activity: 0.026 at 00:34:10 dev: 12.71 avgDelta: 1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -10.1 IOB: 1.011 Activity: 0.0235 at 00:39:09 dev: 10.13 avgDelta: 0.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -9.1 IOB: 0.852 Activity: 0.021 at 00:44:10 dev: 7.30 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -8.2 IOB: 0.752 Activity: 0.0189 at 00:49:10 dev: 4.65 avgDelta: -3.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -7.3 IOB: 0.662 Activity: 0.0169 at 00:54:10 dev: 3.28 avgDelta: -4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 6.9 BGI: -6.4 IOB: 0.534 Activity: 0.0149 at 00:59:09 dev: 3.42 avgDelta: -3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -5.7 IOB: 0.463 Activity: 0.0132 at 01:04:09 dev: 4.69 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -5.0 IOB: 0.352 Activity: 0.0115 at 01:09:10 dev: 5.96 avgDelta: 1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.3 IOB: 0.298 Activity: 0.0101 at 01:14:10 dev: 6.60 avgDelta: 2.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.8 IOB: 0.25 Activity: 0.0089 at 01:19:09 dev: 6.84 avgDelta: 3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.4 IOB: 0.329 Activity: 0.0079 at 01:24:10 dev: 6.40 avgDelta: 3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.2 IOB: 0.34 Activity: 0.0074 at 01:29:10 dev: 5.69 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.9 IOB: 0.304 Activity: 0.0068 at 01:34:10 dev: 5.43 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.7 IOB: 0.272 Activity: 0.0062 at 01:39:10 dev: 5.67 avgDelta: 3.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.6 IOB: 0.512 Activity: 0.006 at 01:44:10 dev: 6.59 avgDelta: 4.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.6 IOB: 0.581 Activity: 0.0061 at 01:49:10 dev: 7.38 avgDelta: 4.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.2 IOB: 1.238 Activity: 0.0075 at 01:54:10 dev: 7.98 avgDelta: 4.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.8 IOB: 1.147 Activity: 0.0088 at 01:59:10 dev: 7.54 avgDelta: 3.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.2 IOB: 1.151 Activity: 0.0098 at 02:04:10 dev: 6.72 avgDelta: 2.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.5 IOB: 1.05 Activity: 0.0104 at 02:09:09 dev: 5.98 avgDelta: 1.50 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.6 IOB: 0.947 Activity: 0.0107 at 02:14:09 dev: 4.86 avgDelta: 0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.6 IOB: 0.844 Activity: 0.0106 at 02:19:10 dev: 3.82 avgDelta: -0.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.5 IOB: 0.741 Activity: 0.0104 at 02:24:10 dev: 2.73 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.3 IOB: 0.59 Activity: 0.0099 at 02:29:10 dev: 2.52 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -4.0 IOB: 0.542 Activity: 0.0093 at 02:34:09 dev: 3.01 avgDelta: -1.00 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.8 IOB: 0.497 Activity: 0.0087 at 02:39:09 dev: 3.50 avgDelta: -0.25 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.5 IOB: 0.456 Activity: 0.0081 at 02:44:10 dev: 1.74 avgDelta: -1.75 uam
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.3 IOB: 0.516 Activity: 0.0077 at 02:49:09 dev: -1.93 avgDelta: -5.25 uam
|
||||
end unannounced meal absorption
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -3.1 IOB: 0.429 Activity: 0.0072 at 02:54:09 dev: -6.40 avgDelta: -9.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 7.0 BGI: -2.8 IOB: 0.294 Activity: 0.0066 at 02:59:10 dev: -8.66 avgDelta: -11.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -2.5 IOB: 0.163 Activity: 0.0058 at 03:04:10 dev: -8.25 avgDelta: -10.75 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -2.1 IOB: 0.037 Activity: 0.0049 at 03:09:10 dev: -6.39 avgDelta: -8.50 ISF
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -1.7 IOB: -0.085 Activity: 0.0039 at 03:14:10 dev: -4.32 avgDelta: -6.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -1.3 IOB: -0.153 Activity: 0.0029 at 03:19:09 dev: -3.75 avgDelta: -5.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -0.8 IOB: -0.265 Activity: 0.0018 at 03:24:10 dev: -3.72 avgDelta: -4.50 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: -0.3 IOB: -0.371 Activity: 0.0007 at 03:29:09 dev: -3.45 avgDelta: -3.75 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 0.2 IOB: -0.471 Activity: -0.0005 at 03:34:09 dev: -2.22 avgDelta: -2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 0.7 IOB: -0.566 Activity: -0.0016 at 03:39:10 dev: -0.94 avgDelta: -0.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 1.1 IOB: -0.606 Activity: -0.0026 at 03:44:10 dev: 0.00 avgDelta: 1.25 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 1.6 IOB: -0.64 Activity: -0.0036 at 03:49:10 dev: 0.45 avgDelta: 2.00 basal
|
||||
0 mealCOB: 0.0 mealCarbs: 0 basalBGI: 8.0 BGI: 1.9 IOB: -0.67 Activity: -0.0044 at 03:54:10 dev: -0.15 avgDelta: 1.75 basal
|
||||
Warning: too many deviations categorized as UnAnnounced Meals
|
||||
Adding 203 UAM deviations to 54 basal ones
|
||||
and selecting the lowest 50%, leaving 128 basal+UAM ones
|
||||
Adding 203 UAM deviations to 26 ISF ones
|
||||
and selecting the lowest 50%, leaving 114 ISF+UAM ones
|
||||
oref0-autotune-core autotune.2022-05-21.json profile.json profile.pump.json > newprofile.2022-05-21.json
|
||||
CRTotalCarbs: 0 CRTotalInsulin: 0 totalCR: NaN
|
||||
Hour 0 total deviations: 11.35 mg/dL
|
||||
Hour 0 basal adjustment needed: 0.03 U/hr
|
||||
Hour 1 total deviations: 47.03 mg/dL
|
||||
Hour 1 basal adjustment needed: 0.11 U/hr
|
||||
Hour 2 total deviations: 26.23 mg/dL
|
||||
Hour 2 basal adjustment needed: 0.06 U/hr
|
||||
Hour 3 total deviations: -18.1 mg/dL
|
||||
Hour 3 basal adjustment needed: -0.04 U/hr
|
||||
Hour 4 total deviations: 0 mg/dL
|
||||
Hour 4 basal adjustment needed: 0 U/hr
|
||||
Hour 5 total deviations: 38.31 mg/dL
|
||||
Hour 5 basal adjustment needed: 0.09 U/hr
|
||||
Hour 6 total deviations: 19.79 mg/dL
|
||||
Hour 6 basal adjustment needed: 0.05 U/hr
|
||||
Hour 7 total deviations: 7.81 mg/dL
|
||||
Hour 7 basal adjustment needed: 0.02 U/hr
|
||||
Hour 8 total deviations: -16.5 mg/dL
|
||||
Hour 8 basal adjustment needed: -0.04 U/hr
|
||||
Hour 9 total deviations: 7.99 mg/dL
|
||||
Hour 9 basal adjustment needed: 0.02 U/hr
|
||||
Hour 10 total deviations: 0 mg/dL
|
||||
Hour 10 basal adjustment needed: 0 U/hr
|
||||
Hour 11 total deviations: 0 mg/dL
|
||||
Hour 11 basal adjustment needed: 0 U/hr
|
||||
Hour 12 total deviations: 25.63 mg/dL
|
||||
Hour 12 basal adjustment needed: 0.06 U/hr
|
||||
Hour 13 total deviations: 2.6 mg/dL
|
||||
Hour 13 basal adjustment needed: 0.01 U/hr
|
||||
Hour 14 total deviations: 0 mg/dL
|
||||
Hour 14 basal adjustment needed: 0 U/hr
|
||||
Hour 15 total deviations: 0 mg/dL
|
||||
Hour 15 basal adjustment needed: 0 U/hr
|
||||
Hour 16 total deviations: 0 mg/dL
|
||||
Hour 16 basal adjustment needed: 0 U/hr
|
||||
Hour 17 total deviations: 0 mg/dL
|
||||
Hour 17 basal adjustment needed: 0 U/hr
|
||||
Hour 18 total deviations: 42.64 mg/dL
|
||||
Hour 18 basal adjustment needed: 0.1 U/hr
|
||||
Hour 19 total deviations: 6.98 mg/dL
|
||||
Hour 19 basal adjustment needed: 0.02 U/hr
|
||||
Hour 20 total deviations: -9.02 mg/dL
|
||||
Hour 20 basal adjustment needed: -0.02 U/hr
|
||||
Hour 21 total deviations: -19.5 mg/dL
|
||||
Hour 21 basal adjustment needed: -0.05 U/hr
|
||||
Hour 22 total deviations: 10.84 mg/dL
|
||||
Hour 22 basal adjustment needed: 0.03 U/hr
|
||||
Hour 23 total deviations: 0 mg/dL
|
||||
Hour 23 basal adjustment needed: 0 U/hr
|
||||
Adjusting hour 13 basal from 0.874 to 0.876 based on hour 12 = 0.885 and hour 15 = 0.881
|
||||
Adjusting hour 14 basal from 0.866 to 0.869 based on hour 12 = 0.885 and hour 15 = 0.881
|
||||
[ { start: '00:00:00', minutes: 0, rate: 1.009, i: 0 },
|
||||
{ start: '01:00:00', minutes: 60, rate: 0.984, i: 1 },
|
||||
{ start: '02:00:00', minutes: 120, rate: 0.988, i: 2 },
|
||||
{ start: '03:00:00', minutes: 180, rate: 1.158, i: 3 },
|
||||
{ start: '04:00:00', minutes: 240, rate: 1.028, i: 4 },
|
||||
{ start: '05:00:00', minutes: 300, rate: 0.933, i: 5 },
|
||||
{ start: '06:00:00', minutes: 360, rate: 0.824, i: 6 },
|
||||
{ start: '07:00:00', minutes: 420, rate: 0.849, i: 7 },
|
||||
{ start: '08:00:00', minutes: 480, rate: 0.909, i: 8 },
|
||||
{ start: '09:00:00', minutes: 540, rate: 0.954, i: 9 },
|
||||
{ start: '10:00:00', minutes: 600, rate: 0.961, i: 10 },
|
||||
{ start: '11:00:00', minutes: 660, rate: 0.926, i: 11 },
|
||||
{ start: '12:00:00', minutes: 720, rate: 0.885, i: 12 },
|
||||
{ start: '13:00:00', minutes: 780, rate: 0.876, i: 13, untuned: 1 },
|
||||
{ start: '14:00:00', minutes: 840, rate: 0.869, i: 14, untuned: 1 },
|
||||
{ start: '15:00:00', minutes: 900, rate: 0.881, i: 15 },
|
||||
{ start: '16:00:00', minutes: 960, rate: 0.798, i: 16 },
|
||||
{ start: '17:00:00', minutes: 1020, rate: 0.683, i: 17 },
|
||||
{ start: '18:00:00', minutes: 1080, rate: 0.634, i: 18 },
|
||||
{ start: '19:00:00', minutes: 1140, rate: 0.725, i: 19 },
|
||||
{ start: '20:00:00', minutes: 1200, rate: 0.838, i: 20 },
|
||||
{ start: '21:00:00', minutes: 1260, rate: 0.881, i: 21 },
|
||||
{ start: '22:00:00', minutes: 1320, rate: 0.91, i: 22 },
|
||||
{ start: '23:00:00', minutes: 1380, rate: 0.91, i: 23 } ]
|
||||
totalMealCarbs: 0 totalDeviations: 0 oldCSF 14.991 fullNewCSF: 14.991304347826087 newCSF: 14.991
|
||||
oldCR: 5.75 fullNewCR: NaN newCR: NaN
|
||||
Limiting adjusted ISF of 43.19 to 66.31 (which is pump ISF of 86.2 / 1.3 )
|
||||
p50deviation: 3.2 p50BGI -4.96 p50ratios: 0.501 Old ISF: 86.2 fullNewISF: 43.186 adjustedISF: 66.308 newISF: 82.222 newDIA: 6 newPeak: 45
|
||||
|
||||
Autotune pump profile recommendations:
|
||||
---------------------------------------------------------
|
||||
Recommendations Log File: /home/titi/aaps/autotune/aapsorefautotune_recommendations.log
|
||||
|
||||
Parameter | Pump | Autotune | Days Missing
|
||||
---------------------------------------------------------
|
||||
ISF [mg/dL/U] | 86.200 | 82.222 |
|
||||
Carb Ratio[g/U]| 5.750 | 5.750 |
|
||||
00:00 | 0.966 | 1.009 | 0
|
||||
01:00 | 0.977 | 0.984 | 0
|
||||
02:00 | 0.971 | 0.988 | 0
|
||||
03:00 | 1.111 | 1.158 | 0
|
||||
04:00 | 0.974 | 1.028 | 0
|
||||
05:00 | 0.923 | 0.933 | 0
|
||||
06:00 | 0.823 | 0.824 | 0
|
||||
07:00 | 0.855 | 0.849 | 0
|
||||
08:00 | 0.902 | 0.909 | 0
|
||||
09:00 | 0.934 | 0.954 | 0
|
||||
10:00 | 0.938 | 0.961 | 0
|
||||
11:00 | 0.903 | 0.926 | 0
|
||||
12:00 | 0.882 | 0.885 | 0
|
||||
13:00 | 0.874 | 0.876 | 1
|
||||
14:00 | 0.866 | 0.869 | 1
|
||||
15:00 | 0.848 | 0.881 | 0
|
||||
16:00 | 0.758 | 0.798 | 0
|
||||
17:00 | 0.650 | 0.683 | 0
|
||||
18:00 | 0.648 | 0.634 | 0
|
||||
19:00 | 0.738 | 0.725 | 0
|
||||
20:00 | 0.847 | 0.838 | 0
|
||||
21:00 | 0.861 | 0.881 | 0
|
||||
22:00 | 0.863 | 0.910 | 0
|
||||
23:00 | 0.843 | 0.910 | 0
|
|
@ -0,0 +1,175 @@
|
|||
{
|
||||
"autosens_max": 1.3,
|
||||
"autosens_min": 0.7,
|
||||
"basalprofile": [
|
||||
{
|
||||
"i": 0,
|
||||
"minutes": 0,
|
||||
"rate": 1.009,
|
||||
"start": "00:00:00"
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"minutes": 60,
|
||||
"rate": 0.984,
|
||||
"start": "01:00:00"
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"minutes": 120,
|
||||
"rate": 0.988,
|
||||
"start": "02:00:00"
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"minutes": 180,
|
||||
"rate": 1.158,
|
||||
"start": "03:00:00"
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"minutes": 240,
|
||||
"rate": 1.028,
|
||||
"start": "04:00:00"
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"minutes": 300,
|
||||
"rate": 0.933,
|
||||
"start": "05:00:00"
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"minutes": 360,
|
||||
"rate": 0.824,
|
||||
"start": "06:00:00"
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"minutes": 420,
|
||||
"rate": 0.849,
|
||||
"start": "07:00:00"
|
||||
},
|
||||
{
|
||||
"i": 8,
|
||||
"minutes": 480,
|
||||
"rate": 0.909,
|
||||
"start": "08:00:00"
|
||||
},
|
||||
{
|
||||
"i": 9,
|
||||
"minutes": 540,
|
||||
"rate": 0.954,
|
||||
"start": "09:00:00"
|
||||
},
|
||||
{
|
||||
"i": 10,
|
||||
"minutes": 600,
|
||||
"rate": 0.961,
|
||||
"start": "10:00:00"
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"minutes": 660,
|
||||
"rate": 0.926,
|
||||
"start": "11:00:00"
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"minutes": 720,
|
||||
"rate": 0.885,
|
||||
"start": "12:00:00"
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"minutes": 780,
|
||||
"rate": 0.876,
|
||||
"start": "13:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 14,
|
||||
"minutes": 840,
|
||||
"rate": 0.869,
|
||||
"start": "14:00:00",
|
||||
"untuned": 1
|
||||
},
|
||||
{
|
||||
"i": 15,
|
||||
"minutes": 900,
|
||||
"rate": 0.881,
|
||||
"start": "15:00:00"
|
||||
},
|
||||
{
|
||||
"i": 16,
|
||||
"minutes": 960,
|
||||
"rate": 0.798,
|
||||
"start": "16:00:00"
|
||||
},
|
||||
{
|
||||
"i": 17,
|
||||
"minutes": 1020,
|
||||
"rate": 0.683,
|
||||
"start": "17:00:00"
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"minutes": 1080,
|
||||
"rate": 0.634,
|
||||
"start": "18:00:00"
|
||||
},
|
||||
{
|
||||
"i": 19,
|
||||
"minutes": 1140,
|
||||
"rate": 0.725,
|
||||
"start": "19:00:00"
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"minutes": 1200,
|
||||
"rate": 0.838,
|
||||
"start": "20:00:00"
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"minutes": 1260,
|
||||
"rate": 0.881,
|
||||
"start": "21:00:00"
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"minutes": 1320,
|
||||
"rate": 0.91,
|
||||
"start": "22:00:00"
|
||||
},
|
||||
{
|
||||
"i": 23,
|
||||
"minutes": 1380,
|
||||
"rate": 0.91,
|
||||
"start": "23:00:00"
|
||||
}
|
||||
],
|
||||
"carb_ratio": 5.75,
|
||||
"csf": 14.991,
|
||||
"curve": "ultra-rapid",
|
||||
"dia": 6,
|
||||
"insulinPeakTime": 45,
|
||||
"isfProfile": {
|
||||
"sensitivities": [
|
||||
{
|
||||
"endoffset": 1440,
|
||||
"i": 0,
|
||||
"offset": 0,
|
||||
"sensitivity": 82.222,
|
||||
"start": "00:00:00",
|
||||
"x": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
"min_5m_carbimpact": 8,
|
||||
"name": "Tuned Dyn2",
|
||||
"sens": 82.222,
|
||||
"timezone": "Europe/Paris",
|
||||
"units": "mg/dl",
|
||||
"useCustomPeakTime": true
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue