Merge branch 'dev' into last-2.0-something-stuff-update1

This commit is contained in:
Milos Kozak 2018-07-17 19:53:43 +03:00 committed by GitHub
commit 7d6674267b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
39 changed files with 333 additions and 241 deletions

View file

@ -33,7 +33,7 @@ public class Config {
public static final boolean logNSUpload = true;
public static final boolean logPumpActions = true;
public static final boolean logCongigBuilderActions = true;
public static final boolean logAutosensData = false;
public static final boolean logAutosensData = true;
public static final boolean logEvents = false;
public static final boolean logProfile = false;

View file

@ -194,18 +194,8 @@ public class MainApp extends Application {
MainApp.getConfigBuilder().initialize();
}
NSUpload.uploadAppStart();
if (Config.NSCLIENT)
FabricPrivacy.getInstance().logCustom(new CustomEvent("AppStart-NSClient"));
else if (Config.G5UPLOADER)
FabricPrivacy.getInstance().logCustom(new CustomEvent("AppStart-G5Uploader"));
else if (Config.PUMPCONTROL)
FabricPrivacy.getInstance().logCustom(new CustomEvent("AppStart-PumpControl"));
else if (MainApp.getConstraintChecker().isClosedLoopAllowed().value())
FabricPrivacy.getInstance().logCustom(new CustomEvent("AppStart-ClosedLoop"));
else
FabricPrivacy.getInstance().logCustom(new CustomEvent("AppStart-OpenLoop"));
NSUpload.uploadAppStart();
final PumpInterface pump = ConfigBuilderPlugin.getActivePump();
if (pump != null) {

View file

@ -1,18 +1,6 @@
package info.nightscout.androidaps.interfaces;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
import info.nightscout.utils.Round;
import info.nightscout.utils.SP;
import info.nightscout.utils.SafeParse;
/**
* Created by mike on 24.06.2017.

View file

@ -14,7 +14,7 @@ public class AutosensResult {
//default values to show when autosens algorithm is not called
public double ratio = 1d;
public double carbsAbsorbed = 0d;
public String sensResult = "autosens deactivated";
public String sensResult = "autosens not available";
public String pastSensitivity = "";
public String ratioLimit = "";

View file

@ -39,6 +39,7 @@ import info.nightscout.androidaps.plugins.Sensitivity.SensitivityOref1Plugin;
import info.nightscout.androidaps.plugins.Treatments.Treatment;
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.T;
import static info.nightscout.utils.DateUtil.now;
@ -131,8 +132,8 @@ public class IobCobCalculatorPlugin extends PluginBase {
public static long roundUpTime(long time) {
if (time % 60000 == 0)
return time;
long rouded = (time / 60000 + 1) * 60000;
return rouded;
long rounded = (time / 60000 + 1) * 60000;
return rounded;
}
void loadBgData(long start) {
@ -293,7 +294,7 @@ public class IobCobCalculatorPlugin extends PluginBase {
long now = System.currentTimeMillis();
long oldestDataAvailable = TreatmentsPlugin.getPlugin().oldestDataAvailable();
long getBGDataFrom = Math.max(oldestDataAvailable, (long) (now - 60 * 60 * 1000L * (24 + MainApp.getConfigBuilder().getProfile().getDia())));
long getBGDataFrom = Math.max(oldestDataAvailable, (long) (now - T.hours(1).msecs() * (24 + MainApp.getConfigBuilder().getProfile().getDia())));
log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString());
return getBGDataFrom;
}
@ -377,11 +378,13 @@ public class IobCobCalculatorPlugin extends PluginBase {
public AutosensData getAutosensData(long time) {
synchronized (dataLock) {
long now = System.currentTimeMillis();
if (time > now)
if (time > now) {
return null;
}
Long previous = findPreviousTimeFromBucketedData(time);
if (previous == null)
if (previous == null) {
return null;
}
time = roundUpTime(previous);
AutosensData data = autosensDataTable.get(time);
if (data != null) {
@ -453,6 +456,13 @@ public class IobCobCalculatorPlugin extends PluginBase {
}
}
public String lastDataTime() {
if (autosensDataTable.size() > 0)
return DateUtil.dateAndTimeString(autosensDataTable.valueAt(autosensDataTable.size() - 1).time);
else
return "autosensDataTable empty";
}
public IobTotal[] calculateIobArrayInDia(Profile profile) {
// predict IOB out to DIA plus 30m
long time = System.currentTimeMillis();

View file

@ -337,8 +337,11 @@ public class IobCobOref1Thread extends Thread {
if (bgTime < now())
autosensDataTable.put(bgTime, autosensData);
if (Config.logAutosensData)
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime));
autosensData.autosensRatio = iobCobCalculatorPlugin.detectSensitivity(oldestTimeWithData, bgTime).ratio;
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime) + " lastDataTime:" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivityWithLock(oldestTimeWithData, bgTime);
if (Config.logAutosensData)
log.debug("Sensitivity result: " + sensitivity.toString());
autosensData.autosensRatio = sensitivity.ratio;
if (Config.logAutosensData)
log.debug(autosensData.toString());
}

View file

@ -264,8 +264,8 @@ public class IobCobThread extends Thread {
if (bgTime < now())
autosensDataTable.put(bgTime, autosensData);
if (Config.logAutosensData)
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime));
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivity(oldestTimeWithData, bgTime);
log.debug("Running detectSensitivity from: " + DateUtil.dateAndTimeString(oldestTimeWithData) + " to: " + DateUtil.dateAndTimeString(bgTime) + " lastDataTime:" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
AutosensResult sensitivity = iobCobCalculatorPlugin.detectSensitivityWithLock(oldestTimeWithData, bgTime);
if (Config.logAutosensData)
log.debug("Sensitivity result: " + sensitivity.toString());
autosensData.autosensRatio = sensitivity.ratio;

View file

@ -176,6 +176,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
lastAutosensResult = IobCobCalculatorPlugin.getPlugin().detectSensitivityWithLock(IobCobCalculatorPlugin.getPlugin().oldestDataAvailable(), System.currentTimeMillis());
} else {
lastAutosensResult = new AutosensResult();
lastAutosensResult.sensResult = "autosens disabled";
}
Profiler.log(log, "detectSensitivityandCarbAbsorption()", startPart);
Profiler.log(log, "AMA data gathering", start);

View file

@ -183,6 +183,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface {
lastAutosensResult = IobCobCalculatorPlugin.getPlugin().detectSensitivityWithLock(IobCobCalculatorPlugin.getPlugin().oldestDataAvailable(), System.currentTimeMillis());
} else {
lastAutosensResult = new AutosensResult();
lastAutosensResult.sensResult = "autosens disabled";
}
Constraint<Boolean> smbAllowed = new Constraint<>(!tempBasalFallback);

View file

@ -21,6 +21,7 @@ import android.widget.RadioButton;
import com.google.common.base.Joiner;
import info.nightscout.utils.NSUpload;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -162,6 +163,13 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
notesLayout.setVisibility(SP.getBoolean(R.string.key_show_notes_entry_dialogs, false) ? View.VISIBLE : View.GONE);
notesEdit = view.findViewById(R.id.newcarbs_notes);
BgReading bgReading = DatabaseHelper.actualBg();
if (bgReading != null && bgReading.value < 72) {
startHypoTTCheckbox.setOnCheckedChangeListener(null);
startHypoTTCheckbox.setChecked(true);
startHypoTTCheckbox.setOnClickListener(this);
}
setCancelable(true);
getDialog().setCanceledOnTouchOutside(false);
return view;
@ -403,6 +411,7 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C
CarbsGenerator.createCarb(carbsAfterConstraints, time, CareportalEvent.CARBCORRECTION, notes);
} else {
CarbsGenerator.generateCarbs(carbsAfterConstraints, time, duration, notes);
NSUpload.uploadEvent(CareportalEvent.NOTE, now() - 2000, MainApp.gs(R.string.generated_ecarbs_note, carbsAfterConstraints, duration, timeOffset));
}
}
}

View file

@ -148,6 +148,11 @@ public class NewInsulinDialog extends DialogFragment implements OnClickListener
setCancelable(true);
getDialog().setCanceledOnTouchOutside(false);
if (savedInstanceState != null) {
// log.debug("savedInstanceState in onCreate is:" + savedInstanceState.toString());
editInsulin.setValue(savedInstanceState.getDouble("editInsulin"));
editTime.setValue(savedInstanceState.getDouble("editTime"));
}
return view;
}
@ -156,6 +161,17 @@ public class NewInsulinDialog extends DialogFragment implements OnClickListener
return value > 0 ? "+" + formatted : formatted;
}
@Override
public void onSaveInstanceState(Bundle insulinDialogState) {
insulinDialogState.putBoolean("startEatingSoonTTCheckbox", startEatingSoonTTCheckbox.isChecked());
insulinDialogState.putBoolean("recordOnlyCheckbox", recordOnlyCheckbox.isChecked());
insulinDialogState.putDouble("editTime", editTime.getValue());
insulinDialogState.putDouble("editInsulin", editInsulin.getValue());
insulinDialogState.putString("notesEdit",notesEdit.getText().toString());
log.debug("Instance state saved:"+insulinDialogState.toString());
super.onSaveInstanceState(insulinDialogState);
}
@Override
public synchronized void onClick(View view) {
switch (view.getId()) {

View file

@ -1200,15 +1200,12 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
} else {
basalText = DecimalFormatter.to2Decimal(profile.getBasal()) + "U/h";
}
baseBasalView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
baseBasalView.setOnClickListener(v -> {
String fullText = MainApp.gs(R.string.pump_basebasalrate_label) + ": " + DecimalFormatter.to2Decimal(profile.getBasal()) + "U/h\n";
if (activeTemp != null) {
fullText += MainApp.gs(R.string.pump_tempbasal_label) + ": " + activeTemp.toStringFull();
}
OKDialog.show(getActivity(), MainApp.gs(R.string.basal), fullText, null);
}
});
} else {
@ -1237,22 +1234,17 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
if (extendedBolus != null && !pump.isFakingTempsByExtendedBoluses()) {
extendedBolusText = DecimalFormatter.to2Decimal(extendedBolus.absoluteRate()) + "U/h";
}
extendedBolusView.setText(extendedBolusText);
extendedBolusView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
OKDialog.show(getActivity(), MainApp.gs(R.string.extendedbolus), extendedBolus.toString(), null);
}
});
} else {
if (extendedBolus != null && !pump.isFakingTempsByExtendedBoluses()) {
extendedBolusText = extendedBolus.toString();
}
}
extendedBolusView.setText(extendedBolusText);
if (Config.NSCLIENT || Config.G5UPLOADER) {
extendedBolusView.setOnClickListener(v -> OKDialog.show(getActivity(), MainApp.gs(R.string.extendedbolus), extendedBolus.toString(), null));
}
if (extendedBolusText.equals(""))
extendedBolusView.setVisibility(shorttextmode ? View.INVISIBLE : View.GONE);
extendedBolusView.setVisibility(Config.NSCLIENT || Config.G5UPLOADER ? View.INVISIBLE : View.GONE);
else
extendedBolusView.setVisibility(View.VISIBLE);
}

View file

@ -42,6 +42,8 @@ public class Notification {
public static final int APPROACHING_DAILY_LIMIT = 11;
public static final int NSCLIENT_NO_WRITE_PERMISSION = 12;
public static final int MISSING_SMS_PERMISSION = 13;
public static final int PUMPERROR = 14;
public static final int WRONGSERIALNUMBER = 15;
public static final int NSANNOUNCEMENT = 18;
public static final int NSALARM = 19;

View file

@ -95,19 +95,25 @@ public class DanaRUserOptionsActivity extends Activity {
shutdown.setParams((double) pump.shutdownHour, 0d, 24d, 1d, new DecimalFormat("1"), true);
lowReservoir.setParams((double) pump.lowReservoirRate, 10d, 60d, 10d, new DecimalFormat("10"), false);
switch (pump.beepAndAlarm) {
case 1: pumpAlarmSound.setChecked(true);
case 0x01:
pumpAlarmSound.setChecked(true);
break;
case 2: pumpAlarmVibrate.setChecked(true);
case 0x02:
pumpAlarmVibrate.setChecked(true);
break;
case 3: pumpAlarmBoth.setChecked(true);
case 0x11:
pumpAlarmBoth.setChecked(true);
break;
case 5: pumpAlarmSound.setChecked(true);
case 0x101:
pumpAlarmSound.setChecked(true);
beep.setChecked(true);
break;
case 6: pumpAlarmVibrate.setChecked(true);
case 0x110:
pumpAlarmVibrate.setChecked(true);
beep.setChecked(true);
break;
case 7: pumpAlarmBoth.setChecked(true);
case 0x111:
pumpAlarmBoth.setChecked(true);
beep.setChecked(true);
break;
}

View file

@ -57,6 +57,7 @@ import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.Round;
import info.nightscout.utils.SP;
import info.nightscout.utils.T;
/**
* Created by mike on 03.09.2017.
@ -411,6 +412,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
double carbs = detailedBolusInfo.carbs;
detailedBolusInfo.carbs = 0;
int carbTime = detailedBolusInfo.carbTime;
if (carbTime == 0) carbTime--; // better set 1 min back to prevents clash with insulin
detailedBolusInfo.carbTime = 0;
DetailedBolusInfoStorage.add(detailedBolusInfo); // will be picked up on reading history
@ -419,7 +421,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
t.isSMB = detailedBolusInfo.isSMB;
boolean connectionOK = false;
if (detailedBolusInfo.insulin > 0 || carbs > 0)
connectionOK = danaRSService.bolus(detailedBolusInfo.insulin, (int) carbs, DateUtil.now() + carbTime * 60 * 1000, t);
connectionOK = danaRSService.bolus(detailedBolusInfo.insulin, (int) carbs, DateUtil.now() + T.mins(carbTime).msecs(), t);
PumpEnactResult result = new PumpEnactResult();
result.success = connectionOK && Math.abs(detailedBolusInfo.insulin - t.insulin) < pumpDescription.bolusStep;
result.bolusDelivered = t.insulin;

View file

@ -25,6 +25,8 @@ import java.util.concurrent.ScheduledFuture;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.Overview.notifications.Notification;
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump;
import info.nightscout.androidaps.plugins.PumpDanaRS.DanaRSPlugin;
import info.nightscout.androidaps.plugins.PumpDanaRS.activities.PairingHelperActivity;
@ -32,6 +34,7 @@ import info.nightscout.androidaps.plugins.PumpDanaRS.comm.DanaRSMessageHashTable
import info.nightscout.androidaps.plugins.PumpDanaRS.comm.DanaRS_Packet;
import info.nightscout.androidaps.plugins.PumpDanaRS.events.EventDanaRSPacket;
import info.nightscout.androidaps.plugins.PumpDanaRS.events.EventDanaRSPairingSuccess;
import info.nightscout.utils.NSUpload;
import info.nightscout.utils.SP;
/**
@ -421,14 +424,25 @@ public class BLEComm {
SendPairingRequest();
}
} else if (inputBuffer.length == 6 && inputBuffer[2] == 'P' && inputBuffer[3] == 'U' && inputBuffer[4] == 'M' && inputBuffer[5] == 'P') {
log.debug("<<<<< " + "ENCRYPTION__PUMP_CHECK (PUMP)" + " " + DanaRS_Packet.toHexString(inputBuffer));
mSendQueue.clear();
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED, MainApp.gs(R.string.pumperror)));
NSUpload.uploadError(MainApp.gs(R.string.pumperror));
Notification n = new Notification(Notification.PUMPERROR, MainApp.gs(R.string.pumperror), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(n));
} else if (inputBuffer.length == 6 && inputBuffer[2] == 'B' && inputBuffer[3] == 'U' && inputBuffer[4] == 'S' && inputBuffer[5] == 'Y') {
log.debug("<<<<< " + "ENCRYPTION__PUMP_CHECK (BUSY)" + " " + DanaRS_Packet.toHexString(inputBuffer));
mSendQueue.clear();
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED, MainApp.gs(R.string.pumpbusy)));
} else {
// ERROR in response, wrong serial number
log.debug("<<<<< " + "ENCRYPTION__PUMP_CHECK (ERROR)" + " " + DanaRS_Packet.toHexString(inputBuffer));
mSendQueue.clear();
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED, MainApp.gs(R.string.connectionerror)));
SP.remove(MainApp.gs(R.string.key_danars_pairingkey) + DanaRSPlugin.mDeviceName);
Notification n = new Notification(Notification.WRONGSERIALNUMBER, MainApp.gs(R.string.wrongpassword), Notification.URGENT);
MainApp.bus().post(new EventNewNotification(n));
}
break;
// 2nd packet, pairing key

View file

@ -210,6 +210,8 @@ public class DanaRSService extends Service {
return result;
}
SystemClock.sleep(1000);
DanaRS_Packet_APS_History_Events msg;
if (lastHistoryFetched == 0) {
msg = new DanaRS_Packet_APS_History_Events(0);

View file

@ -33,6 +33,7 @@ import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.Round;
import info.nightscout.utils.SP;
import info.nightscout.utils.T;
/**
* Created by mike on 05.08.2016.
@ -195,6 +196,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
double carbs = detailedBolusInfo.carbs;
detailedBolusInfo.carbs = 0;
int carbTime = detailedBolusInfo.carbTime;
if (carbTime == 0) carbTime--; // better set 1 man back to prevent clash with insulin
detailedBolusInfo.carbTime = 0;
DetailedBolusInfoStorage.add(detailedBolusInfo); // will be picked up on reading history
@ -203,7 +205,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
t.isSMB = detailedBolusInfo.isSMB;
boolean connectionOK = false;
if (detailedBolusInfo.insulin > 0 || carbs > 0)
connectionOK = sExecutionService.bolus(detailedBolusInfo.insulin, (int) carbs, DateUtil.now() + carbTime * 60 * 1000, t);
connectionOK = sExecutionService.bolus(detailedBolusInfo.insulin, (int) carbs, DateUtil.now() + T.mins(carbTime).msecs(), t);
PumpEnactResult result = new PumpEnactResult();
result.success = connectionOK && Math.abs(detailedBolusInfo.insulin - t.insulin) < pumpDescription.bolusStep;
result.bolusDelivered = t.insulin;

View file

@ -15,16 +15,13 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.SensitivityInterface;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.utils.Round;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.SP;
import info.nightscout.utils.SafeParse;
/**
* Created by mike on 24.06.2017.
@ -70,13 +67,13 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
}
if (autosensDataTable == null || autosensDataTable.size() < 4) {
log.debug("No autosens data available");
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
if (current == null) {
log.debug("No autosens data available");
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}

View file

@ -15,16 +15,12 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.SensitivityInterface;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.utils.Round;
import info.nightscout.utils.SP;
import info.nightscout.utils.SafeParse;
import info.nightscout.utils.DateUtil;
/**
* Created by mike on 24.06.2017.
@ -66,13 +62,13 @@ public class SensitivityOref0Plugin extends AbstractSensitivityPlugin {
}
if (autosensDataTable == null || autosensDataTable.size() < 4) {
log.debug("No autosens data available");
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
if (current == null) {
log.debug("No current autosens data available");
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}

View file

@ -15,16 +15,12 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.SensitivityInterface;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.utils.Round;
import info.nightscout.utils.SP;
import info.nightscout.utils.SafeParse;
import info.nightscout.utils.DateUtil;
/**
* Created by mike on 19.06.2018.
@ -53,6 +49,8 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
@Override
public AutosensResult detectSensitivity(long fromTime, long toTime) {
// todo this method is called from the IobCobCalculatorPlugin, which leads to a circular
// dependency, this should be avoided
LongSparseArray<AutosensData> autosensDataTable = IobCobCalculatorPlugin.getPlugin().getAutosensDataTable();
Profile profile = MainApp.getConfigBuilder().getProfile();
@ -63,13 +61,14 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
}
if (autosensDataTable == null || autosensDataTable.size() < 4) {
log.debug("No autosens data available");
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}
// the current
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
if (current == null) {
log.debug("No current autosens data available");
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}

View file

@ -13,16 +13,13 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.interfaces.PluginDescription;
import info.nightscout.androidaps.interfaces.PluginType;
import info.nightscout.androidaps.interfaces.SensitivityInterface;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData;
import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult;
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.utils.Round;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.SP;
import info.nightscout.utils.SafeParse;
/**
* Created by mike on 24.06.2017.
@ -61,15 +58,14 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
int hoursForDetection = SP.getInt(R.string.key_openapsama_autosens_period, defaultHours);
if (autosensDataTable == null || autosensDataTable.size() < 4) {
if (Config.logAutosensData)
log.debug("No autosens data available");
log.debug("No autosens data available. lastDataTime=" + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}
AutosensData current = IobCobCalculatorPlugin.getPlugin().getAutosensData(toTime); // this is running inside lock already
if (current == null) {
if (Config.logAutosensData)
log.debug("No autosens data available");
log.debug("No autosens data available. toTime: " + DateUtil.dateAndTimeString(toTime) + " lastDataTime: " + IobCobCalculatorPlugin.getPlugin().lastDataTime());
return new AutosensResult();
}
@ -134,7 +130,12 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
}
if (data.size() == 0) {
if (Config.logAutosensData)
log.debug("Data size: " + data.size() + " fromTime: " + DateUtil.dateAndTimeString(fromTime) + " toTime: " + DateUtil.dateAndTimeString(toTime));
return new AutosensResult();
} else {
if (Config.logAutosensData)
log.debug("Data size: " + data.size() + " fromTime: " + DateUtil.dateAndTimeString(fromTime) + " toTime: " + DateUtil.dateAndTimeString(toTime));
}
double weightedsum = 0;

View file

@ -1,9 +1,5 @@
package info.nightscout.androidaps.receivers;
/**
* Created by mike on 07.07.2016.
*/
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@ -11,6 +7,7 @@ import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import info.nightscout.utils.FabricPrivacy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -25,6 +22,10 @@ import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.queue.commands.Command;
import info.nightscout.utils.LocalAlertUtils;
/**
* Created by mike on 07.07.2016.
*/
public class KeepAliveReceiver extends BroadcastReceiver {
private static Logger log = LoggerFactory.getLogger(KeepAliveReceiver.class);
public static final long STATUS_UPDATE_FREQUENCY = 15 * 60 * 1000L;
@ -45,6 +46,7 @@ public class KeepAliveReceiver extends BroadcastReceiver {
LocalAlertUtils.shortenSnoozeInterval();
LocalAlertUtils.checkStaleBGAlert();
checkPump();
FabricPrivacy.uploadDailyStats();
log.debug("KeepAlive received");
wl.release();

View file

@ -3,6 +3,13 @@ package info.nightscout.utils;
import com.crashlytics.android.Crashlytics;
import com.crashlytics.android.answers.Answers;
import com.crashlytics.android.answers.CustomEvent;
import info.nightscout.androidaps.BuildConfig;
import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.PluginBase;
import java.util.Date;
/**
* Created by jamorham on 21/02/2018.
@ -80,4 +87,51 @@ public class FabricPrivacy {
}
}
public static void uploadDailyStats() {
if (!fabricEnabled()) return;
long lastUploadDay = SP.getLong(MainApp.gs(R.string.key_plugin_stats_report_timestamp), 0L);
Date date = new Date();
date.setHours(0);
date.setMinutes(0);
date.setSeconds(0);
long today = date.getTime() - date.getTime() % 1000;
if (today > lastUploadDay) {
uploadAppUsageType();
uploadPluginStats();
SP.putLong(MainApp.gs(R.string.key_plugin_stats_report_timestamp), today);
}
}
private static void uploadPluginStats() {
CustomEvent pluginStats = new CustomEvent("PluginStats");
pluginStats.putCustomAttribute("version", BuildConfig.VERSION);
for (PluginBase plugin : MainApp.getPluginsList()) {
if (plugin.isEnabled(plugin.getType()) && !plugin.pluginDescription.alwaysEnabled) {
pluginStats.putCustomAttribute(plugin.getClass().getSimpleName(), "enabled");
}
}
getInstance().logCustom(pluginStats);
}
private static void uploadAppUsageType() {
CustomEvent type = new CustomEvent("AppUsageType");
if (Config.NSCLIENT)
type.putCustomAttribute("type", "NSClient");
else if (Config.G5UPLOADER)
type.putCustomAttribute("type", "G5Uploader");
else if (Config.PUMPCONTROL)
type.putCustomAttribute("type", "PumpControl");
else if (MainApp.getConstraintChecker().isClosedLoopAllowed().value())
type.putCustomAttribute("type", "ClosedLoop");
else
type.putCustomAttribute("type", "OpenLoop");
getInstance().logCustom(type);
}
}

View file

@ -271,7 +271,7 @@
<string name="waitingforpump">Очаква помпата</string>
<string name="overview_bolusprogress_goingtodeliver" formatted="false">Ще достави %.2fЕ</string>
<string name="objectives_0_objective">Настройка на визуализацията и наблюдението, а също и анализиране на базалните нужди и коефициенти</string>
<string name="objectives_1_gate">Работете в Open Loop няколко дни и ръчно прилагайте на много временни базали</string>
<string name="objectives_1_gate">Работете в Open Loop няколко дни и ръчно прилагайте на много временни базали. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_1_objective">Стартиране на Open Loop </string>
<string name="objectives_2_gate">Определяне на макс. лимит на базалния инсулин и настройване в помпата и програмата</string>
<string name="objectives_2_objective">Разбиране на вашият Open Loop, включително препоръчваните временни базали</string>

View file

@ -248,7 +248,7 @@
<string name="overview_bolusprogress_goingtodeliver" formatted="false">Podávání %.2fU inzulínu</string>
<string name="objectives_0_gate">Zkontrolovat, zda jsou glykémie a údaje z pumpy viditelné v Nightscoutu</string>
<string name="objectives_0_objective">Nastavit vizualizaci a monitoring, analyzovat bazály a koeficienty</string>
<string name="objectives_1_gate">Provozovat několik dní otevřenou smyčku a ručně potvrzovat doporučené dočasné bazály</string>
<string name="objectives_1_gate">Provozovat několik dní otevřenou smyčku a ručně potvrzovat doporučené dočasné bazály. Nastavovat a používat dočasné cíle (např. pro sport nebo hypo)</string>
<string name="objectives_1_objective">Začít s otevřenou smyčkou</string>
<string name="objectives_2_gate">Na základě předchozích zkušeností rozhodnout, jaký je třeba maximální bazál a nastavit ho v pumpě a v aplikaci</string>
<string name="objectives_2_objective">Porozumět otevřené smyčce a doporučeným dočasným bazálům</string>
@ -947,7 +947,7 @@
<string name="description_sensitivity_aaps">Citlivost je počítána stejným způsobem jako v Oref0, ale je možné specifikovat dobu do minulosti. Minimální absorbce sacharidů je počítána dynamicky z maximální doby absorbce definované v nastavení.</string>
<string name="description_sensitivity_oref0">Citlivost je počítána za 24h a sacharidy, pokud nejsou absorbované, jsou oříznuty po čase definovaném v nastavení.</string>
<string name="description_sensitivity_oref1">Citlivost je počítána za 8h a sacharidy, pokud nejsou absorbované, jsou oříznuty po čase definovaném v nastavení. Je také zároveň vyhodnocováno UAM (neoznámené jídlo)</string>
<string name="description_sensitivity_weighted_average">Cislivost je počítána jako vážený průměr z odchylek. Novější mají vyšší prioritu. Minimální absorbce sacharidů je počítána dynamicky z maximální doby absorbce definované v nastavení. Tento algoritmus sleduje nejrychlejí změny citlivosti.</string>
<string name="description_sensitivity_weighted_average">Citlivost je počítána jako vážený průměr z odchylek. Novější mají vyšší prioritu. Minimální absorbce sacharidů je počítána dynamicky z maximální doby absorbce definované v nastavení. Tento algoritmus sleduje nejrychlejí změny citlivosti.</string>
<string name="description_source_dexcom_g5">Příjem glykémií z modifikované Dexcom G5 aplikace</string>
<string name="description_source_glimp">Příjem glykémií z Glimpu</string>
<string name="description_source_mm640g">Příjem glykémií z Uploaderu 640G</string>
@ -999,10 +999,10 @@
<string name="sensitivitysetup">Nastavení senzitivity</string>
<string name="setupwizard_sensitivity_description">Plugin senzitivita slouží k detekci změn v senzitivitě a k počítání COB. Více informací zde:</string>
<string name="nsclientinfotext">NSClient slouží ke spojení s Nightscoutem. Nastavení můžete nyní přeskočit, ale nebudete schopni dokončit cíle, dokud nastavení neprovedete.</string>
<string name="diawarning">Pozor: Nové inzulínové profilyvyžadují DIA minimálně 5h. DIA 5-6 hodin odpovídá zhruba nastavení 3h na starších typech profilů nebo v pumpě.</string>
<string name="diawarning">Pozor: Nové inzulínové profily vyžadují DIA minimálně 5h. DIA 56 hodin odpovídá zhruba nastavení 3h na starších typech profilů nebo v pumpě.</string>
<string name="bgsourcesetup">Konfigurace zdroje glykémií</string>
<string name="setupwizard_profile_description">Vyberte zdroj profilů. Pokud jde o dítě, využijte nejspíš NS profil. Pokud Vás nikdo přes NS nesleduje, budete patrně preferovat Místní profil. Uvědomte si, že nastavujete pouze zdroj profilů. Na to aby se opravdu profil začal používat, je třeba provést aktivaci profilu použitím \"Přepnutí profilu\"</string>
<string name="setupwizard_aps_description">Vyberte jeden z algoritmů. Jsou setříděné od nejstaršího po nejnovější. Novější je obvikle lepší a agresivnější, ale vyžaduje přesnější nastavení. Proto pokud se smyčkou začínáte, mely byste nejříve vybrat jen AMA a ne ten posldní. Nezapomeňte si přečíst dokumentaci OpenAPS a provést nastavení, než ho začnete používat.</string>
<string name="setupwizard_profile_description">Vyberte zdroj profilů. Pokud jde o dítě, využijte nejspíše NS profil. Pokud Vás nikdo přes NS nesleduje, budete patrně preferovat Místní profil. Uvědomte si, že nastavujete pouze zdroj profilů. Na to aby se opravdu profil začal používat, je třeba provést aktivaci profilu použitím \"Přepnutí profilu\"</string>
<string name="setupwizard_aps_description">Vyberte jeden z algoritmů. Jsou setříděné od nejstaršího po nejnovější. Novější je obvykle lepší a agresivnější, ale vyžaduje přesnější nastavení. Proto pokud se smyčkou začínáte, mely byste nejříve vybrat jen AMA a ne ten poslední. Nezapomeňte si přečíst dokumentaci k OpenAPS a provést nastavení, než ho začnete používat.</string>
<string name="startobjective">Spusťte první cíl</string>
<string name="permission">Povolení</string>
<string name="askforpermission">Získat povolení</string>
@ -1037,14 +1037,14 @@
<string name="poctech">Poctech</string>
<string name="description_source_poctech">Získávat glykémie z aplikace Poctech</string>
<string name="high_temptarget_raises_sensitivity_title">Vysoký dočasný cíl zvýší senzitivitu</string>
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Zvýšní senzitivity pro dočasné cíle >= 5.5]]></string>
<string name="high_temptarget_raises_sensitivity_summary"><![CDATA[Zvýšení senzitivity pro dočasné cíle >= 5.5]]></string>
<string name="low_temptarget_lowers_sensitivity_title">Nízký dočasný cíl zníží senzitivitu</string>
<string name="low_temptarget_lowers_sensitivity_summary"><![CDATA[Nižší senzitivita pro dočasné cíle < 5.5]]></string>
<string name="combo_invalid_setup">Chybné nastavení pumpy. Projděte si dokumentaci a presvěčte se, že menu Quick Info se zmenuje QUICK INFO, za použití 360 configuration software</string>
<string name="combo_invalid_setup">Chybné nastavení pumpy. Projděte si dokumentaci a presvědčete se, že menu Quick Info se zmenuje QUICK INFO, za použití 360 configuration software</string>
<string name="custom">Volitelný</string>
<string name="largetimedifftitle">Velký rozdíl v času</string>
<string name="largetimediff">"Velký rozdíl v času: 4as v pumpě se liší alespoň o 1,5 h. Prosím upravte čas v pumpě ručně a vymažte historri pumpy, pokud je to třeba, prípadně pozastavte smyčku alespoň na \"DIA\" hodin "</string>
<string name="largetimediff">"Velký rozdíl v času: Čas v pumpě se liší minimálně o 1,5 h. Prosím upravte čas v pumpě ručně a vymažte historii pumpy, pokud je to třeba, případně pozastavte smyčku alespoň na \"DIA\" hodin "</string>
<string name="careportal_removestartedevents">Vyčistit události \"AndroidAPS restartován\"</string>
<string name="storedsettingsfound">Nalezeno uložené nastavení</string>
<string name="allow_hardware_pump_text">POZOR: Pokud aktivuje a připojíte skutečnou pumpu, AndroidAPS nakopíruje (a bude udržovat) nastavení bazálu z aktivního profilu do pumpy. Nastavení bazálu v pumpě bude přepsáno. Pokud si nejste jistý nebo nechcete přepsat bazály v pumpě, stiskněte Zrušit a opakujte přepnutí na jinou pumpu později.</string>
<string name="allow_hardware_pump_text">POZOR: Pokud aktivuje a připojíte skutečnou pumpu, AndroidAPS nakopíruje (a bude udržovat) nastavení bazálu z aktivního profilu do pumpy. Nastavení bazálu v pumpě bude přepsáno. Pokud si nejste jistí nebo nechcete přepsat bazály v pumpě, stiskněte Zrušit a opakujte přepnutí na jinou pumpu později.</string>
</resources>

View file

@ -5,7 +5,7 @@
<string name="cancel">Abbrechen</string>
<string name="carbs">Kohlenhydrate</string>
<string name="careportal">Careportal</string>
<string name="careportal_correctionbolus">Korrektur-Bolus</string>
<string name="careportal_correctionbolus">Korrektur Bolus</string>
<string name="careportal_newnstreatment_meter">Messgerät</string>
<string name="careportal_newnstreatment_notes_label">Notiz</string>
<string name="careportal_newnstreatment_profile_label">Profil</string>
@ -27,9 +27,9 @@
<string name="virtualpump_resultok">OK</string>
<string name="basal">Basal</string>
<string name="bolus">Bolus</string>
<string name="careportal_mealbolus">Mahlzeiten-Bolus</string>
<string name="careportal_mealbolus">Mahlzeiten Bolus</string>
<string name="careportal_exercise">Bewegung</string>
<string name="careportal_combobolus">Combo-Bolus</string>
<string name="careportal_combobolus">Combo Bolus</string>
<string name="careportal_cgmsensorstart">CGM-Sensor Start</string>
<string name="careportal_newnstreatment_absolute_label">Absolut</string>
<string name="careportal_newnstreatment_carbs_label">Kohlenhydrate</string>
@ -41,11 +41,11 @@
<string name="careportal_note">Notiz</string>
<string name="careportal_openapsoffline">OpenAPS offline</string>
<string name="careportal_profileswitch">Profilwechsel</string>
<string name="careportal_pumpsitechange">Pumpenkatheter-Wechsel</string>
<string name="careportal_pumpsitechange">Pumpenkatheter Wechsel</string>
<string name="careportal_question">Frage</string>
<string name="careportal_snackbolus">Snack-Bolus</string>
<string name="careportal_tempbasalend">TBR-Ende</string>
<string name="careportal_tempbasalstart">TBR-Start</string>
<string name="careportal_snackbolus">Snack Bolus</string>
<string name="careportal_tempbasalend">TBR Ende</string>
<string name="careportal_tempbasalstart">TBR Start</string>
<string name="changeyourinput">Ändere deine Eingabe!</string>
<string name="closedloop">Closed Loop</string>
<string name="configbuilder_aps">APS</string>
@ -99,13 +99,13 @@
<string name="treatments_newtreatment_carbsamount_label">Kohlenhydrat-Menge</string>
<string name="treatments_newtreatment_insulinamount_label">Insulin-Menge</string>
<string name="treatments">Behandlungen</string>
<string name="treatmentssafety_maxbolus_title">Max erlaubter Bolus [IE]</string>
<string name="treatmentssafety_maxcarbs_title">Max erlaubte Kohlehydrate [g]</string>
<string name="treatmentssafety_maxbolus_title">Max. erlaubter Bolus [IE]</string>
<string name="treatmentssafety_maxcarbs_title">Max. erlaubte Kohlehydrate [g]</string>
<string name="treatmentssafety_title">Sicherheitseinstellungen Behandlungen</string>
<string name="simpleprofile">Einfaches Profil</string>
<string name="setextendedbolusquestion">Setze neuen verlängerten Bolus:</string>
<string name="setbasalquestion">Akzeptiere neue TBR:</string>
<string name="danar_useextended_title">Benutze verlängerten Bolus für hohe TBR (>200%)</string>
<string name="danar_useextended_title">Benutze verlängerten Bolus für hohe TBR (>200%).</string>
<string name="objectives_pumpstatusavailableinns">Pumpen-Status verfügbar in Nightscout</string>
<string name="overview_newtempbasal_percent_label">% (100% = aktuell)</string>
<string name="overview_newtempbasal_basalpercent">Basal-Wert [%]</string>
@ -124,16 +124,16 @@
<string name="objectives">Zielsetzungen</string>
<string name="noprofileset">KEIN PROFIL GESETZT</string>
<string name="nsclientnotinstalled">Nightscout-Client ist nicht installiert. Eintrag verloren!</string>
<string name="ns_sync_use_absolute_title">Verwende absolute statt prozentuale Basalwerte beim Upload zu NightScout</string>
<string name="ns_sync_use_absolute_title">Verwende absolute statt prozentuale Basalwerte beim Upload zu NightScout.</string>
<string name="noprofile">Bisher noch kein Profil von Nightscout geladen</string>
<string name="nochangerequested">Keine Anpassung benötigt</string>
<string name="noapsselected">KEIN APS AUSGEWÄHLT ODER KEIN ERGEBNIS VORHANDEN</string>
<string name="bolusconstraintapplied">Bolus-Beschränkung angewendet</string>
<string name="careportal_announcement">Ankündigung</string>
<string name="careportal_bgcheck">BZ-Test</string>
<string name="careportal_carbscorrection">Kohlenhydrat-Korrektur</string>
<string name="careportal_bgcheck">BZ Test</string>
<string name="careportal_carbscorrection">Kohlenhydrat Korrektur</string>
<string name="careportal_cgmsensorinsert">CGM-Sensor gesetzt</string>
<string name="careportal_insulincartridgechange">Insulinreservoir-Wechsel</string>
<string name="careportal_insulincartridgechange">Insulinreservoir Wechsel</string>
<string name="careportal_newnstreatment_duration_label">Dauer</string>
<string name="careportal_newnstreatment_carbtime_label">KH-Zeit</string>
<string name="careportal_newnstreatment_enteredby_title">Eingegeben durch</string>
@ -143,7 +143,7 @@
<string name="configbuilder_general">Generell</string>
<string name="configbuilder_treatments">Behandlungen</string>
<string name="constraintapllied">Beschränkungen angewendet!</string>
<string name="constraints_violation">Beschränkungen wurden verletzt oder Limit erreicht</string>
<string name="constraints_violation">Beschränkungen wurden verletzt oder Limit erreicht.</string>
<string name="cs_lang">Czech</string>
<string name="loopdisabled">LOOP DEAKTIVIERT DURCH BESCHRÄNKUNGEN</string>
<string name="loop_constraintsprocessed_label">Beschränkungen angewendet</string>
@ -151,7 +151,7 @@
<string name="objectives_manualenacts">Manuelle Aktionen</string>
<string name="carbsconstraintapplied">Kohlenhydrat-Beschränkung erreicht</string>
<string name="nav_resetdb">Datenbanken zurücksetzen</string>
<string name="nav_refreshtreatments">Erneure Behandlungen von NS</string>
<string name="nav_refreshtreatments">Erneure Behandlungen von Nightscout</string>
<string name="nav_exit">Exit</string>
<string name="missing">Fehlend</string>
<string name="entertreatmentquestion">Eingabe neuer Behandlung:</string>
@ -163,8 +163,8 @@
<string name="nav_export">Einstellungen exportieren</string>
<string name="nav_import">Einstellungen importieren</string>
<string name="de_lang">German</string>
<string name="openapsma_maxbasal_summary">Dieser Wert wird \"max basal\" in OpenAPS genannt</string>
<string name="openapsma_maxiob_summary">Maximale Menge von nicht Bolus-IOB, die OpenAPs abgeben kann</string>
<string name="openapsma_maxbasal_summary">Dieser Wert wird \"max basal\" in OpenAPS genannt.</string>
<string name="openapsma_maxiob_summary">Maximale Menge von nicht Bolus-IOB, die OpenAPs abgeben kann.</string>
<string name="bg_lang">Bulgarian</string>
<string name="smscommunicator_allowednumbers_summary">+XXXXXXXXXX;+YYYYYYYYYY</string>
<string name="absolute">Absolut</string>
@ -178,7 +178,7 @@
<string name="connectionerror">Pumpen-Verbindungsfehler</string>
<string name="danar_bt_name_title">DanaR Blueetooth Gerät</string>
<string name="danar_iob_label">Pumpen-IOB</string>
<string name="danar_pump_settings">DanaR Pumpen Einstellungen</string>
<string name="danar_pump_settings">DanaR Pumpen-Einstellungen</string>
<string name="danarpump">DanaR</string>
<string name="disconnected">Getrennt</string>
<string name="glucosetype_sensor">Sensor</string>
@ -200,15 +200,15 @@
<string name="devicenotfound">Ausgewähltes Gerät nicht gefunden</string>
<string name="dismiss">VERWERFEN</string>
<string name="end_user_license_agreement">Endbenutzervereinbarung</string>
<string name="end_user_license_agreement_i_understand">Ich verstehe und stimme zu</string>
<string name="end_user_license_agreement_i_understand">Ich verstehe und stimme zu.</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, ÜBERNEHMEN SIE DIE KOSTEN ALLER NOTWENDIGEN KRANKHEITSKOSTEN, SERVICELEISTUNGEN, REPARATUREN ODER KORREKTUREN.</string>
<string name="failedupdatebasalprofile">Fehler beim Aktualisieren der Basalrate</string>
<string name="smscommunicator">SMS-Kommunikator</string>
<string name="smscommunicator_allowednumbers">Erlaubte Telefonnummern</string>
<string name="waitingforpumpresult">Auf Pumpenergebnis warten</string>
<string name="nobtadapter">Kein Bluetooth-Adapter gefunden</string>
<string name="smscommunicator_remotebolusnotallowed">Ferngesteuerter Bolus ist nicht erlaubt</string>
<string name="smscommunicator_bolusreplywithcode">Um einen Bolus von %1$.2f IE abzugeben, antworte mit dem Code %2$s</string>
<string name="smscommunicator_remotebolusnotallowed">Ferngesteuerter Bolus ist nicht erlaubt.</string>
<string name="smscommunicator_bolusreplywithcode">Um einen Bolus von %1$.2f IE abzugeben, antworte mit dem Code %2$s.</string>
<string name="ko_lang">Korean</string>
<string name="youareonallowedlimit">Limit erreicht</string>
<string name="wrongpumppassword">Falsches Pumpen-Passwort!</string>
@ -251,7 +251,7 @@
<string name="othersettings_title">Andere</string>
<string name="occlusion">Verstopfung</string>
<string name="overview_bolusprogress_delivered">Abgegeben</string>
<string name="overview_bolusprogress_goingtodeliver">Es werden %1$.2f IE abgegeben</string>
<string name="overview_bolusprogress_goingtodeliver">%1$.2f IE werden abgegeben.</string>
<string name="primefill">Vorfüllen/Füllen</string>
<string name="uploading">Hochladen</string>
<string name="es_lang">Spanish</string>
@ -271,8 +271,8 @@
<string name="button1">Button 1</string>
<string name="button2">Button 2</string>
<string name="button3">Button 3</string>
<string name="configbuilder">Konfigurations-Generator</string>
<string name="minago">vor %d Min.</string>
<string name="configbuilder">Konfiguration</string>
<string name="minago">vor %d min</string>
<string name="actions_shortname">AKT</string>
<string name="wear_shortname">WEAR</string>
<string name="virtualpump_shortname">VP</string>
@ -294,9 +294,9 @@
<string name="error_only_numeric_digits_range_allowed">Bitte verwende nur Ziffern von %1$s - %2$s.</string>
<string name="waitingforpump">Warte auf Pumpe</string>
<string name="wear">Wear</string>
<string name="always_use_shortavg">Verwende immer das kurze durchschnittliche Delta statt des einfachen Deltas</string>
<string name="always_use_shortavg_summary">Sinnvoll, wenn die Daten von einer ungefilterten Quelle Signalrauschen haben.</string>
<string name="approachingdailylimit">Tagesinsulin-Limit wird erreicht</string>
<string name="always_use_shortavg">Verwende immer das kurze durchschnittliche Delta statt des einfachen Deltas.</string>
<string name="always_use_shortavg_summary">Das ist sinnvoll, wenn die Daten von einer ungefilterten Quelle Signalrauschen haben.</string>
<string name="approachingdailylimit">Tagesinsulin-Limit wird bald erreicht.</string>
<string name="calibrationsent">Kalibrierung an xDrip+ gesendet</string>
<string name="child">Kind</string>
<string name="clear_queue">Warteschlange leeren</string>
@ -307,21 +307,21 @@
<string name="danar_stats_cumulative_tdd">Kumulative TDD</string>
<string name="danar_stats_date">Datum</string>
<string name="danar_stats_expweight">Exponentiell gewichtete TDD</string>
<string name="danar_stats_olddata_Message">Veraltete Daten, bitte klicke auf \"Reload\"</string>
<string name="danar_stats_olddata_Message">Veraltete Daten, bitte klicke auf \"Reload\".</string>
<string name="xdripstatus_shortname">xds</string>
<string name="xdripstatus">xDrip+ Statuszeile (Uhr)</string>
<string name="xdripstatus_settings">xDrip+ Status (Uhr)</string>
<string name="xdripnotinstalled">xDrip+ nicht installiert</string>
<string name="wear_showbgi_title">Zeige BGI</string>
<string name="wear_showbgi_summary">Füge BGI zur Statuszeile hinzu</string>
<string name="wear_showbgi_summary">Füge BGI zur Statuszeile hinzu.</string>
<string name="wear_settings">Wear-Einstellungen</string>
<string name="wear_detailedIOB_title">Zeige detailliertes IOB</string>
<string name="wear_detailedIOB_summary">Differenziere IOB in Bolus- und Basal-IOB auf dem Watchface</string>
<string name="wear_detailedIOB_summary">Differenziere IOB in Bolus- und Basal-IOB auf dem Watchface.</string>
<string name="wrongpassword">Falsches Passwort</string>
<string name="it_lang">Italian</string>
<string name="Glimp">Glimp</string>
<string name="MM640g">MM640g</string>
<string name="absorption_maxtime_summary">Zeit in Stunden, in der zu erwarten ist, dass alle Kohlenhydrate resorbiert sein werden</string>
<string name="absorption_maxtime_summary">Zeit in Stunden, in der zu erwarten ist, dass alle Kohlenhydrate resorbiert sein werden.</string>
<string name="absorption_maxtime_title">Maximale Essens-Resorptionszeit [h]</string>
<string name="absorptionsettings_title">Resorptions-Einstellungen</string>
<string name="activity">Aktivität</string>
@ -338,7 +338,7 @@
<string name="careportal_carbsandbolus_label">CARBS &amp; BOLUS</string>
<string name="careportal_cgm_label">CGM &amp; OPENAPS</string>
<string name="careportal_insulinage_label">Insulinalter</string>
<string name="careportal_newnstreatment_duration_min_label">Dauer [Min.]</string>
<string name="careportal_newnstreatment_duration_min_label">Dauer [min]</string>
<string name="paused">Pausiert</string>
<string name="patientage">Patientenalter</string>
<string name="patientage_summary">Bitte wähle das Pateintenalter, um die Sicherheits-Limits festzulegen</string>
@ -360,18 +360,18 @@
<string name="careportal_insulinage_label_short">IAGE</string>
<string name="careportal_pbage_label">Batteriealter</string>
<string name="careportal_pump_label">PUMP</string>
<string name="careportal_pumpbatterychange">Pumpenbatterie-Wechsel</string>
<string name="careportal_pumpbatterychange">Pumpenbatterie Wechsel</string>
<string name="careportal_sensorage_label_short">SAGE</string>
<string name="configbuilder_insulin">Insulin</string>
<string name="notloadedplugins">Es sind nicht alle Profile geladen!</string>
<string name="valuesnotstored">Werte nicht gespeichert!</string>
<string name="danar_enableextendedbolus">Aktiviere verlängerten Bolus in der Pumpe</string>
<string name="danar_enableextendedbolus">Aktiviere verlängerten Bolus in der Pumpe.</string>
<string name="danar_stats">DanaR Stats</string>
<string name="danar_stats_amount_days"># Tage</string>
<string name="danar_stats_basalrate">Basal</string>
<string name="danar_stats_bolus">Bolus</string>
<string name="danar_stats_weight">Gewichtung</string>
<string name="danar_visualizeextendedaspercentage_title">Zeige verlängerten Bolus als % an</string>
<string name="danar_visualizeextendedaspercentage_title">Zeige verlängerten Bolus als % an.</string>
<string name="danarkoreanpump">DanaR Korean</string>
<string name="danarv2pump">DanaRv2</string>
<string name="deliver_now">Jetzt abgeben</string>
@ -380,8 +380,8 @@
<string name="disconnecting">Verbindung wird getrennt</string>
<string name="disconnectpumpfor1h">Trenne Pumpe für 1 h</string>
<string name="disconnectpumpfor2h">Trenne Pumpe für 2 h</string>
<string name="disconnectpumpfor15m">Trenne Pumpe für 15 Min.</string>
<string name="disconnectpumpfor30m">Trenne Pumpe für 30 Min.</string>
<string name="disconnectpumpfor15m">Trenne Pumpe für 15 min</string>
<string name="disconnectpumpfor30m">Trenne Pumpe für 30 min</string>
<string name="disconnectpumpfor3h">Trenne Pumpe für 3 h</string>
<string name="eatingsoon">Bald essen</string>
<string name="el_lang">Greek</string>
@ -397,24 +397,24 @@
<string name="invalidprofile">Ungültiges oder defektes Profil!</string>
<string name="iob">IOB</string>
<string name="localprofile">Lokales Profil</string>
<string name="loopsuperbolusfor">Superbolus (%1$d Min.)</string>
<string name="loopsuperbolusfor">Superbolus (%1$d min)</string>
<string name="loopsuspended">Loop pausiert</string>
<string name="loopsuspendedfor">Pausiert (%1$d Min.)</string>
<string name="loopsuspendedfor">Pausiert (%1$d min)</string>
<string name="mdtp_cancel">Abbrechen</string>
<string name="mdtp_ok">OK</string>
<string name="mgdl">mg/dl</string>
<string name="mmol">mmol/l</string>
<string name="nav_about">Über</string>
<string name="nav_show_logcat">Logs anzeigen</string>
<string name="nosuccess">nicht erfolgreich - bitte Telefon prüfen</string>
<string name="nosuccess">Nicht erfolgreich - bitte Telefon prüfen</string>
<string name="notavailable">Nicht verfügbar</string>
<string name="nowritepermission">Nightscout-Client hat keine Schreibrechte. Falscher API-Key?</string>
<string name="ns_alarmoptions">Alarm-Optionen</string>
<string name="ns_localbroadcasts">Aktiviere Broadcasts für andere Apps (z. B. xDrip+).</string>
<string name="ns_localbroadcasts_title">Aktiviere lokale Broadcasts.</string>
<string name="ns_logappstartedevent">Logge App-Start in NS</string>
<string name="ns_logappstartedevent">Logge App-Start in Nightscout.</string>
<string name="ns_noupload">Kein Upload zu Nightscout</string>
<string name="ns_noupload_summary">Alle an Nightscout gesendeten Daten werden verworfen. AAPS ist verbunden, aber Nightscout-Daten werden nicht geändert</string>
<string name="ns_noupload_summary">Alle an Nightscout gesendeten Daten werden verworfen. AAPS ist verbunden, aber Nightscout-Daten werden nicht geändert.</string>
<string name="nsalarm_high">Hoch</string>
<string name="nsalarm_low">Niedrig</string>
<string name="nsalarm_urgenthigh">Sehr hoch</string>
@ -426,9 +426,9 @@
<string name="nsclientinternal_url">URL:</string>
<string name="nsclientinternal_url_dialogmessage">Nightscout-URL eingeben</string>
<string name="nsclientinternal_url_title">Nightscout-URL</string>
<string name="objectives_0_gate">Verifiziere, dass BZ- und Pumpen-Insulin-Daten in Nightscout erfolgreich hoch geladen werden</string>
<string name="objectives_0_gate">Verifiziere, dass BZ- und Pumpen-Insulin-Daten in Nightscout erfolgreich hoch geladen werden.</string>
<string name="objectives_0_objective">Konfiguriere die Anzeige und das Monitoring (Nightscout) und analysiere Basal-Raten und Faktoren</string>
<string name="objectives_1_gate">Erprobe den Open Loop Modus für ein paar Tage und setze manuell temporäre Basal-Raten</string>
<string name="objectives_1_gate">Erprobe den Open Loop Modus für ein paar Tage und setze manuell temporäre Basal-Raten. Richte temporäre Ziele ein und nutze sie (z.B. für Bewegung, unterstützend zur Hypobehandlung).</string>
<string name="objectives_1_objective">Starte den Open Loop Modus</string>
<string name="old_data">VERALTETE DATEN</string>
<string name="ongoingnotificaction">Laufende Benachrichtigungen</string>
@ -437,7 +437,7 @@
<string name="openaps_short">OAPS</string>
<string name="openapsama">OpenAPS AMA</string>
<string name="openapsma_scriptdebugdata_label">Skript Debug</string>
<string name="valueoutofrange">Wert %1$s ist außerhalb des festen Limits</string>
<string name="valueoutofrange">Wert %1$s ist außerhalb des festen Limits.</string>
<string name="overview_calibration">Kalibrierung</string>
<string name="overview_editquickwizard_buttontext">Button-Text:</string>
<string name="overview_extendedbolus_cancel_button">Verlängerten Bolus abbrechen</string>
@ -485,9 +485,9 @@
<string name="danar_totaluploaded">Insgesamt %1$d Einträge erfolgreich hochgeladen</string>
<string name="danarprofile_dia_summary">Dauer der Insulinwirkung</string>
<string name="insulin_shortname">INS</string>
<string name="needwhitelisting">%1$s benötigt Batterie-Optimierungs-Whitelisting, um korrekt arbeiten zu können</string>
<string name="needwhitelisting">%1$s benötigt Batterie-Optimierungs-Whitelisting, um korrekt arbeiten zu können.</string>
<string name="nsalarm_staledata">Veraltete Daten</string>
<string name="nsalarm_staledatavalue_label">Veraltete Daten seit [Min.]</string>
<string name="nsalarm_staledatavalue_label">Veraltete Daten seit [min]</string>
<string name="openapsma_autosensdata_label">Autosens-Daten</string>
<string name="openapsma_maxbasal_title">Max IE/h, die als TBR gesetzt werden können</string>
<string name="openapsma_maxiob_title">Maximales Basal-IOB, das OpenAPS abgeben darf [IE]</string>
@ -498,29 +498,29 @@
<string name="sensitivityoref0">Sensitivität Oref0</string>
<string name="sensitivityweightedaverage">Durchschnittliche Sensitivität</string>
<string name="settingextendedbolus">Verlängerter Bolus wird gesetzt</string>
<string name="sms_minago">vor %1$d Min.</string>
<string formatted="false" name="smscommunicator_basalstopreplywithcode">Um die TBR abzubrechen, antworte mit dem Code %s</string>
<string name="sms_minago">vor %1$d min</string>
<string formatted="false" name="smscommunicator_basalstopreplywithcode">Um die TBR abzubrechen, antworte mit dem Code %s.</string>
<string formatted="false" name="smscommunicator_bolusdelivered">Bolus %.2f IE erfolgreich abgegeben</string>
<string name="smscommunicator_calibrationfailed">xDrip+ hat die Kalbrierung nicht erhalten</string>
<string name="smscommunicator_calibrationreplywithcode">Um die Kalibrierung %1$.2f zu senden, antworte mit dem Code %2$s</string>
<string name="smscommunicator_calibrationreplywithcode">Um die Kalibrierung %1$.2f zu senden, antworte mit dem Code %2$s.</string>
<string name="smscommunicator_calibrationsent">Kalibrierung gesendet. Das Empfangen von Kalbrierungen muss in xDrip+ aktiviert sein.</string>
<string name="smscommunicator_invalidphonennumber">Falsche/ungültige Telefonnummer</string>
<string name="smscommunicator_loophasbeendisabled">Loop wurde deaktiviert</string>
<string name="smscommunicator_loophasbeenenabled">Lopp wurde aktiviert</string>
<string name="smscommunicator_loopisdisabled">Loop ist deaktiviert</string>
<string name="smscommunicator_loopisenabled">Loop ist aktiviert</string>
<string name="smscommunicator_loopresumed">Loop wurde fortgesetzt</string>
<string name="smscommunicator_loopsuspended">Loop pausiert</string>
<string name="smscommunicator_missingsmspermission">SMS-Steuerung nicht erlaubt</string>
<string name="smscommunicator_remotebasalnotallowed">Ferngesteuerte Basal-Einstellungen sind nicht erlaubt</string>
<string name="smscommunicator_remotecalibrationnotallowed">Ferngesteuerte Kalibrierung ist nicht erlaubt</string>
<string name="smscommunicator_remotecommandnotallowed">Ferngesteuerte Befehle sind nicht erlaubt</string>
<string name="smscommunicator_remotecommandsallowed">Erlaube externe Befehle per SMS</string>
<string name="smscommunicator_suspendreplywithcode">Um das Loopen für %1$d Minuten zu pausieren, antworte mit dem Code %2$s</string>
<string name="smscommunicator_loophasbeendisabled">Loop wurde deaktiviert.</string>
<string name="smscommunicator_loophasbeenenabled">Lopp wurde aktiviert.</string>
<string name="smscommunicator_loopisdisabled">Loop ist deaktiviert.</string>
<string name="smscommunicator_loopisenabled">Loop ist aktiviert.</string>
<string name="smscommunicator_loopresumed">Loop wurde fortgesetzt.</string>
<string name="smscommunicator_loopsuspended">Loop pausiert.</string>
<string name="smscommunicator_missingsmspermission">SMS-Steuerung nicht erlaubt.</string>
<string name="smscommunicator_remotebasalnotallowed">Ferngesteuerte Basal-Einstellungen sind nicht erlaubt.</string>
<string name="smscommunicator_remotecalibrationnotallowed">Fern-Kalibrierung ist nicht erlaubt.</string>
<string name="smscommunicator_remotecommandnotallowed">Ferngesteuerte Befehle sind nicht erlaubt.</string>
<string name="smscommunicator_remotecommandsallowed">Erlaube externe Befehle per SMS.</string>
<string name="smscommunicator_suspendreplywithcode">Um das Loopen für %1$d Minuten zu pausieren, antworte mit dem Code %2$s.</string>
<string name="smscommunicator_tempbasalcanceled">TBR abgebrochen</string>
<string name="smscommunicator_tempbasalcancelfailed">Das Abbrechen der TBR ist fehlgeschlagen</string>
<string name="smscommunicator_tempbasalfailed">Das Starten der TBR ist fehlgeschlagen</string>
<string name="smscommunicator_tempbasalset">TBR mitl %1$.2f IE/h für %2$d Min. wurde erfolgreich gestartet</string>
<string name="smscommunicator_tempbasalcancelfailed">Das Abbrechen der TBR ist fehlgeschlagen.</string>
<string name="smscommunicator_tempbasalfailed">Das Starten der TBR ist fehlgeschlagen.</string>
<string name="smscommunicator_tempbasalset">TBR mitl %1$.2f IE/h für %2$d min wurde erfolgreich gestartet.</string>
<string name="smscommunicator_unknowncommand">Unbekannter Befehl oder falsche Antwort</string>
<string name="smscommunicator_wrongduration">Falsche Dauer</string>
<string name="unlock_settings">Einstellungen freischalten</string>
@ -529,9 +529,9 @@
<string name="danar_model">Model: %1$02X Protokoll: %2$02X Code: %3$02X</string>
<string name="configbuilder_sensitivity">Empfindlichkeitserkennung</string>
<string name="cob">COB</string>
<string name="objectives_2_objective">Verstehen des Open Loops und der TBR-Empfehlungen</string>
<string name="objectives_2_objective">Verstehe den Open Loop und die TBR-Empfehlungen</string>
<string name="openapsama_useautosens">Verwende AMA Autosense</string>
<string name="smscommunicator_basalreplywithcode">Um eine BR mit %1$.2f IE/h zu starten, antworte mit dem Code %2$s</string>
<string name="smscommunicator_basalreplywithcode">Um eine BR mit %1$.2f IE/h zu starten, antworte mit dem Code %2$s.</string>
<string name="ultrafastactinginsulincomment">Fiasp</string>
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="short_avgdelta">Kurzes durchschnittl. Delta</string>
@ -539,16 +539,16 @@
<string name="openapsama_autosens_adjusttargets_summary">Vorgabe: erlaubt. Erlaubt Autosense den Ziel-BZ-Bereich in Verbindung mit ISF und Basal anzupassen.</string>
<string name="openapsama_autosens_period">Intervall für Autosense [h]</string>
<string name="openapsama_autosens_period_summary">Anzahl der vergangenen Stunden, die verwendet werden, um die Sensitivität zu erkennen (Zeit, in der KH resorbiert werden, ist nicht berücksichtigt)</string>
<string name="objectives_2_gate">Entscheide anhand von dieser Erfahrung, wie hoch max Basal sein sollte, und übernehme den Wert in die Pumpen- und AAPS-Einstellungen</string>
<string name="objectives_3_gate">Erprobe den Closed Loop Modus mit max IOB = 0 für ein paar Tage, ohne zu viele Unterzuckerungen zu haben</string>
<string name="objectives_2_gate">Entscheide anhand von dieser Erfahrung, wie hoch max Basal sein sollte, und übernehme den Wert in die Pumpen- und AAPS-Einstellungen.</string>
<string name="objectives_3_gate">Erprobe den Closed Loop Modus mit max IOB = 0 für ein paar Tage, ohne zu viele Unterzuckerungen zu haben.</string>
<string name="objectives_3_objective">Starte den Closed Loop Modus mit Abschaltung bei niedrigen Werten</string>
<string name="objectives_4_gate">Verwende es ein paar Tage und zumindest eine Nacht ohne Niedrig-Alarme (UZ), bevor du den BZ-Zielbereich senkst</string>
<string name="objectives_4_objective">Fein-Einstellung des Closed-Loops, Erhöhen von max IOB über 0 und langsames Heruntersetzen des Zielbereichs</string>
<string name="objectives_5_gate">Eine Woche erfolgreiches Loopen am Tag mit regelmäßiger Kohlenhydrat-Eingabe</string>
<string name="objectives_4_gate">Verwende es ein paar Tage und zumindest eine Nacht ohne Niedrig-Alarme (UZ), bevor du den BZ-Zielbereich senkst.</string>
<string name="objectives_4_objective">Stelle den Closed Loop fein ein, erhöhe max IOB über 0 und setze den Zielbereich langsam herunter</string>
<string name="objectives_5_gate">Loope eine Woche erfolgreich am Tag mit regelmäßiger Kohlenhydrat-Eingabe.</string>
<string name="objectives_5_objective">Passe, falls notwendig, Basal und Faktoren an und aktiviere dann die Autosense-Funktion</string>
<string name="objectives_6_objective">Aktiviere zusätzliche Funktionen, wie z. B. den Mahlzeitenassistent</string>
<string name="objectives_6_objective">Aktiviere zusätzliche Funktionen wie z. B. den Mahlzeitenassistenten</string>
<string name="nsalarm_urgentstaledata">Stark veraltete Daten</string>
<string name="nsalarm_urgent_staledatavalue_label">Stark veraltete Daten seit [Min.]</string>
<string name="nsalarm_urgent_staledatavalue_label">Stark veraltete Daten seit [min]</string>
<string name="nl_lang">Dutch</string>
<string name="insulin_peak_time">Peak Time [min]</string>
<string name="insulin_oref_peak">IOB Curve Peak Time</string>
@ -577,7 +577,7 @@
<string name="danarspump">DanaRS</string>
<string name="danarspump_shortname">Dana</string>
<string name="date">Datum</string>
<string name="default_temptargets">Standard temp. Ziele</string>
<string name="default_temptargets">Vordefinierte temporäre Ziele</string>
<string name="eatingsoon_duration">Bald essen - Dauer</string>
<string name="eatingsoon_target">Bald essen - Ziel</string>
<string name="emptyreservoir">Reservoir leer</string>
@ -609,7 +609,7 @@
<string name="pump_unreachable">Pumpe ist nicht erreichbar</string>
<string name="enable_missed_bg_readings_alert">Alarm, wenn keine Glukose-Daten empfangen werden</string>
<string name="enable_pump_unreachable_alert">Alarm, wenn die Pumpe nicht erreichbar ist</string>
<string name="pump_unreachable_threshold">Pumpe ist nicht erreichbar Grenze [Min.]</string>
<string name="pump_unreachable_threshold">Pumpe ist nicht erreichbar Grenze [min]</string>
<string name="combo_refresh">Aktualisieren</string>
<string name="treatments_wizard_tt_label">TZ</string>
<string name="tempbasal">TBR</string>
@ -618,8 +618,8 @@
<string name="gettingbolusstatus">Status des Bolus wird ermittelt</string>
<string name="pairing">PAIRING</string>
<string name="startingbolus">Bolus-Abgabe gestartet</string>
<string name="waitingforestimatedbolusend">Warte auf Ende der Bolus-Abgabe. %1$d Sek. verbleiben.</string>
<string name="executingrightnow">Befehl wird zurzeit ausgeführt.</string>
<string name="waitingforestimatedbolusend">Warte auf Ende der Bolus-Abgabe. %1$d Sek. verbleiben</string>
<string name="executingrightnow">Befehl wird zurzeit ausgeführt</string>
<string name="missed_bg_readings">BZ-Werte fehlen</string>
<string name="btwatchdog_summary">Deaktiviert Bluetooth kurzzeitig, falls keine Verbindung zur Pumpe besteht. Dies kann für Smartphones mit Verbindungsproblemen nützlich sein.</string>
<string name="food">Essen</string>
@ -634,60 +634,60 @@
<string name="dexcomg5_nsupload_title">Speichere BZ-Werte in Nightscout</string>
<string name="dexcomg5_upload">G5 Upload Einstellungen</string>
<string name="wear_detailed_delta_title">Zeige detailliertes Delta</string>
<string name="wear_detailed_delta_summary">Zeige Delta mit Dezimalstelle</string>
<string name="wear_detailed_delta_summary">Delta wird mit Dezimalstelle angezeigt.</string>
<string name="unsupportedfirmware">Nicht unterstützte Pumpen-Firmware</string>
<string name="dexcomg5_xdripupload_title">Sende BZ-Werte zu xDrip+</string>
<string name="dexcomg5_xdripupload_summary">Wähle in xDrip+ 640g/Eversense als Daten-Quelle</string>
<string name="dexcomg5_xdripupload_summary">Wähle in xDrip+ 640g/Eversense als Daten-Quelle.</string>
<string name="nsclientbg">Nightscout-Client BZ</string>
<string name="minimalbasalvaluereplaced">Basal-Wert wurde durch den kleinst möglichen Wert ersetzt</string>
<string name="minimalbasalvaluereplaced">Basal-Wert wurde durch den kleinst möglichen Wert ersetzt.</string>
<string name="apsselected">APS ausgewählt</string>
<string name="loopenabled">Loop aktiviert</string>
<string name="nsclienthaswritepermission">Nightscout-Client hat Schreibrechte</string>
<string name="maxiobset">Maximales IOB richtig gesetzt</string>
<string name="nsclienthaswritepermission">Nightscout-Client hat Schreibrechte.</string>
<string name="maxiobset">Maximales IOB richtig gesetzt.</string>
<string name="closedmodeenabled">Closed mode aktiviert</string>
<string name="objectives_7_objective">Aktiviere zusätzliche Funktionen wie z. B. den SMB</string>
<string name="objectives_7_objective">Aktiviere zusätzliche Funktionen wie z. B. SMB</string>
<string name="btwatchdog_title">BT Watchdog</string>
<string name="DexcomG5">DexcomG5 App (patched)</string>
<string name="combo_pump_activity_label">Aktivität</string>
<string name="combo_tbr_remaining">%1$d%% (%2$d Min. verbleibend)</string>
<string name="combo_no_pump_connection">Keine Verbindung zur Pumpe seit %1$d Min.</string>
<string name="combo_tbr_remaining">%1$d%% (%2$d min verbleibend)</string>
<string name="combo_no_pump_connection">Keine Verbindung zur Pumpe seit %1$d min</string>
<string name="combo_pump_state_label">Status</string>
<string name="combo_pump_state_suspended_by_user">Gestoppt (Benutzer)</string>
<string name="combo_pump_state_suspended_due_to_error">Gestoppt (Fehler)</string>
<string name="combo_pump_state_running">In Betrieb</string>
<string name="combo_programming_bolus">Bolusabgabe wird vorbereitet</string>
<string name="combo_pump_action_cancelling_tbr">TBR wird abgebrochen</string>
<string name="combo_pump_action_setting_tbr">TBR wird gesetzt (%1$d%% / %2$d Min.)</string>
<string name="combo_pump_action_setting_tbr">TBR wird gesetzt (%1$d%% / %2$d min)</string>
<string name="combo_pump_action_bolusing">Bolus (%1$.1f IE) wird abgegeben</string>
<string name="alert_dialog_storage_permission_text">Bitte starte dein Telefon neu oder starte AndroidAPS in den System-Einstellungen neu. Andernfalls wird AndroidAPS nicht protokolliert (wichtig zum Nachverfolgen und Verifizieren, dass der Algorithmus korrekt funktioniert)</string>
<string name="alert_dialog_storage_permission_text">Bitte starte dein Telefon neu oder starte AndroidAPS in den System-Einstellungen neu. Andernfalls wird AndroidAPS nicht protokolliert (wichtig zum Nachverfolgen und Verifizieren, dass der Algorithmus korrekt funktioniert).</string>
<string name="pump_tempbasal_label">TBR</string>
<string name="bolus_frequency_exceeded">Ein gleich großer Bolus wurde in den letzten zwei Minuten angefordert. Dies ist nicht zulässig, um ungewollte Doppelboli zu verhindern und vor eventuellen Bugs zu schützen.</string>
<string name="combo_activity_reading_pump_history">Historie wird gelesen</string>
<string name="combo_activity_setting_basal_profile">Basalratenprofil wird aktualisiert</string>
<string name="combo_error_bolus_verification_failed">Der abgegebene Bolus konnte nicht bestätigt werden. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde. Sofern ein Bolus abgegeben wurde wird dieser zu den Behandlungen hinzugefügt sobald erneut eine Verbindung zur Pumpe zustande kommt.</string>
<string name="combo_error_bolus_verification_failed">Der abgegebene Bolus konnte nicht bestätigt werden. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde. Sofern ein Bolus abgegeben wurde, wird dieser zu den Behandlungen hinzugefügt, sobald erneut eine Verbindung zur Pumpe zustande kommt.</string>
<string name="combo_error_no_bolus_delivered">Die Bolusabgabe ist fehlgeschlagen: Es wurde scheinbar kein Bolus abgegeben. Bitte prüfe auf der Pumpe, ob ein Bolus abgegeben wurde. Um doppelte Boli durch Programmfehler zu vermeiden, werden Boli nicht automatisch wiederholt.</string>
<string name="combo_error_partial_bolus_delivered">Wegen eines Fehlers wurden nur %1$.2f IE von den angeforderten %2$.2f IE abgegeben. Bitte prüfe den abgegebenen Bolus auf der Pumpe.</string>
<string name="combo_pump_action_refreshing">Status wird aktualisiert</string>
<string name="combo_pump_state_initializing">Die Pumpe wird initialisiert</string>
<string name="combo_pump_connected_now">Jetzt</string>
<string name="combo_pump_tbr_cancelled_warrning">Der Alarm \"TBR ABBRUCH\" wurde bestätigt</string>
<string name="combo_pump_tbr_cancelled_warrning">Der Alarm \"TBR ABBRUCH\" wurde bestätigt.</string>
<string name="combo_warning">Warnung</string>
<string name="combo_reservoir_empty">Leer</string>
<string name="combo_reservoir_low">Niedrig</string>
<string name="combo_reservoir_normal">Normal</string>
<string name="combo_pump_unsupported_operation">Diese Aktion wird von der Pumpe nicht unterstützt</string>
<string name="combo_pump_battery_low_warrning">Die Batterie in der Pumpe ist fast leer</string>
<string name="combo_pump_cartridge_low_warrning">Das Reservoir in der Pumpe ist fast leer</string>
<string name="combo_is_in_error_state">Die Pumpe zeigt einen Fehler an E%1$d: %2$s</string>
<string name="combo_force_disabled_notification">Unsichere Verwendung: In der Pumpe ist nicht das erste Basalratenprofil gewählt. Der Loop wird deaktiviert bis dies korrigiert ist.</string>
<string name="combo_pump_unsupported_operation">Diese Aktion wird von der Pumpe nicht unterstützt.</string>
<string name="combo_pump_battery_low_warrning">Die Batterie in der Pumpe ist fast leer.</string>
<string name="combo_pump_cartridge_low_warrning">Das Reservoir in der Pumpe ist fast leer.</string>
<string name="combo_is_in_error_state">Die Pumpe zeigt einen Fehler an E%1$d: %2$s.</string>
<string name="combo_force_disabled_notification">Unsichere Verwendung: In der Pumpe ist nicht das erste Basalratenprofil gewählt. Der Loop wird deaktiviert, bis dies korrigiert ist.</string>
<string name="combo_low_suspend_forced_notification">Unsichere Verwendung: Ein erweiterter oder Multiwave-Bolus ist aktiv. Der Loop wird für die nächsten 6 Stunden kein zusätzliches Insulin abgeben.</string>
<string name="combo_notification_check_time_date">Bitte aktualisiere die Uhrzeit der Pumpe</string>
<string name="combo_notification_check_time_date">Bitte aktualisiere die Uhrzeit der Pumpe.</string>
<string name="combo_reservoir_level_insufficient_for_bolus">Nicht mehr genug Insulin im Reservoir für den Bolus</string>
<string name="yes">Ja</string>
<string name="no">Nein</string>
<string name="overview_editquickwizard_usebg">BZ Berechnung</string>
<string name="overview_editquickwizard_usebolusiob">Bolus IOB Berechnung</string>
<string name="overview_editquickwizard_usebasaliob">Basal IOB Berechnung</string>
<string name="overview_editquickwizard_usebg">BZ-Berechnung</string>
<string name="overview_editquickwizard_usebolusiob">Bolus-IOB Berechnung</string>
<string name="overview_editquickwizard_usebasaliob">Basal-IOB Berechnung</string>
<string name="overview_editquickwizard_usetrend">Trend Berechnung</string>
<string name="overview_editquickwizard_usesuperbolus">Superbolus Berechnung</string>
<string name="positiveonly">Nur positive</string>
@ -732,11 +732,11 @@
<string formatted="false" name="waitingfortimesynchronization">Warte auf Zeitsynchronisierung (%d Sek.)</string>
<string name="insight_waiting_for_code">Warte auf Code-Bestätigung</string>
<string name="ns_wifionly">Benutze nur WLAN Verbindung</string>
<string name="enablesmb_summary">Benutze Super Micro Bolus anstelle von Temporären Basal für Schnellere Aktion</string>
<string name="enablesmb_summary">Benutze Super Micro Bolus anstelle von temporären Basalraten, um eine schnellere Wirkung zu erreichen.</string>
<string name="unsafeusage">Unsichere Benutzung</string>
<string name="time">Zeit</string>
<string name="thirdcarbsincrement">Dritte KH Inkrement</string>
<string name="thirdinsulinincrement">Dritte Insulin Inkrement</string>
<string name="thirdcarbsincrement">Dritte KH-Erhöhung</string>
<string name="thirdinsulinincrement">Dritte Insulin-Erhöhung</string>
<string name="loop_tbrsetbypump_label">Temp. Basal der Pumpe</string>
<string name="subcategory">Unterkategorie</string>
<string name="insight_stay_always_connected">Bleibe immer verbunden</string>
@ -744,48 +744,48 @@
<string name="start_eating_soon_tt">Starte Essen TT</string>
<string name="start_activity_tt">Starte Aktivität TT</string>
<string name="overview_show_sensitivity">Sensitivität</string>
<string name="show_calibration_button_summary">Sendet eine Kalibierung an xDrip+ oder öffnet den G5 Kalibrierungs-Dialog</string>
<string name="secondinsulinincrement">Zweites Insulin Inkrement</string>
<string name="secondcarbsincrement">Zweites KH Inkrement</string>
<string name="show_calibration_button_summary">Sendet eine Kalibierung an xDrip+ oder öffnet den G5 Kalibrierungs-Dialog.</string>
<string name="secondinsulinincrement">Zweite Insulin-Erhöhung</string>
<string name="secondcarbsincrement">Zweite KH-Erhöhung</string>
<string name="second">Sekunde</string>
<string name="closed_loop_disabled_on_dev_branch">Entwickler-Version. Closed Loop ist nicht verfügbar.</string>
<string name="record_pump_site_change">Erfasse Katheter-Wechsel</string>
<string name="record_insulin_cartridge_change">Erfasse Resoirvoir-Wechsel</string>
<string name="record_insulin_cartridge_change">Erfasse Reservoir-Wechsel</string>
<string name="insight_needs">benötigt</string>
<string name="overview_show_deviations">Abweichungen</string>
<string name="day">Tag</string>
<string name="ns_wifi_allowedssids">Erlaubte SSIDs (Semikolon getrennt)</string>
<string name="ns_allowroaming">Erlaube Verbindung bei Roaming</string>
<string name="openapsama_autosens_adjusttargets">Autosense passt Zielwerte an</string>
<string name="resistantadult">Insulin Resistenter Erwachsener</string>
<string name="openapsama_autosens_adjusttargets">Autosense passt Zielwerte an.</string>
<string name="resistantadult">Insulin resistenter Erwachsener</string>
<string name="enableuam">Aktiviere UAM</string>
<string name="enablesmb">Aktiviere SMB</string>
<string name="enableuam_summary">Erkennung von Unangekündigten Mahlzeiten</string>
<string name="hypo_duration">Hypo Dauer</string>
<string name="hypo_target">Hypo Zielwert</string>
<string name="hasbgdata">BZ verfügbar von gewählter Quelle</string>
<string name="enableuam_summary">Erkennung von unangekündigten Mahlzeiten</string>
<string name="hypo_duration">Hypo-Dauer</string>
<string name="hypo_target">Hypo-Zielwert</string>
<string name="hasbgdata">BZ verfügbar von gewählter Quelle.</string>
<string name="changed">Geändert</string>
<string name="pump_stopped_uppercase">PUMPE GESTOPPT</string>
<string name="insight_active_tbr">Aktive TBR</string>
<string name="statistics">Statistiken</string>
<string name="enablesmbalways">Aktiviere SMB immer</string>
<string name="enablesmbaftercarbs">Aktiviere SMB nach Mahlzeiten</string>
<string name="enablesmbwithcob">Aktiviere SMB bei COB</string>
<string name="enablesmbwithtemptarget">Aktiviere SMB mit Temporären Zielwerten</string>
<string name="enablesmbwithcob">Aktiviere SMB während COB</string>
<string name="enablesmbwithtemptarget">Aktiviere SMB während temporären Zielwerten</string>
<string name="wear_predictions_title">Vorhersagen</string>
<string name="data_choices">Daten Auswahl</string>
<string name="smbdisabledinpreferences">SMB in Einstellungen deaktiviert</string>
<string name="data_choices">Daten-Auswahl</string>
<string name="smbdisabledinpreferences">SMB in Einstellungen deaktiviert.</string>
<string name="food_short">Mahlzeiten</string>
<string name="hardlimit">Hartes Limit</string>
<string name="readstatusfailed">Lesen des Status fehlgeschlagen</string>
<string name="loopdisconnectedfor">Getrennt (%1$d m)</string>
<string name="automatic_careportal_events">Automatische Careportal Ereignisse</string>
<string name="firstinsulinincrement">Erstes Insulin Inkrement</string>
<string name="firstcarbsincrement">Erstes KH Inkrement</string>
<string name="automatic_careportal_events">Automatische Careportal-Ereignisse</string>
<string name="firstinsulinincrement">Erste Insulin-Erhöhung</string>
<string name="firstcarbsincrement">Erste KH-Erhöhung</string>
<string name="ns_chargingonly">Nur wenn geladen wird</string>
<string name="connectionsettings_title">Verbindungs-Einstellungen</string>
<string formatted="false" name="objectivenotstarted">Zielsetzung %d nicht gestartet</string>
<string formatted="false" name="objectivenotfinished">Zielsetzung %d nicht abgeschlossen</string>
<string formatted="false" name="objectivenotstarted">Zielsetzung %d nicht gestartet.</string>
<string formatted="false" name="objectivenotfinished">Zielsetzung %d nicht abgeschlossen.</string>
<string name="do_not_bolus_record_only">Bolus nur erfassen</string>
<string name="bolusrecordedonly">Bolus wird nur erfasst</string>
<string name="bolusrecordedonly">Bolus wird nur erfasst.</string>
</resources>

View file

@ -269,7 +269,7 @@
<string name="objectives_0_objective">Δημιουργία παρακολούθησης και ανάλυση βασικού ρυθμού και αναλογιών</string>
<string name="objectives_0_gate">Επιβεβαιώστε ότι η BG φαίνεται στο Nightscout και τα δεδομένα της DanaR φορτώθηκαν</string>
<string name="objectives_1_objective">Ξεκινήστε σε ανοιχτό κύκλωμα</string>
<string name="objectives_1_gate">Τρέξτε σε ανοιχτό κύκλωμα για λίγες ημέρες και χειροκίνητα κάντε πολλούς Προσ.Ρυθμ.</string>
<string name="objectives_1_gate">Τρέξτε σε ανοιχτό κύκλωμα για λίγες ημέρες και χειροκίνητα κάντε πολλούς Προσ.Ρυθμ. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">Κατανοήστε το ανοιχτό κύκλωμα, περιλαμβάνοντας τις προτάσεις για Προσ.Ρυθμ.</string>
<string name="objectives_2_gate">Βάση της εμπειρίας σας, αποφασίστε ποιο είναι το μέγιστο βασικής δόσης και αποθηκεύστε το στην αντλία και στις Επιλογές</string>
<string name="objectives_3_objective">"Ξεκινήστε να κλείσετε το κύκλωμα με Σταμάτημα Χαμηλής Γλυκόζης (Low Glucose Suspend) "</string>

View file

@ -269,7 +269,7 @@
<string name="objectives_0_objective">Configuración de visualización y monitoreo, y el análisis de los basales y ratios</string>
<string name="objectives_0_gate">Comprobar que los datos de BG están disponibles en Nightscout, y que los datos de la bomba de insulina se están subiendo</string>
<string name="objectives_1_objective">Empezar con bucle abierto</string>
<string name="objectives_1_gate">Ejecutar en modo de Loop abierto durante unos días, y aceptar manualmente las basales temporales</string>
<string name="objectives_1_gate">Ejecutar en modo de Loop abierto durante unos días, y aceptar manualmente las basales temporales. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">Entender el Loop abierto, incluidas las recomendaciones de basales temporales</string>
<string name="objectives_2_gate">Sobre la base de esa experiencia, decidir valores de máximo basal, y ajustar la bomba y preferencias</string>
<string name="objectives_3_objective">Iniciar el bucle cerrado con suspensión con baja glucosa</string>

View file

@ -267,7 +267,7 @@
<string name="objectives_0_objective">Paramétrez la visualisation et la surveillance des données, analysez les débits de base et les ratios</string>
<string name="objectives_0_gate">Vérifiez que la G est disponible sur Nightscout, et les données dinsuline sur pompe ont été téléchargées</string>
<string name="objectives_1_objective">Commencez par le système boucle ouverte</string>
<string name="objectives_1_gate">Utilisez le système Open Loop pour quelques jours, et activez manuellement plusieurs débits de base tempo</string>
<string name="objectives_1_gate">Utilisez le système Open Loop pour quelques jours, et activez manuellement plusieurs débits de base tempo. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">Comprendre votre système boucle ouverte, y compris ses recommandations de débit de base tempo</string>
<string name="objectives_2_gate">"Partant de ce constat, décidez quel est le débit de base maximum à choisir, et entrez le dans la pompe et les préférences "</string>
<string name="objectives_3_objective">Commencez par utiliser la boucle fermée avec le système Low Glucose Suspend</string>

View file

@ -310,7 +310,7 @@
<string name="short_tabtitles">Abbreviare i titoli delle schede</string>
<string name="simpleprofile">Semplice profilo</string>
<string name="objectives_0_objective">Impostazione di visualizzazione, monitoraggio e analisi basali e rapporti</string>
<string name="objectives_1_gate">Eseguire in modalità Open Loop per alcuni giorni e impostare manualmente la basale tempor</string>
<string name="objectives_1_gate">Eseguire in modalità Open Loop per alcuni giorni e impostare manualmente la basale tempor. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="openapsma_scriptdebugdata_label">Script debug</string>
<string name="smscommunicator">Comunicazioni SMS</string>
<string name="smscommunicator_allowednumbers">Numero di telefono acettato</string>

View file

@ -274,7 +274,7 @@
<string name="objectives_0_objective">표시설정과 모니터링설정을 완료하고, 기초주입과 비율을 분석한다.</string>
<string name="objectives_0_gate">나이트스카우트에서 혈당 데이터가 잘 들어오는지, 펌프데이터가 업로드 되는지 확인한다.</string>
<string name="objectives_1_objective">Open Loop를 시작한다.</string>
<string name="objectives_1_gate">Open Loop 모드에서 몇일간 사용하여보고, 임시기초주입을 여러번 수동으로 실행하여본다.</string>
<string name="objectives_1_gate">Open Loop 모드에서 몇일간 사용하여보고, 임시기초주입을 여러번 수동으로 실행하여본다. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">임시기초주입 추천기능을 포함해서, Open Loop에 대해 이해한다.</string>
<string name="objectives_2_gate">이 경험을 토대로, 최대 기초주입량을 결정하고 이를 펌프와 설정에 입력한다.</string>
<string name="objectives_3_objective">Closed Loop를 시작하고 저혈당인슐린 중지 기능을 사용해본다.</string>

View file

@ -393,7 +393,7 @@
<string name="objectives">Doelen</string>
<string name="objectives_0_gate">Controleren van beschikbaarheid BG en insuline pomp data op Nightscout</string>
<string name="objectives_0_objective">Opzetten van visualisatie en monitoring eveneens analyze van basaal en ratio\'s</string>
<string name="objectives_1_gate">In Open Loop modus werken voor enkele dagen, manueel tijdelijke basaal instellen</string>
<string name="objectives_1_gate">In Open Loop modus werken voor enkele dagen, manueel tijdelijke basaal instellen. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_1_objective">Starten met de Open Loop modus</string>
<string name="objectives_2_gate">Gebaseerd op deze ervaringen beslissen wat het maximale basaal mag zijn en dit in de pomp instellen</string>
<string name="objectives_2_objective">De Open Loop begrijpen, inclusief de voorgestelde tijdelijke basalen</string>

View file

@ -290,7 +290,7 @@
<string name="objectives_0_objective">Konfigurowanie wizualizacji i monitorowania, analizowanie dawek bazowych i wartości</string>
<string name="objectives_0_gate">Sprawdź czy BG (pomiary cukru) są dostępne w Nightscout, i dane pompy insulinowej są ładowane</string>
<string name="objectives_1_objective">Uruchamiam otwartą pętle (OpenLoop)</string>
<string name="objectives_1_gate">Używaj Otwartą pętle (OpenLoop) przez kilka dni, i ręcznie wykonaj wiele dawek bazowych tymczasowych</string>
<string name="objectives_1_gate">Używaj Otwartą pętle (OpenLoop) przez kilka dni, i ręcznie wykonaj wiele dawek bazowych tymczasowych. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">Zrozumienie działania otwartej pętli, wraz z jej rekomendacjami dawek tymczasowych</string>
<string name="objectives_2_gate">Na podstawie tych doświadczeń zdecyduj jaka maksymalna baza powinna być ustawiona, i wprowadź ją w pompie i w ustawieniach AAPS</string>
<string name="objectives_3_objective">Rozpoczęcie zamknięcia pętli z zawieszeniem podawania bazy przy niskim poziomie cukru</string>

View file

@ -243,7 +243,7 @@
<string name="objectives_0_objective">Se stabilesc vizualizările și monitorizarea și se analizează bazalele și valorile ratelor</string>
<string name="objectives_0_gate">Verificați că vedeți glicemia în Nightscout și că datele despre insulină date de pompă sunt înregistrate în site</string>
<string name="objectives_1_objective">Pornire cu buclă deschisă</string>
<string name="objectives_1_gate">Rulați modul buclă deschisă pentru câteva zile și faceți manual bazalele temporare sugerate</string>
<string name="objectives_1_gate">Rulați modul buclă deschisă pentru câteva zile și faceți manual bazalele temporare sugerate. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">Trebuie să se înțeleagă modalitatea de funcționare a buclei deschise, incluzând recomandările de bazală temporară</string>
<string name="objectives_2_gate">Pe baza acestei experiențe, decideți care va fi bazala maximă și setați această valoare în pompă și în preferințe</string>
<string name="objectives_3_objective">Se începe etapa de buclă închisă cu Suspendarea Insulinei la Valori Glicemie Mici (Low Glucose Suspend = LGS)</string>

View file

@ -279,7 +279,7 @@
<string name="objectives">Цели</string>
<string name="objectives_0_gate">убедитесь что СК и данные помпы передаются в NS</string>
<string name="objectives_0_objective">настройка визуализации и мониторинга, анализ базала и коэффициентов</string>
<string name="objectives_1_gate">работа в режиме незамкнутого цикла и ручной подстройки величины временного базала</string>
<string name="objectives_1_gate">работа в режиме незамкнутого цикла и ручной подстройки величины временного базала. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_1_objective">старт незамкнутого цикла</string>
<string name="objectives_2_gate">на основе полученного опыта определите макс величину базала и введите ее в помпу и настройки</string>
<string name="objectives_2_objective">анализ вашего незамкнутого цикла включая рекомендации по врем базалу</string>

View file

@ -478,7 +478,7 @@
<string name="objectives_2_objective">Förstå din open loop och hur den föreslår temp basaler</string>
<string name="objectives_2_gate">Utifrån vad du nu lärt dig, besluta vilken max basal du vil ha. Ställ in det både i inställningarna i APS och i din pump.</string>
<string name="objectives_1_objective">Starta med open loop</string>
<string name="objectives_1_gate">Starta med open loop och använd det några dagar. Försök att ge många föreslagna temp basaler.</string>
<string name="objectives_1_gate">Starta med open loop och använd det några dagar. Försök att ge många föreslagna temp basaler. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="absorption_maxtime_summary">Tid i timmar när alla kolhydradet förväntas vara absorberade</string>
<string name="absorption_maxtime_title">Max absorptionstid för en måltid [tim]</string>
<string name="absorptionsettings_title">Absorptionsinställningar</string>

View file

@ -1,4 +1,4 @@
<resources>
<resources>
<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>
@ -340,7 +340,7 @@
<string name="objectives_0_objective">Setting up visualization and monitoring, and analyzing basals and ratios</string>
<string name="objectives_0_gate">Verify that BG is available in Nightscout, and pump insulin data is being uploaded</string>
<string name="objectives_1_objective">Starting on an open loop</string>
<string name="objectives_1_gate">Run in Open Loop mode for a few days, and manually enact lots of temp basals</string>
<string name="objectives_1_gate">Run in Open Loop mode for a few days and manually enact lots of temp basals. Set up and use temporary and default temporary targets (e.g. for activity or hypo treatment carbs)</string>
<string name="objectives_2_objective">Understanding your open loop, including its temp basal recommendations</string>
<string name="objectives_2_gate">Based on that experience, decide what max basal should be, and set it on the pump and preferences</string>
<string name="objectives_3_objective">Starting to close the loop with Low Glucose Suspend</string>
@ -1166,6 +1166,8 @@
<string name="error_adding_treatment_title">Treatment data incomplete</string>
<!-- TODO convert to proper style -->
<string name="error_adding_treatment_message" formatted="false">A treatment (insulin: %.2f, carbs: %d, at: %s) could not be added to treatments. Please check and manually add a record as appropriate.</string>
<string name="generated_ecarbs_note">Generated eCarbs with amount: %1$dg, duration: %2$dh, delay: %3$dm</string>
<string name="key_plugin_stats_report_timestamp" translatable="false">key_plugin_stats_report_timestamp</string>
<plurals name="objective_days">
<item quantity="one">%d day</item>

View file

@ -233,13 +233,14 @@ public class ConstraintsCheckerTest {
// No limit by default
when(SP.getDouble(R.string.key_openapsma_max_iob, 1.5d)).thenReturn(1.5d);
when(SP.getString(R.string.key_age, "")).thenReturn("teenage");
OpenAPSMAPlugin.getPlugin().setPluginEnabled(PluginType.APS, true);
OpenAPSAMAPlugin.getPlugin().setPluginEnabled(PluginType.APS, true);
OpenAPSMAPlugin.getPlugin().setPluginEnabled(PluginType.APS, false);
OpenAPSSMBPlugin.getPlugin().setPluginEnabled(PluginType.APS, false);
// Apply all limits
Constraint<Double> d = constraintChecker.getMaxIOBAllowed();
Assert.assertEquals(1.5d, d.value());
Assert.assertEquals(3, d.getReasonList().size());
Assert.assertEquals(d.getReasonList().toString(),2, d.getReasonList().size());
Assert.assertEquals("Safety: Limiting IOB to 1.5 U because of max value in preferences", d.getMostLimitedReasons());
}
@ -250,11 +251,13 @@ public class ConstraintsCheckerTest {
when(SP.getDouble(R.string.key_openapssmb_max_iob, 3d)).thenReturn(3d);
when(SP.getString(R.string.key_age, "")).thenReturn("teenage");
OpenAPSSMBPlugin.getPlugin().setPluginEnabled(PluginType.APS, true);
OpenAPSAMAPlugin.getPlugin().setPluginEnabled(PluginType.APS, false);
OpenAPSMAPlugin.getPlugin().setPluginEnabled(PluginType.APS, false);
// Apply all limits
Constraint<Double> d = constraintChecker.getMaxIOBAllowed();
Assert.assertEquals(3d, d.value());
Assert.assertEquals(4, d.getReasonList().size());
Assert.assertEquals(d.getReasonList().toString(), 2, d.getReasonList().size());
Assert.assertEquals("Safety: Limiting IOB to 3.0 U because of max value in preferences", d.getMostLimitedReasons());
}