diff --git a/app/build.gradle b/app/build.gradle index 18cf49f1b8..e13257c62d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,8 +43,9 @@ android { applicationId "info.nightscout.androidaps" minSdkVersion 21 targetSdkVersion 23 - versionCode 1100 - versionName "1.1g" + versionCode 1400 + version "1.41" + buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", generateGitBuild() } lintOptions { @@ -57,41 +58,53 @@ android { } } productFlavors { - flavorDimensions "standard", "limits", "wear" - adult { - dimension "limits" - buildConfigField "int", "MAXBOLUS", "17" - } - teenage { - dimension "limits" - buildConfigField "int", "MAXBOLUS", "10" - } - child { - dimension "limits" - buildConfigField "int", "MAXBOLUS", "5" - } + flavorDimensions "standard", "wear" full { dimension "standard" + resValue "string", "app_name", "AndroidAPS" + versionName version + manifestPlaceholders = [ + appIcon: "@mipmap/blueowl" + ] buildConfigField "boolean", "APS", "true" buildConfigField "boolean", "PUMPDRIVERS", "true" + buildConfigField "boolean", "NSCLIENTOLNY", "false" buildConfigField "boolean", "CLOSEDLOOP", "true" } - pumpcontrol { - dimension "standard" - buildConfigField "boolean", "APS", "false" - buildConfigField "boolean", "PUMPDRIVERS", "true" - buildConfigField "boolean", "CLOSEDLOOP", "false" - } - careportal { - dimension "standard" - buildConfigField "boolean", "APS", "false" - buildConfigField "boolean", "PUMPDRIVERS", "false" - buildConfigField "boolean", "CLOSEDLOOP", "false" - } openloop { dimension "standard" + resValue "string", "app_name", "AndroidAPS" + versionName version + manifestPlaceholders = [ + appIcon: "@mipmap/blueowl" + ] buildConfigField "boolean", "APS", "true" buildConfigField "boolean", "PUMPDRIVERS", "true" + buildConfigField "boolean", "NSCLIENTOLNY", "false" + buildConfigField "boolean", "CLOSEDLOOP", "false" + } + pumpcontrol { + dimension "standard" + resValue "string", "app_name", "AndroidAPS" + versionName version + manifestPlaceholders = [ + appIcon: "@mipmap/blueowl" + ] + buildConfigField "boolean", "APS", "false" + buildConfigField "boolean", "PUMPDRIVERS", "true" + buildConfigField "boolean", "NSCLIENTOLNY", "false" + buildConfigField "boolean", "CLOSEDLOOP", "false" + } + nsclient { + dimension "standard" + resValue "string", "app_name", "NSClient" + versionName version + "-nsclient" + manifestPlaceholders = [ + appIcon: "@mipmap/yellowowl" + ] + buildConfigField "boolean", "APS", "false" + buildConfigField "boolean", "PUMPDRIVERS", "false" + buildConfigField "boolean", "NSCLIENTOLNY", "true" buildConfigField "boolean", "CLOSEDLOOP", "false" } wear { @@ -127,7 +140,10 @@ dependencies { wearcontrolWearApp project(path: ':wear', configuration: 'fullRelease') compile fileTree(include: ['*.jar'], dir: 'libs') - compile('com.crashlytics.sdk.android:crashlytics:2.5.7@aar') { + compile('com.crashlytics.sdk.android:crashlytics:2.6.7@aar') { + transitive = true; + } + compile('com.crashlytics.sdk.android:answers:1.3.12@aar') { transitive = true; } @@ -152,10 +168,16 @@ dependencies { compile 'com.google.android.gms:play-services-wearable:7.5.0' compile 'junit:junit:4.12' testCompile 'org.json:json:20140107' - testCompile 'org.mockito:mockito-core:2.+' - androidTestCompile 'org.mockito:mockito-core:2.+' - androidTestCompile "com.google.dexmaker:dexmaker:1.2" - androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2" - compile(name:'android-edittext-validator-v1.3.4-mod', ext:'aar') + testCompile 'org.mockito:mockito-core:2.7.22' + androidTestCompile 'org.mockito:mockito-core:2.7.22' + androidTestCompile 'com.google.dexmaker:dexmaker:1.2' + androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' + compile(name: 'android-edittext-validator-v1.3.4-mod', ext: 'aar') + compile('io.socket:socket.io-client:0.8.3') { + // excluding org.json which is provided by Android + exclude group: 'org.json', module: 'json' + } + compile 'com.google.code.gson:gson:2.7' + compile 'com.google.guava:guava:20.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8f500c4421..ab45d3d4f5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,7 +14,10 @@ + + + @@ -22,26 +25,30 @@ + - + - - - - + + + + + @@ -68,37 +75,71 @@ - - + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + - + \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/AgreementActivity.java b/app/src/main/java/info/nightscout/androidaps/AgreementActivity.java index a8486e1d78..3a30659884 100644 --- a/app/src/main/java/info/nightscout/androidaps/AgreementActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/AgreementActivity.java @@ -9,18 +9,18 @@ import android.view.View; import android.widget.Button; import android.widget.CheckBox; +import info.nightscout.utils.SP; + public class AgreementActivity extends Activity { boolean IUnderstand; CheckBox agreeCheckBox; Button saveButton; - SharedPreferences prefs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_agreement); - prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - IUnderstand = prefs.getBoolean("I_understand", false); + IUnderstand = SP.getBoolean(R.string.key_i_understand, false); setContentView(R.layout.activity_agreement); agreeCheckBox = (CheckBox)findViewById(R.id.agreementCheckBox); agreeCheckBox.setChecked(IUnderstand); @@ -32,7 +32,7 @@ public class AgreementActivity extends Activity { saveButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - prefs.edit().putBoolean("I_understand", agreeCheckBox.isChecked()).apply(); + SP.putBoolean(R.string.key_i_understand, agreeCheckBox.isChecked()); Intent intent = new Intent(getApplicationContext(), MainActivity.class); startActivity(intent); diff --git a/app/src/main/java/info/nightscout/androidaps/Config.java b/app/src/main/java/info/nightscout/androidaps/Config.java index de4dc5d49b..7f094281f8 100644 --- a/app/src/main/java/info/nightscout/androidaps/Config.java +++ b/app/src/main/java/info/nightscout/androidaps/Config.java @@ -11,12 +11,22 @@ public class Config { public static final boolean LOOPENABLED = APS; public static final boolean WEAR = BuildConfig.WEAR; - public static final boolean CAREPORTALENABLED = true; - public static final boolean SMSCOMMUNICATORENABLED = true; public static final boolean DANAR = true && BuildConfig.PUMPDRIVERS; public static final boolean DANARKOREAN = true && BuildConfig.PUMPDRIVERS; + public static final boolean ACTION = !BuildConfig.NSCLIENTOLNY; + public static final boolean VIRTUALPUMP = !BuildConfig.NSCLIENTOLNY; + public static final boolean MDI = !BuildConfig.NSCLIENTOLNY; + public static final boolean OTHERPROFILES = !BuildConfig.NSCLIENTOLNY; + public static final boolean TEMPBASALS = !BuildConfig.NSCLIENTOLNY; + public static final boolean SAFETY = !BuildConfig.NSCLIENTOLNY; + + public static final boolean SMSCOMMUNICATORENABLED = !BuildConfig.NSCLIENTOLNY; + + + public static final boolean ALLPREFERENCES = !BuildConfig.NSCLIENTOLNY; + public static final boolean detailedLog = true; public static final boolean logFunctionCalls = true; public static final boolean logIncommingBG = true; diff --git a/app/src/main/java/info/nightscout/androidaps/Constants.java b/app/src/main/java/info/nightscout/androidaps/Constants.java index 52cb5d85a1..9e5fae4aee 100644 --- a/app/src/main/java/info/nightscout/androidaps/Constants.java +++ b/app/src/main/java/info/nightscout/androidaps/Constants.java @@ -12,6 +12,8 @@ public class Constants { public static final double MMOLL_TO_MGDL = 18; // 18.0182; public static final double MGDL_TO_MMOLL = 1 / MMOLL_TO_MGDL; + public static final double defaultDIA = 3d; + public static final double basalAbsoluteOnlyForCheckLimit = 10101010d; public static final Integer basalPercentOnlyForCheckLimit = 10101010; public static final double bolusOnlyForCheckLimit = 10101010d; @@ -32,12 +34,12 @@ public class Constants { public static final int CPP_MAX_PERCENTAGE = 200; // Defaults for settings - public static final String MAX_BG_DEFAULT_MGDL = "180"; - public static final String MAX_BG_DEFAULT_MMOL = "10"; - public static final String MIN_BG_DEFAULT_MGDL = "100"; - public static final String MIN_BG_DEFAULT_MMOL = "5"; - public static final String TARGET_BG_DEFAULT_MGDL = "150"; - public static final String TARGET_BG_DEFAULT_MMOL = "7"; + public static final Double MAX_BG_DEFAULT_MGDL = 180d; + public static final Double MAX_BG_DEFAULT_MMOL = 10d; + public static final Double MIN_BG_DEFAULT_MGDL = 100d; + public static final Double MIN_BG_DEFAULT_MMOL = 5d; + public static final Double TARGET_BG_DEFAULT_MGDL = 150d; + public static final Double TARGET_BG_DEFAULT_MMOL = 7d; // Very Hard Limits Ranges // First value is the Lowest and second value is the Highest a Limit can define @@ -52,4 +54,7 @@ public class Constants { //DanaR public static final double dailyLimitWarning = 0.95d; + + //NSClientInternal + public static final int MAX_LOG_LINES = 100; } diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.java b/app/src/main/java/info/nightscout/androidaps/MainActivity.java index 36931ccd5b..fc58a81a0b 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.java @@ -1,23 +1,21 @@ package info.nightscout.androidaps; import android.Manifest; +import android.content.ActivityNotFoundException; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Rect; +import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.preference.PreferenceManager; +import android.os.PowerManager; +import android.provider.Settings; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.Menu; -import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; @@ -30,16 +28,15 @@ import com.squareup.otto.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.tabs.SlidingTabLayout; import info.nightscout.androidaps.tabs.TabPageAdapter; -import info.nightscout.utils.LogDialog; -import info.nightscout.utils.ImportExportPrefs; import info.nightscout.utils.LocaleHelper; -import info.nightscout.utils.PasswordProtection; +import info.nightscout.utils.OKDialog; +import info.nightscout.utils.SP; +import info.nightscout.utils.ToastUtils; public class MainActivity extends AppCompatActivity { private static Logger log = LoggerFactory.getLogger(MainActivity.class); @@ -60,33 +57,16 @@ public class MainActivity extends AppCompatActivity { askForPermission(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, CASE_STORAGE); } + askForBatteryOptimizationPermission(); if (Config.logFunctionCalls) log.debug("onCreate"); - // show version in toolbar - try { - setTitle(getString(R.string.app_name) + " " + getPackageManager().getPackageInfo(getPackageName(), 0).versionName); - } catch (PackageManager.NameNotFoundException e) { - e.printStackTrace(); - } - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); registerBus(); - - try { - getSupportActionBar().setDisplayShowHomeEnabled(true); - getSupportActionBar().setIcon(R.mipmap.ic_launcher); - } catch (NullPointerException e) { - // no action - } - - setUpTabs(false); } @Subscribe public void onStatusEvent(final EventRefreshGui ev) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); String lang = SP.getString("language", "en"); LocaleHelper.setLocale(getApplicationContext(), lang); runOnUiThread(new Runnable() { @@ -115,78 +95,6 @@ public class MainActivity extends AppCompatActivity { mPager.setCurrentItem(pageAdapter.getCount() - 1, false); } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.menu_main, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - int id = item.getItemId(); - switch (id) { - case R.id.nav_preferences: - PasswordProtection.QueryPassword(this, R.string.settings_password, "settings_password", new Runnable() { - @Override - public void run() { - Intent i = new Intent(getApplicationContext(), PreferencesActivity.class); - startActivity(i); - } - }, null); - break; - case R.id.nav_resetdb: - new AlertDialog.Builder(this) - .setTitle(R.string.nav_resetdb) - .setMessage(R.string.reset_db_confirm) - .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { - @Override public void onClick(DialogInterface dialog, int which) { - MainApp.getDbHelper().resetDatabases(); - } - }) - .create() - .show(); - break; - case R.id.nav_export: - ImportExportPrefs.verifyStoragePermissions(this); - ImportExportPrefs.exportSharedPreferences(this); - break; - case R.id.nav_import: - ImportExportPrefs.verifyStoragePermissions(this); - ImportExportPrefs.importSharedPreferences(this); - break; - case R.id.nav_show_logcat: - LogDialog.showLogcat(this); - break; -// case R.id.nav_test_alarm: -// final int REQUEST_CODE_ASK_PERMISSIONS = 2355; -// int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.SYSTEM_ALERT_WINDOW); -// if (permission != PackageManager.PERMISSION_GRANTED) { -// // We don't have permission so prompt the user -// // On Android 6 give permission for alarming in Settings -> Apps -> Draw over other apps -// ActivityCompat.requestPermissions( -// this, -// new String[]{Manifest.permission.SYSTEM_ALERT_WINDOW}, -// REQUEST_CODE_ASK_PERMISSIONS -// ); -// } -// Intent alertServiceIntent = new Intent(getApplicationContext(), AlertService.class); -// alertServiceIntent.putExtra("alertText", getString(R.string.nav_test_alert)); -// getApplicationContext().startService(alertServiceIntent); -// break; - case R.id.nav_exit: - log.debug("Exiting"); - MainApp.instance().stopKeepAliveService(); - MainApp.bus().post(new EventAppExit()); - MainApp.closeDbHelper(); - finish(); - System.runFinalization(); - System.exit(0); - break; - } - return super.onOptionsItemSelected(item); - } - private void registerBus() { try { MainApp.bus().unregister(this); @@ -197,7 +105,8 @@ public class MainActivity extends AppCompatActivity { } private void checkEula() { - boolean IUnderstand = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getBoolean("I_understand", false); + //SP.removeBoolean(R.string.key_i_understand); + boolean IUnderstand = SP.getBoolean(R.string.key_i_understand, false); if (!IUnderstand) { Intent intent = new Intent(getApplicationContext(), AgreementActivity.class); startActivity(intent); @@ -208,11 +117,12 @@ public class MainActivity extends AppCompatActivity { //check for sms permission if enable in prefernces @Subscribe public void onStatusEvent(final EventPreferenceChange ev) { - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { - SharedPreferences smssettings = PreferenceManager.getDefaultSharedPreferences(this); - synchronized (this){ - if (smssettings.getBoolean("smscommunicator_remotecommandsallowed", false)) { - setAskForSMS(); + if (ev.isChanged(R.string.key_smscommunicator_remotecommandsallowed)) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { + synchronized (this) { + if (SP.getBoolean(R.string.key_smscommunicator_remotecommandsallowed, false)) { + setAskForSMS(); + } } } } @@ -223,16 +133,46 @@ public class MainActivity extends AppCompatActivity { } @Override - protected void onResume(){ + protected void onResume() { super.onResume(); askForSMSPermissions(); } - private synchronized void askForSMSPermissions(){ + private void askForBatteryOptimizationPermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + final String packageName = getPackageName(); + + final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); + if (!pm.isIgnoringBatteryOptimizations(packageName)) { + log.debug("Requesting ignore battery optimization"); + + OKDialog.show(this, getString(R.string.pleaseallowpermission), String.format(getString(R.string.needwhitelisting), getString(R.string.app_name)), new Runnable() { + + @Override + public void run() { + try { + final Intent intent = new Intent(); + + // ignoring battery optimizations required for constant connection + intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); + intent.setData(Uri.parse("package:" + packageName)); + startActivity(intent); + + } catch (ActivityNotFoundException e) { + final String msg = getString(R.string.batteryoptimalizationerror); + ToastUtils.showToastInUiThread(getApplicationContext(), msg); + log.error(msg); + } + } + }); + } + } + } + + private synchronized void askForSMSPermissions() { if (askForSMS) { //only when settings were changed an MainActivity resumes. askForSMS = false; - SharedPreferences smssettings = PreferenceManager.getDefaultSharedPreferences(this); - if (smssettings.getBoolean("smscommunicator_remotecommandsallowed", false)) { + if (SP.getBoolean(R.string.smscommunicator_remotecommandsallowed, false)) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) { askForPermission(new String[]{Manifest.permission.RECEIVE_SMS, Manifest.permission.SEND_SMS, @@ -244,7 +184,7 @@ public class MainActivity extends AppCompatActivity { private void askForPermission(String[] permission, Integer requestCode) { boolean test = false; - for (int i=0; i < permission.length; i++) { + for (int i = 0; i < permission.length; i++) { test = test || (ContextCompat.checkSelfPermission(this, permission[i]) != PackageManager.PERMISSION_GRANTED); } if (test) { @@ -276,10 +216,10 @@ public class MainActivity extends AppCompatActivity { public boolean dispatchTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); - if ( v instanceof EditText) { + if (v instanceof EditText) { Rect outRect = new Rect(); v.getGlobalVisibleRect(outRect); - if (!outRect.contains((int)event.getRawX(), (int)event.getRawY())) { + if (!outRect.contains((int) event.getRawX(), (int) event.getRawY())) { v.clearFocus(); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); diff --git a/app/src/main/java/info/nightscout/androidaps/MainApp.java b/app/src/main/java/info/nightscout/androidaps/MainApp.java index 415e30c1ce..4a81dea124 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainApp.java +++ b/app/src/main/java/info/nightscout/androidaps/MainApp.java @@ -6,6 +6,8 @@ import android.content.res.Resources; import android.support.annotation.Nullable; import com.crashlytics.android.Crashlytics; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.j256.ormlite.android.apptools.OpenHelperManager; import com.squareup.otto.Bus; import com.squareup.otto.ThreadEnforcer; @@ -17,33 +19,39 @@ import java.util.ArrayList; import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Actions.ActionsFragment; import info.nightscout.androidaps.plugins.Careportal.CareportalFragment; -import info.nightscout.androidaps.plugins.CircadianPercentageProfile.CircadianPercentageProfileFragment; +import info.nightscout.androidaps.plugins.InsulinFastactingProlonged.InsulinFastactingProlongedFragment; +import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorFragment; +import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfileFragment; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRFragment; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanFragment; -import info.nightscout.androidaps.plugins.LocalProfile.LocalProfileFragment; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRFragment; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanFragment; +import info.nightscout.androidaps.plugins.InsulinFastacting.InsulinFastactingFragment; +import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfileFragment; import info.nightscout.androidaps.plugins.Loop.LoopFragment; -import info.nightscout.androidaps.plugins.MDI.MDIFragment; -import info.nightscout.androidaps.plugins.NSProfile.NSProfileFragment; -import info.nightscout.androidaps.plugins.Objectives.ObjectivesFragment; +import info.nightscout.androidaps.plugins.PumpMDI.MDIFragment; +import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalFragment; +import info.nightscout.androidaps.plugins.ProfileNS.NSProfileFragment; +import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesFragment; import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAFragment; import info.nightscout.androidaps.plugins.OpenAPSMA.OpenAPSMAFragment; import info.nightscout.androidaps.plugins.Overview.OverviewFragment; -import info.nightscout.androidaps.plugins.SafetyFragment.SafetyFragment; -import info.nightscout.androidaps.plugins.SimpleProfile.SimpleProfileFragment; +import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyFragment; +import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfileFragment; import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorFragment; +import info.nightscout.androidaps.plugins.SourceGlimp.SourceGlimpFragment; import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment; import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment; import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripFragment; import info.nightscout.androidaps.plugins.TempBasals.TempBasalsFragment; import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangeFragment; import info.nightscout.androidaps.plugins.Treatments.TreatmentsFragment; -import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpFragment; +import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpFragment; import info.nightscout.androidaps.plugins.Wear.WearFragment; -import info.nightscout.androidaps.plugins.persistentnotification.PersistentNotificationPlugin; +import info.nightscout.androidaps.plugins.Persistentnotification.PersistentNotificationPlugin; import info.nightscout.androidaps.receivers.KeepAliveReceiver; import io.fabric.sdk.android.Fabric; @@ -65,10 +73,13 @@ public class MainApp extends Application { public void onCreate() { super.onCreate(); Fabric.with(this, new Crashlytics()); + Fabric.with(this, new Answers()); Crashlytics.setString("BUILDVERSION", BuildConfig.BUILDVERSION); log.info("Version: " + BuildConfig.VERSION_NAME); log.info("BuildVersion: " + BuildConfig.BUILDVERSION); + Answers.getInstance().logCustom(new CustomEvent("AppStart")); + sBus = new Bus(ThreadEnforcer.ANY); sInstance = this; sResources = getResources(); @@ -77,32 +88,37 @@ public class MainApp extends Application { pluginsList = new ArrayList<>(); // Register all tabs in app here pluginsList.add(OverviewFragment.getPlugin()); - pluginsList.add(ActionsFragment.getPlugin()); + pluginsList.add(IobCobCalculatorFragment.getPlugin()); + if (Config.ACTION) pluginsList.add(ActionsFragment.getPlugin()); + pluginsList.add(InsulinFastactingFragment.getPlugin()); + pluginsList.add(InsulinFastactingProlongedFragment.getPlugin()); if (Config.DANAR) pluginsList.add(DanaRFragment.getPlugin()); if (Config.DANARKOREAN) pluginsList.add(DanaRKoreanFragment.getPlugin()); - if (Config.CAREPORTALENABLED) pluginsList.add(CareportalFragment.getPlugin()); - pluginsList.add(MDIFragment.getPlugin()); - pluginsList.add(VirtualPumpFragment.getPlugin()); + pluginsList.add(CareportalFragment.getPlugin()); + if (Config.MDI) pluginsList.add(MDIFragment.getPlugin()); + if (Config.VIRTUALPUMP) pluginsList.add(VirtualPumpFragment.getPlugin()); if (Config.LOOPENABLED) pluginsList.add(LoopFragment.getPlugin()); if (Config.OPENAPSENABLED) pluginsList.add(OpenAPSMAFragment.getPlugin()); if (Config.OPENAPSENABLED) pluginsList.add(OpenAPSAMAFragment.getPlugin()); pluginsList.add(NSProfileFragment.getPlugin()); - pluginsList.add(SimpleProfileFragment.getPlugin()); - pluginsList.add(LocalProfileFragment.getPlugin()); - pluginsList.add(CircadianPercentageProfileFragment.getPlugin()); + if (Config.OTHERPROFILES) pluginsList.add(SimpleProfileFragment.getPlugin()); + if (Config.OTHERPROFILES) pluginsList.add(LocalProfileFragment.getPlugin()); + if (Config.OTHERPROFILES) + pluginsList.add(CircadianPercentageProfileFragment.getPlugin()); if (Config.APS) pluginsList.add(TempTargetRangeFragment.getPlugin()); pluginsList.add(TreatmentsFragment.getPlugin()); - pluginsList.add(TempBasalsFragment.getPlugin()); - pluginsList.add(SafetyFragment.getPlugin()); + if (Config.TEMPBASALS) pluginsList.add(TempBasalsFragment.getPlugin()); + if (Config.SAFETY) pluginsList.add(SafetyFragment.getPlugin()); if (Config.APS) pluginsList.add(ObjectivesFragment.getPlugin()); pluginsList.add(SourceXdripFragment.getPlugin()); pluginsList.add(SourceNSClientFragment.getPlugin()); pluginsList.add(SourceMM640gFragment.getPlugin()); - if (Config.SMSCOMMUNICATORENABLED) - pluginsList.add(SmsCommunicatorFragment.getPlugin()); + pluginsList.add(SourceGlimpFragment.getPlugin()); + if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorFragment.getPlugin()); if (Config.WEAR) pluginsList.add(WearFragment.getPlugin(this)); pluginsList.add(new PersistentNotificationPlugin(this)); + pluginsList.add(NSClientInternalFragment.getPlugin()); pluginsList.add(sConfigBuilder = ConfigBuilderFragment.getPlugin()); @@ -111,24 +127,37 @@ public class MainApp extends Application { MainApp.getConfigBuilder().uploadAppStart(); startKeepAliveService(); + + Thread t = new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + } + PumpInterface pump = MainApp.getConfigBuilder(); + if (pump != null) + pump.refreshDataFromPump("Initialization"); + } + }); + t.start(); } private void startKeepAliveService() { if (keepAliveReceiver == null) { keepAliveReceiver = new KeepAliveReceiver(); if (Config.DANAR) { - startService(new Intent(this, info.nightscout.androidaps.plugins.DanaR.Services.ExecutionService.class)); - startService(new Intent(this, info.nightscout.androidaps.plugins.DanaRKorean.Services.ExecutionService.class)); + startService(new Intent(this, info.nightscout.androidaps.plugins.PumpDanaR.Services.ExecutionService.class)); + startService(new Intent(this, info.nightscout.androidaps.plugins.PumpDanaRKorean.Services.ExecutionService.class)); } keepAliveReceiver.setAlarm(this); } } - - public void stopKeepAliveService(){ - if(keepAliveReceiver!=null) - keepAliveReceiver.cancelAlarm(this); + public void stopKeepAliveService() { + if (keepAliveReceiver != null) + keepAliveReceiver.cancelAlarm(this); } public static Bus bus() { @@ -175,6 +204,21 @@ public class MainApp extends Application { return newList; } + public static ArrayList getSpecificPluginsVisibleInList(int type) { + ArrayList newList = new ArrayList<>(); + + if (pluginsList != null) { + for (PluginBase p : pluginsList) { + if (p.getType() == type) + if (p.showInList(type)) + newList.add(p); + } + } else { + log.error("pluginsList=null"); + } + return newList; + } + public static ArrayList getSpecificPluginsListByInterface(Class interfaceClass) { ArrayList newList = new ArrayList<>(); @@ -189,6 +233,21 @@ public class MainApp extends Application { return newList; } + public static ArrayList getSpecificPluginsVisibleInListByInterface(Class interfaceClass, int type) { + ArrayList newList = new ArrayList<>(); + + if (pluginsList != null) { + for (PluginBase p : pluginsList) { + if (p.getClass() != ConfigBuilderPlugin.class && interfaceClass.isAssignableFrom(p.getClass())) + if (p.showInList(type)) + newList.add(p); + } + } else { + log.error("pluginsList=null"); + } + return newList; + } + @Nullable public static PluginBase getSpecificPlugin(Class pluginClass) { if (pluginsList != null) { diff --git a/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java b/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java index f0d60cae19..51394f28f9 100644 --- a/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java @@ -11,15 +11,16 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceGroup; import android.preference.PreferenceManager; - import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.DanaR.BluetoothDevicePreference; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.BluetoothDevicePreference; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalPlugin; import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin; -import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpPlugin; +import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpPlugin; +import info.nightscout.androidaps.plugins.Wear.WearPlugin; import info.nightscout.utils.LocaleHelper; public class PreferencesActivity extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -35,7 +36,7 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre @Override public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - MainApp.bus().post(new EventPreferenceChange()); + MainApp.bus().post(new EventPreferenceChange(key)); if (key.equals("language")) { String lang = sharedPreferences.getString("language", "en"); LocaleHelper.setLocale(getApplicationContext(), lang); @@ -48,14 +49,14 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre updatePrefSummary(myPreferenceFragment.getPreference(key)); } - private static void updatePrefSummary(Preference pref) { + private static void updatePrefSummary(Preference pref) { if (pref instanceof ListPreference || pref instanceof BluetoothDevicePreference) { ListPreference listPref = (ListPreference) pref; pref.setSummary(listPref.getEntry()); } if (pref instanceof EditTextPreference) { EditTextPreference editTextPref = (EditTextPreference) pref; - if (pref.getKey().contains("password")) { + if (pref.getKey().contains("password") || pref.getKey().contains("secret")) { pref.setSummary("******"); } else if (editTextPref.getText() != null && !editTextPref.getText().equals("")) { ((EditTextPreference) pref).setDialogMessage(editTextPref.getDialogMessage()); @@ -68,7 +69,7 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre } } - private static void initSummary(Preference p) { + public static void initSummary(Preference p) { if (p instanceof PreferenceGroup) { PreferenceGroup pGrp = (PreferenceGroup) p; for (int i = 0; i < pGrp.getPreferenceCount(); i++) { @@ -83,19 +84,28 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.pref_password); - addPreferencesFromResource(R.xml.pref_quickwizard); + if (Config.ALLPREFERENCES) { + addPreferencesFromResource(R.xml.pref_password); + addPreferencesFromResource(R.xml.pref_age); + } addPreferencesFromResource(R.xml.pref_language); - if (Config.CAREPORTALENABLED) - addPreferencesFromResource(R.xml.pref_careportal); - addPreferencesFromResource(R.xml.pref_treatments); + if (Config.ALLPREFERENCES) { + addPreferencesFromResource(R.xml.pref_quickwizard); + } + addPreferencesFromResource(R.xml.pref_careportal); + if (Config.ALLPREFERENCES) { + addPreferencesFromResource(R.xml.pref_treatments); + } if (Config.APS) addPreferencesFromResource(R.xml.pref_closedmode); - if (Config.OPENAPSENABLED) + if (Config.OPENAPSENABLED) { addPreferencesFromResource(R.xml.pref_openapsma); - if (MainApp.getSpecificPlugin(OpenAPSAMAPlugin.class) != null && MainApp.getSpecificPlugin(OpenAPSAMAPlugin.class).isEnabled(PluginBase.APS)) - addPreferencesFromResource(R.xml.pref_openapsama); - addPreferencesFromResource(R.xml.pref_profile); + if (MainApp.getSpecificPlugin(OpenAPSAMAPlugin.class) != null && MainApp.getSpecificPlugin(OpenAPSAMAPlugin.class).isEnabled(PluginBase.APS)) + addPreferencesFromResource(R.xml.pref_openapsama); + } + if (Config.ALLPREFERENCES) { + addPreferencesFromResource(R.xml.pref_profile); + } if (Config.DANAR) { DanaRPlugin danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); DanaRKoreanPlugin danaRKoreanPlugin = (DanaRKoreanPlugin) MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); @@ -108,16 +118,30 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre } VirtualPumpPlugin virtualPumpPlugin = (VirtualPumpPlugin) MainApp.getSpecificPlugin(VirtualPumpPlugin.class); if (virtualPumpPlugin != null && virtualPumpPlugin.isEnabled(PluginBase.PUMP)) { - addPreferencesFromResource(R.xml.pref_virtualpump); + addPreferencesFromResource(R.xml.pref_virtualpump); + } + NSClientInternalPlugin nsClientInternalPlugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + if (nsClientInternalPlugin != null && nsClientInternalPlugin.isEnabled(PluginBase.GENERAL)) { + addPreferencesFromResource(R.xml.pref_nsclientinternal); } if (Config.SMSCOMMUNICATORENABLED) addPreferencesFromResource(R.xml.pref_smscommunicator); - addPreferencesFromResource(R.xml.pref_others); - addPreferencesFromResource(R.xml.pref_advanced); + if (Config.ALLPREFERENCES) { + addPreferencesFromResource(R.xml.pref_others); + addPreferencesFromResource(R.xml.pref_advanced); + } + + if (Config.WEAR) { + WearPlugin wearPlugin = (WearPlugin) MainApp.getSpecificPlugin(WearPlugin.class); + if (wearPlugin != null && wearPlugin.isEnabled(PluginBase.GENERAL)) { + addPreferencesFromResource(R.xml.pref_wear); + } + } + initSummary(getPreferenceScreen()); } - public Preference getPreference (String key) { + public Preference getPreference(String key) { return findPreference(key); } } diff --git a/app/src/main/java/info/nightscout/androidaps/Services/DataService.java b/app/src/main/java/info/nightscout/androidaps/Services/DataService.java index 100a452ede..0863c8e72d 100644 --- a/app/src/main/java/info/nightscout/androidaps/Services/DataService.java +++ b/app/src/main/java/info/nightscout/androidaps/Services/DataService.java @@ -32,25 +32,28 @@ import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventNewBasalProfile; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.History.DanaRNSHistorySync; -import info.nightscout.androidaps.plugins.NSProfile.NSProfilePlugin; -import info.nightscout.androidaps.plugins.Objectives.ObjectivesPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRNSHistorySync; +import info.nightscout.androidaps.plugins.InsulinFastacting.InsulinFastactingFragment; +import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin; +import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.OverviewPlugin; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorPlugin; import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventNewSMS; +import info.nightscout.androidaps.plugins.SourceGlimp.SourceGlimpPlugin; import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gPlugin; import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientPlugin; import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripPlugin; import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange; import info.nightscout.androidaps.receivers.DataReceiver; -import info.nightscout.client.data.NSProfile; -import info.nightscout.client.data.NSSgv; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSgv; public class DataService extends IntentService { @@ -59,6 +62,7 @@ public class DataService extends IntentService { boolean xDripEnabled = false; boolean nsClientEnabled = true; boolean mm640gEnabled = false; + boolean glimpEnabled = false; public DataService() { super("DataService"); @@ -74,14 +78,22 @@ public class DataService extends IntentService { xDripEnabled = true; nsClientEnabled = false; mm640gEnabled = false; + glimpEnabled = false; } else if (ConfigBuilderPlugin.getActiveBgSource().getClass().equals(SourceNSClientPlugin.class)) { xDripEnabled = false; nsClientEnabled = true; mm640gEnabled = false; + glimpEnabled = false; } else if (ConfigBuilderPlugin.getActiveBgSource().getClass().equals(SourceMM640gPlugin.class)) { xDripEnabled = false; nsClientEnabled = false; mm640gEnabled = true; + glimpEnabled = false; + } else if (ConfigBuilderPlugin.getActiveBgSource().getClass().equals(SourceGlimpPlugin.class)) { + xDripEnabled = false; + nsClientEnabled = false; + mm640gEnabled = false; + glimpEnabled = true; } boolean isNSProfile = ConfigBuilderPlugin.getActiveProfile().getClass().equals(NSProfilePlugin.class); @@ -99,6 +111,10 @@ public class DataService extends IntentService { if (mm640gEnabled) { handleNewDataFromMM640g(intent); } + } else if (Intents.GLIMP_BG.equals(action)) { + if (glimpEnabled) { + handleNewDataFromGlimp(intent); + } } else if (Intents.ACTION_NEW_SGV.equals(action)) { // always handle SGV if NS-Client is the source if (nsClientEnabled) { @@ -185,6 +201,30 @@ public class DataService extends IntentService { MainApp.bus().post(new EventNewBG()); } + private void handleNewDataFromGlimp(Intent intent) { + Bundle bundle = intent.getExtras(); + if (bundle == null) return; + + BgReading bgReading = new BgReading(); + + bgReading.value = bundle.getDouble("mySGV"); + bgReading.direction = bundle.getString("myTrend"); + bgReading.battery_level = bundle.getInt("myBatLvl"); + bgReading.timeIndex = bundle.getLong("myTimestamp"); + bgReading.raw = 0; + + if (Config.logIncommingBG) + log.debug(bundle.toString()); + log.debug("GLIMP BG " + bgReading.toString()); + + try { + MainApp.getDbHelper().getDaoBgReadings().createIfNotExists(bgReading); + } catch (SQLException e) { + e.printStackTrace(); + } + MainApp.bus().post(new EventNewBG()); + } + private void handleNewDataFromMM640g(Intent intent) { Bundle bundle = intent.getExtras(); if (bundle == null) return; @@ -482,7 +522,9 @@ public class DataService extends IntentService { } else { if (Config.logIncommingData) log.debug("ADD: New treatment: " + trstring); - Treatment treatment = new Treatment(); + InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); + if (insulinInterface == null) insulinInterface = InsulinFastactingFragment.getPlugin(); + Treatment treatment = new Treatment(insulinInterface); treatment._id = _id; treatment.carbs = trJson.has("carbs") ? trJson.getDouble("carbs") : 0; treatment.insulin = trJson.has("insulin") ? trJson.getDouble("insulin") : 0d; @@ -537,7 +579,9 @@ public class DataService extends IntentService { if (Config.logIncommingData) log.debug("CHANGE: Adding new treatment: " + trstring); - Treatment treatment = new Treatment(); + InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); + if (insulinInterface == null) insulinInterface = InsulinFastactingFragment.getPlugin(); + Treatment treatment = new Treatment(insulinInterface); treatment._id = _id; treatment.carbs = trJson.has("carbs") ? trJson.getDouble("carbs") : 0; treatment.insulin = trJson.has("insulin") ? trJson.getDouble("insulin") : 0d; diff --git a/app/src/main/java/info/nightscout/androidaps/Services/Intents.java b/app/src/main/java/info/nightscout/androidaps/Services/Intents.java index 921b04b936..1b7b0875e5 100644 --- a/app/src/main/java/info/nightscout/androidaps/Services/Intents.java +++ b/app/src/main/java/info/nightscout/androidaps/Services/Intents.java @@ -11,11 +11,13 @@ public interface Intents { String ACTION_NEW_MBG = "info.nightscout.client.NEW_MBG"; String ACTION_NEW_CAL = "info.nightscout.client.NEW_CAL"; String ACTION_NEW_STATUS = "info.nightscout.client.NEW_STATUS"; + String ACTION_QUEUE_STATUS = "info.nightscout.client.QUEUE_STATUS"; // App -> NSClient String ACTION_DATABASE = "info.nightscout.client.DBACCESS"; String ACTION_RESTART = "info.nightscout.client.RESTART"; + String ACTION_RESEND = "info.nightscout.client.RESEND"; // xDrip -> App String RECEIVER_PERMISSION = "com.eveningoutpost.dexdrip.permissions.RECEIVE_BG_ESTIMATE"; @@ -33,4 +35,6 @@ public interface Intents { String NS_EMULATOR = "com.eveningoutpost.dexdrip.NS_EMULATOR"; String ACTION_REMOTE_CALIBRATION = "com.eveningoutpost.dexdrip.NewCalibration"; + + String GLIMP_BG = "it.ct.glicemia.ACTION_GLUCOSE_MEASURED"; } diff --git a/app/src/main/java/info/nightscout/androidaps/data/GlucoseStatus.java b/app/src/main/java/info/nightscout/androidaps/data/GlucoseStatus.java index 9fc8bd0ff4..ad9b0acecf 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/GlucoseStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/data/GlucoseStatus.java @@ -73,7 +73,7 @@ public class GlucoseStatus { List data = MainApp.getDbHelper().getBgreadingsDataFromTime(fromtime, false); int sizeRecords = data.size(); - if (sizeRecords < 4 || data.get(0).timeIndex < new Date().getTime() - 7 * 60 * 1000L) { + if (sizeRecords < 1 || data.get(0).timeIndex < new Date().getTime() - 7 * 60 * 1000L) { return null; } @@ -81,6 +81,16 @@ public class GlucoseStatus { long now_date = now.timeIndex; double change; + if (sizeRecords < 2) { + GlucoseStatus status = new GlucoseStatus(); + status.glucose = now.value; + status.short_avgdelta = 0d; + status.delta = 0d; + status.long_avgdelta = 0d; + status.avgdelta = 0d; // for OpenAPS MA + return status.round(); + } + ArrayList last_deltas = new ArrayList(); ArrayList short_deltas = new ArrayList(); ArrayList long_deltas = new ArrayList(); @@ -121,7 +131,7 @@ public class GlucoseStatus { status.short_avgdelta = average(short_deltas); - if(prefs.getBoolean("always_use_shortavg",false) || last_deltas.isEmpty()){ + if (prefs.getBoolean("always_use_shortavg", false) || last_deltas.isEmpty()) { status.delta = status.short_avgdelta; } else { status.delta = average(last_deltas); diff --git a/app/src/main/java/info/nightscout/androidaps/data/IobTotal.java b/app/src/main/java/info/nightscout/androidaps/data/IobTotal.java index f2a6ad0df2..ed3096c945 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/IobTotal.java +++ b/app/src/main/java/info/nightscout/androidaps/data/IobTotal.java @@ -6,9 +6,8 @@ import org.json.JSONObject; import java.util.Date; -import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.Round; @@ -21,7 +20,7 @@ public class IobTotal { public Double hightempinsulin; public Double netInsulin = 0d; // for calculations from temp basals only - public Double netRatio = 0d; // for calculations from temp basals only + public Double netRatio = 0d; // net ratio at start of temp basal long time; @@ -95,43 +94,4 @@ public class IobTotal { return json; } - public static IobTotal calulateFromTreatmentsAndTemps() { - ConfigBuilderPlugin.getActiveTreatments().updateTotalIOB(); - IobTotal bolusIob = ConfigBuilderPlugin.getActiveTreatments().getLastCalculation().round(); - ConfigBuilderPlugin.getActiveTempBasals().updateTotalIOB(); - IobTotal basalIob = ConfigBuilderPlugin.getActiveTempBasals().getLastCalculation().round(); - IobTotal iobTotal = IobTotal.combine(bolusIob, basalIob).round(); - return iobTotal; - } - - public static IobTotal calulateFromTreatmentsAndTemps(long time) { - IobTotal bolusIob = ConfigBuilderPlugin.getActiveTreatments().getCalculationToTime(time).round(); - IobTotal basalIob = ConfigBuilderPlugin.getActiveTempBasals().getCalculationToTime(time).round(); - IobTotal iobTotal = IobTotal.combine(bolusIob, basalIob).round(); - return iobTotal; - } - - public static IobTotal[] calculateIobArrayInDia() { - NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); - // predict IOB out to DIA plus 30m - long time = new Date().getTime(); - int len = (int) ((profile.getDia() *60 + 30) / 5); - IobTotal[] array = new IobTotal[len]; - int pos = 0; - for (int i = 0; i < len; i++){ - long t = time + i * 5 * 60000; - IobTotal iob = calulateFromTreatmentsAndTemps(t); - array[pos] = iob; - pos++; - } - return array; - } - - public static JSONArray convertToJSONArray(IobTotal[] iobArray) { - JSONArray array = new JSONArray(); - for (int i = 0; i < iobArray.length; i ++) { - array.put(iobArray[i].determineBasalJson()); - } - return array; - } } diff --git a/app/src/main/java/info/nightscout/androidaps/data/MealData.java b/app/src/main/java/info/nightscout/androidaps/data/MealData.java index b8e73c3e00..292d2272d5 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/MealData.java +++ b/app/src/main/java/info/nightscout/androidaps/data/MealData.java @@ -1,17 +1,5 @@ package info.nightscout.androidaps.data; -import java.util.Date; -import java.util.List; - -import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.db.BgReading; -import info.nightscout.androidaps.db.Treatment; -import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.OpenAPSAMA.Autosens; -import info.nightscout.androidaps.plugins.OpenAPSAMA.AutosensResult; -import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin; -import info.nightscout.client.data.NSProfile; - /** * Created by mike on 04.01.2017. */ @@ -19,30 +7,4 @@ public class MealData { public double boluses = 0d; public double carbs = 0d; public double mealCOB = 0.0d; - - - public void addTreatment(Treatment treatment) { - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - if (profile == null) return; - - List bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime((long) (new Date().getTime() - 60 * 60 * 1000L * profile.getDia() * 2), false); - - long now = new Date().getTime(); - long dia_ago = now - (new Double(1.5d * profile.getDia() * 60 * 60 * 1000l)).longValue(); - long t = treatment.created_at.getTime(); - if (t > dia_ago && t <= now) { - if (treatment.carbs >= 1) { - carbs += treatment.carbs; - if (MainApp.getSpecificPlugin(OpenAPSAMAPlugin.class).isEnabled(PluginBase.APS)) { - AutosensResult result = Autosens.detectSensitivityandCarbAbsorption(bgReadings, t); - double myCarbsAbsorbed = result.carbsAbsorbed; - double myMealCOB = Math.max(0, carbs - myCarbsAbsorbed); - mealCOB = Math.max(mealCOB, myMealCOB); - } - } - if (treatment.insulin > 0 && treatment.mealBolus) { - boluses += treatment.insulin; - } - } - } } diff --git a/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java b/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java index 7ce7c14678..a2a5b91870 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java +++ b/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java @@ -1,7 +1,5 @@ package info.nightscout.androidaps.data; -import android.os.Parcel; -import android.os.Parcelable; import android.text.Html; import android.text.Spanned; @@ -10,7 +8,7 @@ import org.json.JSONObject; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.Round; diff --git a/app/src/main/java/info/nightscout/androidaps/db/BgReading.java b/app/src/main/java/info/nightscout/androidaps/db/BgReading.java index 6dcf282e6c..8a0aaf96e1 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/BgReading.java +++ b/app/src/main/java/info/nightscout/androidaps/db/BgReading.java @@ -10,7 +10,7 @@ import org.slf4j.LoggerFactory; import java.util.Date; import info.nightscout.androidaps.Constants; -import info.nightscout.client.data.NSSgv; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSgv; import info.nightscout.utils.DecimalFormatter; @DatabaseTable(tableName = DatabaseHelper.DATABASE_BGREADINGS) @@ -47,7 +47,7 @@ public class BgReading implements DataPointInterface { public BgReading(NSSgv sgv) { timeIndex = sgv.getMills(); value = sgv.getMgdl(); - raw = sgv.getFiltered(); + raw = sgv.getFiltered() != null ? sgv.getFiltered() : value; direction = sgv.getDirection(); } diff --git a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java index 47b8aa222f..b3cd0ace70 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java +++ b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java @@ -29,6 +29,7 @@ import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.events.EventTreatmentChange; +import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventNewHistoryData; public class DatabaseHelper extends OrmLiteSqliteOpenHelper { private static Logger log = LoggerFactory.getLogger(DatabaseHelper.class); @@ -39,10 +40,11 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { public static final String DATABASE_TEMPTARGETS = "TempTargets"; public static final String DATABASE_TREATMENTS = "Treatments"; public static final String DATABASE_DANARHISTORY = "DanaRHistory"; + public static final String DATABASE_DBREQUESTS = "DBRequests"; - private static final int DATABASE_VERSION = 5; + private static final int DATABASE_VERSION = 6; - private long latestTreatmentChange = 0; + private static Long latestTreatmentChange = null; private static final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); private static ScheduledFuture scheduledPost = null; @@ -62,6 +64,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.createTableIfNotExists(connectionSource, Treatment.class); TableUtils.createTableIfNotExists(connectionSource, BgReading.class); TableUtils.createTableIfNotExists(connectionSource, DanaRHistoryRecord.class); + TableUtils.createTableIfNotExists(connectionSource, DbRequest.class); } catch (SQLException e) { log.error("Can't create database", e); throw new RuntimeException(e); @@ -77,6 +80,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, Treatment.class, true); TableUtils.dropTable(connectionSource, BgReading.class, true); TableUtils.dropTable(connectionSource, DanaRHistoryRecord.class, true); + TableUtils.dropTable(connectionSource, DbRequest.class, true); onCreate(database, connectionSource); } catch (SQLException e) { log.error("Can't drop databases", e); @@ -122,12 +126,13 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { TableUtils.dropTable(connectionSource, Treatment.class, true); TableUtils.dropTable(connectionSource, BgReading.class, true); TableUtils.dropTable(connectionSource, DanaRHistoryRecord.class, true); + //DbRequests can be cleared from NSClient fragment TableUtils.createTableIfNotExists(connectionSource, TempBasal.class); TableUtils.createTableIfNotExists(connectionSource, TempTarget.class); TableUtils.createTableIfNotExists(connectionSource, Treatment.class); TableUtils.createTableIfNotExists(connectionSource, BgReading.class); TableUtils.createTableIfNotExists(connectionSource, DanaRHistoryRecord.class); - latestTreatmentChange = 0; + latestTreatmentChange = 0L; } catch (SQLException e) { e.printStackTrace(); } @@ -137,7 +142,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { try { TableUtils.dropTable(connectionSource, Treatment.class, true); TableUtils.createTableIfNotExists(connectionSource, Treatment.class); - latestTreatmentChange = 0; + latestTreatmentChange = 0L; } catch (SQLException e) { e.printStackTrace(); } @@ -172,6 +177,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { return getDao(DanaRHistoryRecord.class); } + public Dao getDaoDbRequest() throws SQLException { + return getDao(DbRequest.class); + } + + public long size(String database) { + return DatabaseUtils.queryNumEntries(getReadableDatabase(), database); + } + public List getBgreadingsDataFromTime(long mills, boolean ascending) { try { Dao daoBgreadings = getDaoBgReadings(); @@ -189,18 +202,80 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { return new ArrayList(); } + // DbRequests handling + + public void create(DbRequest dbr) { + try { + getDaoDbRequest().create(dbr); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public int delete(DbRequest dbr) { + try { + return getDaoDbRequest().delete(dbr); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + public int deleteDbRequest(String nsClientId) { + try { + return getDaoDbRequest().deleteById(nsClientId); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + public int deleteDbRequestbyMongoId(String action, String id) { + try { + QueryBuilder queryBuilder = getDaoDbRequest().queryBuilder(); + Where where = queryBuilder.where(); + where.eq("_id", id).and().eq("action", action); + queryBuilder.limit(10L); + PreparedQuery preparedQuery = queryBuilder.prepare(); + List dbList = getDaoDbRequest().query(preparedQuery); + if (dbList.size() != 1) { + log.error("deleteDbRequestbyMongoId query size: " + dbList.size()); + } else { + //log.debug("Treatment findTreatmentById found: " + trList.get(0).log()); + return delete(dbList.get(0)); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return 0; + } + + public void deleteAllDbRequests() { + try { + TableUtils.clearTable(connectionSource, DbRequest.class); + } catch (SQLException e) { + e.printStackTrace(); + } + } + // TREATMENT HANDLING - public boolean isDataUnchanged(long time) { - if (time >= latestTreatmentChange) return true; - else return false; + public boolean affectingIobCob(Treatment t) { + Treatment existing = findTreatmentByTimeIndex(t.timeIndex); + if (existing == null) + return true; + if (existing.insulin == t.insulin && existing.carbs == t.carbs) + return false; + return true; } public int update(Treatment treatment) { int updated = 0; try { + boolean historyChange = affectingIobCob(treatment); updated = getDaoTreatments().update(treatment); - latestTreatmentChange = treatment.getTimeIndex(); + if (historyChange) + latestTreatmentChange = treatment.getTimeIndex(); } catch (SQLException e) { e.printStackTrace(); } @@ -211,8 +286,10 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { public Dao.CreateOrUpdateStatus createOrUpdate(Treatment treatment) { Dao.CreateOrUpdateStatus status = null; try { + boolean historyChange = affectingIobCob(treatment); status = getDaoTreatments().createOrUpdate(treatment); - latestTreatmentChange = treatment.getTimeIndex(); + if (historyChange) + latestTreatmentChange = treatment.getTimeIndex(); } catch (SQLException e) { e.printStackTrace(); } @@ -311,6 +388,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper { class PostRunnable implements Runnable { public void run() { MainApp.bus().post(new EventTreatmentChange()); + if (latestTreatmentChange != null) + MainApp.bus().post(new EventNewHistoryData(latestTreatmentChange)); + latestTreatmentChange = null; scheduledPost = null; } } diff --git a/app/src/main/java/info/nightscout/androidaps/db/DbRequest.java b/app/src/main/java/info/nightscout/androidaps/db/DbRequest.java new file mode 100644 index 0000000000..0ecc5d4f32 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/db/DbRequest.java @@ -0,0 +1,111 @@ +package info.nightscout.androidaps.db; + +import com.google.common.base.Charsets; +import com.google.common.hash.Hashing; +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Created by mike on 27.02.2016. + *

+ * Allowed actions "dbAdd" || "dbUpdate" || "dbUpdateUnset" || "dbRemove" + */ +@DatabaseTable(tableName = DatabaseHelper.DATABASE_DBREQUESTS) +public class DbRequest { + private static Logger log = LoggerFactory.getLogger(DbRequest.class); + + public String getNsClientID() { + return nsClientID; + } + + public void setNsClientID(String nsClientID) { + this.nsClientID = nsClientID; + } + + @DatabaseField(id = true, useGetSet = true) + public String nsClientID = null; + + @DatabaseField + public String action = null; + + @DatabaseField + public String collection = null; + + @DatabaseField + public String data = null; + + @DatabaseField + public String _id = null; + + public DbRequest() { + } + + // dbAdd + public DbRequest(String action, String collection, String nsClientID, JSONObject data) { + this.action = action; + this.collection = collection; + this.data = data.toString(); + this.nsClientID = nsClientID; + this._id = ""; + } + + // dbUpdate, dbUpdateUnset + public DbRequest(String action, String collection, String nsClientID, String _id, JSONObject data) { + this.action = action; + this.collection = collection; + this.data = data.toString(); + this.nsClientID = nsClientID; + this._id = _id; + } + + // dbRemove + public DbRequest(String action, String collection, String nsClientID, String _id) { + this.action = action; + this.collection = collection; + this.data = new JSONObject().toString(); + this.nsClientID = nsClientID; + this._id = _id; + } + + public String hash() { + return Hashing.sha1().hashString(action + collection + _id + data.toString(), Charsets.UTF_8).toString(); + } + + public JSONObject toJSON() { + JSONObject object = new JSONObject(); + try { + object.put("action", action); + object.put("collection", collection); + object.put("data", new JSONObject(data)); + if (_id != null) object.put("_id", _id); + if (nsClientID != null) object.put("nsClientID", nsClientID); + } catch (JSONException e) { + e.printStackTrace(); + } + return object; + } + + public static DbRequest fromJSON(JSONObject jsonObject) { + DbRequest result = new DbRequest(); + try { + if (jsonObject.has("action")) + result.action = jsonObject.getString("action"); + if (jsonObject.has("collection")) + result.collection = jsonObject.getString("collection"); + if (jsonObject.has("data")) + result.data = jsonObject.getJSONObject("data").toString(); + if (jsonObject.has("_id")) + result._id = jsonObject.getString("_id"); + if (jsonObject.has("nsClientID")) + result.nsClientID = jsonObject.getString("nsClientID"); + } catch (JSONException e) { + e.printStackTrace(); + } + return result; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java b/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java index 99389777d5..deccb18049 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/db/TempBasal.java @@ -11,7 +11,9 @@ import java.util.Date; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.data.Iob; import info.nightscout.androidaps.data.IobTotal; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.interfaces.InsulinInterface; +import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; @@ -52,18 +54,81 @@ public class TempBasal { public boolean isAbsolute = false; // true if if set as absolute value in U - public IobTotal iobCalc(Date time) { - IobTotal result = new IobTotal(time.getTime()); - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + public IobTotal iobCalc(long time) { + IobTotal result = new IobTotal(time); + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); + InsulinInterface insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); if (profile == null) return result; - int realDuration = getRealDuration(); + int realDuration = getDurationToTime(time); + Double netBasalAmount = 0d; + + if (realDuration > 0) { + Double netBasalRate = 0d; + + int aboutFiveMinIntervals = (int) Math.ceil(realDuration / 5d); + + result.netRatio = netBasalRate; + + double tempBolusSpacing = realDuration / aboutFiveMinIntervals; + for (Long j = 0L; j < aboutFiveMinIntervals; j++) { + // find middle of the interval + Long date = (long) (timeStart.getTime() + j * tempBolusSpacing * 60 * 1000 + 0.5d * tempBolusSpacing * 60 * 1000); + + Double basalRate = profile.getBasal(NSProfile.secondsFromMidnight(date)); + if (isExtended) { + netBasalRate = this.absolute; + } else { + if (this.isAbsolute) { + netBasalRate = this.absolute - basalRate; + } else { + netBasalRate = (this.percent - 100) / 100d * basalRate; + } + } + + double tempBolusSize = netBasalRate * tempBolusSpacing / 60d; + netBasalAmount += tempBolusSize; + + Treatment tempBolusPart = new Treatment(insulinInterface); + tempBolusPart.insulin = tempBolusSize; + tempBolusPart.created_at = new Date(date); + + Iob aIOB = insulinInterface.iobCalc(tempBolusPart, time, profile.getDia()); + result.basaliob += aIOB.iobContrib; + result.activity += aIOB.activityContrib; + Double dia_ago = time - profile.getDia() * 60 * 60 * 1000; + if (date > dia_ago && date <= time) { + result.netbasalinsulin += tempBolusPart.insulin; + if (tempBolusPart.insulin > 0) { + result.hightempinsulin += tempBolusPart.insulin; + } + } + } + } + result.netInsulin = netBasalAmount; + return result; + } + +/* + public IobTotal old_iobCalc(long time) { + IobTotal result = new IobTotal(time); + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); + InsulinInterface insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); + + if (profile == null) + return result; + + Double basalRate = profile.getBasal(NSProfile.secondsFromMidnight(time)); + + if (basalRate == null) + return result; + + int realDuration = getDurationToTime(time); if (realDuration > 0) { Double netBasalRate = 0d; - Double basalRate = profile.getBasal(profile.secondsFromMidnight(time)); Double tempBolusSize = 0.05; if (isExtended) { @@ -88,17 +153,17 @@ public class TempBasal { Long tempBolusCount = Math.round(netBasalAmount / tempBolusSize); if (tempBolusCount > 0) { Long tempBolusSpacing = realDuration / tempBolusCount; - for (Long j = 0l; j < tempBolusCount; j++) { - Treatment tempBolusPart = new Treatment(); + for (Long j = 0L; j < tempBolusCount; j++) { + Treatment tempBolusPart = new Treatment(insulinInterface); tempBolusPart.insulin = tempBolusSize; Long date = this.timeStart.getTime() + j * tempBolusSpacing * 60 * 1000; tempBolusPart.created_at = new Date(date); - Iob aIOB = tempBolusPart.iobCalc(time, profile.getDia()); + Iob aIOB = insulinInterface.iobCalc(tempBolusPart, time, profile.getDia()); result.basaliob += aIOB.iobContrib; result.activity += aIOB.activityContrib; - Double dia_ago = time.getTime() - profile.getDia() * 60 * 60 * 1000; - if (date > dia_ago && date <= time.getTime()) { + Double dia_ago = time - profile.getDia() * 60 * 60 * 1000; + if (date > dia_ago && date <= time) { result.netbasalinsulin += tempBolusPart.insulin; if (tempBolusPart.insulin > 0) { result.hightempinsulin += tempBolusPart.insulin; @@ -109,28 +174,35 @@ public class TempBasal { } return result; } +*/ // Determine end of basal - public Date getTimeEnd() { - Date tempBasalTimePlannedEnd = getPlannedTimeEnd(); - Date now = new Date(); + public long getTimeEnd() { + long tempBasalTimePlannedEnd = getPlannedTimeEnd(); + long now = new Date().getTime(); - if (timeEnd != null && timeEnd.getTime() < tempBasalTimePlannedEnd.getTime()) { - tempBasalTimePlannedEnd = timeEnd; + if (timeEnd != null && timeEnd.getTime() < tempBasalTimePlannedEnd) { + tempBasalTimePlannedEnd = timeEnd.getTime(); } - if (now.getTime() < tempBasalTimePlannedEnd.getTime()) + if (now < tempBasalTimePlannedEnd) tempBasalTimePlannedEnd = now; return tempBasalTimePlannedEnd; } - public Date getPlannedTimeEnd() { - return new Date(timeStart.getTime() + 60 * 1_000 * duration); + public long getPlannedTimeEnd() { + return timeStart.getTime() + 60 * 1_000 * duration; } public int getRealDuration() { - Long msecs = getTimeEnd().getTime() - timeStart.getTime(); + long msecs = getTimeEnd() - timeStart.getTime(); + return Math.round(msecs / 60f / 1000); + } + + public int getDurationToTime(long time) { + long endTime = Math.min(time, getTimeEnd()); + long msecs = endTime - timeStart.getTime(); return Math.round(msecs / 60f / 1000); } @@ -140,7 +212,7 @@ public class TempBasal { public int getPlannedRemainingMinutes() { if (timeEnd != null) return 0; - float remainingMin = (getPlannedTimeEnd().getTime() - new Date().getTime()) / 1000f / 60; + float remainingMin = (getPlannedTimeEnd() - new Date().getTime()) / 1000f / 60; return (remainingMin < 0) ? 0 : Math.round(remainingMin); } @@ -166,12 +238,13 @@ public class TempBasal { public boolean isInProgress(Date time) { if (timeStart.getTime() > time.getTime()) return false; // in the future if (timeEnd == null) { // open end - if (timeStart.getTime() < time.getTime() && getPlannedTimeEnd().getTime() > time.getTime()) + if (timeStart.getTime() < time.getTime() && getPlannedTimeEnd() > time.getTime()) return true; // in interval return false; } // closed end - if (timeStart.getTime() < time.getTime() && timeEnd.getTime() > time.getTime()) return true; // in interval + if (timeStart.getTime() < time.getTime() && timeEnd.getTime() > time.getTime()) + return true; // in interval return false; } diff --git a/app/src/main/java/info/nightscout/androidaps/db/Treatment.java b/app/src/main/java/info/nightscout/androidaps/db/Treatment.java index f8c2f3b829..dc933e59ee 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/Treatment.java +++ b/app/src/main/java/info/nightscout/androidaps/db/Treatment.java @@ -11,11 +11,13 @@ import org.slf4j.LoggerFactory; import java.util.Date; import java.util.List; +import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.Overview.graphExtensions.DataPointWithLabelInterface; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; @@ -43,12 +45,34 @@ public class Treatment implements DataPointWithLabelInterface { @DatabaseField public Double insulin = 0d; + @DatabaseField + public int insulinType = InsulinInterface.FASTACTINGINSULIN; + + @DatabaseField + public double dia = Constants.defaultDIA; + @DatabaseField public Double carbs = 0d; @DatabaseField public boolean mealBolus = true; // true for meal bolus , false for correction bolus + public Treatment() { + InsulinInterface insulin = MainApp.getConfigBuilder().getActiveInsulin(); + if (insulin != null) { + insulinType = insulin.getId(); + dia = insulin.getDia(); + } else { + insulinType = InsulinInterface.FASTACTINGINSULIN; + dia = Constants.defaultDIA; + } + } + + public Treatment(InsulinInterface insulin) { + insulinType = insulin.getId(); + dia = insulin.getDia(); + } + public void copyFrom(Treatment t) { this._id = t._id; this.created_at = t.created_at; @@ -57,32 +81,6 @@ public class Treatment implements DataPointWithLabelInterface { this.mealBolus = t.mealBolus; } - public Iob iobCalc(Date time, Double dia) { - Iob result = new Iob(); - - Double scaleFactor = 3.0 / dia; - Double peak = 75d; - Double end = 180d; - - if (this.insulin != 0d) { - Long bolusTime = this.created_at.getTime(); - Double minAgo = scaleFactor * (time.getTime() - bolusTime) / 1000d / 60d; - - if (minAgo < peak) { - Double x1 = minAgo / 5d + 1; - result.iobContrib = this.insulin * (1 - 0.001852 * x1 * x1 + 0.001852 * x1); - // units: BG (mg/dL) = (BG/U) * U insulin * scalar - result.activityContrib = this.insulin * (2 / dia / 60 / peak) * minAgo; - - } else if (minAgo < end) { - Double x2 = (minAgo - 75) / 5; - result.iobContrib = this.insulin * (0.001323 * x2 * x2 - 0.054233 * x2 + 0.55556); - result.activityContrib = this.insulin * (2 / dia / 60 - (minAgo - peak) * 2 / dia / 60 / (60 * 3 - peak)); - } - } - return result; - } - public long getMillisecondsFromStart() { return new Date().getTime() - created_at.getTime(); } diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.java b/app/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.java new file mode 100644 index 0000000000..38331ca581 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.java @@ -0,0 +1,8 @@ +package info.nightscout.androidaps.events; + +/** + * Created by mike on 17.02.2017. + */ + +public class EventConfigBuilderChange { +} diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventNewBasalProfile.java b/app/src/main/java/info/nightscout/androidaps/events/EventNewBasalProfile.java index 61feaa0897..3e270e8a1b 100644 --- a/app/src/main/java/info/nightscout/androidaps/events/EventNewBasalProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/events/EventNewBasalProfile.java @@ -1,6 +1,6 @@ package info.nightscout.androidaps.events; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; /** * Created by mike on 04.06.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.java b/app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.java index b4b430bb1e..76da0a4e67 100644 --- a/app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.java +++ b/app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.java @@ -1,7 +1,25 @@ package info.nightscout.androidaps.events; +import info.nightscout.androidaps.MainApp; + /** * Created by mike on 19.06.2016. */ public class EventPreferenceChange { + public String changedKey; + public EventPreferenceChange(String key) { + changedKey = key; + } + + public EventPreferenceChange(int resourceID) { + changedKey = MainApp.sResources.getString(resourceID); + } + + public boolean isChanged(int id) { + return changedKey.equals(MainApp.sResources.getString(id)); + } + + public boolean isChanged(String id) { + return changedKey.equals(id); + } } diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.java b/app/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.java new file mode 100644 index 0000000000..ab697e4840 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.java @@ -0,0 +1,50 @@ +package info.nightscout.androidaps.events; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; + +/** + * Created by mike on 19.02.2017. + */ + +public class EventPumpStatusChanged { + public static final int CONNECTING = 0; + public static final int CONNECTED = 1; + public static final int PERFORMING = 2; + public static final int DISCONNECTING = 3; + public static final int DISCONNECTED = 4; + + public int sStatus = DISCONNECTED; + public int sSecondsElapsed = 0; + public String sPerfomingAction = ""; + + public EventPumpStatusChanged(int status) { + sStatus = status; + sSecondsElapsed = 0; + } + + public EventPumpStatusChanged(int status, int secondsElapsed) { + sStatus = status; + sSecondsElapsed = secondsElapsed; + } + + public EventPumpStatusChanged(String action) { + sStatus = PERFORMING; + sSecondsElapsed = 0; + sPerfomingAction = action; + } + + public String textStatus() { + if (sStatus == CONNECTING) + return String.format(MainApp.sResources.getString(R.string.danar_history_connectingfor), sSecondsElapsed); + else if (sStatus == CONNECTED) + return MainApp.sResources.getString(R.string.connected); + else if (sStatus == PERFORMING) + return sPerfomingAction; + else if (sStatus == DISCONNECTING) + return MainApp.sResources.getString(R.string.disconnecting); + else if (sStatus == DISCONNECTED) + return ""; + return ""; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/FragmentBase.java b/app/src/main/java/info/nightscout/androidaps/interfaces/FragmentBase.java deleted file mode 100644 index 79bfc75154..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/FragmentBase.java +++ /dev/null @@ -1,7 +0,0 @@ -package info.nightscout.androidaps.interfaces; - -/** - * Created by mike on 05.08.2016. - */ -public interface FragmentBase { -} diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java new file mode 100644 index 0000000000..6b50178652 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java @@ -0,0 +1,21 @@ +package info.nightscout.androidaps.interfaces; + +import java.util.Date; + +import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.db.Treatment; + +/** + * Created by mike on 17.04.2017. + */ + +public interface InsulinInterface { + final int FASTACTINGINSULIN = 0; + final int FASTACTINGINSULINPROLONGED = 1; + + int getId(); + String getFriendlyName(); + String getComment(); + double getDia(); + public Iob iobCalc(Treatment treatment, long time, Double dia); +} diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java b/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java index 4442b83041..efbd51ea72 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.java @@ -15,7 +15,8 @@ public interface PluginBase { int CONSTRAINTS = 7; int LOOP = 8; int BGSOURCE = 9; - int LAST = 10; // keep always highest number + int INSULIN = 10; + int LAST = 11; // keep always highest number int getType(); String getFragmentClass(); @@ -25,6 +26,8 @@ public interface PluginBase { boolean isEnabled(int type); boolean isVisibleInTabs(int type); boolean canBeHidden(int type); + boolean hasFragment(); + boolean showInList(int type); void setFragmentEnabled(int type, boolean fragmentEnabled); void setFragmentVisible(int type, boolean fragmentVisible); } \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java index ae28697834..0924723776 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java @@ -2,7 +2,7 @@ package info.nightscout.androidaps.interfaces; import android.support.annotation.Nullable; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; /** * Created by mike on 14.06.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java index 550b05103e..b9c7e18650 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java @@ -8,8 +8,7 @@ import java.util.Date; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.TempBasal; -import info.nightscout.androidaps.plugins.Loop.APSResult; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; /** * Created by mike on 04.06.2016. @@ -30,8 +29,8 @@ public interface PumpInterface { int setNewBasalProfile(NSProfile profile); boolean isThisProfileSet(NSProfile profile); - Date lastStatusTime(); - void updateStatus(String reason); + Date lastDataTime(); + void refreshDataFromPump(String reason); double getBaseBasalRate(); // base basal rate, not temp basal double getTempBasalAbsoluteRate(); @@ -40,7 +39,7 @@ public interface PumpInterface { TempBasal getTempBasal(); TempBasal getExtendedBolus(); - PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context); + PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context); void stopBolusDelivering(); PumpEnactResult setTempBasalAbsolute(Double absoluteRate, Integer durationInMinutes); PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes); @@ -52,7 +51,9 @@ public interface PumpInterface { JSONObject getJSONStatus(); String deviceID(); + // Pump capabilities PumpDescription getPumpDescription(); - public String shortStatus(boolean veryShort); + // Short info for SMS, Wear etc + String shortStatus(boolean veryShort); } diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java index efb5f85fd0..9ecacf9e22 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java @@ -16,4 +16,5 @@ public interface TreatmentsInterface { IobTotal getCalculationToTime(long time); MealData getMealData(); List getTreatments(); + List getTreatments5MinBack(long time); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java index c3ea14dc79..582feb89a6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java @@ -17,17 +17,16 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventRefreshGui; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog; -import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; -import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.androidaps.plugins.Actions.dialogs.NewExtendedBolusDialog; import info.nightscout.androidaps.plugins.Actions.dialogs.NewTempBasalDialog; +import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; +import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; /** * A simple {@link Fragment} subclass. */ -public class ActionsFragment extends Fragment implements FragmentBase, View.OnClickListener { +public class ActionsFragment extends Fragment implements View.OnClickListener { static ActionsPlugin actionsPlugin = new ActionsPlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsPlugin.java index eedd0e4baf..d6ef13b29d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsPlugin.java @@ -54,6 +54,16 @@ public class ActionsPlugin implements PluginBase { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == GENERAL) this.fragmentEnabled = fragmentEnabled; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java index a170ea0e02..dd623c38e9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java @@ -18,6 +18,9 @@ import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import java.text.DecimalFormat; import info.nightscout.androidaps.Constants; @@ -28,6 +31,7 @@ import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.PlusMinusEditText; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; public class FillDialog extends DialogFragment implements OnClickListener { @@ -72,10 +76,9 @@ public class FillDialog extends DialogFragment implements OnClickListener { Button button3 = (Button) view.findViewById(R.id.fill_preset_button3); View divider = view.findViewById(R.id.fill_preset_divider); - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - amount1 = SafeParse.stringToDouble(DecimalFormatter.to2Decimal(SafeParse.stringToDouble(sp.getString("fill_button1", "0.3")))); - amount2 = SafeParse.stringToDouble(DecimalFormatter.to2Decimal(SafeParse.stringToDouble(sp.getString("fill_button2", "0")))); - amount3 = SafeParse.stringToDouble(DecimalFormatter.to2Decimal(SafeParse.stringToDouble(sp.getString("fill_button3", "0")))); + amount1 = SP.getDouble("fill_button1", 0.3); + amount2 = SP.getDouble("fill_button2", 0d); + amount3 = SP.getDouble("fill_button3", 0d); if(amount1 >0) { button1.setVisibility(View.VISIBLE); @@ -156,7 +159,7 @@ public class FillDialog extends DialogFragment implements OnClickListener { mHandler.post(new Runnable() { @Override public void run() { - PumpEnactResult result = pump.deliverTreatment(finalInsulinAfterConstraints, 0, context, false); + PumpEnactResult result = pump.deliverTreatment(MainApp.getConfigBuilder().getActiveInsulin(), finalInsulinAfterConstraints, 0, context, false); if (!result.success) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(MainApp.sResources.getString(R.string.treatmentdeliveryerror)); @@ -166,6 +169,7 @@ public class FillDialog extends DialogFragment implements OnClickListener { } } }); + Answers.getInstance().logCustom(new CustomEvent("Fill")); } } }); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewExtendedBolusDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewExtendedBolusDialog.java index 56ffa69d5f..ee726efb4d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewExtendedBolusDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewExtendedBolusDialog.java @@ -14,6 +14,9 @@ import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import java.text.DecimalFormat; import info.nightscout.androidaps.Constants; @@ -117,6 +120,7 @@ public class NewExtendedBolusDialog extends DialogFragment implements View.OnCli } } }); + Answers.getInstance().logCustom(new CustomEvent("ExtendedBolus")); } }); builder.setNegativeButton(getString(R.string.cancel), null); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewTempBasalDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewTempBasalDialog.java index ea0ef114e8..2d5a4580c4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewTempBasalDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/NewTempBasalDialog.java @@ -16,6 +16,9 @@ import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import java.text.DecimalFormat; import info.nightscout.androidaps.Constants; @@ -23,7 +26,7 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.PlusMinusEditText; import info.nightscout.utils.SafeParse; @@ -51,7 +54,7 @@ public class NewTempBasalDialog extends DialogFragment implements View.OnClickLi public static HandlerThread mHandlerThread; public NewTempBasalDialog() { - mHandlerThread = new HandlerThread(NewExtendedBolusDialog.class.getSimpleName()); + mHandlerThread = new HandlerThread(NewTempBasalDialog.class.getSimpleName()); mHandlerThread.start(); this.mHandler = new Handler(mHandlerThread.getLooper()); } @@ -158,7 +161,7 @@ public class NewTempBasalDialog extends DialogFragment implements View.OnClickLi } } }); - + Answers.getInstance().logCustom(new CustomEvent("TempBasal")); } }); builder.setNegativeButton(getString(R.string.cancel), null); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalFragment.java index 69db12c29b..7c603ecaed 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalFragment.java @@ -9,10 +9,9 @@ import android.view.View; import android.view.ViewGroup; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; -public class CareportalFragment extends Fragment implements FragmentBase, View.OnClickListener { +public class CareportalFragment extends Fragment implements View.OnClickListener { static CareportalPlugin careportalPlugin; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalPlugin.java index 9fd4cbca85..e6981083d0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/CareportalPlugin.java @@ -50,6 +50,16 @@ public class CareportalPlugin implements PluginBase { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == GENERAL) this.fragmentEnabled = fragmentEnabled; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/Dialogs/NewNSTreatmentDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/Dialogs/NewNSTreatmentDialog.java index 4c93b88102..34641f5ebb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/Dialogs/NewNSTreatmentDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Careportal/Dialogs/NewNSTreatmentDialog.java @@ -3,11 +3,9 @@ package info.nightscout.androidaps.plugins.Careportal.Dialogs; import android.app.Activity; import android.content.DialogInterface; -import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; -import android.preference.PreferenceManager; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentActivity; import android.support.v7.app.AlertDialog; @@ -26,6 +24,8 @@ import android.widget.RadioButton; import android.widget.Spinner; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.j256.ormlite.dao.Dao; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import com.wdullaer.materialdatetimepicker.time.RadialPickerLayout; @@ -42,7 +42,6 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Date; - import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; @@ -51,12 +50,13 @@ import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.events.EventNewBasalProfile; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; -import info.nightscout.androidaps.plugins.CircadianPercentageProfile.CircadianPercentageProfilePlugin; +import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfilePlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange; -import info.nightscout.client.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.PlusMinusEditText; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; import info.nightscout.utils.Translator; @@ -391,7 +391,6 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick JSONObject gatherData() { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); String enteredBy = SP.getString("careportal_enteredby", ""); JSONObject data = new JSONObject(); try { @@ -630,6 +629,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick data.put("percentage", cpp.percentage); } ConfigBuilderPlugin.uploadCareportalEntryToNS(data); + Answers.getInstance().logCustom(new CustomEvent("ProfileSwitch")); } catch (JSONException e) { e.printStackTrace(); } @@ -660,6 +660,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick dao.createIfNotExists(tempTarget); MainApp.bus().post(new EventTempTargetRangeChange()); ConfigBuilderPlugin.uploadCareportalEntryToNS(data); + Answers.getInstance().logCustom(new CustomEvent("TempTarget")); } catch (JSONException | SQLException e) { e.printStackTrace(); } @@ -671,6 +672,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick } } else { ConfigBuilderPlugin.uploadCareportalEntryToNS(data); + Answers.getInstance().logCustom(new CustomEvent("NSTreatment")); } } }); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java index bf9f3fb0b2..8dc546a1f8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java @@ -16,24 +16,29 @@ import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import java.util.ArrayList; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventConfigBuilderChange; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.APSInterface; import info.nightscout.androidaps.interfaces.BgSourceInterface; import info.nightscout.androidaps.interfaces.ConstraintsInterface; -import info.nightscout.androidaps.interfaces.FragmentBase; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.plugins.NSProfile.NSProfilePlugin; -import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpPlugin; +import info.nightscout.androidaps.plugins.InsulinFastacting.InsulinFastactingPlugin; +import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin; +import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpPlugin; import info.nightscout.utils.PasswordProtection; -public class ConfigBuilderFragment extends Fragment implements FragmentBase { +public class ConfigBuilderFragment extends Fragment { static ConfigBuilderPlugin configBuilderPlugin = new ConfigBuilderPlugin(); @@ -41,20 +46,28 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { return configBuilderPlugin; } + ListView insulinListView; ListView bgsourceListView; ListView pumpListView; + TextView pumpLabel; ListView loopListView; TextView loopLabel; ListView treatmentsListView; ListView tempsListView; + TextView tempsLabel; ListView profileListView; ListView apsListView; TextView apsLabel; ListView constraintsListView; + TextView constraintsLabel; ListView generalListView; TextView nsclientVerView; TextView nightscoutVerView; + LinearLayout mainLayout; + Button unlock; + + PluginCustomAdapter insulinDataAdapter = null; PluginCustomAdapter bgsourceDataAdapter = null; PluginCustomAdapter pumpDataAdapter = null; PluginCustomAdapter loopDataAdapter = null; @@ -65,29 +78,34 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { PluginCustomAdapter constraintsDataAdapter = null; PluginCustomAdapter generalDataAdapter = null; - LinearLayout mainLayout; - Button unlock; - // TODO: sorting @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.configbuilder_fragment, container, false); + + insulinListView = (ListView) view.findViewById(R.id.configbuilder_insulinlistview); bgsourceListView = (ListView) view.findViewById(R.id.configbuilder_bgsourcelistview); pumpListView = (ListView) view.findViewById(R.id.configbuilder_pumplistview); + pumpLabel = (TextView) view.findViewById(R.id.configbuilder_pumplabel); loopListView = (ListView) view.findViewById(R.id.configbuilder_looplistview); loopLabel = (TextView) view.findViewById(R.id.configbuilder_looplabel); treatmentsListView = (ListView) view.findViewById(R.id.configbuilder_treatmentslistview); tempsListView = (ListView) view.findViewById(R.id.configbuilder_tempslistview); + tempsLabel = (TextView) view.findViewById(R.id.configbuilder_tempslabel); profileListView = (ListView) view.findViewById(R.id.configbuilder_profilelistview); apsListView = (ListView) view.findViewById(R.id.configbuilder_apslistview); apsLabel = (TextView) view.findViewById(R.id.configbuilder_apslabel); constraintsListView = (ListView) view.findViewById(R.id.configbuilder_constraintslistview); + constraintsLabel = (TextView) view.findViewById(R.id.configbuilder_constraintslabel); generalListView = (ListView) view.findViewById(R.id.configbuilder_generallistview); nsclientVerView = (TextView) view.findViewById(R.id.configbuilder_nsclientversion); nightscoutVerView = (TextView) view.findViewById(R.id.configbuilder_nightscoutversion); + mainLayout = (LinearLayout) view.findViewById(R.id.configbuilder_mainlayout); + unlock = (Button) view.findViewById(R.id.configbuilder_unlock); + nsclientVerView.setText(ConfigBuilderPlugin.nsClientVersionName); nightscoutVerView.setText(ConfigBuilderPlugin.nightscoutVersionName); if (ConfigBuilderPlugin.nsClientVersionCode < 117) nsclientVerView.setTextColor(Color.RED); @@ -95,9 +113,6 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { nightscoutVerView.setTextColor(Color.RED); setViews(); - unlock = (Button) view.findViewById(R.id.configbuilder_unlock); - mainLayout = (LinearLayout) view.findViewById(R.id.configbuilder_mainlayout); - if (PasswordProtection.isLocked("settings_password")) { mainLayout.setVisibility(View.GONE); unlock.setOnClickListener(new View.OnClickListener() { @@ -112,40 +127,51 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { }, null); } }); + } else { + unlock.setVisibility(View.GONE); } return view; } void setViews() { - bgsourceDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsListByInterface(BgSourceInterface.class), PluginBase.BGSOURCE); + insulinDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(InsulinInterface.class, PluginBase.INSULIN), PluginBase.INSULIN); + insulinListView.setAdapter(insulinDataAdapter); + setListViewHeightBasedOnChildren(insulinListView); + bgsourceDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(BgSourceInterface.class, PluginBase.BGSOURCE), PluginBase.BGSOURCE); bgsourceListView.setAdapter(bgsourceDataAdapter); setListViewHeightBasedOnChildren(bgsourceListView); - pumpDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsList(PluginBase.PUMP), PluginBase.PUMP); + pumpDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginBase.PUMP), PluginBase.PUMP); pumpListView.setAdapter(pumpDataAdapter); + if (MainApp.getSpecificPluginsVisibleInList(PluginBase.PUMP).size() == 0) + pumpLabel.setVisibility(View.GONE); setListViewHeightBasedOnChildren(pumpListView); - loopDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsList(PluginBase.LOOP), PluginBase.LOOP); + loopDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginBase.LOOP), PluginBase.LOOP); loopListView.setAdapter(loopDataAdapter); setListViewHeightBasedOnChildren(loopListView); - if (MainApp.getSpecificPluginsList(PluginBase.LOOP).size() == 0) + if (MainApp.getSpecificPluginsVisibleInList(PluginBase.LOOP).size() == 0) loopLabel.setVisibility(View.GONE); - treatmentsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsList(PluginBase.TREATMENT), PluginBase.TREATMENT); + treatmentsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginBase.TREATMENT), PluginBase.TREATMENT); treatmentsListView.setAdapter(treatmentsDataAdapter); setListViewHeightBasedOnChildren(treatmentsListView); - tempsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsList(PluginBase.TEMPBASAL), PluginBase.TEMPBASAL); + tempsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginBase.TEMPBASAL), PluginBase.TEMPBASAL); tempsListView.setAdapter(tempsDataAdapter); setListViewHeightBasedOnChildren(tempsListView); - profileDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsListByInterface(ProfileInterface.class), PluginBase.PROFILE); + if (MainApp.getSpecificPluginsVisibleInList(PluginBase.TEMPBASAL).size() == 0) + tempsLabel.setVisibility(View.GONE); + profileDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(ProfileInterface.class, PluginBase.BGSOURCE), PluginBase.PROFILE); profileListView.setAdapter(profileDataAdapter); setListViewHeightBasedOnChildren(profileListView); - apsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsList(PluginBase.APS), PluginBase.APS); + apsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginBase.APS), PluginBase.APS); apsListView.setAdapter(apsDataAdapter); setListViewHeightBasedOnChildren(apsListView); - if (MainApp.getSpecificPluginsList(PluginBase.APS).size() == 0) + if (MainApp.getSpecificPluginsVisibleInList(PluginBase.APS).size() == 0) apsLabel.setVisibility(View.GONE); - constraintsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsListByInterface(ConstraintsInterface.class), PluginBase.CONSTRAINTS); + constraintsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(ConstraintsInterface.class, PluginBase.BGSOURCE), PluginBase.CONSTRAINTS); constraintsListView.setAdapter(constraintsDataAdapter); setListViewHeightBasedOnChildren(constraintsListView); - generalDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsList(PluginBase.GENERAL), PluginBase.GENERAL); + if (MainApp.getSpecificPluginsVisibleInList(PluginBase.CONSTRAINTS).size() == 0) + constraintsLabel.setVisibility(View.GONE); + generalDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginBase.GENERAL), PluginBase.GENERAL); generalListView.setAdapter(generalDataAdapter); setListViewHeightBasedOnChildren(generalListView); @@ -175,18 +201,18 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { } @Override - public View getView(int position, View convertView, ViewGroup parent) { + public View getView(int position, View view, ViewGroup parent) { PluginViewHolder holder = null; - if (convertView == null) { - convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.configbuilder_simpleitem, null); + if (view == null) { + view = LayoutInflater.from(parent.getContext()).inflate(R.layout.configbuilder_simpleitem, null); holder = new PluginViewHolder(); - holder.name = (TextView) convertView.findViewById(R.id.configbuilder_simpleitem_name); - holder.checkboxEnabled = (CheckBox) convertView.findViewById(R.id.configbuilder_simpleitem_checkboxenabled); - holder.checkboxVisible = (CheckBox) convertView.findViewById(R.id.configbuilder_simpleitem_checkboxvisible); - convertView.setTag(holder); + holder.name = (TextView) view.findViewById(R.id.configbuilder_simpleitem_name); + holder.checkboxEnabled = (CheckBox) view.findViewById(R.id.configbuilder_simpleitem_checkboxenabled); + holder.checkboxVisible = (CheckBox) view.findViewById(R.id.configbuilder_simpleitem_checkboxvisible); + view.setTag(holder); holder.checkboxEnabled.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { @@ -197,7 +223,9 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { onEnabledCategoryChanged(plugin, type); configBuilderPlugin.storeSettings(); MainApp.bus().post(new EventRefreshGui(true)); + MainApp.bus().post(new EventConfigBuilderChange()); getPlugin().logPluginStatus(); + Answers.getInstance().logCustom(new CustomEvent("ConfigurationChange")); } }); @@ -212,7 +240,7 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { } }); } else { - holder = (PluginViewHolder) convertView.getTag(); + holder = (PluginViewHolder) view.getTag(); } PluginBase plugin = pluginList.get(position); @@ -232,8 +260,12 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { holder.checkboxVisible.setEnabled(false); } + if (!plugin.hasFragment()) { + holder.checkboxVisible.setVisibility(View.INVISIBLE); + } + // Hide enabled control and force enabled plugin if there is only one plugin available - if (type == PluginBase.PUMP || type == PluginBase.TREATMENT || type == PluginBase.TEMPBASAL || type == PluginBase.PROFILE) + if (type == PluginBase.INSULIN || type == PluginBase.PUMP || type == PluginBase.TREATMENT || type == PluginBase.TEMPBASAL || type == PluginBase.PROFILE) if (pluginList.size() < 2) { holder.checkboxEnabled.setEnabled(false); plugin.setFragmentEnabled(type, true); @@ -264,7 +296,7 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { } } - return convertView; + return view; } @@ -279,6 +311,9 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { case PluginBase.LOOP: break; // Single selection allowed + case PluginBase.INSULIN: + pluginsInCategory = MainApp.getSpecificPluginsListByInterface(InsulinInterface.class); + break; case PluginBase.APS: pluginsInCategory = MainApp.getSpecificPluginsListByInterface(APSInterface.class); break; @@ -308,6 +343,8 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase { } else { // enable first plugin in list if (type == PluginBase.PUMP) MainApp.getSpecificPlugin(VirtualPumpPlugin.class).setFragmentEnabled(type, true); + else if (type == PluginBase.INSULIN) + MainApp.getSpecificPlugin(InsulinFastactingPlugin.class).setFragmentEnabled(type, true); else if (type == PluginBase.PROFILE) MainApp.getSpecificPlugin(NSProfilePlugin.class).setFragmentEnabled(type, true); else diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java index a0b2a7b3b0..84135e5e85 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderPlugin.java @@ -9,8 +9,6 @@ import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; -import com.squareup.otto.Subscribe; - import org.json.JSONException; import org.json.JSONObject; import org.slf4j.Logger; @@ -18,10 +16,6 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.Date; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; @@ -31,19 +25,19 @@ import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventBolusRequested; -import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.interfaces.APSInterface; import info.nightscout.androidaps.interfaces.BgSourceInterface; import info.nightscout.androidaps.interfaces.ConstraintsInterface; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.interfaces.TempBasalsInterface; import info.nightscout.androidaps.interfaces.TreatmentsInterface; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgError; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgError; import info.nightscout.androidaps.plugins.Loop.APSResult; import info.nightscout.androidaps.plugins.Loop.DeviceStatus; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; @@ -52,11 +46,14 @@ import info.nightscout.androidaps.plugins.OpenAPSMA.DetermineBasalResultMA; import info.nightscout.androidaps.plugins.Overview.Dialogs.BolusProgressDialog; import info.nightscout.androidaps.plugins.Overview.Dialogs.BolusProgressHelperActivity; import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissBolusprogressIfRunning; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; -import info.nightscout.client.data.DbLogger; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.DbLogger; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.BatteryLevel; import info.nightscout.utils.DateUtil; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -71,6 +68,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain static TempBasalsInterface activeTempBasals; static APSInterface activeAPS; static LoopPlugin activeLoop; + static InsulinInterface activeInsulin; static public String nightscoutVersionName = ""; static public Integer nightscoutVersionCode = 0; @@ -79,9 +77,6 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain static ArrayList pluginList; - private static final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); - private static ScheduledFuture scheduledPost = null; - PowerManager.WakeLock mWakeLock; public ConfigBuilderPlugin() { @@ -132,6 +127,16 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain return false; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return false; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { // Always enabled @@ -179,7 +184,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain if (SP.contains(settingEnabled)) p.setFragmentEnabled(type, SP.getBoolean(settingEnabled, true)); if (SP.contains(settingVisible)) - p.setFragmentVisible(type, SP.getBoolean(settingVisible, true)); + p.setFragmentVisible(type, SP.getBoolean(settingVisible, true) && SP.getBoolean(settingEnabled, true)); } catch (Exception e) { e.printStackTrace(); } @@ -205,6 +210,10 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain return activeTempBasals; } + public static InsulinInterface getActiveInsulin() { + return activeInsulin; + } + public static APSInterface getActiveAPS() { return activeAPS; } @@ -224,7 +233,8 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain (p.isEnabled(6) ? " PUMP" : "") + (p.isEnabled(7) ? " CONSTRAINTS" : "") + (p.isEnabled(8) ? " LOOP" : "") + - (p.isEnabled(9) ? " BGSOURCE" : "") + (p.isEnabled(9) ? " BGSOURCE" : "") + + (p.isEnabled(10) ? " INSULIN" : "") ); } } @@ -245,7 +255,18 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain } } - // PluginBase.PROFILE + // PluginBase.INSULIN + pluginsInCategory = MainApp.getSpecificPluginsListByInterface(InsulinInterface.class); + activeInsulin = (InsulinInterface) getTheOneEnabledInArray(pluginsInCategory, PluginBase.INSULIN); + if (Config.logConfigBuilder) + log.debug("Selected insulin interface: " + ((PluginBase) activeInsulin).getName()); + for (PluginBase p : pluginsInCategory) { + if (!p.getName().equals(((PluginBase) activeInsulin).getName())) { + p.setFragmentVisible(PluginBase.INSULIN, false); + } + } + + // PluginBase.PROFILE pluginsInCategory = MainApp.getSpecificPluginsListByInterface(ProfileInterface.class); activeProfile = (ProfileInterface) getTheOneEnabledInArray(pluginsInCategory, PluginBase.PROFILE); if (Config.logConfigBuilder) @@ -270,7 +291,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain // PluginBase.PUMP pluginsInCategory = MainApp.getSpecificPluginsList(PluginBase.PUMP); activePump = (PumpInterface) getTheOneEnabledInArray(pluginsInCategory, PluginBase.PUMP); - if (Config.logConfigBuilder) + if (Config.logConfigBuilder && activePump != null) log.debug("Selected pump interface: " + ((PluginBase) activePump).getName()); for (PluginBase p : pluginsInCategory) { if (!p.getName().equals(((PluginBase) activePump).getName())) { @@ -294,7 +315,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain // PluginBase.TEMPBASAL pluginsInCategory = MainApp.getSpecificPluginsList(PluginBase.TEMPBASAL); activeTempBasals = (TempBasalsInterface) getTheOneEnabledInArray(pluginsInCategory, PluginBase.TEMPBASAL); - if (Config.logConfigBuilder) + if (Config.logConfigBuilder && activeTempBasals != null) log.debug("Selected tempbasal interface: " + ((PluginBase) activeTempBasals).getName()); for (PluginBase p : pluginsInCategory) { if (!p.getName().equals(((PluginBase) activeTempBasals).getName())) { @@ -338,27 +359,37 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain */ @Override public boolean isInitialized() { - return activePump.isInitialized(); + if (activePump != null) + return activePump.isInitialized(); + else return true; } @Override public boolean isSuspended() { - return activePump.isSuspended(); + if (activePump != null) + return activePump.isSuspended(); + else return false; } @Override public boolean isBusy() { - return activePump.isBusy(); + if (activePump != null) + return activePump.isBusy(); + else return false; } @Override public boolean isTempBasalInProgress() { - return activePump.isTempBasalInProgress(); + if (activePump != null) + return activePump.isTempBasalInProgress(); + else return false; } @Override public boolean isExtendedBoluslInProgress() { - return activePump.isExtendedBoluslInProgress(); + if (activePump != null) + return activePump.isExtendedBoluslInProgress(); + else return false; } @Override @@ -379,147 +410,195 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain if (isThisProfileSet(profile)) { log.debug("Correct profile already set"); return NOT_NEEDED; - } else { + } else if (activePump != null) { return activePump.setNewBasalProfile(profile); - } + } else + return SUCCESS; } @Override public boolean isThisProfileSet(NSProfile profile) { - return activePump.isThisProfileSet(profile); + if (activePump != null) + return activePump.isThisProfileSet(profile); + else return true; } @Override - public Date lastStatusTime() { - return activePump.lastStatusTime(); + public Date lastDataTime() { + if (activePump != null) + return activePump.lastDataTime(); + else return new Date(); } @Override - public void updateStatus(String reason) { - activePump.updateStatus(reason); + public void refreshDataFromPump(String reason) { + if (activePump != null) + activePump.refreshDataFromPump(reason); } @Override public double getBaseBasalRate() { - return activePump.getBaseBasalRate(); + if (activePump != null) + return activePump.getBaseBasalRate(); + else + return 0d; } @Override public double getTempBasalAbsoluteRate() { - return activePump.getTempBasalAbsoluteRate(); + if (activePump != null) + return activePump.getTempBasalAbsoluteRate(); + else + return 0d; } @Override public double getTempBasalRemainingMinutes() { - return activePump.getTempBasalRemainingMinutes(); + if (activePump != null) + return activePump.getTempBasalRemainingMinutes(); + else + return 0d; } @Override public TempBasal getTempBasal(Date time) { - return activePump.getTempBasal(time); + if (activePump != null) + return activePump.getTempBasal(time); + else + return null; } @Override public TempBasal getTempBasal() { - return activePump.getTempBasal(); + if (activePump != null) + return activePump.getTempBasal(); + else + return null; } @Override public TempBasal getExtendedBolus() { - return activePump.getExtendedBolus(); + if (activePump != null) + return activePump.getExtendedBolus(); + else + return null; } - public PumpEnactResult deliverTreatmentFromBolusWizard(Context context, Double insulin, Integer carbs, Double glucose, String glucoseType, int carbTime, JSONObject boluscalc) { + public PumpEnactResult deliverTreatmentFromBolusWizard(InsulinInterface insulinType, Context context, Double insulin, Integer carbs, Double glucose, String glucoseType, int carbTime, JSONObject boluscalc) { mWakeLock.acquire(); - insulin = applyBolusConstraints(insulin); - carbs = applyCarbsConstraints(carbs); + PumpEnactResult result; + if (activePump != null) { + insulin = applyBolusConstraints(insulin); + carbs = applyCarbsConstraints(carbs); - BolusProgressDialog bolusProgressDialog = null; - if (context != null) { - bolusProgressDialog = new BolusProgressDialog(); - bolusProgressDialog.setInsulin(insulin); - bolusProgressDialog.show(((AppCompatActivity) context).getSupportFragmentManager(), "BolusProgress"); - } - - MainApp.bus().post(new EventBolusRequested(insulin)); - - PumpEnactResult result = activePump.deliverTreatment(insulin, carbs, context); - - BolusProgressDialog.bolusEnded = true; - - if (bolusProgressDialog != null && BolusProgressDialog.running) { - try { - bolusProgressDialog.dismiss(); - } catch (Exception e) { - e.printStackTrace(); // TODO: handle this better + BolusProgressDialog bolusProgressDialog = null; + if (context != null) { + bolusProgressDialog = new BolusProgressDialog(); + bolusProgressDialog.setInsulin(insulin); + bolusProgressDialog.show(((AppCompatActivity) context).getSupportFragmentManager(), "BolusProgress"); } - } - if (result.success) { - Treatment t = new Treatment(); - t.insulin = result.bolusDelivered; - if (carbTime == 0) - t.carbs = (double) result.carbsDelivered; // with different carbTime record will come back from nightscout + MainApp.bus().post(new EventBolusRequested(insulin)); + + result = activePump.deliverTreatment(insulinType, insulin, carbs, context); + + BolusProgressDialog.bolusEnded = true; + + MainApp.bus().post(new EventDismissBolusprogressIfRunning(result)); + + if (result.success) { + Treatment t = new Treatment(insulinType); + t.insulin = result.bolusDelivered; + if (carbTime == 0) + t.carbs = (double) result.carbsDelivered; // with different carbTime record will come back from nightscout + t.created_at = new Date(); + t.mealBolus = result.carbsDelivered > 0; + MainApp.getDbHelper().create(t); + t.setTimeIndex(t.getTimeIndex()); + t.carbs = (double) result.carbsDelivered; + uploadBolusWizardRecord(t, glucose, glucoseType, carbTime, boluscalc); + } + } else { + if (Config.logCongigBuilderActions) + log.debug("Creating treatment: " + insulin + " carbs: " + carbs); + Treatment t = new Treatment(insulinType); + t.insulin = insulin; + t.carbs = (double) carbs; t.created_at = new Date(); - t.mealBolus = result.carbsDelivered > 0; + t.mealBolus = t.carbs > 0; MainApp.getDbHelper().create(t); t.setTimeIndex(t.getTimeIndex()); - t.carbs = (double) result.carbsDelivered; - uploadBolusWizardRecord(t, glucose, glucoseType, carbTime, boluscalc); + t.sendToNSClient(); + result = new PumpEnactResult(); + result.success = true; + result.bolusDelivered = insulin; + result.carbsDelivered = carbs; } mWakeLock.release(); return result; } @Override - public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) { - return deliverTreatment(insulin, carbs, context, true); + public PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context) { + return deliverTreatment(insulinType, insulin, carbs, context, true); } - public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context, boolean createTreatment) { + public PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context, boolean createTreatment) { mWakeLock.acquire(); - insulin = applyBolusConstraints(insulin); - carbs = applyCarbsConstraints(carbs); + PumpEnactResult result; + if (activePump != null) { + insulin = applyBolusConstraints(insulin); + carbs = applyCarbsConstraints(carbs); - BolusProgressDialog bolusProgressDialog = null; - if (context != null ) { - bolusProgressDialog = new BolusProgressDialog(); - bolusProgressDialog.setInsulin(insulin); - bolusProgressDialog.show(((AppCompatActivity) context).getSupportFragmentManager(), "BolusProgress"); - } else { - Intent i = new Intent(); - i.putExtra("insulin", insulin.doubleValue()); - i.setClass(MainApp.instance(), BolusProgressHelperActivity.class); - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - MainApp.instance().startActivity(i); - } - - MainApp.bus().post(new EventBolusRequested(insulin)); - - PumpEnactResult result = activePump.deliverTreatment(insulin, carbs, context); - - BolusProgressDialog.bolusEnded = true; - - if (bolusProgressDialog != null && BolusProgressDialog.running) { - try { - bolusProgressDialog.dismiss(); - } catch (Exception e) { - e.printStackTrace(); // TODO: handle this better + BolusProgressDialog bolusProgressDialog = null; + if (context != null) { + bolusProgressDialog = new BolusProgressDialog(); + bolusProgressDialog.setInsulin(insulin); + bolusProgressDialog.show(((AppCompatActivity) context).getSupportFragmentManager(), "BolusProgress"); + } else { + Intent i = new Intent(); + i.putExtra("insulin", insulin.doubleValue()); + i.setClass(MainApp.instance(), BolusProgressHelperActivity.class); + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + MainApp.instance().startActivity(i); } - } - if (Config.logCongigBuilderActions) - log.debug("deliverTreatment insulin: " + insulin + " carbs: " + carbs + " success: " + result.success + " enacted: " + result.enacted + " bolusDelivered: " + result.bolusDelivered); + MainApp.bus().post(new EventBolusRequested(insulin)); - if (result.success && createTreatment) { - Treatment t = new Treatment(); - t.insulin = result.bolusDelivered; - t.carbs = (double) result.carbsDelivered; + result = activePump.deliverTreatment(insulinType, insulin, carbs, context); + + BolusProgressDialog.bolusEnded = true; + + MainApp.bus().post(new EventDismissBolusprogressIfRunning(result)); + + if (Config.logCongigBuilderActions) + log.debug("deliverTreatment insulin: " + insulin + " carbs: " + carbs + " success: " + result.success + " enacted: " + result.enacted + " bolusDelivered: " + result.bolusDelivered); + + if (result.success && createTreatment) { + Treatment t = new Treatment(insulinType); + t.insulin = result.bolusDelivered; + t.carbs = (double) result.carbsDelivered; + t.created_at = new Date(); + t.mealBolus = t.carbs > 0; + MainApp.getDbHelper().create(t); + t.setTimeIndex(t.getTimeIndex()); + t.sendToNSClient(); + } + } else { + if (Config.logCongigBuilderActions) + log.debug("Creating treatment: " + insulin + " carbs: " + carbs); + Treatment t = new Treatment(insulinType); + t.insulin = insulin; + t.carbs = (double) carbs; t.created_at = new Date(); t.mealBolus = t.carbs > 0; MainApp.getDbHelper().create(t); t.setTimeIndex(t.getTimeIndex()); t.sendToNSClient(); + result = new PumpEnactResult(); + result.success = true; + result.bolusDelivered = insulin; + result.carbsDelivered = carbs; } mWakeLock.release(); return result; @@ -682,7 +761,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain public String deviceID() { if (activePump != null) return activePump.deviceID(); - else return "Unknown"; + else return "No Pump active!"; } @Override @@ -825,11 +904,6 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain return maxIobAfterConstrain; } - @Subscribe - public void onStatusEvent(final EventNewBG ev) { - uploadDeviceStatus(120); - } - public void uploadTempBasalStartAbsolute(Double absolute, double durationInMinutes) { try { Context context = MainApp.instance().getApplicationContext(); @@ -933,7 +1007,7 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain } } - public void doUploadDeviceStatus() { + public void uploadDeviceStatus() { DeviceStatus deviceStatus = new DeviceStatus(); try { LoopPlugin.LastRun lastRun = LoopPlugin.lastRun; @@ -966,39 +1040,27 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain requested.put("temp", "absolute"); deviceStatus.enacted.put("requested", requested); } + } else { + log.debug("OpenAPS data too old to upload"); } if (activePump != null) { deviceStatus.device = "openaps://" + deviceID(); JSONObject pumpstatus = getJSONStatus(); if (pumpstatus != null) { - deviceStatus.pump = getJSONStatus(); + deviceStatus.pump = pumpstatus; } - - deviceStatus.created_at = DateUtil.toISOString(new Date()); - - deviceStatus.sendToNSClient(); } + + int batteryLevel = BatteryLevel.getBatteryLevel(); + deviceStatus.uploaderBattery = batteryLevel; + + deviceStatus.created_at = DateUtil.toISOString(new Date()); + deviceStatus.sendToNSClient(); } catch (JSONException e) { e.printStackTrace(); } } - static public void uploadDeviceStatus(int sec) { - class PostRunnable implements Runnable { - public void run() { - MainApp.getConfigBuilder().doUploadDeviceStatus(); - scheduledPost = null; - } - } - // prepare task for execution - // cancel waiting task to prevent sending multiple posts - if (scheduledPost != null) - scheduledPost.cancel(false); - Runnable task = new PostRunnable(); - scheduledPost = worker.schedule(task, sec, TimeUnit.SECONDS); - log.debug("Scheduling devicestatus upload in " + sec + " sec"); - } - public void uploadBolusWizardRecord(Treatment t, double glucose, String glucoseType, int carbTime, JSONObject boluscalc) { JSONObject data = new JSONObject(); try { @@ -1088,24 +1150,26 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain } public void uploadAppStart() { - Context context = MainApp.instance().getApplicationContext(); - Bundle bundle = new Bundle(); - bundle.putString("action", "dbAdd"); - bundle.putString("collection", "treatments"); - JSONObject data = new JSONObject(); - try { - data.put("eventType", "Note"); - data.put("created_at", DateUtil.toISOString(new Date())); - data.put("notes", MainApp.sResources.getString(R.string.androidaps_start)); - } catch (JSONException e) { - e.printStackTrace(); + if (SP.getBoolean(R.string.key_ns_logappstartedevent, true)) { + Context context = MainApp.instance().getApplicationContext(); + Bundle bundle = new Bundle(); + bundle.putString("action", "dbAdd"); + bundle.putString("collection", "treatments"); + JSONObject data = new JSONObject(); + try { + data.put("eventType", "Note"); + data.put("created_at", DateUtil.toISOString(new Date())); + data.put("notes", MainApp.sResources.getString(R.string.androidaps_start)); + } catch (JSONException e) { + e.printStackTrace(); + } + bundle.putString("data", data.toString()); + Intent intent = new Intent(Intents.ACTION_DATABASE); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + DbLogger.dbAdd(intent, data.toString(), ConfigBuilderPlugin.class); } - bundle.putString("data", data.toString()); - Intent intent = new Intent(Intents.ACTION_DATABASE); - intent.putExtras(bundle); - intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); - context.sendBroadcast(intent); - DbLogger.dbAdd(intent, data.toString(), ConfigBuilderPlugin.class); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java index 2321d8a955..3334267057 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.Objectives; +package info.nightscout.androidaps.plugins.ConstraintsObjectives; import android.app.Activity; import android.content.Context; @@ -7,7 +7,6 @@ import android.support.v4.app.Fragment; import android.support.v7.widget.CardView; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.text.Layout; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,9 +23,8 @@ import java.util.List; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; -public class ObjectivesFragment extends Fragment implements View.OnClickListener, FragmentBase { +public class ObjectivesFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(ObjectivesFragment.class); private static ObjectivesPlugin objectivesPlugin; @@ -44,15 +42,6 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener LinearLayout fake_layout; TextView reset; - @Override - public void onClick(View v) { - int id = v.getId(); - switch (id) { - default: - break; - } - } - public class RecyclerViewAdapter extends RecyclerView.Adapter { List objectives; @@ -237,16 +226,4 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener }); } - @Override - public void onPause() { - super.onPause(); - MainApp.bus().unregister(this); - } - - @Override - public void onResume() { - super.onResume(); - MainApp.bus().register(this); - } - } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java similarity index 91% rename from app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java index 030878b6e9..b6f4e57acd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.Objectives; +package info.nightscout.androidaps.plugins.ConstraintsObjectives; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -16,7 +16,7 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.ConstraintsInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; -import info.nightscout.utils.SafeParse; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -76,6 +76,16 @@ public class ObjectivesPlugin implements PluginBase, ConstraintsInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { } @@ -152,7 +162,7 @@ public class ObjectivesPlugin implements PluginBase, ConstraintsInterface { MainApp.sResources.getString(R.string.objectives_0_objective), MainApp.sResources.getString(R.string.objectives_0_gate), new Date(0), - 1, // 1 day + 0, // 0 day new Date(0))); objectives.add(new Objective(1, MainApp.sResources.getString(R.string.objectives_1_objective), @@ -211,20 +221,19 @@ public class ObjectivesPlugin implements PluginBase, ConstraintsInterface { } void loadProgress() { - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); for (int num = 0; num < objectives.size(); num++) { Objective o = objectives.get(num); try { - o.started = new Date(SafeParse.stringToLong(settings.getString("Objectives" + num + "started", "0"))); - o.accomplished = new Date(SafeParse.stringToLong(settings.getString("Objectives" + num + "accomplished", "0"))); + o.started = new Date(SP.getLong("Objectives" + num + "started", 0L)); + o.accomplished = new Date(SP.getLong("Objectives" + num + "accomplished", 0L)); } catch (Exception e) { e.printStackTrace(); } } - bgIsAvailableInNS = settings.getBoolean("Objectives" + "bgIsAvailableInNS", false); - pumpStatusIsAvailableInNS = settings.getBoolean("Objectives" + "pumpStatusIsAvailableInNS", false); + bgIsAvailableInNS = SP.getBoolean("Objectives" + "bgIsAvailableInNS", false); + pumpStatusIsAvailableInNS = SP.getBoolean("Objectives" + "pumpStatusIsAvailableInNS", false); try { - manualEnacts = SafeParse.stringToInt(settings.getString("Objectives" + "manualEnacts", "0")); + manualEnacts = SP.getInt("Objectives" + "manualEnacts", 0); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SafetyFragment/SafetyFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyFragment.java similarity index 63% rename from app/src/main/java/info/nightscout/androidaps/plugins/SafetyFragment/SafetyFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyFragment.java index 5742249206..07583e7622 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SafetyFragment/SafetyFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.SafetyFragment; +package info.nightscout.androidaps.plugins.ConstraintsSafety; import android.support.v4.app.Fragment; @@ -6,9 +6,7 @@ import android.support.v4.app.Fragment; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import info.nightscout.androidaps.interfaces.FragmentBase; - -public class SafetyFragment extends Fragment implements FragmentBase{ +public class SafetyFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(SafetyFragment.class); private static SafetyPlugin safetyPlugin = new SafetyPlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SafetyFragment/SafetyPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java similarity index 79% rename from app/src/main/java/info/nightscout/androidaps/plugins/SafetyFragment/SafetyPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java index d9bff5a4cd..cdf7f554ee 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SafetyFragment/SafetyPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java @@ -1,7 +1,4 @@ -package info.nightscout.androidaps.plugins.SafetyFragment; - -import android.content.SharedPreferences; -import android.preference.PreferenceManager; +package info.nightscout.androidaps.plugins.ConstraintsSafety; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,9 +10,10 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.ConstraintsInterface; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.HardLimits; import info.nightscout.utils.Round; -import info.nightscout.utils.SafeParse; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -59,6 +57,16 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { return true; } + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return false; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { @@ -78,7 +86,6 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { **/ @Override public boolean isClosedModeEnabled() { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); String mode = SP.getString("aps_mode", "open"); return mode.equals("closed") && BuildConfig.CLOSEDLOOP; } @@ -96,15 +103,14 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { @Override public Double applyBasalConstraints(Double absoluteRate) { Double origAbsoluteRate = absoluteRate; - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - Double maxBasal = SafeParse.stringToDouble(SP.getString("openapsma_max_basal", "1")); + Double maxBasal = SP.getDouble("openapsma_max_basal", 1d); NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); if (profile == null) return absoluteRate; if (absoluteRate < 0) absoluteRate = 0d; - Integer maxBasalMult = SafeParse.stringToInt(SP.getString("openapsama_current_basal_safety_multiplier", "4")); - Integer maxBasalFromDaily = SafeParse.stringToInt(SP.getString("openapsama_max_daily_safety_multiplier", "3")); + Integer maxBasalMult = SP.getInt("openapsama_current_basal_safety_multiplier", 4); + Integer maxBasalFromDaily = SP.getInt("openapsama_max_daily_safety_multiplier", 3); // Check percentRate but absolute rate too, because we know real current basal in pump Double origRate = absoluteRate; if (absoluteRate > maxBasal) { @@ -128,8 +134,7 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { @Override public Integer applyBasalConstraints(Integer percentRate) { Integer origPercentRate = percentRate; - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - Double maxBasal = SafeParse.stringToDouble(SP.getString("openapsma_max_basal", "1")); + Double maxBasal = SP.getDouble("openapsma_max_basal", 1d); NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); if (profile == null) return percentRate; @@ -142,8 +147,8 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { if (absoluteRate < 0) absoluteRate = 0d; - Integer maxBasalMult = SafeParse.stringToInt(SP.getString("openapsama_current_basal_safety_multiplier", "4")); - Integer maxBasalFromDaily = SafeParse.stringToInt(SP.getString("openapsama_max_daily_safety_multiplier", "3")); + Integer maxBasalMult = SP.getInt("openapsama_current_basal_safety_multiplier", 4); + Integer maxBasalFromDaily = SP.getInt("openapsama_max_daily_safety_multiplier", 3); // Check percentRate but absolute rate too, because we know real current basal in pump Double origRate = absoluteRate; if (absoluteRate > maxBasal) { @@ -174,24 +179,22 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { @Override public Double applyBolusConstraints(Double insulin) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); try { - Double maxBolus = SafeParse.stringToDouble(SP.getString("treatmentssafety_maxbolus", "3")); + Double maxBolus = SP.getDouble("treatmentssafety_maxbolus", 3d); if (insulin < 0) insulin = 0d; if (insulin > maxBolus) insulin = maxBolus; } catch (Exception e) { insulin = 0d; } - if (insulin > BuildConfig.MAXBOLUS) insulin = Double.valueOf(BuildConfig.MAXBOLUS); + if (insulin > HardLimits.maxBolus()) insulin = HardLimits.maxBolus(); return insulin; } @Override public Integer applyCarbsConstraints(Integer carbs) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); try { - Integer maxCarbs = SafeParse.stringToInt(SP.getString("treatmentssafety_maxcarbs", "48")); + Integer maxCarbs = SP.getInt("treatmentssafety_maxcarbs", 48); if (carbs < 0) carbs = 0; if (carbs > maxCarbs) carbs = maxCarbs; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRConnectionStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRConnectionStatus.java deleted file mode 100644 index fef8868d2b..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRConnectionStatus.java +++ /dev/null @@ -1,23 +0,0 @@ -package info.nightscout.androidaps.plugins.DanaR.events; - -public class EventDanaRConnectionStatus { - public static final int CONNECTING = 0; - public static final int CONNECTED = 1; - public static final int DISCONNECTED = 2; - public static final int PERFORMING = 3; - - public int sStatus = DISCONNECTED; - public int sSecondsElapsed = 0; - public String sAction = ""; - - public EventDanaRConnectionStatus(int status, int secondsElapsed) { - sStatus = status; - sSecondsElapsed = secondsElapsed; - } - - public EventDanaRConnectionStatus(int status, int secondsElapsed, String action) { - sStatus = status; - sSecondsElapsed = secondsElapsed; - sAction = action; - } -} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java new file mode 100644 index 0000000000..abc768afdc --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java @@ -0,0 +1,78 @@ +package info.nightscout.androidaps.plugins.InsulinFastacting; + +import android.content.Context; +import android.graphics.Color; +import android.util.AttributeSet; + +import com.jjoe64.graphview.GraphView; +import com.jjoe64.graphview.series.DataPoint; +import com.jjoe64.graphview.series.LineGraphSeries; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.db.Treatment; +import info.nightscout.androidaps.interfaces.InsulinInterface; +import info.nightscout.androidaps.plugins.Overview.graphExtensions.TimeAsXAxisLabelFormatter; + +/** + * Created by mike on 21.04.2017. + */ + +public class ActivityGraph extends GraphView { + + Context context; + + public ActivityGraph(Context context) { + super(context); + this.context = context; + } + + public ActivityGraph(Context context, AttributeSet attrs) { + super(context, attrs); + this.context = context; + } + + public void show(InsulinInterface insulin) { + double dia = insulin.getDia(); + int hours = (int) Math.floor(dia + 1); + + Treatment t = new Treatment(insulin); + t.created_at = new Date(0); + t.timeIndex = 0; + t.insulin = 1d; + + LineGraphSeries activitySeries = null; + LineGraphSeries iobSeries = null; + List activityArray = new ArrayList(); + List iobArray = new ArrayList(); + + for (long time = 0; time <= hours * 60 * 60 * 1000; time += 5 * 60 * 1000L) { + Iob iob = insulin.iobCalc(t, time, dia); + activityArray.add(new DataPoint(time / 60 / 1000, iob.activityContrib)); + iobArray.add(new DataPoint(time / 60 / 1000, iob.iobContrib)); + } + + DataPoint[] activityDataPoints = new DataPoint[activityArray.size()]; + activityDataPoints = activityArray.toArray(activityDataPoints); + addSeries(activitySeries = new LineGraphSeries(activityDataPoints)); + activitySeries.setThickness(8); + + getViewport().setXAxisBoundsManual(true); + getViewport().setMinX(0); + getViewport().setMaxX(hours * 60); + getGridLabelRenderer().setNumHorizontalLabels(hours + 1); + getGridLabelRenderer().setHorizontalAxisTitle("[min]"); + + DataPoint[] iobDataPoints = new DataPoint[iobArray.size()]; + iobDataPoints = iobArray.toArray(iobDataPoints); + getSecondScale().addSeries(iobSeries = new LineGraphSeries(iobDataPoints)); + iobSeries.setDrawBackground(true); + iobSeries.setColor(Color.MAGENTA); + iobSeries.setBackgroundColor(Color.argb(70, 255, 0, 255)); + getSecondScale().setMinY(0); + getSecondScale().setMaxY(1); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java new file mode 100644 index 0000000000..a99e016621 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java @@ -0,0 +1,46 @@ +package info.nightscout.androidaps.plugins.InsulinFastacting; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; + +/** + * Created by mike on 17.04.2017. + */ + +public class InsulinFastactingFragment extends Fragment { + static InsulinFastactingPlugin insulinFastactingPlugin = new InsulinFastactingPlugin(); + + static public InsulinFastactingPlugin getPlugin() { + return insulinFastactingPlugin; + } + + TextView insulinName; + TextView insulinComment; + TextView insulinDia; + ActivityGraph insulinGraph; + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.insulin_fragment, container, false); + + insulinName = (TextView) view.findViewById(R.id.insulin_name); + insulinComment = (TextView) view.findViewById(R.id.insulin_comment); + insulinDia = (TextView) view.findViewById(R.id.insulin_dia); + insulinGraph = (ActivityGraph) view.findViewById(R.id.insuling_graph); + + insulinName.setText(insulinFastactingPlugin.getFriendlyName()); + insulinComment.setText(insulinFastactingPlugin.getComment()); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinFastactingPlugin.getDia()).toString() + "h"); + insulinGraph.show(insulinFastactingPlugin); + + return view; + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java new file mode 100644 index 0000000000..9773c20f55 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingPlugin.java @@ -0,0 +1,129 @@ +package info.nightscout.androidaps.plugins.InsulinFastacting; + +import java.util.Date; + +import info.nightscout.androidaps.Constants; +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.db.Treatment; +import info.nightscout.androidaps.interfaces.InsulinInterface; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.interfaces.ProfileInterface; + +/** + * Created by mike on 17.04.2017. + */ + +public class InsulinFastactingPlugin implements PluginBase, InsulinInterface { + + private static boolean fragmentEnabled = true; + private static boolean fragmentVisible = false; + + @Override + public int getType() { + return INSULIN; + } + + @Override + public String getFragmentClass() { + return InsulinFastactingFragment.class.getName(); + } + + @Override + public String getName() { + return MainApp.sResources.getString(R.string.fastactinginsulin); + } + + @Override + public String getNameShort() { + return MainApp.sResources.getString(R.string.insulin_shortname); + } + + @Override + public boolean isEnabled(int type) { + return type == INSULIN && fragmentEnabled; + } + + @Override + public boolean isVisibleInTabs(int type) { + return type == INSULIN && fragmentVisible; + } + + @Override + public boolean canBeHidden(int type) { + return true; + } + + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + if (type == INSULIN) this.fragmentEnabled = fragmentEnabled; + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + if (type == INSULIN) this.fragmentVisible = fragmentVisible; + } + + // Insulin interface + @Override + public int getId() { + return FASTACTINGINSULIN; + } + + @Override + public String getFriendlyName() { + return MainApp.sResources.getString(R.string.fastactinginsulin); + } + + @Override + public String getComment() { + return MainApp.sResources.getString(R.string.fastactinginsulincomment); + } + + @Override + public double getDia() { + ProfileInterface profileInterface = MainApp.getConfigBuilder().getActiveProfile(); + if (profileInterface.getProfile() != null) + return profileInterface.getProfile().getDia(); + return Constants.defaultDIA; + } + + @Override + public Iob iobCalc(Treatment treatment, long time, Double dia) { + Iob result = new Iob(); + + Double scaleFactor = 3.0 / dia; + Double peak = 75d; + Double end = 180d; + + if (treatment.insulin != 0d) { + Long bolusTime = treatment.created_at.getTime(); + Double minAgo = scaleFactor * (time - bolusTime) / 1000d / 60d; + + if (minAgo < peak) { + Double x1 = minAgo / 5d + 1; + result.iobContrib = treatment.insulin * (1 - 0.001852 * x1 * x1 + 0.001852 * x1); + // units: BG (mg/dL) = (BG/U) * U insulin * scalar + result.activityContrib = treatment.insulin * (2 / dia / 60 / peak) * minAgo; + + } else if (minAgo < end) { + Double x2 = (minAgo - 75) / 5; + result.iobContrib = treatment.insulin * (0.001323 * x2 * x2 - 0.054233 * x2 + 0.55556); + result.activityContrib = treatment.insulin * (2 / dia / 60 - (minAgo - peak) * 2 / dia / 60 / (60 * 3 - peak)); + } + } + return result; + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java new file mode 100644 index 0000000000..acc915b001 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java @@ -0,0 +1,47 @@ +package info.nightscout.androidaps.plugins.InsulinFastactingProlonged; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.plugins.InsulinFastacting.ActivityGraph; + +/** + * Created by mike on 17.04.2017. + */ + +public class InsulinFastactingProlongedFragment extends Fragment { + static InsulinFastactingProlongedPlugin insulinFastactingProlongedPlugin = new InsulinFastactingProlongedPlugin(); + + static public InsulinFastactingProlongedPlugin getPlugin() { + return insulinFastactingProlongedPlugin; + } + + TextView insulinName; + TextView insulinComment; + TextView insulinDia; + ActivityGraph insulinGraph; + + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.insulin_fragment, container, false); + + insulinName = (TextView) view.findViewById(R.id.insulin_name); + insulinComment = (TextView) view.findViewById(R.id.insulin_comment); + insulinDia = (TextView) view.findViewById(R.id.insulin_dia); + insulinGraph = (ActivityGraph) view.findViewById(R.id.insuling_graph); + + insulinName.setText(insulinFastactingProlongedPlugin.getFriendlyName()); + insulinComment.setText(insulinFastactingProlongedPlugin.getComment()); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinFastactingProlongedPlugin.getDia()).toString() + "h"); + insulinGraph.show(insulinFastactingProlongedPlugin); + + return view; + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java new file mode 100644 index 0000000000..58d644043c --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedPlugin.java @@ -0,0 +1,134 @@ +package info.nightscout.androidaps.plugins.InsulinFastactingProlonged; + +import java.util.Date; + +import info.nightscout.androidaps.Constants; +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.db.Treatment; +import info.nightscout.androidaps.interfaces.InsulinInterface; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.interfaces.ProfileInterface; + +/** + * Created by mike on 17.04.2017. + */ + +public class InsulinFastactingProlongedPlugin implements PluginBase, InsulinInterface { + + private static boolean fragmentEnabled = false; + private static boolean fragmentVisible = false; + + @Override + public int getType() { + return INSULIN; + } + + @Override + public String getFragmentClass() { + return InsulinFastactingProlongedFragment.class.getName(); + } + + @Override + public String getName() { + return MainApp.sResources.getString(R.string.fastactinginsulinprolonged); + } + + @Override + public String getNameShort() { + return MainApp.sResources.getString(R.string.insulin_shortname); + } + + @Override + public boolean isEnabled(int type) { + return type == INSULIN && fragmentEnabled; + } + + @Override + public boolean isVisibleInTabs(int type) { + return type == INSULIN && fragmentVisible; + } + + @Override + public boolean canBeHidden(int type) { + return true; + } + + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + if (type == INSULIN) this.fragmentEnabled = fragmentEnabled; + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + if (type == INSULIN) this.fragmentVisible = fragmentVisible; + } + + // Insulin interface + @Override + public int getId() { + return FASTACTINGINSULINPROLONGED; + } + + @Override + public String getFriendlyName() { + return MainApp.sResources.getString(R.string.fastactinginsulinprolonged); + } + + @Override + public String getComment() { + return MainApp.sResources.getString(R.string.fastactinginsulincomment); + } + + @Override + public double getDia() { + ProfileInterface profileInterface = MainApp.getConfigBuilder().getActiveProfile(); + if (profileInterface.getProfile() != null) + return profileInterface.getProfile().getDia(); + return Constants.defaultDIA; + } + + @Override + public Iob iobCalc(Treatment treatment, long time, Double dia) { + Iob result = new Iob(); + + //Double scaleFactor = 3.0 / dia; + Double peak = 75d * dia / 6.0; + Double tail = 180d * dia / 6.0; + Double end = 360d * dia / 6.0; + Double Total = 2 * peak + (tail - peak) * 5 / 2 + (end - tail) / 2; + + if (treatment.insulin != 0d) { + Long bolusTime = treatment.created_at.getTime(); + Double minAgo = (time - bolusTime) / 1000d / 60d; + + if (minAgo < peak) { + Double x1 = 6 / dia * minAgo / 5d + 1; + result.iobContrib = treatment.insulin * (1 - 0.0012595 * x1 * x1 + 0.0012595 * x1); + // units: BG (mg/dL) = (BG/U) * U insulin * scalar + result.activityContrib = treatment.insulin * ((2 * peak / Total) * 2 / peak / peak * minAgo); + } else if (minAgo < tail) { + Double x2 = (6 / dia * (minAgo - peak)) / 5; + result.iobContrib = treatment.insulin * (0.00074 * x2 * x2 - 0.0403 * x2 + 0.69772); + result.activityContrib = treatment.insulin * (-((2 * peak / Total) * 2 / peak * 3 / 4) / (tail - peak) * (minAgo - peak) + (2 * peak / Total) * 2 / peak); + } else if (minAgo < end) { + Double x3 = (6 / dia * (minAgo - tail)) / 5; + result.iobContrib = treatment.insulin * (0.0001323 * x3 * x3 - 0.0097 * x3 + 0.17776); + result.activityContrib = treatment.insulin * (-((2 * peak / Total) * 2 / peak * 1 / 4) / (end - tail) * (minAgo - tail) + (2 * peak / Total) * 2 / peak / 4); + } + + } + return result; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/AutosensData.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/AutosensData.java new file mode 100644 index 0000000000..7210a171b6 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/AutosensData.java @@ -0,0 +1,22 @@ +package info.nightscout.androidaps.plugins.IobCobCalculator; + +import java.util.Date; + +/** + * Created by mike on 25.04.2017. + */ + +public class AutosensData { + long time = 0L; + String pastSensitivity = ""; + double deviation = 0d; + boolean calculateWithDeviation = false; + double absorbed = 0d; + double carbsFromBolus = 0d; + public double cob = 0; + + public String log(long time) { + return "AutosensData: " + new Date(time).toLocaleString() + " " + pastSensitivity + " Deviation=" + deviation + " Absorbed=" + absorbed + " CarbsFromBolus=" + carbsFromBolus + " COB=" + cob; + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/AutosensResult.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/AutosensResult.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/AutosensResult.java rename to app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/AutosensResult.java index 811fee0f39..1e40005b36 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/AutosensResult.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/AutosensResult.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.OpenAPSAMA; +package info.nightscout.androidaps.plugins.IobCobCalculator; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorFragment.java new file mode 100644 index 0000000000..db1db95998 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorFragment.java @@ -0,0 +1,16 @@ +package info.nightscout.androidaps.plugins.IobCobCalculator; + +import android.support.v4.app.Fragment; + +/** + * Created by adrian on 17/11/16. + */ + +public class IobCobCalculatorFragment extends Fragment { + + private static IobCobCalculatorPlugin iobCobCalculatorPlugin = new IobCobCalculatorPlugin(); + + public static IobCobCalculatorPlugin getPlugin() { + return iobCobCalculatorPlugin; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java new file mode 100644 index 0000000000..4941639528 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/IobCobCalculatorPlugin.java @@ -0,0 +1,571 @@ +package info.nightscout.androidaps.plugins.IobCobCalculator; + +import android.os.Handler; +import android.os.HandlerThread; +import android.support.annotation.Nullable; +import android.support.v4.util.LongSparseArray; + +import com.squareup.otto.Subscribe; + +import org.json.JSONArray; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import info.nightscout.androidaps.Config; +import info.nightscout.androidaps.Constants; +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.data.IobTotal; +import info.nightscout.androidaps.db.BgReading; +import info.nightscout.androidaps.db.Treatment; +import info.nightscout.androidaps.events.EventNewBG; +import info.nightscout.androidaps.events.EventNewBasalProfile; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.interfaces.TreatmentsInterface; +import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventAutosensCalculationFinished; +import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventNewHistoryData; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.Round; +import info.nightscout.utils.SP; +import info.nightscout.utils.SafeParse; + +/** + * Created by mike on 24.04.2017. + */ + +public class IobCobCalculatorPlugin implements PluginBase { + private static Logger log = LoggerFactory.getLogger(IobCobCalculatorPlugin.class); + + private static LongSparseArray iobTable = new LongSparseArray<>(); // oldest at index 0 + private static LongSparseArray autosensDataTable = new LongSparseArray<>(); // oldest at index 0 + + private static volatile List bgReadings = null; // newest at index 0 + private static volatile List bucketed_data = null; + + private static double dia = Constants.defaultDIA; + + private static Handler sHandler = null; + private static HandlerThread sHandlerThread = null; + + private static Object dataLock = new Object(); + + @Override + public int getType() { + return GENERAL; + } + + @Override + public String getFragmentClass() { + return IobCobCalculatorFragment.class.getName(); + } + + @Override + public String getName() { + return "IOB COB Calculator"; + } + + @Override + public String getNameShort() { + return "IOC"; + } + + @Override + public boolean isEnabled(int type) { + return type == GENERAL; + } + + @Override + public boolean isVisibleInTabs(int type) { + return false; + } + + @Override + public boolean canBeHidden(int type) { + return false; + } + + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return false; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + + } + + public IobCobCalculatorPlugin() { + MainApp.bus().register(this); + if (sHandlerThread == null) { + sHandlerThread = new HandlerThread(IobCobCalculatorPlugin.class.getSimpleName()); + sHandlerThread.start(); + sHandler = new Handler(sHandlerThread.getLooper()); + } + onNewBg(new EventNewBG()); + } + + @Nullable + public static List getBucketedData(long fromTime) { + //log.debug("Locking getBucketedData"); + synchronized (dataLock) { + if (bucketed_data == null) { + log.debug("No bucketed data available"); + return null; + } + int index = indexNewerThan(fromTime); + if (index > -1) { + List part = bucketed_data.subList(0, index); + log.debug("Bucketed data striped off: " + part.size() + "/" + bucketed_data.size()); + return part; + } + } + //log.debug("Releasing getBucketedData"); + return null; + } + + private static int indexNewerThan(long time) { + for (int index = 0; index < bucketed_data.size(); index++) { + if (bucketed_data.get(index).timeIndex < time) + return index - 1; + } + return -1; + } + + public static long roundUpTime(long time) { + if (time % 60000 == 0) + return time; + long rouded = (time / 60000 + 1) * 60000; + return rouded; + } + + private void loadBgData() { + //log.debug("Locking loadBgData"); + synchronized (dataLock) { + onNewProfile(new EventNewBasalProfile(null)); + bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime((long) (new Date().getTime() - 60 * 60 * 1000L * (24 + dia)), false); + log.debug("BG data loaded. Size: " + bgReadings.size()); + } + //log.debug("Releasing loadBgData"); + } + + public void createBucketedData() { + //log.debug("Locking createBucketedData"); + synchronized (dataLock) { + if (bgReadings == null || bgReadings.size() < 3) { + bucketed_data = null; + return; + } + + bucketed_data = new ArrayList<>(); + bucketed_data.add(bgReadings.get(0)); + int j = 0; + for (int i = 1; i < bgReadings.size(); ++i) { + long bgTime = bgReadings.get(i).getTimeIndex(); + long lastbgTime = bgReadings.get(i - 1).getTimeIndex(); + //log.error("Processing " + i + ": " + new Date(bgTime).toString() + " " + bgReadings.get(i).value + " Previous: " + new Date(lastbgTime).toString() + " " + bgReadings.get(i - 1).value); + if (bgReadings.get(i).value < 39 || bgReadings.get(i - 1).value < 39) { + continue; + } + + long elapsed_minutes = (bgTime - lastbgTime) / (60 * 1000); + if (Math.abs(elapsed_minutes) > 8) { + // interpolate missing data points + double lastbg = bgReadings.get(i - 1).value; + elapsed_minutes = Math.abs(elapsed_minutes); + //console.error(elapsed_minutes); + long nextbgTime; + while (elapsed_minutes > 5) { + nextbgTime = lastbgTime - 5 * 60 * 1000; + j++; + BgReading newBgreading = new BgReading(); + newBgreading.timeIndex = nextbgTime; + double gapDelta = bgReadings.get(i).value - lastbg; + //console.error(gapDelta, lastbg, elapsed_minutes); + double nextbg = lastbg + (5d / elapsed_minutes * gapDelta); + newBgreading.value = Math.round(nextbg); + //console.error("Interpolated", bucketed_data[j]); + bucketed_data.add(newBgreading); + //log.error("******************************************************************************************************* Adding:" + new Date(newBgreading.timeIndex).toString() + " " + newBgreading.value); + + elapsed_minutes = elapsed_minutes - 5; + lastbg = nextbg; + lastbgTime = nextbgTime; + } + j++; + BgReading newBgreading = new BgReading(); + newBgreading.value = bgReadings.get(i).value; + newBgreading.timeIndex = bgTime; + bucketed_data.add(newBgreading); + //log.error("******************************************************************************************************* Copying:" + new Date(newBgreading.timeIndex).toString() + " " + newBgreading.value); + } else if (Math.abs(elapsed_minutes) > 2) { + j++; + BgReading newBgreading = new BgReading(); + newBgreading.value = bgReadings.get(i).value; + newBgreading.timeIndex = bgTime; + bucketed_data.add(newBgreading); + //log.error("******************************************************************************************************* Copying:" + new Date(newBgreading.timeIndex).toString() + " " + newBgreading.value); + } else { + bucketed_data.get(j).value = (bucketed_data.get(j).value + bgReadings.get(i).value) / 2; + //log.error("***** Average"); + } + } + log.debug("Bucketed data created. Size: " + bucketed_data.size()); + } + //log.debug("Releasing createBucketedData"); + } + + public void calculateSensitivityData() { + //log.debug("Locking calculateSensitivityData"); + synchronized (dataLock) { + NSProfile profile = ConfigBuilderPlugin.getActiveProfile() != null ? ConfigBuilderPlugin.getActiveProfile().getProfile() : null; + + if (profile == null) { + log.debug("calculateSensitivityData: No profile available"); + return; + } + + if (ConfigBuilderPlugin.getActiveTreatments() == null) { + log.debug("calculateSensitivityData: No treatments plugin"); + return; + } + + TreatmentsInterface treatmentsInterface = ConfigBuilderPlugin.getActiveTreatments(); + if (bucketed_data == null || bucketed_data.size() < 3) { + log.debug("calculateSensitivityData: No bucketed data available"); + return; + } + + long prevDataTime = roundUpTime(bucketed_data.get(bucketed_data.size() - 3).timeIndex); + log.debug("Prev data time: " + new Date(prevDataTime).toLocaleString()); + AutosensData previous = autosensDataTable.get(prevDataTime); + // start from oldest to be able sub cob + for (int i = bucketed_data.size() - 4; i >= 0; i--) { + // check if data already exists + long bgTime = bucketed_data.get(i).timeIndex; + bgTime = roundUpTime(bgTime); + + AutosensData existing; + if ((existing = autosensDataTable.get(bgTime)) != null) { + previous = existing; + continue; + } + + int secondsFromMidnight = NSProfile.secondsFromMidnight(bgTime); + double sens = NSProfile.toMgdl(profile.getIsf(secondsFromMidnight), profile.getUnits()); + + AutosensData autosensData = new AutosensData(); + autosensData.time = bgTime; + + //console.error(bgTime , bucketed_data[i].glucose); + double bg; + double avgDelta; + double delta; + bg = bucketed_data.get(i).value; + if (bg < 39 || bucketed_data.get(i + 3).value < 39) { + log.error("! value < 39"); + continue; + } + avgDelta = (bg - bucketed_data.get(i + 3).value) / 3; + delta = (bg - bucketed_data.get(i + 1).value); + + IobTotal iob = calulateFromTreatmentsAndTemps(bgTime); + + double bgi = Math.round((-iob.activity * sens * 5) * 100) / 100d; + double deviation = delta - bgi; + + List recentTreatments = treatmentsInterface.getTreatments5MinBack(bgTime); + for (int ir = 0; ir < recentTreatments.size(); ir++) { + autosensData.carbsFromBolus += recentTreatments.get(ir).carbs; + } + + // if we are absorbing carbs + if (previous != null && previous.cob > 0) { + // figure out how many carbs that represents + // but always assume at least 3mg/dL/5m (default) absorption + double ci = Math.max(deviation, SP.getDouble("openapsama_min_5m_carbimpact", 3.0)); + autosensData.absorbed = ci * profile.getIc(secondsFromMidnight) / sens; + // and add that to the running total carbsAbsorbed + autosensData.cob = Math.max(previous.cob - autosensData.absorbed, 0d); + } + autosensData.cob += autosensData.carbsFromBolus; + autosensData.deviation = deviation; + + // calculate autosens only without COB + if (autosensData.cob <= 0) { + if (deviation > 0) { + autosensData.pastSensitivity += "+"; + } else if (deviation == 0) { + autosensData.pastSensitivity += "="; + } else { + autosensData.pastSensitivity += "-"; + } + autosensData.calculateWithDeviation = true; + } else { + autosensData.pastSensitivity += "C"; + } + //log.debug("TIME: " + new Date(bgTime).toString() + " BG: " + bg + " SENS: " + sens + " DELTA: " + delta + " AVGDELTA: " + avgDelta + " IOB: " + iob.iob + " ACTIVITY: " + iob.activity + " BGI: " + bgi + " DEVIATION: " + deviation); + + previous = autosensData; + autosensDataTable.put(bgTime, autosensData); + log.debug(autosensData.log(bgTime)); + } + } + MainApp.bus().post(new EventAutosensCalculationFinished()); + //log.debug("Releasing calculateSensitivityData"); + } + + public static IobTotal calulateFromTreatmentsAndTemps(long time) { + long now = new Date().getTime(); + time = roundUpTime(time); + if (time < now && iobTable.get(time) != null) { + //log.debug(">>> Cache hit"); + return iobTable.get(time); + } else { + //log.debug(">>> Cache miss " + new Date(time).toLocaleString()); + } + IobTotal bolusIob = ConfigBuilderPlugin.getActiveTreatments().getCalculationToTime(time).round(); + IobTotal basalIob = ConfigBuilderPlugin.getActiveTempBasals().getCalculationToTime(time).round(); +/* + if (basalIob.basaliob > 0) { + log.debug(new Date(time).toLocaleString() + " basaliob: " + basalIob.basaliob ); + } +*/ + IobTotal iobTotal = IobTotal.combine(bolusIob, basalIob).round(); + if (time < new Date().getTime()) { + iobTable.put(time, iobTotal); + } + return iobTotal; + } + + public static AutosensData getAutosensData(long time) { + long now = new Date().getTime(); + if (time > now) + return null; + time = roundUpTime(time); + AutosensData data = autosensDataTable.get(time); + if (data != null) { + //log.debug(">>> Cache hit " + data.log(time)); + return data; + } else { + //log.debug(">>> Cache miss " + new Date(time).toLocaleString()); + return null; + } + } + + public static AutosensData getLastAutosensData() { + AutosensData data = autosensDataTable.valueAt(autosensDataTable.size() - 1); + if (data.time < new Date().getTime() - 5 * 60 * 1000) { + return null; + } else { + return data; + } + } + + public static IobTotal[] calculateIobArrayInDia() { + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); + // predict IOB out to DIA plus 30m + long time = new Date().getTime(); + int len = (int) ((profile.getDia() * 60 + 30) / 5); + IobTotal[] array = new IobTotal[len]; + int pos = 0; + for (int i = 0; i < len; i++) { + long t = time + i * 5 * 60000; + IobTotal iob = calulateFromTreatmentsAndTemps(t); + array[pos] = iob; + pos++; + } + return array; + } + + public static AutosensResult detectSensitivity(long fromTime) { + //log.debug("Locking detectSensitivity"); + synchronized (dataLock) { + if (autosensDataTable == null || autosensDataTable.size() < 4) { + log.debug("No bucketed data available"); + return new AutosensResult(); + } + + AutosensData current = getLastAutosensData(); + if (current == null) { + log.debug("No current autosens data available"); + return new AutosensResult(); + } + + + List deviationsArray = new ArrayList<>(); + String pastSensitivity = ""; + int index = 0; + while (index < autosensDataTable.size()) { + AutosensData autosensData = autosensDataTable.valueAt(index); + + if (autosensData.time < fromTime) { + index++; + continue; + } + + if (autosensData.calculateWithDeviation) + deviationsArray.add(autosensData.deviation); + + pastSensitivity += autosensData.pastSensitivity; + int secondsFromMidnight = NSProfile.secondsFromMidnight(autosensData.time); + if (secondsFromMidnight % 3600 < 2.5 * 60 || secondsFromMidnight % 3600 > 57.5 * 60) { + pastSensitivity += "(" + Math.round(secondsFromMidnight / 3600d) + ")"; + } + index++; + } + + Double[] deviations = new Double[deviationsArray.size()]; + deviations = deviationsArray.toArray(deviations); + + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); + + double ratio = 1; + String ratioLimit = ""; + String sensResult = ""; + + log.debug("Records: " + index + " " + pastSensitivity); + Arrays.sort(deviations); + + for (double i = 0.9; i > 0.1; i = i - 0.02) { + if (percentile(deviations, (i + 0.02)) >= 0 && percentile(deviations, i) < 0) { + log.debug(Math.round(100 * i) + "% of non-meal deviations negative (target 45%-50%)"); + } + } + double pSensitive = percentile(deviations, 0.50); + double pResistant = percentile(deviations, 0.45); + + double basalOff = 0; + + if (pSensitive < 0) { // sensitive + basalOff = pSensitive * (60 / 5) / NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()); + sensResult = "Excess insulin sensitivity detected"; + } else if (pResistant > 0) { // resistant + basalOff = pResistant * (60 / 5) / NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()); + sensResult = "Excess insulin resistance detected"; + } else { + sensResult = "Sensitivity normal"; + } + log.debug(sensResult); + ratio = 1 + (basalOff / profile.getMaxDailyBasal()); + + double rawRatio = ratio; + ratio = Math.max(ratio, SafeParse.stringToDouble(SP.getString("openapsama_autosens_min", "0.7"))); + ratio = Math.min(ratio, SafeParse.stringToDouble(SP.getString("openapsama_autosens_max", "1.2"))); + + if (ratio != rawRatio) { + ratioLimit = "Ratio limited from " + rawRatio + " to " + ratio; + log.debug(ratioLimit); + } + + double newisf = Math.round(NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()) / ratio); + if (ratio != 1) { + log.debug("ISF adjusted from " + NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()) + " to " + newisf); + } + + AutosensResult output = new AutosensResult(); + output.ratio = Round.roundTo(ratio, 0.01); + output.carbsAbsorbed = Round.roundTo(current.cob, 0.01); + output.pastSensitivity = pastSensitivity; + output.ratioLimit = ratioLimit; + output.sensResult = sensResult; + return output; + } + //log.debug("Releasing detectSensitivity"); + } + + + public static JSONArray convertToJSONArray(IobTotal[] iobArray) { + JSONArray array = new JSONArray(); + for (int i = 0; i < iobArray.length; i++) { + array.put(iobArray[i].determineBasalJson()); + } + return array; + } + + @Subscribe + public void onNewBg(EventNewBG ev) { + sHandler.post(new Runnable() { + @Override + public void run() { + loadBgData(); + createBucketedData(); + calculateSensitivityData(); + } + }); + } + + @Subscribe + public void onNewProfile(EventNewBasalProfile ev) { + if (MainApp.getConfigBuilder().getActiveProfile() == null) + return; + NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + if (profile != null) { + dia = profile.getDia(); + } + } + + // When historical data is changed (comming from NS etc) finished calculations after this date must be invalidated + @Subscribe + public void onNewHistoryData(EventNewHistoryData ev) { + //log.debug("Locking onNewHistoryData"); + synchronized (dataLock) { + long time = ev.time; + log.debug("Invalidating cached data to: " + new Date(time).toLocaleString()); + for (int index = iobTable.size() - 1; index >= 0; index--) { + if (iobTable.keyAt(index) > time) { + log.debug("Removing from iobTable: " + new Date(iobTable.keyAt(index)).toLocaleString()); + iobTable.removeAt(index); + } else { + break; + } + } + for (int index = autosensDataTable.size() - 1; index >= 0; index--) { + if (autosensDataTable.keyAt(index) > time) { + log.debug("Removing from autosensDataTable: " + new Date(autosensDataTable.keyAt(index)).toLocaleString()); + autosensDataTable.removeAt(index); + } else { + break; + } + } + } + sHandler.post(new Runnable() { + @Override + public void run() { + calculateSensitivityData(); + } + }); + //log.debug("Releasing onNewHistoryData"); + } + + // From https://gist.github.com/IceCreamYou/6ffa1b18c4c8f6aeaad2 + // Returns the value at a given percentile in a sorted numeric array. + // "Linear interpolation between closest ranks" method + public static double percentile(Double[] arr, double p) { + if (arr.length == 0) return 0; + if (p <= 0) return arr[0]; + if (p >= 1) return arr[arr.length - 1]; + + double index = arr.length * p, + lower = Math.floor(index), + upper = lower + 1, + weight = index % 1; + + if (upper >= arr.length) return arr[(int) lower]; + return arr[(int) lower] * (1 - weight) + arr[(int) upper] * weight; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/events/EventAutosensCalculationFinished.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/events/EventAutosensCalculationFinished.java new file mode 100644 index 0000000000..f2977c90c5 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/events/EventAutosensCalculationFinished.java @@ -0,0 +1,8 @@ +package info.nightscout.androidaps.plugins.IobCobCalculator.events; + +/** + * Created by mike on 30.04.2017. + */ + +public class EventAutosensCalculationFinished { +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/events/EventNewHistoryData.java b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/events/EventNewHistoryData.java new file mode 100644 index 0000000000..7499fad383 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/IobCobCalculator/events/EventNewHistoryData.java @@ -0,0 +1,13 @@ +package info.nightscout.androidaps.plugins.IobCobCalculator.events; + +/** + * Created by mike on 26.04.2017. + */ + +public class EventNewHistoryData { + public long time = 0; + + public EventNewHistoryData(long time) { + this.time = time; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/DeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/DeviceStatus.java index 85a9f39b09..0d72464b73 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/DeviceStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/DeviceStatus.java @@ -2,7 +2,6 @@ package info.nightscout.androidaps.plugins.Loop; import android.content.Context; import android.content.Intent; -import android.content.pm.ResolveInfo; import android.os.Bundle; import org.json.JSONException; @@ -10,12 +9,9 @@ import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.List; - -import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.Services.Intents; -import info.nightscout.client.data.DbLogger; +import info.nightscout.androidaps.plugins.NSClientInternal.data.DbLogger; /* { @@ -382,6 +378,7 @@ public class DeviceStatus { public JSONObject enacted = null; public JSONObject suggested = null; public JSONObject iob = null; + public int uploaderBattery = 0; public String created_at = null; public JSONObject mongoRecord () { @@ -397,6 +394,7 @@ public class DeviceStatus { if (iob != null) openaps.put("iob", iob); record.put("openaps", openaps); } + if (uploaderBattery != 0) record.put("uploaderBattery", uploaderBattery); if (created_at != null) record.put("created_at" , created_at); } catch (JSONException e) { e.printStackTrace(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopFragment.java index a183e28345..de295d8a6e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopFragment.java @@ -10,6 +10,8 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.squareup.otto.Subscribe; import org.slf4j.Logger; @@ -17,11 +19,10 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.Loop.events.EventLoopSetLastRunGui; import info.nightscout.androidaps.plugins.Loop.events.EventLoopUpdateGui; -public class LoopFragment extends Fragment implements View.OnClickListener, FragmentBase { +public class LoopFragment extends Fragment implements View.OnClickListener { private static Logger log = LoggerFactory.getLogger(LoopFragment.class); private static LoopPlugin loopPlugin; @@ -84,6 +85,7 @@ public class LoopFragment extends Fragment implements View.OnClickListener, Frag } }); thread.start(); + Answers.getInstance().logCustom(new CustomEvent("Loop_Run")); break; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopPlugin.java index 76eb14eb1a..f6d319dd7f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/LoopPlugin.java @@ -32,6 +32,7 @@ import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.Loop.events.EventLoopSetLastRunGui; import info.nightscout.androidaps.plugins.Loop.events.EventLoopUpdateGui; import info.nightscout.androidaps.plugins.Loop.events.EventNewOpenLoopNotification; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -43,7 +44,10 @@ public class LoopPlugin implements PluginBase { private static HandlerThread sHandlerThread; private boolean fragmentEnabled = false; - private boolean fragmentVisible = true; + private boolean fragmentVisible = false; + + private long loopSuspendedTill = 0L; // end of manual loop suspend + private boolean isSuperBolus = false; public class LastRun { public APSResult request = null; @@ -64,6 +68,8 @@ public class LoopPlugin implements PluginBase { sHandler = new Handler(sHandlerThread.getLooper()); } MainApp.bus().register(this); + loopSuspendedTill = SP.getLong("loopSuspendedTill", 0L); + isSuperBolus = SP.getBoolean("isSuperBolus", false); } @Override @@ -107,6 +113,16 @@ public class LoopPlugin implements PluginBase { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == LOOP) this.fragmentEnabled = fragmentEnabled; @@ -127,12 +143,72 @@ public class LoopPlugin implements PluginBase { invoke("EventNewBG", true); } + public long suspendedTo() { + return loopSuspendedTill; + } + + public void suspendTo(long endTime) { + loopSuspendedTill = endTime; + isSuperBolus = false; + SP.putLong("loopSuspendedTill", loopSuspendedTill); + } + + public void superBolusTo(long endTime) { + loopSuspendedTill = endTime; + isSuperBolus = true; + SP.putLong("loopSuspendedTill", loopSuspendedTill); + } + + public int minutesToEndOfSuspend() { + if (loopSuspendedTill == 0) + return 0; + + long now = new Date().getTime(); + long msecDiff = loopSuspendedTill - now; + + if (loopSuspendedTill <= now) { // time exceeded + suspendTo(0L); + return 0; + } + + return (int) (msecDiff / 60d / 1000d); + } + + public boolean isSuspended() { + if (loopSuspendedTill == 0) + return false; + + long now = new Date().getTime(); + + if (loopSuspendedTill <= now) { // time exceeded + suspendTo(0L); + return false; + } + + return true; + } + + public boolean isSuperBolus() { + if (loopSuspendedTill == 0) + return false; + + long now = new Date().getTime(); + + if (loopSuspendedTill <= now) { // time exceeded + suspendTo(0L); + return false; + } + + return isSuperBolus; + } + public void invoke(String initiator, boolean allowNotification) { try { if (Config.logFunctionCalls) log.debug("invoke"); ConstraintsInterface constraintsInterface = MainApp.getConfigBuilder(); if (!constraintsInterface.isLoopEnabled()) { + log.debug(MainApp.sResources.getString(R.string.loopdisabled)); MainApp.bus().post(new EventLoopSetLastRunGui(MainApp.sResources.getString(R.string.loopdisabled))); return; } @@ -142,6 +218,18 @@ public class LoopPlugin implements PluginBase { if (configBuilder == null || !isEnabled(PluginBase.LOOP)) return; + if (isSuspended()) { + log.debug(MainApp.sResources.getString(R.string.loopsuspended)); + MainApp.bus().post(new EventLoopSetLastRunGui(MainApp.sResources.getString(R.string.loopsuspended))); + return; + } + + if (configBuilder.isSuspended()) { + log.debug(MainApp.sResources.getString(R.string.pumpsuspended)); + MainApp.bus().post(new EventLoopSetLastRunGui(MainApp.sResources.getString(R.string.pumpsuspended))); + return; + } + // Check if pump info is loaded if (configBuilder.getBaseBasalRate() < 0.01d) return; @@ -196,7 +284,7 @@ public class LoopPlugin implements PluginBase { if (result.changeRequested && allowNotification) { NotificationCompat.Builder builder = new NotificationCompat.Builder(MainApp.instance().getApplicationContext()); - builder.setSmallIcon(R.drawable.notification_icon) + builder.setSmallIcon(R.drawable.notif_icon) .setContentTitle(MainApp.sResources.getString(R.string.openloop_newsuggestion)) .setContentText(resultAfterConstraints.toString()) .setAutoCancel(true) @@ -228,7 +316,7 @@ public class LoopPlugin implements PluginBase { } MainApp.bus().post(new EventLoopUpdateGui()); - MainApp.getConfigBuilder().uploadDeviceStatus(120); + MainApp.getConfigBuilder().uploadDeviceStatus(); } finally { if (Config.logFunctionCalls) log.debug("invoke end"); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/MDI/MDIFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/MDI/MDIFragment.java deleted file mode 100644 index a67f68dfb3..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/plugins/MDI/MDIFragment.java +++ /dev/null @@ -1,33 +0,0 @@ -package info.nightscout.androidaps.plugins.MDI; - - -import android.app.Activity; -import android.os.Bundle; -import android.os.Handler; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.squareup.otto.Subscribe; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; -import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpPlugin; -import info.nightscout.androidaps.plugins.VirtualPump.events.EventVirtualPumpUpdateGui; - -public class MDIFragment extends Fragment implements FragmentBase { - private static Logger log = LoggerFactory.getLogger(MDIFragment.class); - - private static MDIPlugin mdiPlugin = new MDIPlugin(); - - public static MDIPlugin getPlugin() { - return mdiPlugin; - } -} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/NSClientInternalFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/NSClientInternalFragment.java new file mode 100644 index 0000000000..c3e8c777c6 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/NSClientInternalFragment.java @@ -0,0 +1,191 @@ +package info.nightscout.androidaps.plugins.NSClientInternal; + + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.Paint; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.text.Html; +import android.text.Spanned; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.ScrollView; +import android.widget.TextView; + +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; +import com.squareup.otto.Subscribe; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientNewLog; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientRestart; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientUpdateGUI; +import info.nightscout.utils.SP; + +public class NSClientInternalFragment extends Fragment implements View.OnClickListener, CompoundButton.OnCheckedChangeListener { + private static Logger log = LoggerFactory.getLogger(NSClientInternalFragment.class); + + static NSClientInternalPlugin nsClientInternalPlugin; + + static public NSClientInternalPlugin getPlugin() { + if (nsClientInternalPlugin == null) { + nsClientInternalPlugin = new NSClientInternalPlugin(); + } + return nsClientInternalPlugin; + } + + private TextView logTextView; + private TextView queueTextView; + private TextView urlTextView; + private TextView statusTextView; + private TextView clearlog; + private TextView restart; + private TextView delivernow; + private TextView clearqueue; + private TextView showqueue; + private ScrollView logScrollview; + private CheckBox autoscrollCheckbox; + private CheckBox pausedCheckbox; + + String status = ""; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.nsclientinternal_fragment, container, false); + + logScrollview = (ScrollView) view.findViewById(R.id.nsclientinternal_logscrollview); + autoscrollCheckbox = (CheckBox) view.findViewById(R.id.nsclientinternal_autoscroll); + autoscrollCheckbox.setChecked(getPlugin().autoscroll); + autoscrollCheckbox.setOnCheckedChangeListener(this); + pausedCheckbox = (CheckBox) view.findViewById(R.id.nsclientinternal_paused); + pausedCheckbox.setChecked(getPlugin().paused); + pausedCheckbox.setOnCheckedChangeListener(this); + logTextView = (TextView) view.findViewById(R.id.nsclientinternal_log); + queueTextView = (TextView) view.findViewById(R.id.nsclientinternal_queue); + urlTextView = (TextView) view.findViewById(R.id.nsclientinternal_url); + statusTextView = (TextView) view.findViewById(R.id.nsclientinternal_status); + + clearlog = (TextView) view.findViewById(R.id.nsclientinternal_clearlog); + clearlog.setOnClickListener(this); + clearlog.setPaintFlags(clearlog.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + restart = (TextView) view.findViewById(R.id.nsclientinternal_restart); + restart.setOnClickListener(this); + restart.setPaintFlags(restart.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + delivernow = (TextView) view.findViewById(R.id.nsclientinternal_delivernow); + delivernow.setOnClickListener(this); + delivernow.setPaintFlags(delivernow.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + clearqueue = (TextView) view.findViewById(R.id.nsclientinternal_clearqueue); + clearqueue.setOnClickListener(this); + clearqueue.setPaintFlags(clearqueue.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + showqueue = (TextView) view.findViewById(R.id.nsclientinternal_showqueue); + showqueue.setOnClickListener(this); + showqueue.setPaintFlags(showqueue.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); + + updateGUI(); + return view; + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.nsclientinternal_restart: + MainApp.bus().post(new EventNSClientRestart()); + Answers.getInstance().logCustom(new CustomEvent("NSClientRestart")); + break; + case R.id.nsclientinternal_delivernow: + getPlugin().resend("GUI"); + Answers.getInstance().logCustom(new CustomEvent("NSClientDeliverNow")); + break; + case R.id.nsclientinternal_clearlog: + getPlugin().clearLog(); + break; + case R.id.nsclientinternal_clearqueue: + final Context context = getContext(); + AlertDialog.Builder builder = new AlertDialog.Builder(context); + + builder.setTitle(this.getContext().getString(R.string.confirmation)); + builder.setMessage("Clear queue? All data in queue will be lost!"); + builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + getPlugin().queue().clearQueue(); + updateGUI(); + Answers.getInstance().logCustom(new CustomEvent("NSClientClearQueue")); + } + }); + builder.setNegativeButton(getString(R.string.cancel), null); + builder.show(); + break; + case R.id.nsclientinternal_showqueue: + MainApp.bus().post(new EventNSClientNewLog("QUEUE", getPlugin().queue().textList())); + Answers.getInstance().logCustom(new CustomEvent("NSClientShowQueue")); + break; + } + } + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + switch (buttonView.getId()) { + case R.id.nsclientinternal_paused: + SP.putBoolean(R.string.key_nsclientinternal_paused, isChecked); + getPlugin().paused = isChecked; + MainApp.bus().post(new EventPreferenceChange(R.string.key_nsclientinternal_paused)); + updateGUI(); + Answers.getInstance().logCustom(new CustomEvent("NSClientPause")); + break; + case R.id.nsclientinternal_autoscroll: + SP.putBoolean(R.string.key_nsclientinternal_autoscroll, isChecked); + getPlugin().autoscroll = isChecked; + updateGUI(); + break; + } + } + + @Override + public void onPause() { + super.onPause(); + MainApp.bus().unregister(this); + } + + @Override + public void onResume() { + super.onResume(); + MainApp.bus().register(this); + updateGUI(); + } + + @Subscribe + public void onStatusEvent(final EventNSClientUpdateGUI ev) { + updateGUI(); + } + + private void updateGUI() { + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + logTextView.setText(getPlugin().textLog); + if (getPlugin().autoscroll) { + logScrollview.fullScroll(ScrollView.FOCUS_DOWN); + } + urlTextView.setText(getPlugin().url()); + Spanned queuetext = Html.fromHtml(MainApp.sResources.getString(R.string.queue) + " " + getPlugin().queue().size() + ""); + queueTextView.setText(queuetext); + statusTextView.setText(getPlugin().status); + } + }); + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/NSClientInternalPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/NSClientInternalPlugin.java new file mode 100644 index 0000000000..606858c5d9 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/NSClientInternalPlugin.java @@ -0,0 +1,220 @@ +package info.nightscout.androidaps.plugins.NSClientInternal; + +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.IBinder; +import android.text.Html; +import android.text.Spanned; +import android.text.TextUtils; + +import com.squareup.otto.Subscribe; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; + +import info.nightscout.androidaps.Constants; +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventAppExit; +import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientNewLog; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientUpdateGUI; +import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; +import info.nightscout.utils.SP; +import info.nightscout.utils.ToastUtils; + +public class NSClientInternalPlugin implements PluginBase { + private static Logger log = LoggerFactory.getLogger(NSClientInternalPlugin.class); + + boolean fragmentEnabled = true; + boolean fragmentVisible = true; + + static public Handler handler; + static private HandlerThread handlerThread; + + public List listLog = new ArrayList(); + public Spanned textLog = Html.fromHtml(""); + + public boolean paused = false; + public boolean autoscroll = true; + + public String status = ""; + + public NSClientService nsClientService = null; + + public NSClientInternalPlugin() { + MainApp.bus().register(this); + paused = SP.getBoolean(R.string.key_nsclientinternal_paused, false); + autoscroll = SP.getBoolean(R.string.key_nsclientinternal_autoscroll, true); + + if (handler == null) { + handlerThread = new HandlerThread(NSClientInternalPlugin.class.getSimpleName() + "Handler"); + handlerThread.start(); + handler = new Handler(handlerThread.getLooper()); + } + + Context context = MainApp.instance().getApplicationContext(); + Intent intent = new Intent(context, NSClientService.class); + context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); + } + + @Override + public int getType() { + return PluginBase.GENERAL; + } + + @Override + public String getFragmentClass() { + return NSClientInternalFragment.class.getName(); + } + + @Override + public String getName() { + return MainApp.sResources.getString(R.string.nsclientinternal); + } + + @Override + public String getNameShort() { + String name = MainApp.sResources.getString(R.string.nsclientinternal_shortname); + if (!name.trim().isEmpty()) { + //only if translation exists + return name; + } + // use long name as fallback + return getName(); + } + + @Override + public boolean isEnabled(int type) { + return type == GENERAL && fragmentEnabled; + } + + @Override + public boolean isVisibleInTabs(int type) { + return type == GENERAL && fragmentVisible; + } + + @Override + public boolean canBeHidden(int type) { + return true; + } + + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + if (type == GENERAL) this.fragmentEnabled = fragmentEnabled; + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + if (type == GENERAL) this.fragmentVisible = fragmentVisible; + } + + ServiceConnection mConnection = new ServiceConnection() { + + public void onServiceDisconnected(ComponentName name) { + log.debug("Service is disconnected"); + nsClientService = null; + } + + public void onServiceConnected(ComponentName name, IBinder service) { + log.debug("Service is connected"); + NSClientService.LocalBinder mLocalBinder = (NSClientService.LocalBinder) service; + nsClientService = mLocalBinder.getServiceInstance(); + } + }; + + @SuppressWarnings("UnusedParameters") + @Subscribe + public void onStatusEvent(final EventAppExit e) { + if (nsClientService != null) + MainApp.instance().getApplicationContext().unbindService(mConnection); + } + + @Subscribe + public void onStatusEvent(final EventPreferenceChange s) { + //TODO + } + + @Subscribe + public void onStatusEvent(final EventNSClientNewLog ev) { + addToLog(ev); + log.debug(ev.action + " " + ev.logText); + } + + @Subscribe + public void onStatusEvent(final EventNSClientStatus ev) { + status = ev.status; + MainApp.bus().post(new EventNSClientUpdateGUI()); + } + + public void clearLog() { + handler.post(new Runnable() { + @Override + public void run() { + listLog = new ArrayList(); + updateLog(); + } + }); + } + + private void addToLog(final EventNSClientNewLog ev) { + handler.post(new Runnable() { + @Override + public void run() { + SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); + listLog.add(ev); + // remove the first line if log is too large + if (listLog.size() >= Constants.MAX_LOG_LINES) { + listLog.remove(0); + } + updateLog(); + } + }); + } + + private void updateLog() { + try { + Spanned newTextLog = Html.fromHtml(""); + for (EventNSClientNewLog log : listLog) { + newTextLog = (Spanned) TextUtils.concat(newTextLog, log.toHtml()); + } + textLog = newTextLog; + MainApp.bus().post(new EventNSClientUpdateGUI()); + } catch (OutOfMemoryError e) { + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), "Out of memory!\nStop using this phone !!!", R.raw.error); + } + } + + public void resend(String reason) { + if (nsClientService != null) + nsClientService.resend(reason); + } + + public UploadQueue queue() { + return NSClientService.uploadQueue; + } + + public String url() { + return NSClientService.nsURL; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java new file mode 100644 index 0000000000..b318d8026f --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java @@ -0,0 +1,139 @@ +package info.nightscout.androidaps.plugins.NSClientInternal; + +import android.content.Context; +import android.content.Intent; + +import com.j256.ormlite.dao.CloseableIterator; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.db.DatabaseHelper; +import info.nightscout.androidaps.db.DbRequest; +import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; +import info.nightscout.utils.SP; + +/** + * Created by mike on 21.02.2016. + */ +public class UploadQueue { + private static Logger log = LoggerFactory.getLogger(UploadQueue.class); + + public static String status() { + return "QUEUE: " + MainApp.getDbHelper().size(DatabaseHelper.DATABASE_DBREQUESTS); + } + + public static long size() { + return MainApp.getDbHelper().size(DatabaseHelper.DATABASE_DBREQUESTS); + } + + private static void startService() { + if (NSClientService.handler == null) { + Context context = MainApp.instance(); + context.startService(new Intent(context, NSClientService.class)); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + } + } + } + + public static void add(final DbRequest dbr) { + startService(); + if (NSClientService.handler != null) { + NSClientService.handler.post(new Runnable() { + @Override + public void run() { + log.debug("QUEUE adding: " + dbr.data); + MainApp.getDbHelper().create(dbr); + NSClientInternalPlugin plugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + if (plugin != null) { + plugin.resend("newdata"); + } + } + }); + } + } + + public static void clearQueue() { + startService(); + if (NSClientService.handler != null) { + NSClientService.handler.post(new Runnable() { + @Override + public void run() { + log.debug("QUEUE ClearQueue"); + MainApp.getDbHelper().deleteAllDbRequests(); + log.debug(status()); + } + }); + } + } + + public static void removeID(final JSONObject record) { + startService(); + if (NSClientService.handler != null) { + NSClientService.handler.post(new Runnable() { + @Override + public void run() { + try { + String id; + if (record.has("NSCLIENT_ID")) { + id = record.getString("NSCLIENT_ID"); + } else { + return; + } + if (MainApp.getDbHelper().deleteDbRequest(id) == 1) { + log.debug("Removed item from UploadQueue. " + UploadQueue.status()); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + }); + } + } + + public static void removeID(final String action, final String _id) { + startService(); + if (NSClientService.handler != null) { + NSClientService.handler.post(new Runnable() { + @Override + public void run() { + MainApp.getDbHelper().deleteDbRequestbyMongoId(action, _id); + } + }); + } + } + + public String textList() { + String result = ""; + CloseableIterator iterator = null; + try { + iterator = MainApp.getDbHelper().getDaoDbRequest().closeableIterator(); + try { + while (iterator.hasNext()) { + DbRequest dbr = iterator.next(); + result += "
"; + result += dbr.action.toUpperCase() + " "; + result += dbr.collection + ": "; + result += dbr.data; + } + } finally { + iterator.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return result; + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSAddAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSAddAck.java new file mode 100644 index 0000000000..b4ba0c3364 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSAddAck.java @@ -0,0 +1,55 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.acks; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientRestart; +import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; +import io.socket.client.Ack; + +/** + * Created by mike on 29.12.2015. + */ +public class NSAddAck implements Ack { + private static Logger log = LoggerFactory.getLogger(NSAddAck.class); + public String _id = null; + public String nsClientID = null; + public JSONObject json = null; + public void call(Object...args) { + // Regular response + try { + JSONArray responsearray = (JSONArray) (args[0]); + JSONObject response = null; + if (responsearray.length()>0) { + response = responsearray.getJSONObject(0); + _id = response.getString("_id"); + json = response; + if (response.has("NSCLIENT_ID")) { + nsClientID = response.getString("NSCLIENT_ID"); + } + } + MainApp.bus().post(this); + return; + } catch (Exception e) { + } + // Check for not authorized + try { + JSONObject response = (JSONObject) (args[0]); + if (response.has("result")) { + _id = null; + if (response.getString("result").contains("Not")) { + MainApp.bus().post(new EventNSClientRestart()); + return; + } + log.debug("DBACCESS " + response.getString("result")); + } + return; + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSAuthAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSAuthAck.java new file mode 100644 index 0000000000..3c3b173173 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSAuthAck.java @@ -0,0 +1,24 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.acks; + +import org.json.JSONObject; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientNewLog; +import io.socket.client.Ack; + +/** + * Created by mike on 02.01.2016. + */ +public class NSAuthAck implements Ack{ + public boolean read = false; + public boolean write = false; + public boolean write_treatment = false; + + public void call(Object...args) { + JSONObject response = (JSONObject)args[0]; + read = response.optBoolean("read"); + write = response.optBoolean("write"); + write_treatment = response.optBoolean("write_treatment"); + MainApp.bus().post(this); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSPingAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSPingAck.java new file mode 100644 index 0000000000..2824e922aa --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSPingAck.java @@ -0,0 +1,38 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.acks; + +import org.json.JSONException; +import org.json.JSONObject; + +import io.socket.client.Ack; + +/** + * Created by mike on 29.12.2015. + */ +public class NSPingAck implements Ack { + public long mills = 0; + public boolean received = false; + public boolean auth_received = false; + public boolean read = false; + public boolean write = false; + public boolean write_treatment = false; + + public void call(Object...args) { + JSONObject response = (JSONObject)args[0]; + mills = response.optLong("mills"); + if (response.has("authorization")) { + auth_received = true; + try { + JSONObject authorization = response.getJSONObject("authorization"); + read = authorization.optBoolean("read"); + write = authorization.optBoolean("write"); + write_treatment = authorization.optBoolean("write_treatment"); + } catch (JSONException e) { + e.printStackTrace(); + } + } + received = true; + synchronized(this) { + this.notify(); + } + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSUpdateAck.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSUpdateAck.java new file mode 100644 index 0000000000..5aef754d8c --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/acks/NSUpdateAck.java @@ -0,0 +1,39 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.acks; + +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import info.nightscout.androidaps.MainApp; +import io.socket.client.Ack; + +/** + * Created by mike on 21.02.2016. + */ +public class NSUpdateAck implements Ack { + private static Logger log = LoggerFactory.getLogger(NSUpdateAck.class); + public boolean result = false; + public String _id = null; + public String action; + public void call(Object...args) { + JSONObject response = (JSONObject)args[0]; + if (response.has("result")) + try { + if (response.getString("result").equals("success")) + result = true; + else if (response.getString("result").equals("Missing _id")) { + result = true; + log.debug("Internal error: Missing _id returned on dbUpdate ack"); + } + MainApp.bus().post(this); + } catch (JSONException e) { + } + } + + public NSUpdateAck(String action, String _id) { + super(); + this.action = action; + this._id = _id; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java new file mode 100644 index 0000000000..58a24e825c --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastCals.java @@ -0,0 +1,34 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.json.JSONArray; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.Services.Intents; + +/** + * Created by mike on 26.06.2016. + */ +public class BroadcastCals { + private static Logger log = LoggerFactory.getLogger(BroadcastCals.class); + + public void handleNewCal(JSONArray cals, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("cals", cals.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_CAL); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("CAL " + x.size() + " receivers"); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java new file mode 100644 index 0000000000..64fd72b36a --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastDeviceStatus.java @@ -0,0 +1,45 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.Services.Intents; + + +public class BroadcastDeviceStatus { + private static Logger log = LoggerFactory.getLogger(BroadcastDeviceStatus.class); + + public void handleNewDeviceStatus(JSONObject status, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("devicestatus", status.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_DEVICESTATUS); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("DEVICESTATUS " + x.size() + " receivers"); + } + public void handleNewDeviceStatus(JSONArray statuses, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("devicestatuses", statuses.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_DEVICESTATUS); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("DEVICESTATUS " + x.size() + " receivers"); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java new file mode 100644 index 0000000000..33669e1852 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastMbgs.java @@ -0,0 +1,34 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.json.JSONArray; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.Services.Intents; + +/** + * Created by mike on 26.06.2016. + */ +public class BroadcastMbgs { + private static Logger log = LoggerFactory.getLogger(BroadcastMbgs.class); + + public void handleNewMbg(JSONArray mbgs, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("mbgs", mbgs.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_MBG); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("MBG " + x.size() + " receivers"); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java new file mode 100644 index 0000000000..a1d44d0340 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastProfile.java @@ -0,0 +1,37 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.Services.Intents; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; + + +/** + * Created by mike on 20.02.2016. + */ +public class BroadcastProfile { + private static Logger log = LoggerFactory.getLogger(BroadcastProfile.class); + + public void handleNewTreatment(NSProfile profile, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("profile", profile.getData().toString()); + bundle.putString("activeprofile", profile.getActiveProfile()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_PROFILE); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("PROFILE " + x.size() + " receivers"); + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java new file mode 100644 index 0000000000..ed2b01a27c --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastQueueStatus.java @@ -0,0 +1,30 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.PowerManager; + +import info.nightscout.androidaps.Services.Intents; + +/** + * Created by mike on 28.02.2016. + */ +public class BroadcastQueueStatus { + public void handleNewStatus(int size, Context context) { + PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); + PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, + "sendQueue"); + wakeLock.acquire(); + try { + Bundle bundle = new Bundle(); + bundle.putInt("size", size); + Intent intent = new Intent(Intents.ACTION_QUEUE_STATUS); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + } finally { + wakeLock.release(); + } + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java new file mode 100644 index 0000000000..81a2621a77 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastSgvs.java @@ -0,0 +1,49 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.Services.Intents; + +/** + * Created by mike on 22.02.2016. + */ +public class BroadcastSgvs { + private static Logger log = LoggerFactory.getLogger(BroadcastSgvs.class); + + public void handleNewSgv(JSONObject sgv, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("sgv", sgv.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_SGV); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("SGV " + x.size() + " receivers"); + } + + public void handleNewSgv(JSONArray sgvs, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("sgvs", sgvs.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_SGV); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("SGV " + x.size() + " receivers"); + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java new file mode 100644 index 0000000000..b99950c89b --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastStatus.java @@ -0,0 +1,45 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.Services.Intents; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; + +/** + * Created by mike on 24.02.2016. + */ +public class BroadcastStatus { + private static Logger log = LoggerFactory.getLogger(BroadcastStatus.class); + + public void handleNewStatus(NSStatus status, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + try { + bundle.putString("nsclientversionname", MainApp.instance().getPackageManager().getPackageInfo(MainApp.instance().getPackageName(), 0).versionName); + bundle.putInt("nsclientversioncode", MainApp.instance().getPackageManager().getPackageInfo(MainApp.instance().getPackageName(), 0).versionCode); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + }; + bundle.putString("nightscoutversionname", NSClientService.nightscoutVersionName); + bundle.putInt("nightscoutversioncode", NSClientService.nightscoutVersionCode); + bundle.putString("status", status.getData().toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_STATUS); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("STATUS: " + x.size() + " receivers"); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java new file mode 100644 index 0000000000..9d1abe43e3 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/broadcasts/BroadcastTreatment.java @@ -0,0 +1,107 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.broadcasts; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.ResolveInfo; +import android.os.Bundle; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +import info.nightscout.androidaps.Services.Intents; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSTreatment; + +/** + * Created by mike on 20.02.2016. + */ +public class BroadcastTreatment { + private static Logger log = LoggerFactory.getLogger(BroadcastTreatment.class); + + public void handleNewTreatment(NSTreatment treatment, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("treatment", treatment.getData().toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_TREATMENT); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("TREAT_ADD " + treatment.getEventType() + " " + x.size() + " receivers"); + } + + public void handleNewTreatment(JSONArray treatments, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("treatments", treatments.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_NEW_TREATMENT); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("TREAT_ADD " + treatments.length() + " " + x.size() + " receivers"); + } + + public void handleChangedTreatment(JSONObject treatment, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("treatment", treatment.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_CHANGED_TREATMENT); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + try { + log.debug("TREAT_CHANGE " + treatment.getString("_id") + " " + x.size() + " receivers"); + } catch (JSONException e) {} + } + + public void handleChangedTreatment(JSONArray treatments, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("treatments", treatments.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_CHANGED_TREATMENT); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("TREAT_CHANGE " + treatments.length() + " " + x.size() + " receivers"); + } + + public void handleRemovedTreatment(JSONObject treatment, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("treatment", treatment.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_REMOVED_TREATMENT); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + try { + log.debug("TREAT_REMOVE " + treatment.getString("_id") + " " + x.size() + " receivers"); + } catch (JSONException e) {} + } + + public void handleRemovedTreatment(JSONArray treatments, Context context, boolean isDelta) { + Bundle bundle = new Bundle(); + bundle.putString("treatments", treatments.toString()); + bundle.putBoolean("delta", isDelta); + Intent intent = new Intent(Intents.ACTION_REMOVED_TREATMENT); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); + context.sendBroadcast(intent); + List x = context.getPackageManager().queryBroadcastReceivers(intent, 0); + + log.debug("TREAT_REMOVE " + treatments.length() + " treatments " + x.size() + " receivers"); + } + +} diff --git a/app/src/main/java/info/nightscout/client/data/DbLogger.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/DbLogger.java similarity index 96% rename from app/src/main/java/info/nightscout/client/data/DbLogger.java rename to app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/DbLogger.java index 3695d5e735..70d8e9e336 100644 --- a/app/src/main/java/info/nightscout/client/data/DbLogger.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/DbLogger.java @@ -1,4 +1,4 @@ -package info.nightscout.client.data; +package info.nightscout.androidaps.plugins.NSClientInternal.data; import android.content.Intent; import android.content.pm.ResolveInfo; diff --git a/app/src/main/java/info/nightscout/client/data/NSCal.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSCal.java similarity index 67% rename from app/src/main/java/info/nightscout/client/data/NSCal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSCal.java index 5a78dbaa02..74b5f688d9 100644 --- a/app/src/main/java/info/nightscout/client/data/NSCal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSCal.java @@ -1,9 +1,12 @@ -package info.nightscout.client.data; +package info.nightscout.androidaps.plugins.NSClientInternal.data; import org.json.JSONException; import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class NSCal { + private static Logger log = LoggerFactory.getLogger(NSCal.class); public long date; public double slope; public double intercept; @@ -17,6 +20,7 @@ public class NSCal { scale = json.getDouble("scale"); } catch (JSONException e) { e.printStackTrace(); + log.debug("Data: " + json.toString()); } } } diff --git a/app/src/main/java/info/nightscout/client/data/NSProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSProfile.java similarity index 95% rename from app/src/main/java/info/nightscout/client/data/NSProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSProfile.java index 2e732c8c9f..9aee30e899 100644 --- a/app/src/main/java/info/nightscout/client/data/NSProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSProfile.java @@ -1,4 +1,6 @@ -package info.nightscout.client.data; +package info.nightscout.androidaps.plugins.NSClientInternal.data; + +import android.support.annotation.Nullable; import com.crashlytics.android.Crashlytics; @@ -118,7 +120,7 @@ public class NSProfile { e.printStackTrace(); } } - return 3D; + return Constants.defaultDIA; } /* public Double getCarbAbsorbtionRate() { @@ -178,6 +180,7 @@ public class NSProfile { return TimeZone.getDefault(); } + @Nullable public Double getValueToTime(JSONArray array, Integer timeAsSeconds) { Double lastValue = null; @@ -221,10 +224,12 @@ public class NSProfile { return retValue; } + @Nullable public Double getIsf(Integer timeAsSeconds) { return getIsf(getDefaultProfile(), timeAsSeconds); } + @Nullable public Double getIsf(JSONObject profile, Integer timeAsSeconds) { if (profile != null) { try { @@ -251,10 +256,12 @@ public class NSProfile { return ""; } + @Nullable public Double getIc(Integer timeAsSeconds) { return getIc(getDefaultProfile(), timeAsSeconds); } + @Nullable public Double getIc(JSONObject profile, Integer timeAsSeconds) { if (profile != null) { try { @@ -281,10 +288,12 @@ public class NSProfile { return ""; } + @Nullable public Double getBasal(Integer timeAsSeconds) { return getBasal(getDefaultProfile(), timeAsSeconds); } + @Nullable public Double getBasal(JSONObject profile, Integer timeAsSeconds) { if (profile != null) { try { @@ -339,10 +348,12 @@ public class NSProfile { return ""; } + @Nullable public Double getTargetLow(Integer timeAsSeconds) { return getTargetLow(getDefaultProfile(), timeAsSeconds); } + @Nullable public Double getTargetLow(JSONObject profile, Integer timeAsSeconds) { if (profile != null) { try { @@ -354,10 +365,12 @@ public class NSProfile { return 0D; } + @Nullable public Double getTargetHigh(Integer timeAsSeconds) { return getTargetHigh(getDefaultProfile(), timeAsSeconds); } + @Nullable public Double getTargetHigh(JSONObject profile, Integer timeAsSeconds) { if (profile != null) { try { @@ -448,6 +461,17 @@ public class NSProfile { return (int) (passed / 1000); } + public static int secondsFromMidnight(long date) { + Calendar c = Calendar.getInstance(); + c.setTimeInMillis(date); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + long passed = date - c.getTimeInMillis(); + return (int) (passed / 1000); + } + public static Double toMgdl(Double value, String units) { if (units.equals(Constants.MGDL)) return value; else return value * Constants.MMOLL_TO_MGDL; diff --git a/app/src/main/java/info/nightscout/client/data/NSSgv.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSgv.java similarity index 96% rename from app/src/main/java/info/nightscout/client/data/NSSgv.java rename to app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSgv.java index 5ce9b35caa..c8666f4306 100644 --- a/app/src/main/java/info/nightscout/client/data/NSSgv.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSgv.java @@ -1,4 +1,4 @@ -package info.nightscout.client.data; +package info.nightscout.androidaps.plugins.NSClientInternal.data; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/info/nightscout/client/data/NSStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSStatus.java similarity index 97% rename from app/src/main/java/info/nightscout/client/data/NSStatus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSStatus.java index f247907296..fe20e90b1d 100644 --- a/app/src/main/java/info/nightscout/client/data/NSStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSStatus.java @@ -1,4 +1,4 @@ -package info.nightscout.client.data; +package info.nightscout.androidaps.plugins.NSClientInternal.data; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/info/nightscout/client/data/NSTreatment.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSTreatment.java similarity index 97% rename from app/src/main/java/info/nightscout/client/data/NSTreatment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSTreatment.java index f358b4e74d..7430caf600 100644 --- a/app/src/main/java/info/nightscout/client/data/NSTreatment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSTreatment.java @@ -1,4 +1,4 @@ -package info.nightscout.client.data; +package info.nightscout.androidaps.plugins.NSClientInternal.data; import org.json.JSONException; import org.json.JSONObject; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientNewLog.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientNewLog.java new file mode 100644 index 0000000000..7f576fde7e --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientNewLog.java @@ -0,0 +1,30 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.events; + +import android.text.Html; +import android.text.Spanned; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * Created by mike on 15.02.2017. + */ + +public class EventNSClientNewLog { + public Date date = new Date(); + public String action; + public String logText; + public EventNSClientNewLog(String action, String logText) { + this.action = action; + this.logText = logText; + } + + public Spanned toHtml() { + SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss"); + Spanned line = Html.fromHtml(timeFormat.format(date) + " " + action + " " + logText + "
"); + return line; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientRestart.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientRestart.java new file mode 100644 index 0000000000..9bf90be31b --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientRestart.java @@ -0,0 +1,8 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.events; + +/** + * Created by mike on 15.02.2017. + */ + +public class EventNSClientRestart { +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientStatus.java new file mode 100644 index 0000000000..6a1c721535 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientStatus.java @@ -0,0 +1,16 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.events; + +/** + * Created by mike on 02.01.2016. + */ +public class EventNSClientStatus { + public String status = ""; + + public EventNSClientStatus(String status) { + this.status = status; + } + + public EventNSClientStatus() { + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientUpdateGUI.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientUpdateGUI.java new file mode 100644 index 0000000000..8f00bd3424 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/events/EventNSClientUpdateGUI.java @@ -0,0 +1,8 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.events; + +/** + * Created by mike on 17.02.2017. + */ + +public class EventNSClientUpdateGUI { +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AutoStartReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AutoStartReceiver.java new file mode 100644 index 0000000000..dd5d3330ab --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AutoStartReceiver.java @@ -0,0 +1,17 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.receivers; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; + +public class AutoStartReceiver extends BroadcastReceiver { + public AutoStartReceiver() { + } + + @Override + public void onReceive(Context context, Intent intent) { + context.startService(new Intent(context, NSClientService.class)); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java new file mode 100644 index 0000000000..44c6587fb1 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java @@ -0,0 +1,93 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.receivers; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.PowerManager; + +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Date; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.UploadQueue; +import info.nightscout.androidaps.db.DbRequest; + +public class DBAccessReceiver extends BroadcastReceiver { + private static Logger log = LoggerFactory.getLogger(DBAccessReceiver.class); + + + @Override + public void onReceive(Context context, Intent intent) { + PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); + PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, + "sendQueue"); + NSClientInternalPlugin nsClientInternalPlugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + if (!nsClientInternalPlugin.isEnabled(PluginBase.GENERAL)) { + return; + } + wakeLock.acquire(); + try { + Bundle bundles = intent.getExtras(); + if (bundles == null) return; + if (!bundles.containsKey("action")) return; + + String collection = null; + String _id = null; + JSONObject data = null; + String action = bundles.getString("action"); + try { collection = bundles.getString("collection"); } catch (Exception e) {} + try { _id = bundles.getString("_id"); } catch (Exception e) {} + try { data = new JSONObject(bundles.getString("data")); } catch (Exception e) {} + + if (data == null && !action.equals("dbRemove") || _id == null && action.equals("dbRemove")) { + log.debug("DBACCESS no data inside record"); + return; + } + + if (action.equals("dbRemove")) { + data = new JSONObject(); + } + // mark by id + Long nsclientid = new Date().getTime(); + try { + data.put("NSCLIENT_ID", nsclientid); + } catch (JSONException e) { + e.printStackTrace(); + } + + if (!isAllowedCollection(collection)) { + log.debug("DBACCESS wrong collection specified"); + return; + } + + if (action.equals("dbRemove")) { + DbRequest dbr = new DbRequest(action, collection, nsclientid.toString(), _id); + UploadQueue.add(dbr); + } else { + DbRequest dbr = new DbRequest(action, collection, nsclientid.toString(), data); + UploadQueue.add(dbr); + } + + } finally { + wakeLock.release(); + } + + } + + private boolean isAllowedCollection(String collection) { + // "treatments" || "entries" || "devicestatus" || "profile" || "food" + if (collection.equals("treatments")) return true; + if (collection.equals("entries")) return true; + if (collection.equals("devicestatus")) return true; + if (collection.equals("profile")) return true; + if (collection.equals("food")) return true; + return false; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/RestartReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/RestartReceiver.java new file mode 100644 index 0000000000..a38ca842f9 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/RestartReceiver.java @@ -0,0 +1,25 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.receivers; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.support.v4.content.WakefulBroadcastReceiver; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientRestart; +import info.nightscout.androidaps.plugins.NSClientInternal.services.NSClientService; + +public class RestartReceiver extends WakefulBroadcastReceiver { + public RestartReceiver() { + } + + @Override + public void onReceive(Context context, Intent intent) { + startWakefulService(context, new Intent(context, NSClientService.class) + .setAction(intent.getAction()) + .putExtras(intent)); + + MainApp.bus().post(new EventNSClientRestart()); + completeWakefulIntent(intent); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java new file mode 100644 index 0000000000..b1eaae1d0e --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java @@ -0,0 +1,691 @@ +package info.nightscout.androidaps.plugins.NSClientInternal.services; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Binder; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.IBinder; +import android.os.PowerManager; +import android.preference.PreferenceManager; + +import com.google.common.base.Charsets; +import com.google.common.hash.Hashing; +import com.j256.ormlite.dao.CloseableIterator; +import com.squareup.otto.Subscribe; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.net.URISyntaxException; +import java.sql.SQLException; +import java.util.Date; + +import info.nightscout.androidaps.Config; +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventAppExit; +import info.nightscout.androidaps.events.EventConfigBuilderChange; +import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.plugins.PumpDanaR.Services.ExecutionService; +import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.UploadQueue; +import info.nightscout.androidaps.plugins.NSClientInternal.acks.NSAddAck; +import info.nightscout.androidaps.plugins.NSClientInternal.acks.NSAuthAck; +import info.nightscout.androidaps.plugins.NSClientInternal.acks.NSPingAck; +import info.nightscout.androidaps.plugins.NSClientInternal.acks.NSUpdateAck; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastCals; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastDeviceStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastMbgs; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastSgvs; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.broadcasts.BroadcastTreatment; +import info.nightscout.androidaps.db.DbRequest; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSCal; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSgv; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSTreatment; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientNewLog; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientRestart; +import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientStatus; +import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; +import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; +import info.nightscout.utils.DateUtil; +import info.nightscout.utils.SP; +import io.socket.client.IO; +import io.socket.client.Socket; +import io.socket.emitter.Emitter; + +public class NSClientService extends Service { + private static Logger log = LoggerFactory.getLogger(ExecutionService.class); + + static public PowerManager.WakeLock mWakeLock; + private IBinder mBinder = new NSClientService.LocalBinder(); + + static NSProfile nsProfile; + + static public Handler handler; + static private HandlerThread handlerThread; + + public static Socket mSocket; + public static boolean isConnected = false; + public static boolean hasWriteAuth = false; + private static Integer dataCounter = 0; + private static Integer connectCounter = 0; + + + public static String nightscoutVersionName = ""; + public static Integer nightscoutVersionCode = 0; + + private boolean nsEnabled = false; + static public String nsURL = ""; + private String nsAPISecret = ""; + private String nsDevice = ""; + private Integer nsHours = 24; + + private final Integer timeToWaitForResponseInMs = 30000; + private boolean uploading = false; + public Date lastReception = new Date(); + + public long latestDateInReceivedData = 0; + + private String nsAPIhashCode = ""; + + public static UploadQueue uploadQueue = new UploadQueue(); + + public NSClientService() { + registerBus(); + if (handler == null) { + handlerThread = new HandlerThread(NSClientService.class.getSimpleName() + "Handler"); + handlerThread.start(); + handler = new Handler(handlerThread.getLooper()); + } + + PowerManager powerManager = (PowerManager) MainApp.instance().getApplicationContext().getSystemService(Context.POWER_SERVICE); + mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NSClientService"); + initialize(); + } + + public class LocalBinder extends Binder { + public NSClientService getServiceInstance() { + return NSClientService.this; + } + } + + @Override + public IBinder onBind(Intent intent) { + return mBinder; + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + + return START_STICKY; + } + + private void registerBus() { + try { + MainApp.bus().unregister(this); + } catch (RuntimeException x) { + // Ignore + } + MainApp.bus().register(this); + } + + @Subscribe + public void onStatusEvent(EventAppExit event) { + if (Config.logFunctionCalls) + log.debug("EventAppExit received"); + + destroy(); + + stopSelf(); + if (Config.logFunctionCalls) + log.debug("EventAppExit finished"); + } + + @Subscribe + public void onStatusEvent(EventPreferenceChange ev) { + if (ev.isChanged(R.string.key_nsclientinternal_url) || + ev.isChanged(R.string.key_nsclientinternal_api_secret) || + ev.isChanged(R.string.key_nsclientinternal_paused) + ) { + destroy(); + initialize(); + } + } + + @Subscribe + public void onStatusEvent(EventConfigBuilderChange ev) { + if (nsEnabled != MainApp.getSpecificPlugin(NSClientInternalPlugin.class).isEnabled(PluginBase.GENERAL)) { + destroy(); + initialize(); + } + } + + @Subscribe + public void onStatusEvent(final EventNSClientRestart ev) { + latestDateInReceivedData = 0; + restart(); + } + + public static void setNsProfile(NSProfile profile) { + nsProfile = profile; + } + + public static NSProfile getNsProfile() { + return nsProfile; + } + + public void initialize() { + dataCounter = 0; + + NSClientService.mWakeLock.acquire(); + + readPreferences(); + + if (!nsAPISecret.equals("")) + nsAPIhashCode = Hashing.sha1().hashString(nsAPISecret, Charsets.UTF_8).toString(); + + MainApp.bus().post(new EventNSClientStatus("Initializing")); + if (((NSClientInternalPlugin)MainApp.getSpecificPlugin(NSClientInternalPlugin.class)).paused) { + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "paused")); + MainApp.bus().post(new EventNSClientStatus("Paused")); + } else if (!nsEnabled) { + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "disabled")); + MainApp.bus().post(new EventNSClientStatus("Disabled")); + } else if (!nsURL.equals("")) { + try { + MainApp.bus().post(new EventNSClientStatus("Connecting ...")); + IO.Options opt = new IO.Options(); + opt.forceNew = true; + opt.reconnection = true; + mSocket = IO.socket(nsURL, opt); + mSocket.on(Socket.EVENT_CONNECT, onConnect); + mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect); + mSocket.on(Socket.EVENT_PING, onPing); + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "do connect")); + mSocket.connect(); + mSocket.on("dataUpdate", onDataUpdate); + } catch (URISyntaxException | RuntimeException e) { + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "Wrong URL syntax")); + MainApp.bus().post(new EventNSClientStatus("Wrong URL syntax")); + } + } else { + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "No NS URL specified")); + MainApp.bus().post(new EventNSClientStatus("Not configured")); + } + NSClientService.mWakeLock.release(); + } + + private Emitter.Listener onConnect = new Emitter.Listener() { + @Override + public void call(Object... args) { + connectCounter++; + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "connect #" + connectCounter + " event. ID: " + mSocket.id())); + sendAuthMessage(new NSAuthAck()); + } + }; + + private Emitter.Listener onDisconnect = new Emitter.Listener() { + @Override + public void call(Object... args) { + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "disconnect event")); + } + }; + + public void destroy() { + if (mSocket != null) { + MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "destroy")); + isConnected = false; + hasWriteAuth = false; + mSocket.disconnect(); + mSocket = null; + } + } + + + public void sendAuthMessage(NSAuthAck ack) { + JSONObject authMessage = new JSONObject(); + try { + authMessage.put("client", "Android_" + nsDevice); + authMessage.put("history", nsHours); + authMessage.put("status", true); // receive status + authMessage.put("from", latestDateInReceivedData); // send data newer than + authMessage.put("secret", nsAPIhashCode); + } catch (JSONException e) { + e.printStackTrace(); + return; + } + MainApp.bus().post(new EventNSClientNewLog("AUTH", "requesting auth")); + mSocket.emit("authorize", authMessage, ack); + } + + @Subscribe + public void onStatusEvent(NSAuthAck ack) { + String connectionStatus = "Authenticated ("; + if (ack.read) connectionStatus += "R"; + if (ack.write) connectionStatus += "W"; + if (ack.write_treatment) connectionStatus += "T"; + connectionStatus += ')'; + isConnected = true; + hasWriteAuth = ack.write && ack.write_treatment; + MainApp.bus().post(new EventNSClientStatus(connectionStatus)); + MainApp.bus().post(new EventNSClientNewLog("AUTH", connectionStatus)); + if (!ack.write) { + MainApp.bus().post(new EventNSClientNewLog("ERROR", "Write permission not granted !!!!")); + } + if (!ack.write_treatment) { + MainApp.bus().post(new EventNSClientNewLog("ERROR", "Write treatment permission not granted !!!!")); + } + if (!hasWriteAuth) { + Notification noperm = new Notification(Notification.NSCLIENT_NO_WRITE_PERMISSION, MainApp.sResources.getString(R.string.nowritepermission), Notification.URGENT); + MainApp.bus().post(new EventNewNotification(noperm)); + } else { + MainApp.bus().post(new EventDismissNotification(Notification.NSCLIENT_NO_WRITE_PERMISSION)); + } + lastReception = new Date(); + } + + public void readPreferences() { + nsEnabled = MainApp.getSpecificPlugin(NSClientInternalPlugin.class).isEnabled(PluginBase.GENERAL); + nsURL = SP.getString(R.string.key_nsclientinternal_url, ""); + nsAPISecret = SP.getString(R.string.key_nsclientinternal_api_secret, ""); + nsDevice = SP.getString("careportal_enteredby", ""); + } + + private Emitter.Listener onPing = new Emitter.Listener() { + @Override + public void call(final Object... args) { + if (Config.detailedLog) + MainApp.bus().post(new EventNSClientNewLog("PING", "received")); + // send data if there is something waiting + resend("Ping received"); + } + }; + + private Emitter.Listener onDataUpdate = new Emitter.Listener() { + @Override + public void call(final Object... args) { + lastReception = new Date(); + NSClientService.handler.post(new Runnable() { + @Override + public void run() { + PowerManager powerManager = (PowerManager) MainApp.instance().getApplicationContext().getSystemService(Context.POWER_SERVICE); + PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, + "onDataUpdate"); + wakeLock.acquire(); + try { + SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); + + JSONObject data = (JSONObject) args[0]; + NSCal actualCal = new NSCal(); + boolean broadcastProfile = false; + try { + // delta means only increment/changes are comming + boolean isDelta = data.has("delta"); + boolean isFull = !isDelta; + MainApp.bus().post(new EventNSClientNewLog("DATA", "Data packet #" + dataCounter++ + (isDelta ? " delta" : " full"))); + + if (data.has("profiles")) { + JSONArray profiles = (JSONArray) data.getJSONArray("profiles"); + if (profiles.length() > 0) { + JSONObject profile = (JSONObject) profiles.get(profiles.length() - 1); + String activeProfile = NSClientService.getNsProfile() == null ? null : NSClientService.getNsProfile().getActiveProfile(); + NSProfile nsProfile = new NSProfile(profile, activeProfile); + NSClientService.setNsProfile(nsProfile); + broadcastProfile = true; + MainApp.bus().post(new EventNSClientNewLog("PROFILE", "profile received")); + } + } + + if (data.has("status")) { + JSONObject status = data.getJSONObject("status"); + NSStatus nsStatus = new NSStatus(status); + + if (!status.has("versionNum")) { + if (status.getInt("versionNum") < 900) { + MainApp.bus().post(new EventNSClientNewLog("ERROR", "Unsupported Nightscout version !!!!")); + } + } else { + nightscoutVersionName = status.getString("version"); + nightscoutVersionCode = status.getInt("versionNum"); + } + + BroadcastStatus bs = new BroadcastStatus(); + bs.handleNewStatus(nsStatus, MainApp.instance().getApplicationContext(), isDelta); + + if (NSClientService.getNsProfile() != null) { + String oldActiveProfile = NSClientService.getNsProfile().getActiveProfile(); + String receivedActiveProfile = nsStatus.getActiveProfile(); + NSClientService.getNsProfile().setActiveProfile(receivedActiveProfile); + if (receivedActiveProfile != null) { + MainApp.bus().post(new EventNSClientNewLog("PROFILE", "status activeProfile received: " + receivedActiveProfile)); + } + // Change possible nulls to "" + String oldP = oldActiveProfile == null ? "" : oldActiveProfile; + String newP = receivedActiveProfile == null ? "" : receivedActiveProfile; + if (!newP.equals(oldP)) { + broadcastProfile = true; + } + } + /* Other received data to 2016/02/10 + { + status: 'ok' + , name: env.name + , version: env.version + , versionNum: versionNum (for ver 1.2.3 contains 10203) + , serverTime: new Date().toISOString() + , apiEnabled: apiEnabled + , careportalEnabled: apiEnabled && env.settings.enable.indexOf('careportal') > -1 + , boluscalcEnabled: apiEnabled && env.settings.enable.indexOf('boluscalc') > -1 + , head: env.head + , settings: env.settings + , extendedSettings: ctx.plugins && ctx.plugins.extendedClientSettings ? ctx.plugins.extendedClientSettings(env.extendedSettings) : {} + , activeProfile ..... calculated from treatments or missing + } + */ + } else if (!isDelta) { + MainApp.bus().post(new EventNSClientNewLog("ERROR", "Unsupported Nightscout version !!!!")); + } + + // If new profile received or change detected broadcast it + if (broadcastProfile && nsProfile != null) { + BroadcastProfile bp = new BroadcastProfile(); + bp.handleNewTreatment(nsProfile, MainApp.instance().getApplicationContext(), isDelta); + MainApp.bus().post(new EventNSClientNewLog("PROFILE", "broadcasting")); + } + + if (data.has("treatments")) { + JSONArray treatments = (JSONArray) data.getJSONArray("treatments"); + JSONArray removedTreatments = new JSONArray(); + JSONArray updatedTreatments = new JSONArray(); + JSONArray addedTreatments = new JSONArray(); + BroadcastTreatment bt = new BroadcastTreatment(); + if (treatments.length() > 0) + MainApp.bus().post(new EventNSClientNewLog("DATA", "received " + treatments.length() + " treatments")); + for (Integer index = 0; index < treatments.length(); index++) { + JSONObject jsonTreatment = treatments.getJSONObject(index); + NSTreatment treatment = new NSTreatment(jsonTreatment); + + // remove from upload queue if Ack is failing + UploadQueue.removeID(jsonTreatment); + //Find latest date in treatment + if (treatment.getMills() != null && treatment.getMills() < new Date().getTime()) + if (treatment.getMills() > latestDateInReceivedData) + latestDateInReceivedData = treatment.getMills(); + + if (treatment.getAction() == null) { + if (!isCurrent(treatment)) continue; + addedTreatments.put(jsonTreatment); + } else if (treatment.getAction().equals("update")) { + if (!isCurrent(treatment)) continue; + updatedTreatments.put(jsonTreatment); + } else if (treatment.getAction().equals("remove")) { + removedTreatments.put(jsonTreatment); + } + } + if (removedTreatments.length() > 0) { + bt.handleRemovedTreatment(removedTreatments, MainApp.instance().getApplicationContext(), isDelta); + } + if (updatedTreatments.length() > 0) { + bt.handleChangedTreatment(updatedTreatments, MainApp.instance().getApplicationContext(), isDelta); + } + if (addedTreatments.length() > 0) { + bt.handleNewTreatment(addedTreatments, MainApp.instance().getApplicationContext(), isDelta); + } + } + if (data.has("devicestatus")) { + BroadcastDeviceStatus bds = new BroadcastDeviceStatus(); + JSONArray devicestatuses = (JSONArray) data.getJSONArray("devicestatus"); + if (devicestatuses.length() > 0) { + MainApp.bus().post(new EventNSClientNewLog("DATA", "received " + devicestatuses.length() + " devicestatuses")); + for (Integer index = 0; index < devicestatuses.length(); index++) { + JSONObject jsonStatus = devicestatuses.getJSONObject(index); + // remove from upload queue if Ack is failing + UploadQueue.removeID(jsonStatus); + } + // send only last record + bds.handleNewDeviceStatus(devicestatuses.getJSONObject(devicestatuses.length() - 1), MainApp.instance().getApplicationContext(), isDelta); + } + } + if (data.has("mbgs")) { + BroadcastMbgs bmbg = new BroadcastMbgs(); + JSONArray mbgs = (JSONArray) data.getJSONArray("mbgs"); + if (mbgs.length() > 0) + MainApp.bus().post(new EventNSClientNewLog("DATA", "received " + mbgs.length() + " mbgs")); + for (Integer index = 0; index < mbgs.length(); index++) { + JSONObject jsonMbg = mbgs.getJSONObject(index); + // remove from upload queue if Ack is failing + UploadQueue.removeID(jsonMbg); + } + bmbg.handleNewMbg(mbgs, MainApp.instance().getApplicationContext(), isDelta); + } + if (data.has("cals")) { + BroadcastCals bc = new BroadcastCals(); + JSONArray cals = (JSONArray) data.getJSONArray("cals"); + if (cals.length() > 0) + MainApp.bus().post(new EventNSClientNewLog("DATA", "received " + cals.length() + " cals")); + // Retreive actual calibration + for (Integer index = 0; index < cals.length(); index++) { + if (index == 0) { + actualCal.set(cals.optJSONObject(index)); + } + // remove from upload queue if Ack is failing + UploadQueue.removeID(cals.optJSONObject(index)); + } + bc.handleNewCal(cals, MainApp.instance().getApplicationContext(), isDelta); + } + if (data.has("sgvs")) { + BroadcastSgvs bs = new BroadcastSgvs(); + String units = nsProfile != null ? nsProfile.getUnits() : "mg/dl"; + JSONArray sgvs = (JSONArray) data.getJSONArray("sgvs"); + if (sgvs.length() > 0) + MainApp.bus().post(new EventNSClientNewLog("DATA", "received " + sgvs.length() + " sgvs")); + for (Integer index = 0; index < sgvs.length(); index++) { + JSONObject jsonSgv = sgvs.getJSONObject(index); + // MainApp.bus().post(new EventNSClientNewLog("DATA", "svg " + sgvs.getJSONObject(index).toString()); + NSSgv sgv = new NSSgv(jsonSgv); + // Handle new sgv here + // remove from upload queue if Ack is failing + UploadQueue.removeID(jsonSgv); + //Find latest date in sgv + if (sgv.getMills() != null && sgv.getMills() < new Date().getTime()) + if (sgv.getMills() > latestDateInReceivedData) + latestDateInReceivedData = sgv.getMills(); + } + bs.handleNewSgv(sgvs, MainApp.instance().getApplicationContext(), isDelta); + } + MainApp.bus().post(new EventNSClientNewLog("LAST", DateUtil.dateAndTimeString(latestDateInReceivedData))); + } catch (JSONException e) { + e.printStackTrace(); + } + //MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "onDataUpdate end"); + } finally { + wakeLock.release(); + } + } + + }); + } + }; + + public void dbUpdate(DbRequest dbr, NSUpdateAck ack) { + try { + if (!isConnected || !hasWriteAuth) return; + JSONObject message = new JSONObject(); + message.put("collection", dbr.collection); + message.put("_id", dbr._id); + message.put("data", new JSONObject(dbr.data)); + mSocket.emit("dbUpdate", message, ack); + MainApp.bus().post(new EventNSClientNewLog("DBUPDATE " + dbr.collection, "Sent " + dbr._id)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + public void dbUpdateUnset(DbRequest dbr, NSUpdateAck ack) { + try { + if (!isConnected || !hasWriteAuth) return; + JSONObject message = new JSONObject(); + message.put("collection", dbr.collection); + message.put("_id", dbr._id); + message.put("data", new JSONObject(dbr.data)); + mSocket.emit("dbUpdateUnset", message, ack); + MainApp.bus().post(new EventNSClientNewLog("DBUPDATEUNSET " + dbr.collection, "Sent " + dbr._id)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + public void dbRemove(DbRequest dbr, NSUpdateAck ack) { + try { + if (!isConnected || !hasWriteAuth) return; + JSONObject message = new JSONObject(); + message.put("collection", dbr.collection); + message.put("_id", dbr._id); + mSocket.emit("dbRemove", message, ack); + MainApp.bus().post(new EventNSClientNewLog("DBREMOVE " + dbr.collection, "Sent " + dbr._id)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + @Subscribe + public void onStatusEvent(NSUpdateAck ack) { + if (ack.result) { + uploadQueue.removeID(ack.action, ack._id); + MainApp.bus().post(new EventNSClientNewLog("DBUPDATE/DBREMOVE", "Acked " + ack._id)); + } else { + MainApp.bus().post(new EventNSClientNewLog("ERROR", "DBUPDATE/DBREMOVE Unknown response")); + } + } + + public void dbAdd(DbRequest dbr, NSAddAck ack) { + try { + if (!isConnected || !hasWriteAuth) return; + JSONObject message = new JSONObject(); + message.put("collection", dbr.collection); + message.put("data", new JSONObject(dbr.data)); + mSocket.emit("dbAdd", message, ack); + MainApp.bus().post(new EventNSClientNewLog("DBADD " + dbr.collection, "Sent " + dbr.nsClientID)); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + @Subscribe + public void onStatusEvent(NSAddAck ack) { + if (ack.nsClientID != null) { + uploadQueue.removeID(ack.json); + MainApp.bus().post(new EventNSClientNewLog("DBADD", "Acked " + ack.nsClientID)); + } else { + MainApp.bus().post(new EventNSClientNewLog("ERROR", "DBADD Unknown response")); + } + } + + public void doPing() { + if (!isConnected || !hasWriteAuth) return; + MainApp.bus().post(new EventNSClientNewLog("PING", "Sending")); + uploading = true; + JSONObject message = new JSONObject(); + try { + message.put("mills", new Date().getTime()); + } catch (JSONException e) { + e.printStackTrace(); + } + NSPingAck ack = new NSPingAck(); + mSocket.emit("nsping", message, ack); + synchronized (ack) { + try { + ack.wait(timeToWaitForResponseInMs); + } catch (InterruptedException e) { + } + } + if (ack.received) { + String connectionStatus = "Pong received"; + if (ack.auth_received) { + connectionStatus += ": "; + if (ack.read) connectionStatus += "R"; + if (ack.write) connectionStatus += "W"; + if (ack.write_treatment) connectionStatus += "T"; + } + if (!ack.read) sendAuthMessage(new NSAuthAck()); + MainApp.bus().post(new EventNSClientNewLog("AUTH ", connectionStatus)); + } else { + MainApp.bus().post(new EventNSClientNewLog("PING", "Ping lost")); + } + uploading = false; + } + + private boolean isCurrent(NSTreatment treatment) { + long now = (new Date()).getTime(); + long minPast = now - nsHours * 60L * 60 * 1000; + if (treatment.getMills() == null) { + log.debug("treatment.getMills() == null " + treatment.getData().toString()); + return false; + } + if (treatment.getMills() > minPast) return true; + return false; + } + + public void resend(final String reason) { + if (UploadQueue.size() == 0) + return; + + if (!isConnected || !hasWriteAuth) return; + + MainApp.bus().post(new EventNSClientNewLog("QUEUE", "Resend started: " + reason)); + + handler.post(new Runnable() { + @Override + public void run() { + Logger log = LoggerFactory.getLogger(UploadQueue.class); + if (mSocket == null || !mSocket.connected()) return; + + CloseableIterator iterator = null; + try { + iterator = MainApp.getDbHelper().getDaoDbRequest().closeableIterator(); + try { + while (iterator.hasNext()) { + DbRequest dbr = iterator.next(); + if (dbr.action.equals("dbAdd")) { + NSAddAck addAck = new NSAddAck(); + dbAdd(dbr, addAck); + } else if (dbr.action.equals("dbRemove")) { + NSUpdateAck removeAck = new NSUpdateAck(dbr.action, dbr._id); + dbRemove(dbr, removeAck); + } else if (dbr.action.equals("dbUpdate")) { + NSUpdateAck updateAck = new NSUpdateAck(dbr.action, dbr._id); + dbUpdate(dbr, updateAck); + } else if (dbr.action.equals("dbUpdateUnset")) { + NSUpdateAck updateUnsetAck = new NSUpdateAck(dbr.action, dbr._id); + dbUpdateUnset(dbr, updateUnsetAck); + } + } + } finally { + iterator.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + + MainApp.bus().post(new EventNSClientNewLog("QUEUE", "Resend ended: " + reason)); + } + }); + } + + public void restart() { + destroy(); + initialize(); + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java deleted file mode 100644 index eb449b96c8..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/Autosens.java +++ /dev/null @@ -1,242 +0,0 @@ -package info.nightscout.androidaps.plugins.OpenAPSAMA; - -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -import info.nightscout.androidaps.Constants; -import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.data.IobTotal; -import info.nightscout.androidaps.db.BgReading; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.Round; -import info.nightscout.utils.SafeParse; - - -public class Autosens { - private static Logger log = LoggerFactory.getLogger(Autosens.class); - - public static AutosensResult detectSensitivityandCarbAbsorption(List glucose_data, Long mealTime) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - - //console.error(mealTime); - - double deviationSum = 0; - double carbsAbsorbed = 0; - - List bucketed_data = new ArrayList<>(); - bucketed_data.add(glucose_data.get(0)); - int j = 0; - for (int i = 1; i < glucose_data.size(); ++i) { - long bgTime = glucose_data.get(i).getTimeIndex(); - long lastbgTime = glucose_data.get(i - 1).getTimeIndex(); - if (glucose_data.get(i).value < 39 || glucose_data.get(i - 1).value < 39) { - continue; - } - - long elapsed_minutes = (bgTime - lastbgTime) / (60 * 1000); - if (Math.abs(elapsed_minutes) > 8) { - // interpolate missing data points - double lastbg = glucose_data.get(i - 1).value; - elapsed_minutes = Math.abs(elapsed_minutes); - //console.error(elapsed_minutes); - long nextbgTime; - while (elapsed_minutes > 5) { - nextbgTime = lastbgTime + 5 * 60 * 1000; - j++; - BgReading newBgreading = new BgReading(); - newBgreading.timeIndex = nextbgTime; - double gapDelta = glucose_data.get(i).value - lastbg; - //console.error(gapDelta, lastbg, elapsed_minutes); - double nextbg = lastbg + (5 / elapsed_minutes * gapDelta); - newBgreading.value = Math.round(nextbg); - //console.error("Interpolated", bucketed_data[j]); - bucketed_data.add(newBgreading); - - elapsed_minutes = elapsed_minutes - 5; - lastbg = nextbg; - lastbgTime = nextbgTime; - } - } else if (Math.abs(elapsed_minutes) > 2) { - j++; - BgReading newBgreading = new BgReading(); - newBgreading.value = glucose_data.get(i).value; - newBgreading.timeIndex = bgTime; - bucketed_data.add(newBgreading); - } else { - bucketed_data.get(j).value = (bucketed_data.get(j).value + glucose_data.get(i).value) / 2; - } - } - //console.error(bucketed_data); - double[] avgDeltas = new double[bucketed_data.size() - 2]; - double[] bgis = new double[bucketed_data.size() - 2]; - double[] deviations = new double[bucketed_data.size() - 2]; - - String pastSensitivity = ""; - for (int i = 0; i < bucketed_data.size() - 3; ++i) { - long bgTime = bucketed_data.get(i).timeIndex; - int secondsFromMidnight = NSProfile.secondsFromMidnight(new Date(bgTime)); - - double sens = NSProfile.toMgdl(profile.getIsf(secondsFromMidnight), profile.getUnits()); - - //console.error(bgTime , bucketed_data[i].glucose); - double bg; - double avgDelta; - double delta; - bg = bucketed_data.get(i).value; - if (bg < 40 || bucketed_data.get(i + 3).value < 40) { - log.error("! value < 40"); - continue; - } - avgDelta = (bg - bucketed_data.get(i + 3).value) / 3; - delta = (bg - bucketed_data.get(i + 1).value); - -// avgDelta = avgDelta.toFixed(2); - IobTotal iob = IobTotal.calulateFromTreatmentsAndTemps(bgTime); - - double bgi = Math.round((-iob.activity * sens * 5) * 100) / 100d; -// bgi = bgi.toFixed(2); - //console.error(delta); - double deviation = delta - bgi; -// deviation = deviation.toFixed(2); - //if (deviation < 0 && deviation > -2) { console.error("BG: "+bg+", avgDelta: "+avgDelta+", BGI: "+bgi+", deviation: "+deviation); } - - // Exclude large positive deviations (carb absorption) from autosens - if (avgDelta - bgi < 6) { - if (deviation > 0) { - pastSensitivity += "+"; - } else if (deviation == 0) { - pastSensitivity += "="; - } else { - pastSensitivity += "-"; - } - avgDeltas[i] = avgDelta; - bgis[i] = bgi; - deviations[i] = deviation; - deviationSum += deviation; - } else { - pastSensitivity += ">"; - //console.error(bgTime); - } - //log.debug("TIME: " + new Date(bgTime).toString() + " BG: " + bg + " SENS: " + sens + " DELTA: " + delta + " AVGDELTA: " + avgDelta + " IOB: " + iob.iob + " ACTIVITY: " + iob.activity + " BGI: " + bgi + " DEVIATION: " + deviation); - - // if bgTime is more recent than mealTime - if (mealTime != null && bgTime > mealTime) { - // figure out how many carbs that represents - // but always assume at least 3mg/dL/5m (default) absorption - double ci = Math.max(deviation, SafeParse.stringToDouble(SP.getString("openapsama_min_5m_carbimpact", "3.0"))); - double absorbed = ci * profile.getIc(secondsFromMidnight) / sens; - // and add that to the running total carbsAbsorbed - carbsAbsorbed += absorbed; - } - } - - double ratio = 1; - String ratioLimit = ""; - String sensResult = ""; - - if (mealTime == null) { - //console.error(""); - log.debug(pastSensitivity); - //console.log(JSON.stringify(avgDeltas)); - //console.log(JSON.stringify(bgis)); - Arrays.sort(avgDeltas); - Arrays.sort(bgis); - Arrays.sort(deviations); - - for (double i = 0.9; i > 0.1; i = i - 0.02) { - //console.error("p="+i.toFixed(2)+": "+percentile(avgDeltas, i).toFixed(2)+", "+percentile(bgis, i).toFixed(2)+", "+percentile(deviations, i).toFixed(2)); - if (percentile(deviations, (i + 0.02)) >= 0 && percentile(deviations, i) < 0) { - //console.error("p="+i.toFixed(2)+": "+percentile(avgDeltas, i).toFixed(2)+", "+percentile(bgis, i).toFixed(2)+", "+percentile(deviations, i).toFixed(2)); - log.debug(Math.round(100 * i) + "% of non-meal deviations negative (target 45%-50%)"); - } - } - double pSensitive = percentile(deviations, 0.50); - double pResistant = percentile(deviations, 0.45); - //p30 = percentile(deviations, 0.3); - -// average = deviationSum / deviations.length; - - //console.error("Mean deviation: "+average.toFixed(2)); - double basalOff = 0; - - if (pSensitive < 0) { // sensitive - basalOff = pSensitive * (60 / 5) / NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()); - sensResult = "Excess insulin sensitivity detected"; - } else if (pResistant > 0) { // resistant - basalOff = pResistant * (60 / 5) / NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()); - sensResult = "Excess insulin resistance detected"; - } else { - sensResult = "Sensitivity normal"; - } - log.debug(sensResult); - ratio = 1 + (basalOff / profile.getMaxDailyBasal()); - - // don't adjust more than 1.5x - double rawRatio = ratio; - ratio = Math.max(ratio, SafeParse.stringToDouble(SP.getString("openapsama_autosens_min", "0.7"))); - ratio = Math.min(ratio, SafeParse.stringToDouble(SP.getString("openapsama_autosens_max", "1.2"))); - - if (ratio != rawRatio) { - ratioLimit = "Ratio limited from " + rawRatio + " to " + ratio; - log.debug(ratioLimit); - } - - double newisf = Math.round(NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()) / ratio); - if (ratio != 1) { - log.debug("ISF adjusted from " + NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()), profile.getUnits()) + " to " + newisf); - } - //console.error("Basal adjustment "+basalOff.toFixed(2)+"U/hr"); - //console.error("Ratio: "+ratio*100+"%: new ISF: "+newisf.toFixed(1)+"mg/dL/U"); - } - - AutosensResult output = new AutosensResult(); - output.ratio = Round.roundTo(ratio, 0.01); - output.carbsAbsorbed = Round.roundTo(carbsAbsorbed, 0.01); - output.pastSensitivity = pastSensitivity; - output.ratioLimit = ratioLimit; - output.sensResult = sensResult; - return output; - } - - // From https://gist.github.com/IceCreamYou/6ffa1b18c4c8f6aeaad2 - // Returns the value at a given percentile in a sorted numeric array. - // "Linear interpolation between closest ranks" method - public static double percentile(double[] arr, double p) { - if (arr.length == 0) return 0; - if (p <= 0) return arr[0]; - if (p >= 1) return arr[arr.length - 1]; - - double index = arr.length * p, - lower = Math.floor(index), - upper = lower + 1, - weight = index % 1; - - if (upper >= arr.length) return arr[(int) lower]; - return arr[(int) lower] * (1 - weight) + arr[(int) upper] * weight; - } - - // Returns the percentile of the given value in a sorted numeric array. - public static double percentRank(double[] arr, double v) { - for (int i = 0, l = arr.length; i < l; i++) { - if (v <= arr[i]) { - while (i < l && v == arr[i]) i++; - if (i == 0) return 0; - if (v != arr[i - 1]) { - i += (v - arr[i - 1]) / (arr[i] - arr[i - 1]); - } - return i / l; - } - } - return 1; - } - -} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/DetermineBasalAdapterAMAJS.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/DetermineBasalAdapterAMAJS.java index aa6c0ae36d..e2c7f20284 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/DetermineBasalAdapterAMAJS.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/DetermineBasalAdapterAMAJS.java @@ -1,8 +1,5 @@ package info.nightscout.androidaps.plugins.OpenAPSAMA; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - import com.eclipsesource.v8.JavaVoidCallback; import com.eclipsesource.v8.V8; import com.eclipsesource.v8.V8Array; @@ -16,18 +13,16 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment; -import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.Loop.ScriptReader; import info.nightscout.androidaps.data.IobTotal; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; public class DetermineBasalAdapterAMAJS { private static Logger log = LoggerFactory.getLogger(DetermineBasalAdapterAMAJS.class); @@ -209,7 +204,6 @@ public class DetermineBasalAdapterAMAJS { double min_5m_carbimpact) { String units = profile.getUnits(); - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); mProfile = new V8Object(mV8rt); mProfile.add("max_iob", maxIob); @@ -222,13 +216,13 @@ public class DetermineBasalAdapterAMAJS { mProfile.add("target_bg", targetBg); mProfile.add("carb_ratio", profile.getIc(profile.secondsFromMidnight())); mProfile.add("sens", NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()).doubleValue(), units)); - mProfile.add("max_daily_safety_multiplier", SafeParse.stringToInt(preferences.getString("openapsama_max_daily_safety_multiplier", "3"))); - mProfile.add("current_basal_safety_multiplier", SafeParse.stringToInt(preferences.getString("openapsama_current_basal_safety_multiplier", "4"))); + mProfile.add("max_daily_safety_multiplier", SP.getInt("openapsama_max_daily_safety_multiplier", 3)); + mProfile.add("current_basal_safety_multiplier", SP.getInt("openapsama_current_basal_safety_multiplier", 4)); mProfile.add("skip_neutral_temps", true); mProfile.add("current_basal", pump.getBaseBasalRate()); mProfile.add("temptargetSet", tempTargetSet); - mProfile.add("autosens_adjust_targets", preferences.getBoolean("openapsama_autosens_adjusttargets", true)); - mProfile.add("min_5m_carbimpact", SafeParse.stringToDouble(preferences.getString("openapsama_min_5m_carbimpact", "3.0"))); + mProfile.add("autosens_adjust_targets", SP.getBoolean("openapsama_autosens_adjusttargets", true)); + mProfile.add("min_5m_carbimpact", SP.getDouble("openapsama_min_5m_carbimpact", 3d)); mV8rt.add(PARAM_profile, mProfile); mCurrentTemp = new V8Object(mV8rt); @@ -244,7 +238,7 @@ public class DetermineBasalAdapterAMAJS { mV8rt.add(PARAM_currentTemp, mCurrentTemp); - mIobData = mV8rt.executeArrayScript(IobTotal.convertToJSONArray(iobArray).toString()); + mIobData = mV8rt.executeArrayScript(IobCobCalculatorPlugin.convertToJSONArray(iobArray).toString()); mV8rt.add(PARAM_iobData, mIobData); mGlucoseStatus = new V8Object(mV8rt); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAFragment.java index 4a8ce51266..c480ebfe3c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAFragment.java @@ -9,6 +9,8 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.squareup.otto.Subscribe; import org.json.JSONArray; @@ -18,12 +20,11 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui; import info.nightscout.utils.JSONFormatter; -public class OpenAPSAMAFragment extends Fragment implements View.OnClickListener, FragmentBase { +public class OpenAPSAMAFragment extends Fragment implements View.OnClickListener { private static Logger log = LoggerFactory.getLogger(OpenAPSAMAFragment.class); private static OpenAPSAMAPlugin openAPSAMAPlugin; @@ -74,6 +75,7 @@ public class OpenAPSAMAFragment extends Fragment implements View.OnClickListener switch (view.getId()) { case R.id.openapsma_run: getPlugin().invoke("OpenAPSAMA button"); + Answers.getInstance().logCustom(new CustomEvent("OpenAPS_AMA_Run")); break; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java index 49d5b760b9..ee8caea6b4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSAMA/OpenAPSAMAPlugin.java @@ -1,15 +1,11 @@ package info.nightscout.androidaps.plugins.OpenAPSAMA; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - import org.json.JSONException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.Date; -import java.util.List; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Constants; @@ -17,22 +13,23 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.data.MealData; -import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.interfaces.APSInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.interfaces.TempBasalsInterface; +import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensResult; +import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; import info.nightscout.androidaps.plugins.Loop.APSResult; import info.nightscout.androidaps.plugins.Loop.ScriptReader; import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui; import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.Profiler; import info.nightscout.utils.Round; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; @@ -82,6 +79,16 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentVisible(int type, boolean fragmentVisible) { if (type == APS) this.fragmentVisible = fragmentVisible; @@ -142,7 +149,7 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface { return; } - if (profile == null) { + if (profile == null || profile.getIc(NSProfile.secondsFromMidnight()) == null || profile.getIsf(NSProfile.secondsFromMidnight()) == null || profile.getBasal(NSProfile.secondsFromMidnight()) == null ) { MainApp.bus().post(new EventOpenAPSUpdateResultGui(MainApp.instance().getString(R.string.openapsma_noprofile))); if (Config.logAPSResult) log.debug(MainApp.instance().getString(R.string.openapsma_noprofile)); @@ -156,12 +163,11 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface { return; } - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); String units = profile.getUnits(); - String maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; - String minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; - String targetBgDefault = Constants.TARGET_BG_DEFAULT_MGDL; + Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; + Double minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; + Double targetBgDefault = Constants.TARGET_BG_DEFAULT_MGDL; if (!units.equals(Constants.MGDL)) { maxBgDefault = Constants.MAX_BG_DEFAULT_MMOL; minBgDefault = Constants.MIN_BG_DEFAULT_MMOL; @@ -170,18 +176,18 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface { Date now = new Date(); - double maxIob = SafeParse.stringToDouble(SP.getString("openapsma_max_iob", "1.5")); - double maxBasal = SafeParse.stringToDouble(SP.getString("openapsma_max_basal", "1")); - double minBg = NSProfile.toMgdl(SafeParse.stringToDouble(SP.getString("openapsma_min_bg", minBgDefault)), units); - double maxBg = NSProfile.toMgdl(SafeParse.stringToDouble(SP.getString("openapsma_max_bg", maxBgDefault)), units); - double targetBg = NSProfile.toMgdl(SafeParse.stringToDouble(SP.getString("openapsma_target_bg", targetBgDefault)), units); + double maxIob = SP.getDouble("openapsma_max_iob", 1.5d); + double maxBasal = SP.getDouble("openapsma_max_basal", 1d); + double minBg = NSProfile.toMgdl(SP.getDouble("openapsma_min_bg", minBgDefault), units); + double maxBg = NSProfile.toMgdl(SP.getDouble("openapsma_max_bg", maxBgDefault), units); + double targetBg = NSProfile.toMgdl(SP.getDouble("openapsma_target_bg", targetBgDefault), units); minBg = Round.roundTo(minBg, 0.1d); maxBg = Round.roundTo(maxBg, 0.1d); Date start = new Date(); Date startPart = new Date(); - IobTotal[] iobArray = IobTotal.calculateIobArrayInDia(); + IobTotal[] iobArray = IobCobCalculatorPlugin.calculateIobArrayInDia(); Profiler.log(log, "calculateIobArrayInDia()", startPart); startPart = new Date(); @@ -216,15 +222,14 @@ public class OpenAPSAMAPlugin implements PluginBase, APSInterface { if (!checkOnlyHardLimits(profile.getMaxDailyBasal(), "max_daily_basal", 0.1, 10)) return; if (!checkOnlyHardLimits(pump.getBaseBasalRate(), "current_basal", 0.01, 5)) return; - startPart = new Date(); long oldestDataAvailable = MainApp.getConfigBuilder().getActiveTempBasals().oldestDataAvaialable(); - List bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime(Math.max(oldestDataAvailable, (long) (new Date().getTime() - 60 * 60 * 1000L * (24 + profile.getDia()))), false); - log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString() + " (" + bgReadings.size() + " records)"); - Profiler.log(log, "getBgreadingsDataFromTime()", startPart); + long getBGDataFrom = Math.max(oldestDataAvailable, (long) (new Date().getTime() - 60 * 60 * 1000L * (24 + profile.getDia()))); + log.debug("Limiting data to oldest available temps: " + new Date(oldestDataAvailable).toString()); startPart = new Date(); if(MainApp.getConfigBuilder().isAMAModeEnabled()){ - lastAutosensResult = Autosens.detectSensitivityandCarbAbsorption(bgReadings, null); + //lastAutosensResult = Autosens.detectSensitivityandCarbAbsorption(getBGDataFrom, null); + lastAutosensResult = IobCobCalculatorPlugin.detectSensitivity(getBGDataFrom); } else { lastAutosensResult = new AutosensResult(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/DetermineBasalAdapterMAJS.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/DetermineBasalAdapterMAJS.java index 75c68cd5cc..75f87021c5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/DetermineBasalAdapterMAJS.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/DetermineBasalAdapterMAJS.java @@ -18,7 +18,7 @@ import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Loop.ScriptReader; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; public class DetermineBasalAdapterMAJS { private static Logger log = LoggerFactory.getLogger(DetermineBasalAdapterMAJS.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAFragment.java index 8805ba18b7..16249dffc3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAFragment.java @@ -9,6 +9,8 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.squareup.otto.Subscribe; import org.slf4j.Logger; @@ -16,18 +18,17 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui; import info.nightscout.utils.JSONFormatter; -public class OpenAPSMAFragment extends Fragment implements View.OnClickListener, FragmentBase { +public class OpenAPSMAFragment extends Fragment implements View.OnClickListener { private static Logger log = LoggerFactory.getLogger(OpenAPSMAFragment.class); private static OpenAPSMAPlugin openAPSMAPlugin; public static OpenAPSMAPlugin getPlugin() { - if(openAPSMAPlugin==null){ + if (openAPSMAPlugin == null) { openAPSMAPlugin = new OpenAPSMAPlugin(); } return openAPSMAPlugin; @@ -68,6 +69,7 @@ public class OpenAPSMAFragment extends Fragment implements View.OnClickListener, switch (view.getId()) { case R.id.openapsma_run: getPlugin().invoke("OpenAPSMA button"); + Answers.getInstance().logCustom(new CustomEvent("OpenAPS_MA_Run")); break; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAPlugin.java index a3d5c3c508..1e7bec7471 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/OpenAPSMA/OpenAPSMAPlugin.java @@ -1,8 +1,5 @@ package info.nightscout.androidaps.plugins.OpenAPSMA; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - import org.json.JSONException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,15 +22,15 @@ import info.nightscout.androidaps.interfaces.TempBasalsInterface; import info.nightscout.androidaps.interfaces.TreatmentsInterface; import info.nightscout.androidaps.plugins.Loop.APSResult; import info.nightscout.androidaps.plugins.Loop.ScriptReader; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateResultGui; import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin; -import info.nightscout.client.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.Profiler; import info.nightscout.utils.Round; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; -import info.nightscout.utils.ToastUtils; import static info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin.checkOnlyHardLimits; import static info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin.verifyHardLimits; @@ -83,6 +80,16 @@ public class OpenAPSMAPlugin implements PluginBase, APSInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentVisible(int type, boolean fragmentVisible) { if (type == APS) this.fragmentVisible = fragmentVisible; @@ -157,12 +164,11 @@ public class OpenAPSMAPlugin implements PluginBase, APSInterface { return; } - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); String units = profile.getUnits(); - String maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; - String minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; - String targetBgDefault = Constants.TARGET_BG_DEFAULT_MGDL; + Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; + Double minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; + Double targetBgDefault = Constants.TARGET_BG_DEFAULT_MGDL; if (!units.equals(Constants.MGDL)) { maxBgDefault = Constants.MAX_BG_DEFAULT_MMOL; minBgDefault = Constants.MIN_BG_DEFAULT_MMOL; @@ -171,11 +177,11 @@ public class OpenAPSMAPlugin implements PluginBase, APSInterface { Date now = new Date(); - double maxIob = SafeParse.stringToDouble(SP.getString("openapsma_max_iob", "1.5")); + double maxIob = SP.getDouble("openapsma_max_iob", 1.5d); double maxBasal = SafeParse.stringToDouble(SP.getString("openapsma_max_basal", "1")); - double minBg = NSProfile.toMgdl(SafeParse.stringToDouble(SP.getString("openapsma_min_bg", minBgDefault)), units); - double maxBg = NSProfile.toMgdl(SafeParse.stringToDouble(SP.getString("openapsma_max_bg", maxBgDefault)), units); - double targetBg = NSProfile.toMgdl(SafeParse.stringToDouble(SP.getString("openapsma_target_bg", targetBgDefault)), units); + double minBg = NSProfile.toMgdl(SP.getDouble("openapsma_min_bg", minBgDefault), units); + double maxBg = NSProfile.toMgdl(SP.getDouble("openapsma_max_bg", maxBgDefault), units); + double targetBg = NSProfile.toMgdl(SP.getDouble("openapsma_target_bg", targetBgDefault), units); minBg = Round.roundTo(minBg, 0.1d); maxBg = Round.roundTo(maxBg, 0.1d); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/BolusProgressDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/BolusProgressDialog.java index dfedda106e..f536af5860 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/BolusProgressDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/BolusProgressDialog.java @@ -18,10 +18,11 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.interfaces.PumpInterface; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissBolusprogressIfRunning; import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProgress; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRBolusStart; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRBolusStart; public class BolusProgressDialog extends DialogFragment implements View.OnClickListener { private static Logger log = LoggerFactory.getLogger(BolusProgressDialog.class); @@ -46,7 +47,7 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL bolusEnded = false; } - public void setHelperActivity(BolusProgressHelperActivity activity){ + public void setHelperActivity(BolusProgressHelperActivity activity) { this.helperActivity = activity; } @@ -77,9 +78,9 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL } @Override - public void dismiss(){ + public void dismiss() { super.dismiss(); - if (helperActivity!= null){ + if (helperActivity != null) { helperActivity.finish(); } } @@ -128,7 +129,14 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventDismissBolusprogressIfRunning ev) { + if(BolusProgressDialog.running){ + dismiss(); + } + } + + @Subscribe + public void onStatusEvent(final EventPumpStatusChanged c) { Activity activity = getActivity(); if (activity != null) { @@ -136,14 +144,7 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL new Runnable() { @Override public void run() { - if (c.sStatus == c.CONNECTING) { - statusView.setText(String.format(MainApp.sResources.getString(R.string.danar_history_connectingfor), c.sSecondsElapsed)); - } else if (c.sStatus == c.CONNECTED) { - statusView.setText(MainApp.sResources.getString(R.string.connected)); - } else { - statusView.setText(MainApp.sResources.getString(R.string.disconnected)); - if (started) scheduleDismiss(); - } + statusView.setText(c.textStatus()); } } ); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/CalibrationDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/CalibrationDialog.java index 9e06bbb600..6ff9dceb1f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/CalibrationDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/CalibrationDialog.java @@ -12,6 +12,9 @@ import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,7 +24,7 @@ import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.GlucoseStatus; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.PlusMinusEditText; import info.nightscout.utils.XdripCalibrations; @@ -32,14 +35,16 @@ public class CalibrationDialog extends DialogFragment implements View.OnClickLis PlusMinusEditText bgText; TextView unitsView; - Context parentContext; + Context context; public CalibrationDialog() { // Required empty public constructor } - public void setContext(Context context) { - parentContext = context; + @Override + public void onAttach(Context context) { + super.onAttach(context); + this.context = context; } @Override @@ -54,14 +59,19 @@ public class CalibrationDialog extends DialogFragment implements View.OnClickLis okButton.setOnClickListener(this); NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - Double bg = NSProfile.fromMgdlToUnits(GlucoseStatus.getGlucoseStatusData() != null ? GlucoseStatus.getGlucoseStatusData().glucose : 0d, profile.getUnits()); - if (profile.getUnits().equals(Constants.MMOL)) + Double bg = profile != null ? NSProfile.fromMgdlToUnits(GlucoseStatus.getGlucoseStatusData() != null ? GlucoseStatus.getGlucoseStatusData().glucose : 0d, profile.getUnits()) : 0d; + + String units = Constants.MGDL; + if (profile != null) + units = profile.getUnits(); + + if (units.equals(Constants.MMOL)) bgText = new PlusMinusEditText(view, R.id.overview_calibration_bg, R.id.overview_calibration_bg_plus, R.id.overview_calibration_bg_minus, bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false); else bgText = new PlusMinusEditText(view, R.id.overview_calibration_bg, R.id.overview_calibration_bg_plus, R.id.overview_calibration_bg_minus, bg, 0d, 500d, 1d, new DecimalFormat("0"), false); unitsView = (TextView) view.findViewById(R.id.overview_calibration_units); - unitsView.setText(profile.getUnits()); + unitsView.setText(units); return view; } @@ -71,8 +81,9 @@ public class CalibrationDialog extends DialogFragment implements View.OnClickLis switch (view.getId()) { case R.id.overview_calibration_okbutton: final Double bg = bgText.getValue(); - XdripCalibrations.confirmAndSendCalibration(bg, parentContext); + XdripCalibrations.confirmAndSendCalibration(bg, context); dismiss(); + Answers.getInstance().logCustom(new CustomEvent("Calibration")); break; } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java index 81762b6382..e97104437d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java @@ -16,6 +16,9 @@ import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; + import java.text.DecimalFormat; import info.nightscout.androidaps.Constants; @@ -107,7 +110,7 @@ public class NewTreatmentDialog extends DialogFragment implements OnClickListene mHandler.post(new Runnable() { @Override public void run() { - PumpEnactResult result = pump.deliverTreatment(finalInsulinAfterConstraints, finalCarbsAfterConstraints, context); + PumpEnactResult result = pump.deliverTreatment(MainApp.getConfigBuilder().getActiveInsulin(), finalInsulinAfterConstraints, finalCarbsAfterConstraints, context); if (!result.success) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(MainApp.sResources.getString(R.string.treatmentdeliveryerror)); @@ -117,6 +120,7 @@ public class NewTreatmentDialog extends DialogFragment implements OnClickListene } } }); + Answers.getInstance().logCustom(new CustomEvent("Bolus")); } } }); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java index 890c393edc..2235bbe1dd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java @@ -1,5 +1,6 @@ package info.nightscout.androidaps.plugins.Overview.Dialogs; +import android.app.Activity; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; @@ -21,13 +22,19 @@ import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.EditText; +import android.widget.LinearLayout; import android.widget.Spinner; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; +import com.squareup.otto.Subscribe; + import org.json.JSONException; import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.w3c.dom.Text; import java.text.DecimalFormat; import java.util.ArrayList; @@ -39,36 +46,58 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.BgReading; +import info.nightscout.androidaps.events.EventNewBG; +import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.TempBasalsInterface; import info.nightscout.androidaps.interfaces.TreatmentsInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.data.IobTotal; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.Loop.APSResult; +import info.nightscout.androidaps.plugins.Loop.LoopPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.androidaps.plugins.OpenAPSAMA.DetermineBasalResultAMA; +import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin; +import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSUpdateGui; import info.nightscout.utils.BolusWizard; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.PlusMinusEditText; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; -public class WizardDialog extends DialogFragment implements OnClickListener { +public class WizardDialog extends DialogFragment implements OnClickListener, CompoundButton.OnCheckedChangeListener, Spinner.OnItemSelectedListener { private static Logger log = LoggerFactory.getLogger(WizardDialog.class); Button wizardDialogDeliverButton; TextView correctionInput; TextView carbsInput; TextView bgInput; - TextView bg, bgInsulin, bgUnits; + TextView bg; + TextView bgInsulin; + TextView bgUnits; CheckBox bgCheckbox; - TextView carbs, carbsInsulin; + TextView carbs; + TextView carbsInsulin; TextView bolusIobInsulin; TextView basalIobInsulin; CheckBox bolusIobCheckbox; CheckBox basalIobCheckbox; TextView correctionInsulin; - TextView total, totalInsulin; + TextView total; + TextView totalInsulin; EditText carbTimeEdit; Spinner profileSpinner; + CheckBox superbolusCheckbox; + TextView superbolus; + TextView superbolusInsulin; + CheckBox bgtrendCheckbox; + TextView bgTrend; + TextView bgTrendInsulin; + LinearLayout cobLayout; + CheckBox cobCheckbox; + TextView cob; + TextView cobInsulin; PlusMinusEditText editBg; PlusMinusEditText editCarbs; @@ -78,21 +107,69 @@ public class WizardDialog extends DialogFragment implements OnClickListener { Integer calculatedCarbs = 0; Double calculatedTotalInsulin = 0d; JSONObject boluscalcJSON; + boolean cobAvailable = false; Handler mHandler; public static HandlerThread mHandlerThread; - Context parentContext; + Context context; public WizardDialog() { + super(); mHandlerThread = new HandlerThread(WizardDialog.class.getSimpleName()); mHandlerThread.start(); mHandler = new Handler(mHandlerThread.getLooper()); } + @Override + public void onAttach(Context context) { + super.onAttach(context); + this.context = context; + } - public void setContext(Context context) { - parentContext = context; + @Override + public void onResume() { + super.onResume(); + if (getDialog() != null) + getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + MainApp.bus().register(this); + } + + @Override + public void onPause() { + super.onPause(); + MainApp.bus().unregister(this); + } + + @Subscribe + public void onStatusEvent(final EventOpenAPSUpdateGui e) { + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + if (ConfigBuilderPlugin.getActiveAPS() instanceof OpenAPSAMAPlugin && ConfigBuilderPlugin.getActiveAPS().getLastAPSResult() != null && ConfigBuilderPlugin.getActiveAPS().getLastAPSRun().after(new Date(new Date().getTime() - 11 * 60 * 1000L))) { + cobLayout.setVisibility(View.VISIBLE); + cobAvailable = true; + } else { + cobLayout.setVisibility(View.GONE); + cobAvailable = false; + } + calculateInsulin(); + } + }); + } + + @Subscribe + public void onStatusEvent(final EventNewBG e) { + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + calculateInsulin(); + } + }); } final private TextWatcher textWatcher = new TextWatcher() { @@ -110,66 +187,61 @@ public class WizardDialog extends DialogFragment implements OnClickListener { } }; - final CompoundButton.OnCheckedChangeListener onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - calculateInsulin(); - } - }; - - final AdapterView.OnItemSelectedListener onItemSelectedListener = new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) { - calculateInsulin(); - wizardDialogDeliverButton.setVisibility(View.VISIBLE); - } - - @Override - public void onNothingSelected(AdapterView parent) { - ToastUtils.showToastInUiThread(parentContext, MainApp.sResources.getString(R.string.noprofileselected)); - wizardDialogDeliverButton.setVisibility(View.GONE); - } - }; - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.overview_wizard_dialog, null, false); - wizardDialogDeliverButton = (Button) view.findViewById(R.id.treatments_wizard_deliverButton); - wizardDialogDeliverButton.setOnClickListener(this); - getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); - correctionInput = (TextView) view.findViewById(R.id.treatments_wizard_correctioninput); - carbsInput = (TextView) view.findViewById(R.id.treatments_wizard_carbsinput); - bgInput = (TextView) view.findViewById(R.id.treatments_wizard_bginput); - - correctionInput.addTextChangedListener(textWatcher); - carbsInput.addTextChangedListener(textWatcher); - bgInput.addTextChangedListener(textWatcher); + wizardDialogDeliverButton = (Button) view.findViewById(R.id.treatments_wizard_deliverButton); + wizardDialogDeliverButton.setOnClickListener(this); bg = (TextView) view.findViewById(R.id.treatments_wizard_bg); bgInsulin = (TextView) view.findViewById(R.id.treatments_wizard_bginsulin); bgUnits = (TextView) view.findViewById(R.id.treatments_wizard_bgunits); - bgCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_bgcheckbox); carbs = (TextView) view.findViewById(R.id.treatments_wizard_carbs); carbsInsulin = (TextView) view.findViewById(R.id.treatments_wizard_carbsinsulin); bolusIobInsulin = (TextView) view.findViewById(R.id.treatments_wizard_bolusiobinsulin); basalIobInsulin = (TextView) view.findViewById(R.id.treatments_wizard_basaliobinsulin); - bolusIobCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_bolusiobcheckbox); - basalIobCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_basaliobcheckbox); correctionInsulin = (TextView) view.findViewById(R.id.treatments_wizard_correctioninsulin); total = (TextView) view.findViewById(R.id.treatments_wizard_total); totalInsulin = (TextView) view.findViewById(R.id.treatments_wizard_totalinsulin); carbTimeEdit = (EditText) view.findViewById(R.id.treatments_wizard_carbtimeinput); - profileSpinner = (Spinner) view.findViewById(R.id.treatments_wizard_profile); + superbolus = (TextView) view.findViewById(R.id.treatments_wizard_sb); + superbolusInsulin = (TextView) view.findViewById(R.id.treatments_wizard_sbinsulin); - bgCheckbox.setOnCheckedChangeListener(onCheckedChangeListener); - basalIobCheckbox.setOnCheckedChangeListener(onCheckedChangeListener); - bolusIobCheckbox.setOnCheckedChangeListener(onCheckedChangeListener); - profileSpinner.setOnItemSelectedListener(onItemSelectedListener); + bgTrend = (TextView) view.findViewById(R.id.treatments_wizard_bgtrend); + bgTrendInsulin = (TextView) view.findViewById(R.id.treatments_wizard_bgtrendinsulin); + cobLayout = (LinearLayout) view.findViewById(R.id.treatments_wizard_cob_layout); + cob = (TextView) view.findViewById(R.id.treatments_wizard_cob);; + cobInsulin = (TextView) view.findViewById(R.id.treatments_wizard_cobinsulin);; + + bgCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_bgcheckbox); + bolusIobCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_bolusiobcheckbox); + basalIobCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_basaliobcheckbox); + superbolusCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_sbcheckbox); + bgtrendCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_bgtrendcheckbox); + cobCheckbox = (CheckBox) view.findViewById(R.id.treatments_wizard_cobcheckbox); + bgCheckbox.setOnCheckedChangeListener(this); + basalIobCheckbox.setOnCheckedChangeListener(this); + bolusIobCheckbox.setOnCheckedChangeListener(this); + superbolusCheckbox.setOnCheckedChangeListener(this); + bgtrendCheckbox.setOnCheckedChangeListener(this); + cobCheckbox.setOnCheckedChangeListener(this); + + profileSpinner = (Spinner) view.findViewById(R.id.treatments_wizard_profile); + profileSpinner.setOnItemSelectedListener(this); + + correctionInput = (TextView) view.findViewById(R.id.treatments_wizard_correctioninput); + carbsInput = (TextView) view.findViewById(R.id.treatments_wizard_carbsinput); + bgInput = (TextView) view.findViewById(R.id.treatments_wizard_bginput); + correctionInput.addTextChangedListener(textWatcher); + carbsInput.addTextChangedListener(textWatcher); + bgInput.addTextChangedListener(textWatcher); + + superbolusCheckbox.setVisibility(SP.getBoolean(R.string.key_usesuperbolus, false) ? View.VISIBLE : View.GONE); Integer maxCarbs = MainApp.getConfigBuilder().applyCarbsConstraints(Constants.carbsOnlyForCheckLimit); Double maxCorrection = MainApp.getConfigBuilder().applyBolusConstraints(Constants.bolusOnlyForCheckLimit); @@ -183,6 +255,23 @@ public class WizardDialog extends DialogFragment implements OnClickListener { return view; } + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + calculateInsulin(); + } + + @Override + public void onItemSelected(AdapterView parent, View view, int position, long id) { + calculateInsulin(); + wizardDialogDeliverButton.setVisibility(View.VISIBLE); + } + + @Override + public void onNothingSelected(AdapterView parent) { + ToastUtils.showToastInUiThread(context, MainApp.sResources.getString(R.string.noprofileselected)); + wizardDialogDeliverButton.setVisibility(View.GONE); + } + @Override public void onClick(View view) { switch (view.getId()) { @@ -197,8 +286,8 @@ public class WizardDialog extends DialogFragment implements OnClickListener { confirmMessage += "\n" + getString(R.string.bolus) + ": " + formatNumber2decimalplaces.format(insulinAfterConstraints) + "U"; confirmMessage += "\n" + getString(R.string.carbs) + ": " + carbsAfterConstraints + "g"; - if (insulinAfterConstraints - calculatedTotalInsulin != 0 || !carbsAfterConstraints.equals(calculatedCarbs)) { - AlertDialog.Builder builder = new AlertDialog.Builder(parentContext); + if (insulinAfterConstraints - calculatedTotalInsulin != 0 || !carbsAfterConstraints.equals(calculatedCarbs)) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(MainApp.sResources.getString(R.string.treatmentdeliveryerror)); builder.setMessage(getString(R.string.constraints_violation) + "\n" + getString(R.string.changeyourinput)); builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), null); @@ -208,49 +297,64 @@ public class WizardDialog extends DialogFragment implements OnClickListener { final Double finalInsulinAfterConstraints = insulinAfterConstraints; final Integer finalCarbsAfterConstraints = carbsAfterConstraints; + final Double bg = SafeParse.stringToDouble(bgInput.getText().toString()); + final int carbTime = SafeParse.stringToInt(carbTimeEdit.getText().toString()); + final boolean useSuperBolus = superbolusCheckbox.isChecked(); - if (parentContext != null) { - AlertDialog.Builder builder = new AlertDialog.Builder(parentContext); - builder.setTitle(MainApp.sResources.getString(R.string.confirmation)); - builder.setMessage(confirmMessage); - builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - if (finalInsulinAfterConstraints > 0 || finalCarbsAfterConstraints > 0) { - final ConfigBuilderPlugin pump = MainApp.getConfigBuilder(); - mHandler.post(new Runnable() { - @Override - public void run() { - PumpEnactResult result = pump.deliverTreatmentFromBolusWizard( - parentContext, - finalInsulinAfterConstraints, - finalCarbsAfterConstraints, - SafeParse.stringToDouble(bgInput.getText().toString()), - "Manual", - SafeParse.stringToInt(carbTimeEdit.getText().toString()), - boluscalcJSON - ); + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(MainApp.sResources.getString(R.string.confirmation)); + builder.setMessage(confirmMessage); + builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + if (finalInsulinAfterConstraints > 0 || finalCarbsAfterConstraints > 0) { + final ConfigBuilderPlugin pump = MainApp.getConfigBuilder(); + mHandler.post(new Runnable() { + @Override + public void run() { + PumpEnactResult result = pump.deliverTreatmentFromBolusWizard( + MainApp.getConfigBuilder().getActiveInsulin(), + context, + finalInsulinAfterConstraints, + finalCarbsAfterConstraints, + bg, + "Manual", + carbTime, + boluscalcJSON + ); + if (!result.success) { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(MainApp.sResources.getString(R.string.treatmentdeliveryerror)); + builder.setMessage(result.comment); + builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), null); + builder.show(); + } + if (useSuperBolus) { + final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + result = pump.setTempBasalAbsolute(0d, 120); if (!result.success) { - AlertDialog.Builder builder = new AlertDialog.Builder(parentContext); - builder.setTitle(MainApp.sResources.getString(R.string.treatmentdeliveryerror)); + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(MainApp.sResources.getString(R.string.tempbasaldeliveryerror)); builder.setMessage(result.comment); builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), null); builder.show(); } + if (activeloop != null) { + activeloop.superBolusTo(new Date().getTime() + 2 * 60L * 60 * 1000); + MainApp.bus().post(new EventRefreshGui(false)); + } } - }); - } + } + }); + Answers.getInstance().logCustom(new CustomEvent("Wizard")); } - }); - builder.setNegativeButton(getString(R.string.cancel), null); - builder.show(); - dismiss(); - } else { - log.error("parentContext == null"); - } + } + }); + builder.setNegativeButton(getString(R.string.cancel), null); + builder.show(); + dismiss(); } break; } - } private void initDialog() { @@ -264,8 +368,8 @@ public class WizardDialog extends DialogFragment implements OnClickListener { ArrayList profileList; profileList = profile.getProfileList(); ArrayAdapter adapter = new ArrayAdapter(getContext(), - android.R.layout.simple_spinner_item, profileList); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + R.layout.spinner_centered, profileList); + profileSpinner.setAdapter(adapter); // set selected to actual profile for (int p = 0; p < profileList.size(); p++) { @@ -309,12 +413,15 @@ public class WizardDialog extends DialogFragment implements OnClickListener { } // IOB calculation - TreatmentsInterface treatments = MainApp.getConfigBuilder().getActiveTreatments(); - TempBasalsInterface tempBasals = MainApp.getConfigBuilder().getActiveTempBasals(); + TreatmentsInterface treatments = ConfigBuilderPlugin.getActiveTreatments(); treatments.updateTotalIOB(); - tempBasals.updateTotalIOB(); IobTotal bolusIob = treatments.getLastCalculation(); - IobTotal basalIob = tempBasals.getLastCalculation(); + TempBasalsInterface tempBasals = ConfigBuilderPlugin.getActiveTempBasals(); + IobTotal basalIob = new IobTotal(new Date().getTime()); + if (tempBasals != null) { + tempBasals.updateTotalIOB(); + basalIob = tempBasals.getLastCalculation().round(); + } bolusIobInsulin.setText(DecimalFormatter.to2Decimal(-bolusIob.iob) + "U"); basalIobInsulin.setText(DecimalFormatter.to2Decimal(-basalIob.basaliob) + "U"); @@ -322,13 +429,14 @@ public class WizardDialog extends DialogFragment implements OnClickListener { totalInsulin.setText(""); wizardDialogDeliverButton.setVisibility(Button.INVISIBLE); - } - - @Override - public void onResume() { - super.onResume(); - if (getDialog() != null) - getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + // COB only if AMA is selected + if (ConfigBuilderPlugin.getActiveAPS() instanceof OpenAPSAMAPlugin && ConfigBuilderPlugin.getActiveAPS().getLastAPSResult() != null && ConfigBuilderPlugin.getActiveAPS().getLastAPSRun().after(new Date(new Date().getTime() - 11 * 60 * 1000L))) { + cobLayout.setVisibility(View.VISIBLE); + cobAvailable = true; + } else { + cobLayout.setVisibility(View.GONE); + cobAvailable = false; + } } private void calculateInsulin() { @@ -363,8 +471,19 @@ public class WizardDialog extends DialogFragment implements OnClickListener { c_bg = bgCheckbox.isChecked() ? c_bg : 0d; + // COB + Double c_cob = 0d; + if (cobAvailable && cobCheckbox.isChecked()) { + if (ConfigBuilderPlugin.getActiveAPS().getLastAPSResult() != null && ConfigBuilderPlugin.getActiveAPS().getLastAPSRun().after(new Date(new Date().getTime() - 11 * 60 * 1000L))) { + try { + c_cob = SafeParse.stringToDouble(ConfigBuilderPlugin.getActiveAPS().getLastAPSResult().json().getString("COB")); + } catch (JSONException e) { + } + } + } + BolusWizard wizard = new BolusWizard(); - wizard.doCalc(specificProfile, carbsAfterConstraint, c_bg, corrAfterConstraint, bolusIobCheckbox.isChecked(), basalIobCheckbox.isChecked()); + wizard.doCalc(specificProfile, carbsAfterConstraint, c_cob, c_bg, corrAfterConstraint, bolusIobCheckbox.isChecked(), basalIobCheckbox.isChecked(), superbolusCheckbox.isChecked(), bgtrendCheckbox.isChecked()); bg.setText(c_bg + " ISF: " + DecimalFormatter.to1Decimal(wizard.sens)); bgInsulin.setText(DecimalFormatter.to2Decimal(wizard.insulinFromBG) + "U"); @@ -388,6 +507,35 @@ public class WizardDialog extends DialogFragment implements OnClickListener { calculatedCarbs = carbsAfterConstraint; + // Superbolus + if (superbolusCheckbox.isChecked()) { + superbolus.setText("2h"); + } else { + superbolus.setText(""); + } + superbolusInsulin.setText(DecimalFormatter.to2Decimal(wizard.insulinFromSuperBolus) + "U"); + + // Trend + if (bgtrendCheckbox.isChecked()) { + if (wizard.glucoseStatus != null) { + bgTrend.setText((wizard.glucoseStatus.avgdelta > 0 ? "+" : "") + NSProfile.toUnitsString(wizard.glucoseStatus.avgdelta * 3, wizard.glucoseStatus.avgdelta * 3 / 18, profile.getUnits()) + " " + profile.getUnits()); + } else { + bgTrend.setText(""); + } + } else { + bgTrend.setText(""); + } + bgTrendInsulin.setText(DecimalFormatter.to2Decimal(wizard.insulinFromTrend) + "U"); + + // COB + if (cobAvailable && cobCheckbox.isChecked()) { + cob.setText(DecimalFormatter.to2Decimal(c_cob) + "g IC: " + DecimalFormatter.to1Decimal(wizard.ic)); + cobInsulin.setText(DecimalFormatter.to2Decimal(wizard.insulinFromCOB) + "U"); + } else { + cob.setText(""); + cobInsulin.setText(""); + } + if (calculatedTotalInsulin > 0d || calculatedCarbs > 0d) { String insulinText = calculatedTotalInsulin > 0d ? (DecimalFormatter.to2Decimal(calculatedTotalInsulin) + "U") : ""; String carbsText = calculatedCarbs > 0d ? (DecimalFormatter.to0Decimal(calculatedCarbs) + "g") : ""; @@ -414,10 +562,15 @@ public class WizardDialog extends DialogFragment implements OnClickListener { boluscalcJSON.put("bgdiff", wizard.bgDiff); boluscalcJSON.put("insulincarbs", wizard.insulinFromCarbs); boluscalcJSON.put("carbs", c_carbs); + boluscalcJSON.put("cob", c_cob); + boluscalcJSON.put("insulincob", wizard.insulinFromCOB); boluscalcJSON.put("othercorrection", corrAfterConstraint); + boluscalcJSON.put("insulinsuperbolus", wizard.insulinFromSuperBolus); + boluscalcJSON.put("insulintrend", wizard.insulinFromTrend); boluscalcJSON.put("insulin", calculatedTotalInsulin); } catch (JSONException e) { e.printStackTrace(); } } + } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Notification.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Notification.java index 5d83a76cc7..0508917312 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Notification.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Notification.java @@ -23,6 +23,7 @@ public class Notification { public static final int OLD_NSCLIENT = 8; public static final int INVALID_PHONE_NUMBER = 9; public static final int APPROACHING_DAILY_LIMIT = 10; + public static final int NSCLIENT_NO_WRITE_PERMISSION = 10; public int id; public Date date; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java index 61f4279a51..e07caf2994 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java @@ -3,34 +3,41 @@ package info.nightscout.androidaps.plugins.Overview; import android.annotation.SuppressLint; import android.app.Activity; import android.content.DialogInterface; -import android.content.SharedPreferences; +import android.content.Intent; import android.graphics.Color; import android.graphics.DashPathEffect; import android.graphics.Paint; import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; -import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.widget.CardView; import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; +import android.view.ContextMenu; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; +import android.widget.ImageButton; import android.widget.LinearLayout; +import android.widget.RelativeLayout; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.jjoe64.graphview.GraphView; -import com.jjoe64.graphview.ValueDependentColor; -import com.jjoe64.graphview.series.BarGraphSeries; +import com.jjoe64.graphview.LabelFormatter; +import com.jjoe64.graphview.Viewport; import com.jjoe64.graphview.series.DataPoint; import com.jjoe64.graphview.series.LineGraphSeries; import com.jjoe64.graphview.series.PointsGraphSeries; @@ -47,10 +54,16 @@ import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.PreferencesActivity; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.data.IobTotal; @@ -59,10 +72,12 @@ import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.db.Treatment; +import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventNewBasalProfile; import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTreatmentChange; @@ -71,10 +86,13 @@ import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; +import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin; +import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData; +import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; +import info.nightscout.androidaps.plugins.IobCobCalculator.events.EventAutosensCalculationFinished; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Loop.events.EventNewOpenLoopNotification; -import info.nightscout.androidaps.plugins.Objectives.ObjectivesPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.OpenAPSAMA.DetermineBasalResultAMA; import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin; import info.nightscout.androidaps.plugins.Overview.Dialogs.CalibrationDialog; @@ -82,24 +100,29 @@ import info.nightscout.androidaps.plugins.Overview.Dialogs.NewTreatmentDialog; import info.nightscout.androidaps.plugins.Overview.Dialogs.WizardDialog; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; +import info.nightscout.androidaps.plugins.Overview.graphExtensions.AreaGraphSeries; +import info.nightscout.androidaps.plugins.Overview.graphExtensions.DoubleDataPoint; +import info.nightscout.androidaps.plugins.Overview.graphExtensions.FixedLineGraphSeries; import info.nightscout.androidaps.plugins.Overview.graphExtensions.PointsWithLabelGraphSeries; import info.nightscout.androidaps.plugins.Overview.graphExtensions.TimeAsXAxisLabelFormatter; import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripPlugin; import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin; import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange; -import info.nightscout.client.data.NSProfile; import info.nightscout.utils.BolusWizard; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; +import info.nightscout.utils.ImportExportPrefs; +import info.nightscout.utils.LogDialog; +import info.nightscout.utils.PasswordProtection; import info.nightscout.utils.Round; -import info.nightscout.utils.SafeParse; +import info.nightscout.utils.SP; +import info.nightscout.utils.ToastUtils; -public class OverviewFragment extends Fragment { +public class OverviewFragment extends Fragment implements View.OnClickListener, CompoundButton.OnCheckedChangeListener { private static Logger log = LoggerFactory.getLogger(OverviewFragment.class); private static OverviewPlugin overviewPlugin = new OverviewPlugin(); - private SharedPreferences prefs; public static OverviewPlugin getPlugin() { return overviewPlugin; @@ -118,8 +141,17 @@ public class OverviewFragment extends Fragment { TextView apsModeView; TextView tempTargetView; TextView pumpStatusView; + LinearLayout loopStatusLayout; + LinearLayout pumpStatusLayout; GraphView bgGraph; + GraphView iobGraph; + RelativeLayout iobGraphLayout; + ImageButton menuButton; + CheckBox showPredictionView; + CheckBox showBasalsView; + CheckBox showIobView; + CheckBox showCobView; RecyclerView notificationsView; LinearLayoutManager llm; @@ -139,6 +171,9 @@ public class OverviewFragment extends Fragment { private static Handler sHandler; private static HandlerThread sHandlerThread; + private static final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); + private static ScheduledFuture scheduledUpdate = null; + public OverviewFragment() { super(); if (sHandlerThread == null) { @@ -151,9 +186,9 @@ public class OverviewFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); View view = inflater.inflate(R.layout.overview_fragment, container, false); + bgView = (TextView) view.findViewById(R.id.overview_bg); arrowView = (TextView) view.findViewById(R.id.overview_arrow); timeAgoView = (TextView) view.findViewById(R.id.overview_timeago); @@ -163,149 +198,376 @@ public class OverviewFragment extends Fragment { baseBasalView = (TextView) view.findViewById(R.id.overview_basebasal); basalLayout = (LinearLayout) view.findViewById(R.id.overview_basallayout); activeProfileView = (TextView) view.findViewById(R.id.overview_activeprofile); - pumpStatusView = (TextView) view.findViewById(R.id.overview_initializing); + pumpStatusView = (TextView) view.findViewById(R.id.overview_pumpstatus); + loopStatusLayout = (LinearLayout) view.findViewById(R.id.overview_looplayout); + pumpStatusLayout = (LinearLayout) view.findViewById(R.id.overview_pumpstatuslayout); iobView = (TextView) view.findViewById(R.id.overview_iob); apsModeView = (TextView) view.findViewById(R.id.overview_apsmode); tempTargetView = (TextView) view.findViewById(R.id.overview_temptarget); + bgGraph = (GraphView) view.findViewById(R.id.overview_bggraph); - cancelTempButton = (Button) view.findViewById(R.id.overview_canceltemp); - treatmentButton = (Button) view.findViewById(R.id.overview_treatment); - wizardButton = (Button) view.findViewById(R.id.overview_wizard); - cancelTempButton = (Button) view.findViewById(R.id.overview_canceltemp); - cancelTempLayout = (LinearLayout) view.findViewById(R.id.overview_canceltemplayout); + iobGraph = (GraphView) view.findViewById(R.id.overview_iobgraph); + iobGraphLayout = (RelativeLayout) view.findViewById(R.id.overview_iobgraphlayout); + + menuButton = (ImageButton) view.findViewById(R.id.overview_menuButton); + menuButton.setOnClickListener(this); + + cancelTempButton = (Button) view.findViewById(R.id.overview_canceltempbutton); + cancelTempButton.setOnClickListener(this); + treatmentButton = (Button) view.findViewById(R.id.overview_treatmentbutton); + treatmentButton.setOnClickListener(this); + wizardButton = (Button) view.findViewById(R.id.overview_wizardbutton); + wizardButton.setOnClickListener(this); + cancelTempButton = (Button) view.findViewById(R.id.overview_canceltempbutton); + cancelTempButton.setOnClickListener(this); acceptTempButton = (Button) view.findViewById(R.id.overview_accepttempbutton); + acceptTempButton.setOnClickListener(this); + quickWizardButton = (Button) view.findViewById(R.id.overview_quickwizardbutton); + quickWizardButton.setOnClickListener(this); + calibrationButton = (Button) view.findViewById(R.id.overview_calibrationbutton); + calibrationButton.setOnClickListener(this); + + cancelTempLayout = (LinearLayout) view.findViewById(R.id.overview_canceltemplayout); acceptTempLayout = (LinearLayout) view.findViewById(R.id.overview_accepttemplayout); - quickWizardButton = (Button) view.findViewById(R.id.overview_quickwizard); - calibrationButton = (Button) view.findViewById(R.id.overview_calibration); + showPredictionView = (CheckBox) view.findViewById(R.id.overview_showprediction); + showBasalsView = (CheckBox) view.findViewById(R.id.overview_showbasals); + showIobView = (CheckBox) view.findViewById(R.id.overview_showiob); + showCobView = (CheckBox) view.findViewById(R.id.overview_showcob); + showPredictionView.setChecked(SP.getBoolean("showprediction", false)); + showBasalsView.setChecked(SP.getBoolean("showbasals", false)); + showIobView.setChecked(SP.getBoolean("showiob", false)); + showCobView.setChecked(SP.getBoolean("showcob", false)); + showPredictionView.setOnCheckedChangeListener(this); + showBasalsView.setOnCheckedChangeListener(this); + showIobView.setOnCheckedChangeListener(this); + showCobView.setOnCheckedChangeListener(this); notificationsView = (RecyclerView) view.findViewById(R.id.overview_notifications); notificationsView.setHasFixedSize(true); llm = new LinearLayoutManager(view.getContext()); notificationsView.setLayoutManager(llm); - showPredictionView.setChecked(prefs.getBoolean("showprediction", false)); - showPredictionView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - SharedPreferences.Editor editor = prefs.edit(); - editor.putBoolean("showprediction", showPredictionView.isChecked()); - editor.apply(); - updateGUI(); + bgGraph.getGridLabelRenderer().setGridColor(Color.rgb(0x75, 0x75, 0x75)); + bgGraph.getGridLabelRenderer().reloadStyles(); + iobGraph.getGridLabelRenderer().setGridColor(Color.rgb(0x75, 0x75, 0x75)); + iobGraph.getGridLabelRenderer().reloadStyles(); + iobGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false); + bgGraph.getGridLabelRenderer().setLabelVerticalWidth(50); + iobGraph.getGridLabelRenderer().setLabelVerticalWidth(50); + iobGraph.getGridLabelRenderer().setNumVerticalLabels(5); + + return view; + } + + + @Override + public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { + super.onCreateContextMenu(menu, v, menuInfo); + final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + if (activeloop == null) + return; + menu.setHeaderTitle(MainApp.sResources.getString(R.string.loop)); + if (activeloop.isEnabled(PluginBase.LOOP)) { + menu.add(MainApp.sResources.getString(R.string.disableloop)); + if (!activeloop.isSuspended()) { + menu.add(MainApp.sResources.getString(R.string.suspendloopfor1h)); + menu.add(MainApp.sResources.getString(R.string.suspendloopfor2h)); + menu.add(MainApp.sResources.getString(R.string.suspendloopfor3h)); + menu.add(MainApp.sResources.getString(R.string.suspendloopfor10h)); + menu.add(MainApp.sResources.getString(R.string.disconnectpumpfor30m)); + menu.add(MainApp.sResources.getString(R.string.disconnectpumpfor1h)); + menu.add(MainApp.sResources.getString(R.string.disconnectpumpfor2h)); + menu.add(MainApp.sResources.getString(R.string.disconnectpumpfor3h)); + } else { + menu.add(MainApp.sResources.getString(R.string.resume)); } - }); + } + if (!activeloop.isEnabled(PluginBase.LOOP)) + menu.add(MainApp.sResources.getString(R.string.enableloop)); + } - treatmentButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - FragmentManager manager = getFragmentManager(); + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + switch (buttonView.getId()) { + case R.id.overview_showprediction: + SP.putBoolean("showprediction", showPredictionView.isChecked()); + scheduleUpdateGUI("onPredictionCheckedChanged"); + break; + case R.id.overview_showbasals: + SP.putBoolean("showbasals", showPredictionView.isChecked()); + scheduleUpdateGUI("onBasalsCheckedChanged"); + break; + case R.id.overview_showiob: + SP.putBoolean("showiob", showIobView.isChecked()); + scheduleUpdateGUI("onIobCheckedChanged"); + break; + case R.id.overview_showcob: + SP.putBoolean("showcob", showCobView.isChecked()); + scheduleUpdateGUI("onCobCheckedChanged"); + break; + } + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + if (item.getTitle().equals(MainApp.sResources.getString(R.string.disableloop))) { + activeloop.setFragmentEnabled(PluginBase.LOOP, false); + activeloop.setFragmentVisible(PluginBase.LOOP, false); + MainApp.getConfigBuilder().storeSettings(); + scheduleUpdateGUI("suspendmenu"); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.enableloop))) { + activeloop.setFragmentEnabled(PluginBase.LOOP, true); + activeloop.setFragmentVisible(PluginBase.LOOP, true); + MainApp.getConfigBuilder().storeSettings(); + scheduleUpdateGUI("suspendmenu"); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.resume))) { + activeloop.suspendTo(0L); + scheduleUpdateGUI("suspendmenu"); + sHandler.post(new Runnable() { + @Override + public void run() { + PumpEnactResult result = MainApp.getConfigBuilder().cancelTempBasal(); + if (!result.success) { + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.tempbasaldeliveryerror)); + } + } + }); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor1h))) { + activeloop.suspendTo(new Date().getTime() + 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor2h))) { + activeloop.suspendTo(new Date().getTime() + 2 * 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor3h))) { + activeloop.suspendTo(new Date().getTime() + 3 * 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor10h))) { + activeloop.suspendTo(new Date().getTime() + 10 * 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor30m))) { + activeloop.suspendTo(new Date().getTime() + 30L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + sHandler.post(new Runnable() { + @Override + public void run() { + PumpEnactResult result = MainApp.getConfigBuilder().setTempBasalAbsolute(0d, 30); + if (!result.success) { + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.tempbasaldeliveryerror)); + } + } + }); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor1h))) { + activeloop.suspendTo(new Date().getTime() + 1 * 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + sHandler.post(new Runnable() { + @Override + public void run() { + PumpEnactResult result = MainApp.getConfigBuilder().setTempBasalAbsolute(0d, 60); + if (!result.success) { + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.tempbasaldeliveryerror)); + } + } + }); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor2h))) { + activeloop.suspendTo(new Date().getTime() + 2 * 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + sHandler.post(new Runnable() { + @Override + public void run() { + PumpEnactResult result = MainApp.getConfigBuilder().setTempBasalAbsolute(0d, 2 * 60); + if (!result.success) { + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.tempbasaldeliveryerror)); + } + } + }); + return true; + } else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor3h))) { + activeloop.suspendTo(new Date().getTime() + 3 * 60L * 60 * 1000); + scheduleUpdateGUI("suspendmenu"); + sHandler.post(new Runnable() { + @Override + public void run() { + PumpEnactResult result = MainApp.getConfigBuilder().setTempBasalAbsolute(0d, 3 * 60); + if (!result.success) { + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.tempbasaldeliveryerror)); + } + } + }); + return true; + } + + return super.onContextItemSelected(item); + } + + @Override + public void onClick(View v) { + FragmentManager manager = getFragmentManager(); + switch (v.getId()) { + case R.id.overview_accepttempbutton: + onClickAcceptTemp(); + break; + case R.id.overview_quickwizardbutton: + onClickQuickwizard(); + break; + case R.id.overview_wizardbutton: + WizardDialog wizardDialog = new WizardDialog(); + wizardDialog.show(manager, "WizardDialog"); + break; + case R.id.overview_calibrationbutton: + CalibrationDialog calibrationDialog = new CalibrationDialog(); + calibrationDialog.show(manager, "CalibrationDialog"); + break; + case R.id.overview_treatmentbutton: NewTreatmentDialog treatmentDialogFragment = new NewTreatmentDialog(); treatmentDialogFragment.show(manager, "TreatmentDialog"); - } - }); - - wizardButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - FragmentManager manager = getFragmentManager(); - WizardDialog wizardDialog = new WizardDialog(); - wizardDialog.setContext(getContext()); - wizardDialog.show(manager, "WizardDialog"); - } - }); - - quickWizardButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - processQuickWizard(); - } - }); - - cancelTempButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { + break; + case R.id.overview_canceltempbutton: final PumpInterface pump = MainApp.getConfigBuilder(); if (pump.isTempBasalInProgress()) { sHandler.post(new Runnable() { @Override public void run() { pump.cancelTempBasal(); - MainApp.bus().post(new EventTempBasalChange()); + Answers.getInstance().logCustom(new CustomEvent("CancelTemp")); } }); } - } - }); - - calibrationButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - FragmentManager manager = getFragmentManager(); - CalibrationDialog calibrationDialog = new CalibrationDialog(); - calibrationDialog.setContext(getContext()); - calibrationDialog.show(manager, "CalibrationDialog"); - } - }); - - acceptTempButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - ConfigBuilderPlugin.getActiveLoop().invoke("Accept temp button", false); - final LoopPlugin.LastRun finalLastRun = LoopPlugin.lastRun; - if (finalLastRun != null && finalLastRun.lastAPSRun != null && finalLastRun.constraintsProcessed.changeRequested) { - AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); - builder.setTitle(getContext().getString(R.string.confirmation)); - builder.setMessage(getContext().getString(R.string.setbasalquestion) + "\n" + finalLastRun.constraintsProcessed); - builder.setPositiveButton(getContext().getString(R.string.ok), new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - sHandler.post(new Runnable() { - @Override - public void run() { - hideTempRecommendation(); - PumpEnactResult applyResult = MainApp.getConfigBuilder().applyAPSRequest(finalLastRun.constraintsProcessed); - if (applyResult.enacted) { - finalLastRun.setByPump = applyResult; - finalLastRun.lastEnact = new Date(); - finalLastRun.lastOpenModeAccept = new Date(); - MainApp.getConfigBuilder().uploadDeviceStatus(15); - ObjectivesPlugin objectivesPlugin = (ObjectivesPlugin) MainApp.getSpecificPlugin(ObjectivesPlugin.class); - if (objectivesPlugin != null) { - objectivesPlugin.manualEnacts++; - objectivesPlugin.saveProgress(); - } - } - updateGUIIfVisible(); - } - }); - } - }); - builder.setNegativeButton(getContext().getString(R.string.cancel), null); - builder.show(); - } - updateGUI(); - } - }); - - pumpStatusView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { + break; + case R.id.overview_pumpstatus: if (MainApp.getConfigBuilder().isSuspended() || !MainApp.getConfigBuilder().isInitialized()) sHandler.post(new Runnable() { @Override public void run() { - MainApp.getConfigBuilder().updateStatus("RefreshClicked"); + MainApp.getConfigBuilder().refreshDataFromPump("RefreshClicked"); } }); - } - }); + break; + case R.id.overview_menuButton: + PopupMenu popup = new PopupMenu(getContext(), v); + MenuInflater inflater = popup.getMenuInflater(); + inflater.inflate(R.menu.menu_main, popup.getMenu()); + popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + int id = item.getItemId(); + switch (id) { + case R.id.nav_preferences: + PasswordProtection.QueryPassword(getContext(), R.string.settings_password, "settings_password", new Runnable() { + @Override + public void run() { + Intent i = new Intent(getContext(), PreferencesActivity.class); + startActivity(i); + } + }, null); + break; + case R.id.nav_resetdb: + new AlertDialog.Builder(getContext()) + .setTitle(R.string.nav_resetdb) + .setMessage(R.string.reset_db_confirm) + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + MainApp.getDbHelper().resetDatabases(); + } + }) + .create() + .show(); + break; + case R.id.nav_export: + ImportExportPrefs.verifyStoragePermissions(getActivity()); + ImportExportPrefs.exportSharedPreferences(getActivity()); + break; + case R.id.nav_import: + ImportExportPrefs.verifyStoragePermissions(getActivity()); + ImportExportPrefs.importSharedPreferences(getActivity()); + break; + case R.id.nav_show_logcat: + LogDialog.showLogcat(getContext()); + break; + case R.id.nav_about: + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(getString(R.string.app_name) + " " + BuildConfig.VERSION); + if (BuildConfig.NSCLIENTOLNY) + builder.setIcon(R.mipmap.yellowowl); + else + builder.setIcon(R.mipmap.blueowl); + builder.setMessage("Build: " + BuildConfig.BUILDVERSION); + builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), null); + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + break; + case R.id.nav_exit: + log.debug("Exiting"); + MainApp.instance().stopKeepAliveService(); + MainApp.bus().post(new EventAppExit()); + MainApp.closeDbHelper(); + getActivity().finish(); + System.runFinalization(); + System.exit(0); + break; + } + return false; + } + }); + popup.show(); + break; + } - updateGUI(); - return view; } - void processQuickWizard() { + private void onClickAcceptTemp() { + if (ConfigBuilderPlugin.getActiveLoop() != null) { + ConfigBuilderPlugin.getActiveLoop().invoke("Accept temp button", false); + final LoopPlugin.LastRun finalLastRun = LoopPlugin.lastRun; + if (finalLastRun != null && finalLastRun.lastAPSRun != null && finalLastRun.constraintsProcessed.changeRequested) { + AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); + builder.setTitle(getContext().getString(R.string.confirmation)); + builder.setMessage(getContext().getString(R.string.setbasalquestion) + "\n" + finalLastRun.constraintsProcessed); + builder.setPositiveButton(getContext().getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + sHandler.post(new Runnable() { + @Override + public void run() { + hideTempRecommendation(); + PumpEnactResult applyResult = MainApp.getConfigBuilder().applyAPSRequest(finalLastRun.constraintsProcessed); + if (applyResult.enacted) { + finalLastRun.setByPump = applyResult; + finalLastRun.lastEnact = new Date(); + finalLastRun.lastOpenModeAccept = new Date(); + MainApp.getConfigBuilder().uploadDeviceStatus(); + ObjectivesPlugin objectivesPlugin = (ObjectivesPlugin) MainApp.getSpecificPlugin(ObjectivesPlugin.class); + if (objectivesPlugin != null) { + objectivesPlugin.manualEnacts++; + objectivesPlugin.saveProgress(); + } + } + scheduleUpdateGUI("onClickAcceptTemp"); + } + }); + Answers.getInstance().logCustom(new CustomEvent("AcceptTemp")); + } + }); + builder.setNegativeButton(getContext().getString(R.string.cancel), null); + builder.show(); + } + } + } + + void onClickQuickwizard() { final BgReading actualBg = GlucoseStatus.actualBg(); if (MainApp.getConfigBuilder() == null || ConfigBuilderPlugin.getActiveProfile() == null) // app not initialized yet return; @@ -316,11 +578,11 @@ public class OverviewFragment extends Fragment { quickWizardButton.setVisibility(View.VISIBLE); String text = MainApp.sResources.getString(R.string.bolus) + ": " + quickWizardEntry.buttonText(); BolusWizard wizard = new BolusWizard(); - wizard.doCalc(profile.getDefaultProfile(), quickWizardEntry.carbs(), actualBg.valueToUnits(profile.getUnits()), 0d, true, true); + wizard.doCalc(profile.getDefaultProfile(), quickWizardEntry.carbs(), 0d, actualBg.valueToUnits(profile.getUnits()), 0d, true, true, false, false); final JSONObject boluscalcJSON = new JSONObject(); try { - boluscalcJSON.put("eventTime", DateUtil.toISOString(new Date())); + boluscalcJSON.put("eventTime", DateUtil.toISOString(new Date())); boluscalcJSON.put("targetBGLow", wizard.targetBGLow); boluscalcJSON.put("targetBGHigh", wizard.targetBGHigh); boluscalcJSON.put("isf", wizard.sens); @@ -335,6 +597,7 @@ public class OverviewFragment extends Fragment { boluscalcJSON.put("insulincarbs", wizard.insulinFromCarbs); boluscalcJSON.put("carbs", quickWizardEntry.carbs()); boluscalcJSON.put("othercorrection", 0d); + boluscalcJSON.put("insulintrend", wizard.insulinFromTrend); boluscalcJSON.put("insulin", wizard.calculatedTotalInsulin); } catch (JSONException e) { e.printStackTrace(); @@ -372,6 +635,7 @@ public class OverviewFragment extends Fragment { @Override public void run() { PumpEnactResult result = pump.deliverTreatmentFromBolusWizard( + MainApp.getConfigBuilder().getActiveInsulin(), getContext(), finalInsulinAfterConstraints, finalCarbsAfterConstraints, @@ -389,6 +653,7 @@ public class OverviewFragment extends Fragment { } } }); + Answers.getInstance().logCustom(new CustomEvent("QuickWizard")); } } }); @@ -404,6 +669,7 @@ public class OverviewFragment extends Fragment { super.onPause(); MainApp.bus().unregister(this); sLoopHandler.removeCallbacksAndMessages(null); + unregisterForContextMenu(apsModeView); } @Override @@ -413,57 +679,63 @@ public class OverviewFragment extends Fragment { sRefreshLoop = new Runnable() { @Override public void run() { - updateGUIIfVisible(); + scheduleUpdateGUI("refreshLoop"); sLoopHandler.postDelayed(sRefreshLoop, 60 * 1000L); } }; sLoopHandler.postDelayed(sRefreshLoop, 60 * 1000L); - updateGUIIfVisible(); + registerForContextMenu(apsModeView); + updateGUI("onResume"); } @Subscribe public void onStatusEvent(final EventInitializationChanged ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventInitializationChanged"); } @Subscribe public void onStatusEvent(final EventPreferenceChange ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventPreferenceChange"); } @Subscribe public void onStatusEvent(final EventRefreshGui ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventRefreshGui"); + } + + @Subscribe + public void onStatusEvent(final EventAutosensCalculationFinished ev) { + scheduleUpdateGUI("EventRefreshGui"); } @Subscribe public void onStatusEvent(final EventTreatmentChange ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventTreatmentChange"); } @Subscribe public void onStatusEvent(final EventTempBasalChange ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventTempBasalChange"); } @Subscribe public void onStatusEvent(final EventNewBG ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventTempBasalChange"); } @Subscribe public void onStatusEvent(final EventNewOpenLoopNotification ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventNewOpenLoopNotification"); } @Subscribe public void onStatusEvent(final EventNewBasalProfile ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventNewBasalProfile"); } @Subscribe public void onStatusEvent(final EventTempTargetRangeChange ev) { - updateGUIIfVisible(); + scheduleUpdateGUI("EventTempTargetRangeChange"); } @Subscribe @@ -477,18 +749,13 @@ public class OverviewFragment extends Fragment { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus s) { + public void onStatusEvent(final EventPumpStatusChanged s) { Activity activity = getActivity(); if (activity != null) activity.runOnUiThread(new Runnable() { @Override public void run() { - if (s.sStatus == EventDanaRConnectionStatus.CONNECTING) - updatePumpStatus(String.format(getString(R.string.danar_history_connectingfor), s.sSecondsElapsed)); - else if (s.sStatus == EventDanaRConnectionStatus.PERFORMING) - updatePumpStatus(s.sAction); - else if (s.sStatus == EventDanaRConnectionStatus.DISCONNECTED) - updatePumpStatus(null); + updatePumpStatus(s.textStatus()); } }); } @@ -504,60 +771,62 @@ public class OverviewFragment extends Fragment { }); } - private void updateGUIIfVisible() { - Activity activity = getActivity(); - if (activity != null) - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - updateGUI(); - } - }); - } - private void updatePumpStatus(String status) { PumpInterface pump = MainApp.getConfigBuilder(); - if (status != null) { + if (!status.equals("")) { pumpStatusView.setText(status); - pumpStatusView.setVisibility(View.VISIBLE); - } else if (pump.isBusy()) { - pumpStatusView.setText(R.string.pumpbusy); - pumpStatusView.setVisibility(View.VISIBLE); - } else if (pump.isSuspended()) { - // disable all treatment buttons because we are not able to check constraints without profile - wizardButton.setVisibility(View.INVISIBLE); - treatmentButton.setVisibility(View.INVISIBLE); - quickWizardButton.setVisibility(View.INVISIBLE); - pumpStatusView.setText(R.string.pumpsuspendedclicktorefresh); - pumpStatusView.setVisibility(View.VISIBLE); - } else if (!pump.isInitialized()) { - // disable all treatment buttons because we are not able to check constraints without profile - wizardButton.setVisibility(View.INVISIBLE); - treatmentButton.setVisibility(View.INVISIBLE); - quickWizardButton.setVisibility(View.INVISIBLE); - pumpStatusView.setText(R.string.waitingforpumpclicktorefresh); - pumpStatusView.setVisibility(View.VISIBLE); + pumpStatusLayout.setVisibility(View.VISIBLE); + loopStatusLayout.setVisibility(View.GONE); } else { wizardButton.setVisibility(View.VISIBLE); treatmentButton.setVisibility(View.VISIBLE); - pumpStatusView.setVisibility(View.GONE); + pumpStatusLayout.setVisibility(View.GONE); + loopStatusLayout.setVisibility(View.VISIBLE); } } + public void scheduleUpdateGUI(final String from) { + class UpdateRunnable implements Runnable { + public void run() { + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + updateGUI(from); + scheduledUpdate = null; + } + }); + } + } + // prepare task for execution in 400 msec + // cancel waiting task to prevent multiple updates + if (scheduledUpdate != null) + scheduledUpdate.cancel(false); + Runnable task = new UpdateRunnable(); + final int msec = 400; + scheduledUpdate = worker.schedule(task, msec, TimeUnit.MILLISECONDS); + } + @SuppressLint("SetTextI18n") - public void updateGUI() { + public void updateGUI(String from) { + log.debug("updateGUI entered from: " + from); updateNotifications(); BgReading actualBG = GlucoseStatus.actualBg(); BgReading lastBG = GlucoseStatus.lastBg(); if (MainApp.getConfigBuilder() == null || MainApp.getConfigBuilder().getActiveProfile() == null || MainApp.getConfigBuilder().getActiveProfile().getProfile() == null) {// app not initialized yet pumpStatusView.setText(R.string.noprofileset); - pumpStatusView.setVisibility(View.VISIBLE); + pumpStatusLayout.setVisibility(View.VISIBLE); + loopStatusLayout.setVisibility(View.GONE); return; } else { - pumpStatusView.setVisibility(View.GONE); + pumpStatusLayout.setVisibility(View.GONE); + loopStatusLayout.setVisibility(View.VISIBLE); } + PumpInterface pump = MainApp.getConfigBuilder(); + // Skip if not initialized yet if (bgGraph == null) return; @@ -572,7 +841,19 @@ public class OverviewFragment extends Fragment { apsModeView.setBackgroundResource(R.drawable.loopmodeborder); apsModeView.setTextColor(Color.BLACK); final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); - if (activeloop != null && activeloop.isEnabled(activeloop.getType())) { + if (activeloop != null && activeloop.isEnabled(activeloop.getType()) && activeloop.isSuperBolus()) { + apsModeView.setBackgroundResource(R.drawable.loopmodesuspendedborder); + apsModeView.setText(String.format(MainApp.sResources.getString(R.string.loopsuperbolusfor), activeloop.minutesToEndOfSuspend())); + apsModeView.setTextColor(Color.WHITE); + } else if (activeloop != null && activeloop.isEnabled(activeloop.getType()) && activeloop.isSuspended()) { + apsModeView.setBackgroundResource(R.drawable.loopmodesuspendedborder); + apsModeView.setText(String.format(MainApp.sResources.getString(R.string.loopsuspendedfor), activeloop.minutesToEndOfSuspend())); + apsModeView.setTextColor(Color.WHITE); + } else if (pump.isSuspended()) { + apsModeView.setBackgroundResource(R.drawable.loopmodesuspendedborder); + apsModeView.setText(MainApp.sResources.getString(R.string.pumpsuspended)); + apsModeView.setTextColor(Color.WHITE); + } else if (activeloop != null && activeloop.isEnabled(activeloop.getType())) { if (MainApp.getConfigBuilder().isClosedModeEnabled()) { apsModeView.setText(MainApp.sResources.getString(R.string.closedloop)); } else { @@ -582,31 +863,7 @@ public class OverviewFragment extends Fragment { apsModeView.setBackgroundResource(R.drawable.loopmodedisabledborder); apsModeView.setText(MainApp.sResources.getString(R.string.disabledloop)); apsModeView.setTextColor(Color.WHITE); - } - - - apsModeView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); - if (activeloop == null) { - log.error("no active loop?"); - return true; - } else if (activeloop.isEnabled(PluginBase.LOOP)) { - activeloop.setFragmentEnabled(PluginBase.LOOP, false); - activeloop.setFragmentVisible(PluginBase.LOOP, false); - } else { - activeloop.setFragmentEnabled(PluginBase.LOOP, true); - activeloop.setFragmentVisible(PluginBase.LOOP, true); - } - MainApp.getConfigBuilder().storeSettings(); - MainApp.bus().post(new EventRefreshGui(false)); - return true; - } - }); - apsModeView.setLongClickable(true); - } else { apsModeView.setVisibility(View.GONE); } @@ -623,15 +880,15 @@ public class OverviewFragment extends Fragment { tempTargetView.setText(NSProfile.toUnitsString(tempTarget.low, NSProfile.fromMgdlToUnits(tempTarget.low, profile.getUnits()), profile.getUnits()) + " - " + NSProfile.toUnitsString(tempTarget.high, NSProfile.fromMgdlToUnits(tempTarget.high, profile.getUnits()), profile.getUnits())); } else { - String maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; - String minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; + Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; + Double minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; if (!profile.getUnits().equals(Constants.MGDL)) { maxBgDefault = Constants.MAX_BG_DEFAULT_MMOL; minBgDefault = Constants.MIN_BG_DEFAULT_MMOL; } tempTargetView.setTextColor(Color.WHITE); tempTargetView.setBackgroundResource(R.drawable.temptargetborderdisabled); - tempTargetView.setText(prefs.getString("openapsma_min_bg", minBgDefault) + " - " + prefs.getString("openapsma_max_bg", maxBgDefault)); + tempTargetView.setText(SP.getDouble("openapsma_min_bg", minBgDefault) + " - " + SP.getDouble("openapsma_max_bg", maxBgDefault)); tempTargetView.setVisibility(View.VISIBLE); } } else { @@ -639,8 +896,6 @@ public class OverviewFragment extends Fragment { } // **** Temp button **** - PumpInterface pump = MainApp.getConfigBuilder(); - boolean showAcceptButton = !MainApp.getConfigBuilder().isClosedModeEnabled(); // Open mode needed showAcceptButton = showAcceptButton && finalLastRun != null && finalLastRun.lastAPSRun != null; // aps result must exist showAcceptButton = showAcceptButton && (finalLastRun.lastOpenModeAccept == null || finalLastRun.lastOpenModeAccept.getTime() < finalLastRun.lastAPSRun.getTime()); // never accepted or before last result @@ -716,7 +971,7 @@ public class OverviewFragment extends Fragment { quickWizardButton.setVisibility(View.VISIBLE); String text = MainApp.sResources.getString(R.string.bolus) + ": " + quickWizardEntry.buttonText() + " " + DecimalFormatter.to0Decimal(quickWizardEntry.carbs()) + "g"; BolusWizard wizard = new BolusWizard(); - wizard.doCalc(profile.getDefaultProfile(), quickWizardEntry.carbs(), lastBG.valueToUnits(profile.getUnits()), 0d, true, true); + wizard.doCalc(profile.getDefaultProfile(), quickWizardEntry.carbs(), 0d, lastBG.valueToUnits(profile.getUnits()), 0d, true, true, false, false); text += " " + DecimalFormatter.to2Decimal(wizard.calculatedTotalInsulin) + "U"; quickWizardButton.setText(text); if (wizard.calculatedTotalInsulin <= 0) @@ -726,15 +981,35 @@ public class OverviewFragment extends Fragment { String units = profile.getUnits(); + Double lowLine = SP.getDouble("low_mark", 0d); + Double highLine = SP.getDouble("high_mark", 0d); + if (lowLine < 1) { + lowLine = NSProfile.fromMgdlToUnits(OverviewPlugin.bgTargetLow, units); + } + if (highLine < 1) { + highLine = NSProfile.fromMgdlToUnits(OverviewPlugin.bgTargetHigh, units); + } + + // **** BG value **** if (lastBG != null) { + int color = MainApp.sResources.getColor(R.color.inrange); + if (lastBG.valueToUnits(units) < lowLine) + color = MainApp.sResources.getColor(R.color.low); + else if (lastBG.valueToUnits(units) > highLine) + color = MainApp.sResources.getColor(R.color.high); bgView.setText(lastBG.valueToUnitsToString(profile.getUnits())); arrowView.setText(lastBG.directionToSymbol()); + bgView.setTextColor(color); + arrowView.setTextColor(color); GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData(); if (glucoseStatus != null) { deltaView.setText("Δ " + NSProfile.toUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) + " " + units); avgdeltaView.setText("øΔ15m: " + NSProfile.toUnitsString(glucoseStatus.short_avgdelta, glucoseStatus.short_avgdelta * Constants.MGDL_TO_MMOLL, units) + " øΔ40m: " + NSProfile.toUnitsString(glucoseStatus.long_avgdelta, glucoseStatus.long_avgdelta * Constants.MGDL_TO_MMOLL, units)); + } else { + deltaView.setText("Δ " + MainApp.sResources.getString(R.string.notavailable)); + avgdeltaView.setText(""); } BgReading.units = profile.getUnits(); @@ -753,10 +1028,13 @@ public class OverviewFragment extends Fragment { timeAgoView.setText(String.format(MainApp.sResources.getString(R.string.minago), agoMin)); // iob - MainApp.getConfigBuilder().getActiveTreatments().updateTotalIOB(); - IobTotal bolusIob = MainApp.getConfigBuilder().getActiveTreatments().getLastCalculation().round(); - MainApp.getConfigBuilder().getActiveTempBasals().updateTotalIOB(); - IobTotal basalIob = MainApp.getConfigBuilder().getActiveTempBasals().getLastCalculation().round(); + ConfigBuilderPlugin.getActiveTreatments().updateTotalIOB(); + IobTotal bolusIob = ConfigBuilderPlugin.getActiveTreatments().getLastCalculation().round(); + IobTotal basalIob = new IobTotal(new Date().getTime()); + if (ConfigBuilderPlugin.getActiveTempBasals() != null) { + ConfigBuilderPlugin.getActiveTempBasals().updateTotalIOB(); + basalIob = ConfigBuilderPlugin.getActiveTempBasals().getLastCalculation().round(); + } String iobtext = getString(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U (" + getString(R.string.bolus) + ": " + DecimalFormatter.to2Decimal(bolusIob.iob) + "U " @@ -799,106 +1077,202 @@ public class OverviewFragment extends Fragment { endTime = toTime; } - Double lowLine = SafeParse.stringToDouble(prefs.getString("low_mark", "0")); - Double highLine = SafeParse.stringToDouble(prefs.getString("high_mark", "0")); - - if (lowLine < 1) { - lowLine = NSProfile.fromMgdlToUnits(OverviewPlugin.bgTargetLow, units); - } - - if (highLine < 1) { - highLine = NSProfile.fromMgdlToUnits(OverviewPlugin.bgTargetHigh, units); - } - LineGraphSeries basalsLineSeries = null; - BarGraphSeries basalsSeries = null; - LineGraphSeries seriesLow = null; - LineGraphSeries seriesHigh = null; - LineGraphSeries seriesNow = null; - PointsGraphSeries seriesInRage = null; - PointsGraphSeries seriesOutOfRange = null; - PointsGraphSeries predSeries = null; - PointsWithLabelGraphSeries seriesTreatments = null; - - // remove old data from graph - bgGraph.removeAllSeries(); - - // **** HIGH and LOW targets graph **** - DataPoint[] lowDataPoints = new DataPoint[]{ - new DataPoint(fromTime, lowLine), - new DataPoint(endTime, lowLine) - }; - DataPoint[] highDataPoints = new DataPoint[]{ - new DataPoint(fromTime, highLine), - new DataPoint(endTime, highLine) - }; - bgGraph.addSeries(seriesLow = new LineGraphSeries(lowDataPoints)); - seriesLow.setColor(Color.RED); - bgGraph.addSeries(seriesHigh = new LineGraphSeries(highDataPoints)); - seriesHigh.setColor(Color.RED); + LineGraphSeries baseBasalsSeries = null; + LineGraphSeries tempBasalsSeries = null; + AreaGraphSeries areaSeries; + LineGraphSeries seriesNow, seriesNow2; + PointsGraphSeries seriesInRage; + PointsGraphSeries seriesLow; + PointsGraphSeries seriesHigh; + PointsGraphSeries predSeries; + PointsWithLabelGraphSeries seriesTreatments; // **** TEMP BASALS graph **** - class BarDataPoint extends DataPoint { - public BarDataPoint(double x, double y, boolean isTempBasal) { - super(x, y); - this.isTempBasal = isTempBasal; - } - - public boolean isTempBasal = false; - } - Double maxBasalValueFound = 0d; long now = new Date().getTime(); - if (pump.getPumpDescription().isTempBasalCapable) { - List basalArray = new ArrayList(); - List basalLineArray = new ArrayList(); + if (pump.getPumpDescription().isTempBasalCapable && showBasalsView.isChecked()) { + List baseBasalArray = new ArrayList<>(); + List tempBasalArray = new ArrayList<>(); + List basalLineArray = new ArrayList<>(); + double lastLineBasal = 0; double lastBaseBasal = 0; + double lastTempBasal = 0; for (long time = fromTime; time < now; time += 5 * 60 * 1000L) { TempBasal tb = MainApp.getConfigBuilder().getTempBasal(new Date(time)); - double basebasal = profile.getBasal(NSProfile.secondsFromMidnight(new Date(time))); - Double basal = 0d; - if (tb != null) - basalArray.add(new BarDataPoint(time, basal = tb.tempBasalConvertedToAbsolute(new Date(time)), true)); - else { - basalArray.add(new BarDataPoint(time, basal = basebasal, false)); + double baseBasalValue = profile.getBasal(NSProfile.secondsFromMidnight(new Date(time))); + double baseLineValue = baseBasalValue; + double tempBasalValue = 0; + double basal = 0d; + if (tb != null) { + tempBasalValue = tb.tempBasalConvertedToAbsolute(new Date(time)); + if (tempBasalValue != lastTempBasal) { + tempBasalArray.add(new DataPoint(time, lastTempBasal)); + tempBasalArray.add(new DataPoint(time, basal = tempBasalValue)); + } + if (lastBaseBasal != 0d) { + baseBasalArray.add(new DataPoint(time, lastBaseBasal)); + baseBasalArray.add(new DataPoint(time, 0d)); + lastBaseBasal = 0d; + } + } else { + if (baseBasalValue != lastBaseBasal) { + baseBasalArray.add(new DataPoint(time, lastBaseBasal)); + baseBasalArray.add(new DataPoint(time, basal = baseBasalValue)); + lastBaseBasal = baseBasalValue; + } + if (lastTempBasal != 0) { + tempBasalArray.add(new DataPoint(time, lastTempBasal)); + tempBasalArray.add(new DataPoint(time, 0d)); + } } - if (basebasal != lastBaseBasal) - basalLineArray.add(new DataPoint(time, lastBaseBasal)); - basalLineArray.add(new DataPoint(time, basebasal)); - lastBaseBasal = basebasal; + + if (baseLineValue != lastLineBasal) { + basalLineArray.add(new DataPoint(time, lastLineBasal)); + basalLineArray.add(new DataPoint(time, baseLineValue)); + } + + lastLineBasal = baseLineValue; + lastTempBasal = tempBasalValue; maxBasalValueFound = Math.max(maxBasalValueFound, basal); } - BarDataPoint[] basal = new BarDataPoint[basalArray.size()]; - basal = basalArray.toArray(basal); - bgGraph.addSeries(basalsSeries = new BarGraphSeries(basal)); - basalsSeries.setValueDependentColor(new ValueDependentColor() { - @Override - public int get(DataPoint data) { - BarDataPoint point = (BarDataPoint) data; - if (point.isTempBasal) return Color.BLUE; - else return Color.CYAN; - } - }); + basalLineArray.add(new DataPoint(now, lastLineBasal)); + baseBasalArray.add(new DataPoint(now, lastBaseBasal)); + tempBasalArray.add(new DataPoint(now, lastTempBasal)); + + DataPoint[] baseBasal = new DataPoint[baseBasalArray.size()]; + baseBasal = baseBasalArray.toArray(baseBasal); + baseBasalsSeries = new LineGraphSeries<>(baseBasal); + baseBasalsSeries.setDrawBackground(true); + baseBasalsSeries.setBackgroundColor(Color.argb(200, 0x3F, 0x51, 0xB5)); + baseBasalsSeries.setThickness(0); + + DataPoint[] tempBasal = new DataPoint[tempBasalArray.size()]; + tempBasal = tempBasalArray.toArray(tempBasal); + tempBasalsSeries = new LineGraphSeries<>(tempBasal); + tempBasalsSeries.setDrawBackground(true); + tempBasalsSeries.setBackgroundColor(Color.argb(200, 0x03, 0xA9, 0xF4)); + tempBasalsSeries.setThickness(0); + DataPoint[] basalLine = new DataPoint[basalLineArray.size()]; basalLine = basalLineArray.toArray(basalLine); - bgGraph.addSeries(basalsLineSeries = new LineGraphSeries(basalLine)); - basalsLineSeries.setColor(Color.CYAN); - basalsLineSeries.setDrawDataPoints(false); - basalsLineSeries.setThickness(2); + basalsLineSeries = new LineGraphSeries<>(basalLine); + Paint paint = new Paint(); + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(2); + paint.setPathEffect(new DashPathEffect(new float[]{2, 4}, 0)); + paint.setColor(MainApp.sResources.getColor(R.color.basal)); + basalsLineSeries.setCustomPaint(paint); } + // **** IOB COB graph **** + FixedLineGraphSeries iobSeries; + FixedLineGraphSeries cobSeries; + Double maxIobValueFound = 0d; + Double maxCobValueFound = 0d; + + if (showIobView.isChecked() || showCobView.isChecked()) { + //Date start = new Date(); + List iobArray = new ArrayList<>(); + List cobArray = new ArrayList<>(); + for (long time = fromTime; time <= now; time += 5 * 60 * 1000L) { + if (showIobView.isChecked()) { + IobTotal iob = IobCobCalculatorPlugin.calulateFromTreatmentsAndTemps(time); + iobArray.add(new DataPoint(time, iob.iob)); + maxIobValueFound = Math.max(maxIobValueFound, Math.abs(iob.iob)); + } + if (showCobView.isChecked()) { + AutosensData autosensData = IobCobCalculatorPlugin.getAutosensData(time); + if (autosensData != null) { + cobArray.add(new DataPoint(time, autosensData.cob)); + maxCobValueFound = Math.max(maxCobValueFound, autosensData.cob); + } + } + } + //Profiler.log(log, "IOB processed", start); + DataPoint[] iobData = new DataPoint[iobArray.size()]; + iobData = iobArray.toArray(iobData); + iobSeries = new FixedLineGraphSeries<>(iobData); + iobSeries.setDrawBackground(true); + iobSeries.setBackgroundColor(0x80FFFFFF & MainApp.sResources.getColor(R.color.iob)); //50% + iobSeries.setColor(MainApp.sResources.getColor(R.color.iob)); + iobSeries.setThickness(3); + iobSeries.setTitle("IOB"); + iobGraph.getGridLabelRenderer().setVerticalLabelsAlign(Paint.Align.LEFT); + + + if (showIobView.isChecked() && showCobView.isChecked()) { + List cobArrayRescaled = new ArrayList<>(); + for (int ci = 0; ci < cobArray.size(); ci++) { + cobArrayRescaled.add(new DataPoint(cobArray.get(ci).getX(), cobArray.get(ci).getY() * maxIobValueFound / maxCobValueFound / 2)); + } + cobArray = cobArrayRescaled; + } + DataPoint[] cobData = new DataPoint[cobArray.size()]; + cobData = cobArray.toArray(cobData); + cobSeries = new FixedLineGraphSeries<>(cobData); + cobSeries.setDrawBackground(true); + cobSeries.setBackgroundColor(0xB0FFFFFF & MainApp.sResources.getColor(R.color.cob)); //50% + cobSeries.setColor(MainApp.sResources.getColor(R.color.cob)); + cobSeries.setThickness(3); + cobSeries.setTitle("COB"); + + iobGraph.removeAllSeries(); + + if (showIobView.isChecked()) { + iobGraph.addSeries(iobSeries); + } + if (showCobView.isChecked() && cobData.length > 0) { + iobGraph.addSeries(cobSeries); + /* iobGraph.getSecondScale().setLabelFormatter(new LabelFormatter() { + @Override + public String formatLabel(double value, boolean isValueX) { + return ""; + } + + @Override + public void setViewport(Viewport viewport) { + } + }); +*/ + } + iobGraphLayout.setVisibility(View.VISIBLE); + } else { + iobGraphLayout.setVisibility(View.GONE); + } + + // remove old data from graph + bgGraph.getSecondScale().getSeries().clear(); + bgGraph.removeAllSeries(); + + // **** HIGH and LOW targets graph **** + DoubleDataPoint[] areaDataPoints = new DoubleDataPoint[]{ + new DoubleDataPoint(fromTime, lowLine, highLine), + new DoubleDataPoint(endTime, lowLine, highLine) + }; + bgGraph.addSeries(areaSeries = new AreaGraphSeries<>(areaDataPoints)); + areaSeries.setColor(0); + areaSeries.setDrawBackground(true); + areaSeries.setBackgroundColor(Color.argb(40, 0, 255, 0)); + // set manual x bounds to have nice steps bgGraph.getViewport().setMaxX(endTime); bgGraph.getViewport().setMinX(fromTime); bgGraph.getViewport().setXAxisBoundsManual(true); bgGraph.getGridLabelRenderer().setLabelFormatter(new TimeAsXAxisLabelFormatter(getActivity(), "HH")); bgGraph.getGridLabelRenderer().setNumHorizontalLabels(7); // only 7 because of the space + iobGraph.getViewport().setMaxX(endTime); + iobGraph.getViewport().setMinX(fromTime); + iobGraph.getViewport().setXAxisBoundsManual(true); + iobGraph.getGridLabelRenderer().setLabelFormatter(new TimeAsXAxisLabelFormatter(getActivity(), "HH")); + iobGraph.getGridLabelRenderer().setNumHorizontalLabels(7); // only 7 because of the space // **** BG graph **** List bgReadingsArray = MainApp.getDbHelper().getBgreadingsDataFromTime(fromTime, true); - List inRangeArray = new ArrayList(); - List outOfRangeArray = new ArrayList(); + List inRangeArray = new ArrayList<>(); + List lowArray = new ArrayList<>(); + List highArray = new ArrayList<>(); if (bgReadingsArray.size() == 0) return; @@ -908,8 +1282,10 @@ public class OverviewFragment extends Fragment { while (it.hasNext()) { BgReading bg = it.next(); if (bg.value > maxBgValue) maxBgValue = bg.value; - if (bg.valueToUnits(units) < lowLine || bg.valueToUnits(units) > highLine) - outOfRangeArray.add(bg); + if (bg.valueToUnits(units) < lowLine) + lowArray.add(bg); + else if (bg.valueToUnits(units) > highLine) + highArray.add(bg); else inRangeArray.add(bg); } @@ -919,23 +1295,32 @@ public class OverviewFragment extends Fragment { Integer numOfHorizLines = units.equals(Constants.MGDL) ? (int) (maxBgValue / 40 + 1) : (int) (maxBgValue / 2 + 1); BgReading[] inRange = new BgReading[inRangeArray.size()]; - BgReading[] outOfRange = new BgReading[outOfRangeArray.size()]; + BgReading[] low = new BgReading[lowArray.size()]; + BgReading[] high = new BgReading[highArray.size()]; inRange = inRangeArray.toArray(inRange); - outOfRange = outOfRangeArray.toArray(outOfRange); + low = lowArray.toArray(low); + high = highArray.toArray(high); if (inRange.length > 0) { - bgGraph.addSeries(seriesInRage = new PointsGraphSeries(inRange)); + bgGraph.addSeries(seriesInRage = new PointsGraphSeries<>(inRange)); seriesInRage.setShape(PointsGraphSeries.Shape.POINT); seriesInRage.setSize(5); - seriesInRage.setColor(Color.GREEN); + seriesInRage.setColor(MainApp.sResources.getColor(R.color.inrange)); } - if (outOfRange.length > 0) { - bgGraph.addSeries(seriesOutOfRange = new PointsGraphSeries(outOfRange)); - seriesOutOfRange.setShape(PointsGraphSeries.Shape.POINT); - seriesOutOfRange.setSize(5); - seriesOutOfRange.setColor(Color.RED); + if (low.length > 0) { + bgGraph.addSeries(seriesLow = new PointsGraphSeries<>(low)); + seriesLow.setShape(PointsGraphSeries.Shape.POINT); + seriesLow.setSize(5); + seriesLow.setColor(MainApp.sResources.getColor(R.color.low)); + } + + if (high.length > 0) { + bgGraph.addSeries(seriesHigh = new PointsGraphSeries<>(high)); + seriesHigh.setShape(PointsGraphSeries.Shape.POINT); + seriesHigh.setSize(5); + seriesHigh.setColor(MainApp.sResources.getColor(R.color.high)); } if (showPrediction) { @@ -947,7 +1332,7 @@ public class OverviewFragment extends Fragment { bgGraph.addSeries(predSeries = new PointsGraphSeries(pred)); predSeries.setShape(PointsGraphSeries.Shape.POINT); predSeries.setSize(4); - predSeries.setColor(Color.MAGENTA); + predSeries.setColor(MainApp.sResources.getColor(R.color.prediction)); } } @@ -956,9 +1341,14 @@ public class OverviewFragment extends Fragment { new DataPoint(now, 0), new DataPoint(now, maxBgValue) }; - bgGraph.addSeries(seriesNow = new LineGraphSeries(nowPoints)); - seriesNow.setColor(Color.GREEN); + bgGraph.addSeries(seriesNow = new LineGraphSeries<>(nowPoints)); seriesNow.setDrawDataPoints(false); + DataPoint[] nowPoints2 = new DataPoint[]{ + new DataPoint(now, 0), + new DataPoint(now, maxIobValueFound) + }; + iobGraph.addSeries(seriesNow2 = new LineGraphSeries<>(nowPoints2)); + seriesNow2.setDrawDataPoints(false); //seriesNow.setThickness(1); // custom paint to make a dotted line Paint paint = new Paint(); @@ -967,6 +1357,7 @@ public class OverviewFragment extends Fragment { paint.setPathEffect(new DashPathEffect(new float[]{10, 20}, 0)); paint.setColor(Color.WHITE); seriesNow.setCustomPaint(paint); + seriesNow2.setCustomPaint(paint); // Treatments @@ -995,15 +1386,26 @@ public class OverviewFragment extends Fragment { bgGraph.getGridLabelRenderer().setNumVerticalLabels(numOfHorizLines); // set second scale - if (pump.getPumpDescription().isTempBasalCapable) { - bgGraph.getSecondScale().addSeries(basalsSeries); + if (pump.getPumpDescription().isTempBasalCapable && showBasalsView.isChecked()) { + bgGraph.getSecondScale().addSeries(baseBasalsSeries); + bgGraph.getSecondScale().addSeries(tempBasalsSeries); bgGraph.getSecondScale().addSeries(basalsLineSeries); bgGraph.getSecondScale().setMinY(0); bgGraph.getSecondScale().setMaxY(maxBgValue / lowLine * maxBasalValueFound * 1.2d); - bgGraph.getGridLabelRenderer().setVerticalLabelsSecondScaleColor(ContextCompat.getColor(MainApp.instance(), R.color.background_material_dark)); // same color as backround = hide } + bgGraph.getSecondScale().setLabelFormatter(new LabelFormatter() { + @Override + public String formatLabel(double value, boolean isValueX) { + return ""; + } + + @Override + public void setViewport(Viewport viewport) { + + } + }); + - updatePumpStatus(null); } //Notifications diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewPlugin.java index 9caa2fde10..b513d68dac 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewPlugin.java @@ -1,8 +1,5 @@ package info.nightscout.androidaps.plugins.Overview; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - import com.squareup.otto.Subscribe; import org.json.JSONArray; @@ -13,6 +10,7 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -27,8 +25,7 @@ public class OverviewPlugin implements PluginBase { public NotificationStore notificationStore = new NotificationStore(); public OverviewPlugin() { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - String storedData = preferences.getString("QuickWizard", "[]"); + String storedData = SP.getString("QuickWizard", "[]"); try { quickWizard.setData(new JSONArray(storedData)); } catch (JSONException e) { @@ -73,6 +70,16 @@ public class OverviewPlugin implements PluginBase { return false; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return false; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { // Always enabled diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/QuickWizard.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/QuickWizard.java index ac7dbaa101..4f3e2a255c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/QuickWizard.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/QuickWizard.java @@ -7,12 +7,10 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import java.util.Calendar; import java.util.Date; -import java.util.GregorianCalendar; import info.nightscout.androidaps.MainApp; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/events/EventDismissBolusprogressIfRunning.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/events/EventDismissBolusprogressIfRunning.java new file mode 100644 index 0000000000..9d8435eaf1 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/events/EventDismissBolusprogressIfRunning.java @@ -0,0 +1,15 @@ +package info.nightscout.androidaps.plugins.Overview.events; + +import info.nightscout.androidaps.data.PumpEnactResult; + +/** + * Created by adrian on 20/02/17. + */ + +public class EventDismissBolusprogressIfRunning { + public final PumpEnactResult result; + + public EventDismissBolusprogressIfRunning(PumpEnactResult result) { + this.result = result; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/AreaGraphSeries.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/AreaGraphSeries.java new file mode 100644 index 0000000000..08da836210 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/AreaGraphSeries.java @@ -0,0 +1,456 @@ +/** + * GraphView + * Copyright (C) 2014 Jonas Gehring + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, + * with the "Linking Exception", which can be found at the license.txt + * file in this program. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * with the "Linking Exception" along with this program; if not, + * write to the author Jonas Gehring . + */ +package info.nightscout.androidaps.plugins.Overview.graphExtensions; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; + +import com.jjoe64.graphview.GraphView; +import com.jjoe64.graphview.series.BaseSeries; +import com.jjoe64.graphview.series.DataPointInterface; + +import java.util.Iterator; + +/** + * Series to plot the data as line. + * The line can be styled with many options. + * + * @author jjoe64 + */ +public class AreaGraphSeries extends BaseSeries { + /** + * wrapped styles regarding the line + */ + private final class Styles { + /** + * the thickness of the line. + * This option will be ignored if you are + * using a custom paint via {@link #setCustomPaint(android.graphics.Paint)} + */ + private int thickness = 5; + + /** + * flag whether the area under the line to the bottom + * of the viewport will be filled with a + * specific background color. + * + * @see #backgroundColor + */ + private boolean drawBackground = false; + + /** + * flag whether the data points are highlighted as + * a visible point. + * + * @see #dataPointsRadius + */ + private boolean drawDataPoints = false; + + /** + * the radius for the data points. + * + * @see #drawDataPoints + */ + private float dataPointsRadius = 10f; + + /** + * the background color for the filling under + * the line. + * + * @see #drawBackground + */ + private int backgroundColor = Color.argb(100, 172, 218, 255); + } + + /** + * wrapped styles + */ + private Styles mStyles; + + /** + * internal paint object + */ + private Paint mPaint; + + /** + * paint for the background + */ + private Paint mPaintBackground; + + /** + * path for the background filling + */ + private Path mPathBackground; + + /** + * path to the line + */ + private Path mPath; + private Path mSecondPath; + + /** + * custom paint that can be used. + * this will ignore the thickness and color styles. + */ + private Paint mCustomPaint; + + /** + * creates a series without data + */ + public AreaGraphSeries() { + init(); + } + + /** + * creates a series with data + * + * @param data data points + */ + public AreaGraphSeries(E[] data) { + super(data); + init(); + } + + /** + * do the initialization + * creates internal objects + */ + protected void init() { + mStyles = new Styles(); + mPaint = new Paint(); + mPaint.setStrokeCap(Paint.Cap.ROUND); + mPaint.setStyle(Paint.Style.STROKE); + mPaintBackground = new Paint(); + + mPathBackground = new Path(); + mPath = new Path(); + mSecondPath = new Path(); + } + + /** + * plots the series + * draws the line and the background + * + * @param graphView graphview + * @param canvas canvas + * @param isSecondScale flag if it is the second scale + */ + @Override + public void draw(GraphView graphView, Canvas canvas, boolean isSecondScale) { + resetDataPoints(); + + // get data + double maxX = graphView.getViewport().getMaxX(false); + double minX = graphView.getViewport().getMinX(false); + + double maxY; + double minY; + if (isSecondScale) { + maxY = graphView.getSecondScale().getMaxY(); + minY = graphView.getSecondScale().getMinY(); + } else { + maxY = graphView.getViewport().getMaxY(false); + minY = graphView.getViewport().getMinY(false); + } + + Iterator values = getValues(minX, maxX); + + // draw background + double lastEndY1 = 0; + double lastEndY2 = 0; + double lastEndX = 0; + + // draw data + mPaint.setStrokeWidth(mStyles.thickness); + mPaint.setColor(getColor()); + mPaintBackground.setColor(mStyles.backgroundColor); + + Paint paint; + if (mCustomPaint != null) { + paint = mCustomPaint; + } else { + paint = mPaint; + } + + if (mStyles.drawBackground) { + mPathBackground.reset(); + } + + double diffY = maxY - minY; + double diffX = maxX - minX; + + float graphHeight = graphView.getGraphContentHeight(); + float graphWidth = graphView.getGraphContentWidth(); + float graphLeft = graphView.getGraphContentLeft(); + float graphTop = graphView.getGraphContentTop(); + + lastEndY1 = 0; + lastEndY2 = 0; + lastEndX = 0; + double lastUsedEndX = 0; + float firstX = 0; + int i=0; + while (values.hasNext()) { + E value = values.next(); + + double valY1 = value.getY() - minY; + double ratY1 = valY1 / diffY; + double y1 = graphHeight * ratY1; + + double valY2 = value.getY2() - minY; + double ratY2 = valY2 / diffY; + double y2 = graphHeight * ratY2; + + double valX = value.getX() - minX; + double ratX = valX / diffX; + double x = graphWidth * ratX; + + double orgX = x; + double orgY1 = y1; + double orgY2 = y2; + + if (i > 0) { + // overdraw + if (x > graphWidth) { // end right + double b = ((graphWidth - lastEndX) * (y1 - lastEndY1)/(x - lastEndX)); + y1 = lastEndY1+b; + x = graphWidth; + } + if (x > graphWidth) { // end right + double b = ((graphWidth - lastEndX) * (y2 - lastEndY2)/(x - lastEndX)); + y2 = lastEndY2+b; + x = graphWidth; + } + if (y1 < 0) { // end bottom + double b = ((0 - lastEndY1) * (x - lastEndX)/(y1 - lastEndY1)); + x = lastEndX+b; + y1 = 0; + } + if (y2 < 0) { // end bottom + double b = ((0 - lastEndY2) * (x - lastEndX)/(y2 - lastEndY2)); + x = lastEndX+b; + y2 = 0; + } + if (y1 > graphHeight) { // end top + double b = ((graphHeight - lastEndY1) * (x - lastEndX)/(y1 - lastEndY1)); + x = lastEndX+b; + y1 = graphHeight; + } + if (y2 > graphHeight) { // end top + double b = ((graphHeight - lastEndY2) * (x - lastEndX)/(y2 - lastEndY2)); + x = lastEndX+b; + y2 = graphHeight; + } + if (lastEndY1 < 0) { // start bottom + double b = ((0 - y1) * (x - lastEndX)/(lastEndY1 - y1)); + lastEndX = x-b; + lastEndY1 = 0; + } + if (lastEndY2 < 0) { // start bottom + double b = ((0 - y2) * (x - lastEndX)/(lastEndY2 - y2)); + lastEndX = x-b; + lastEndY2 = 0; + } + if (lastEndX < 0) { // start left + double b = ((0 - x) * (y1 - lastEndY1)/(lastEndX - x)); + lastEndY1 = y1-b; + lastEndX = 0; + } + if (lastEndX < 0) { // start left + double b = ((0 - x) * (y2 - lastEndY2)/(lastEndX - x)); + lastEndY2 = y2-b; + lastEndX = 0; + } + if (lastEndY1 > graphHeight) { // start top + double b = ((graphHeight - y1) * (x - lastEndX)/(lastEndY1 - y1)); + lastEndX = x-b; + lastEndY1 = graphHeight; + } + if (lastEndY2 > graphHeight) { // start top + double b = ((graphHeight - y2) * (x - lastEndX)/(lastEndY2 - y2)); + lastEndX = x-b; + lastEndY2 = graphHeight; + } + + float startX = (float) lastEndX + (graphLeft + 1); + float startY1 = (float) (graphTop - lastEndY1) + graphHeight; + float startY2 = (float) (graphTop - lastEndY2) + graphHeight; + float endX = (float) x + (graphLeft + 1); + float endY1 = (float) (graphTop - y1) + graphHeight; + float endY2 = (float) (graphTop - y2) + graphHeight; + + // draw data point + if (mStyles.drawDataPoints) { + //fix: last value was not drawn. Draw here now the end values + canvas.drawCircle(endX, endY1, mStyles.dataPointsRadius, mPaint); + canvas.drawCircle(endX, endY2, mStyles.dataPointsRadius, mPaint); + } + registerDataPoint(endX, endY1, value); + registerDataPoint(endX, endY2, value); + + mPath.reset(); + mSecondPath.reset(); + mPath.moveTo(startX, startY1); + mSecondPath.moveTo(startX, startY2); + mPath.lineTo(endX, endY1); + mSecondPath.lineTo(endX, endY2); + canvas.drawPath(mPath, paint); + canvas.drawPath(mSecondPath, paint); + if (mStyles.drawBackground) { + canvas.drawRect((float)startX, (float)startY2, endX, endY1, mPaintBackground); + } + } else if (mStyles.drawDataPoints) { + //fix: last value not drawn as datapoint. Draw first point here, and then on every step the end values (above) + //float first_X = (float) x + (graphLeft + 1); + //float first_Y = (float) (graphTop - y) + graphHeight; + //TODO canvas.drawCircle(first_X, first_Y, dataPointsRadius, mPaint); + } + lastEndY1 = orgY1; + lastEndY2 = orgY2; + lastEndX = orgX; + i++; + } + +/* + if (mStyles.drawBackground) { + // end / close path + mPathBackground.lineTo((float) lastUsedEndX, graphHeight + graphTop); + mPathBackground.lineTo(firstX, graphHeight + graphTop); + mPathBackground.close(); + canvas.drawPath(mPathBackground, mPaintBackground); + } +*/ + + } + + /** + * the thickness of the line. + * This option will be ignored if you are + * using a custom paint via {@link #setCustomPaint(android.graphics.Paint)} + * + * @return the thickness of the line + */ + public int getThickness() { + return mStyles.thickness; + } + + /** + * the thickness of the line. + * This option will be ignored if you are + * using a custom paint via {@link #setCustomPaint(android.graphics.Paint)} + * + * @param thickness thickness of the line + */ + public void setThickness(int thickness) { + mStyles.thickness = thickness; + } + + /** + * flag whether the area under the line to the bottom + * of the viewport will be filled with a + * specific background color. + * + * @return whether the background will be drawn + * @see #getBackgroundColor() + */ + public boolean isDrawBackground() { + return mStyles.drawBackground; + } + + /** + * flag whether the area under the line to the bottom + * of the viewport will be filled with a + * specific background color. + * + * @param drawBackground whether the background will be drawn + * @see #setBackgroundColor(int) + */ + public void setDrawBackground(boolean drawBackground) { + mStyles.drawBackground = drawBackground; + } + + /** + * flag whether the data points are highlighted as + * a visible point. + * + * @return flag whether the data points are highlighted + * @see #setDataPointsRadius(float) + */ + public boolean isDrawDataPoints() { + return mStyles.drawDataPoints; + } + + /** + * flag whether the data points are highlighted as + * a visible point. + * + * @param drawDataPoints flag whether the data points are highlighted + * @see #setDataPointsRadius(float) + */ + public void setDrawDataPoints(boolean drawDataPoints) { + mStyles.drawDataPoints = drawDataPoints; + } + + /** + * @return the radius for the data points. + * @see #setDrawDataPoints(boolean) + */ + public float getDataPointsRadius() { + return mStyles.dataPointsRadius; + } + + /** + * @param dataPointsRadius the radius for the data points. + * @see #setDrawDataPoints(boolean) + */ + public void setDataPointsRadius(float dataPointsRadius) { + mStyles.dataPointsRadius = dataPointsRadius; + } + + /** + * @return the background color for the filling under + * the line. + * @see #setDrawBackground(boolean) + */ + public int getBackgroundColor() { + return mStyles.backgroundColor; + } + + /** + * @param backgroundColor the background color for the filling under + * the line. + * @see #setDrawBackground(boolean) + */ + public void setBackgroundColor(int backgroundColor) { + mStyles.backgroundColor = backgroundColor; + } + + /** + * custom paint that can be used. + * this will ignore the thickness and color styles. + * + * @param customPaint the custom paint to be used for rendering the line + */ + public void setCustomPaint(Paint customPaint) { + this.mCustomPaint = customPaint; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/DoubleDataPoint.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/DoubleDataPoint.java new file mode 100644 index 0000000000..5ac5224c65 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/DoubleDataPoint.java @@ -0,0 +1,41 @@ +package info.nightscout.androidaps.plugins.Overview.graphExtensions; + +import com.jjoe64.graphview.series.DataPointInterface; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by mike on 21.04.2017. + */ + +public class DoubleDataPoint implements DataPointInterface, Serializable { + private static final long serialVersionUID=1428267322645L; + + private double x; + private double y1; + private double y2; + + public DoubleDataPoint(double x, double y1, double y2) { + this.x=x; + this.y1=y1; + this.y2=y2; + } + + public double getX() { + return x; + } + + @Override + public double getY() { + return y1; + } + + public double getY1() { + return y1; + } + + public double getY2() { + return y2; + } +} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/FixedLineGraphSeries.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/FixedLineGraphSeries.java new file mode 100644 index 0000000000..922ac3a85b --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/graphExtensions/FixedLineGraphSeries.java @@ -0,0 +1,405 @@ +package info.nightscout.androidaps.plugins.Overview.graphExtensions; + +/** + * Created by mike on 24.04.2017. + */ + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; + +import com.jjoe64.graphview.GraphView; +import com.jjoe64.graphview.series.BaseSeries; +import com.jjoe64.graphview.series.DataPointInterface; + +import java.util.Iterator; + +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; + +import com.jjoe64.graphview.GraphView; + +import java.util.Iterator; + +/** + * Series to plot the data as line. + * The line can be styled with many options. + * + * @author jjoe64 + */ +public class FixedLineGraphSeries extends BaseSeries { + /** + * wrapped styles regarding the line + */ + private final class Styles { + /** + * the thickness of the line. + * This option will be ignored if you are + * using a custom paint via {@link #setCustomPaint(android.graphics.Paint)} + */ + private int thickness = 5; + + /** + * flag whether the area under the line to the bottom + * of the viewport will be filled with a + * specific background color. + * + * @see #backgroundColor + */ + private boolean drawBackground = false; + + /** + * flag whether the data points are highlighted as + * a visible point. + * + * @see #dataPointsRadius + */ + private boolean drawDataPoints = false; + + /** + * the radius for the data points. + * + * @see #drawDataPoints + */ + private float dataPointsRadius = 10f; + + /** + * the background color for the filling under + * the line. + * + * @see #drawBackground + */ + private int backgroundColor = Color.argb(100, 172, 218, 255); + } + + /** + * wrapped styles + */ + private Styles mStyles; + + /** + * internal paint object + */ + private Paint mPaint; + + /** + * paint for the background + */ + private Paint mPaintBackground; + + /** + * path for the background filling + */ + private Path mPathBackground; + + /** + * path to the line + */ + private Path mPath; + + /** + * custom paint that can be used. + * this will ignore the thickness and color styles. + */ + private Paint mCustomPaint; + + /** + * creates a series without data + */ + public FixedLineGraphSeries() { + init(); + } + + /** + * creates a series with data + * + * @param data data points + */ + public FixedLineGraphSeries(E[] data) { + super(data); + init(); + } + + /** + * do the initialization + * creates internal objects + */ + protected void init() { + mStyles = new Styles(); + mPaint = new Paint(); + mPaint.setStrokeCap(Paint.Cap.ROUND); + mPaint.setStyle(Paint.Style.STROKE); + mPaintBackground = new Paint(); + + mPathBackground = new Path(); + mPath = new Path(); + } + + /** + * plots the series + * draws the line and the background + * + * @param graphView graphview + * @param canvas canvas + * @param isSecondScale flag if it is the second scale + */ + @Override + public void draw(GraphView graphView, Canvas canvas, boolean isSecondScale) { + resetDataPoints(); + + // get data + double maxX = graphView.getViewport().getMaxX(false); + double minX = graphView.getViewport().getMinX(false); + + double maxY; + double minY; + if (isSecondScale) { + maxY = graphView.getSecondScale().getMaxY(); + minY = graphView.getSecondScale().getMinY(); + } else { + maxY = graphView.getViewport().getMaxY(false); + minY = graphView.getViewport().getMinY(false); + } + + Iterator values = getValues(minX, maxX); + + // draw background + double lastEndY = 0; + double lastEndX = 0; + + // draw data + mPaint.setStrokeWidth(mStyles.thickness); + mPaint.setColor(getColor()); + mPaintBackground.setColor(mStyles.backgroundColor); + + Paint paint; + if (mCustomPaint != null) { + paint = mCustomPaint; + } else { + paint = mPaint; + } + + if (mStyles.drawBackground) { + mPathBackground.reset(); + } + + double diffY = maxY - minY; + double diffX = maxX - minX; + + float graphHeight = graphView.getGraphContentHeight(); + float graphWidth = graphView.getGraphContentWidth(); + float graphLeft = graphView.getGraphContentLeft(); + float graphTop = graphView.getGraphContentTop(); + + lastEndY = 0; + lastEndX = 0; + double lastUsedEndX = 0; + float firstX = 0; + int i=0; + while (values.hasNext()) { + E value = values.next(); + + double valY = value.getY() - minY; + double ratY = valY / diffY; + double y = graphHeight * ratY; + + double valX = value.getX() - minX; + double ratX = valX / diffX; + double x = graphWidth * ratX; + + double orgX = x; + double orgY = y; + + if (i > 0) { + // overdraw + if (x > graphWidth) { // end right + double b = ((graphWidth - lastEndX) * (y - lastEndY)/(x - lastEndX)); + y = lastEndY+b; + x = graphWidth; + } + if (y < 0) { // end bottom + double b = ((0 - lastEndY) * (x - lastEndX)/(y - lastEndY)); + x = lastEndX+b; + y = 0; + } + if (y > graphHeight) { // end top + double b = ((graphHeight - lastEndY) * (x - lastEndX)/(y - lastEndY)); + x = lastEndX+b; + y = graphHeight; + } + if (lastEndY < 0) { // start bottom + double b = ((0 - y) * (x - lastEndX)/(lastEndY - y)); + lastEndX = x-b; + lastEndY = 0; + } + if (lastEndX < 0) { // start left + double b = ((0 - x) * (y - lastEndY)/(lastEndX - x)); + lastEndY = y-b; + lastEndX = 0; + } + if (lastEndY > graphHeight) { // start top + double b = ((graphHeight - y) * (x - lastEndX)/(lastEndY - y)); + lastEndX = x-b; + lastEndY = graphHeight; + } + + float startX = (float) lastEndX + (graphLeft + 1); + float startY = (float) (graphTop - lastEndY) + graphHeight; + float endX = (float) x + (graphLeft + 1); + float endY = (float) (graphTop - y) + graphHeight; + + // draw data point + if (mStyles.drawDataPoints) { + //fix: last value was not drawn. Draw here now the end values + canvas.drawCircle(endX, endY, mStyles.dataPointsRadius, mPaint); + } + registerDataPoint(endX, endY, value); + + mPath.reset(); + mPath.moveTo(startX, startY); + mPath.lineTo(endX, endY); + canvas.drawPath(mPath, paint); + if (mStyles.drawBackground) { + if (i==1) { + firstX = startX; + mPathBackground.moveTo(startX, startY); + } + mPathBackground.lineTo(endX, endY); + } + lastUsedEndX = endX; + } else if (mStyles.drawDataPoints) { + //fix: last value not drawn as datapoint. Draw first point here, and then on every step the end values (above) + float first_X = (float) x + (graphLeft + 1); + float first_Y = (float) (graphTop - y) + graphHeight; + //TODO canvas.drawCircle(first_X, first_Y, dataPointsRadius, mPaint); + } + lastEndY = orgY; + lastEndX = orgX; + i++; + } + + if (mStyles.drawBackground) { + // end / close path + mPathBackground.lineTo((float) lastUsedEndX, (float) (graphTop - (-minY / diffY * graphHeight)) + graphHeight); + mPathBackground.lineTo(firstX, (float) (graphTop - (-minY / diffY * graphHeight)) + graphHeight); + mPathBackground.close(); + canvas.drawPath(mPathBackground, mPaintBackground); + } + + } + + /** + * the thickness of the line. + * This option will be ignored if you are + * using a custom paint via {@link #setCustomPaint(android.graphics.Paint)} + * + * @return the thickness of the line + */ + public int getThickness() { + return mStyles.thickness; + } + + /** + * the thickness of the line. + * This option will be ignored if you are + * using a custom paint via {@link #setCustomPaint(android.graphics.Paint)} + * + * @param thickness thickness of the line + */ + public void setThickness(int thickness) { + mStyles.thickness = thickness; + } + + /** + * flag whether the area under the line to the bottom + * of the viewport will be filled with a + * specific background color. + * + * @return whether the background will be drawn + * @see #getBackgroundColor() + */ + public boolean isDrawBackground() { + return mStyles.drawBackground; + } + + /** + * flag whether the area under the line to the bottom + * of the viewport will be filled with a + * specific background color. + * + * @param drawBackground whether the background will be drawn + * @see #setBackgroundColor(int) + */ + public void setDrawBackground(boolean drawBackground) { + mStyles.drawBackground = drawBackground; + } + + /** + * flag whether the data points are highlighted as + * a visible point. + * + * @return flag whether the data points are highlighted + * @see #setDataPointsRadius(float) + */ + public boolean isDrawDataPoints() { + return mStyles.drawDataPoints; + } + + /** + * flag whether the data points are highlighted as + * a visible point. + * + * @param drawDataPoints flag whether the data points are highlighted + * @see #setDataPointsRadius(float) + */ + public void setDrawDataPoints(boolean drawDataPoints) { + mStyles.drawDataPoints = drawDataPoints; + } + + /** + * @return the radius for the data points. + * @see #setDrawDataPoints(boolean) + */ + public float getDataPointsRadius() { + return mStyles.dataPointsRadius; + } + + /** + * @param dataPointsRadius the radius for the data points. + * @see #setDrawDataPoints(boolean) + */ + public void setDataPointsRadius(float dataPointsRadius) { + mStyles.dataPointsRadius = dataPointsRadius; + } + + /** + * @return the background color for the filling under + * the line. + * @see #setDrawBackground(boolean) + */ + public int getBackgroundColor() { + return mStyles.backgroundColor; + } + + /** + * @param backgroundColor the background color for the filling under + * the line. + * @see #setDrawBackground(boolean) + */ + public void setBackgroundColor(int backgroundColor) { + mStyles.backgroundColor = backgroundColor; + } + + /** + * custom paint that can be used. + * this will ignore the thickness and color styles. + * + * @param customPaint the custom paint to be used for rendering the line + */ + public void setCustomPaint(Paint customPaint) { + this.mCustomPaint = customPaint; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Persistentnotification/PersistentNotificationFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Persistentnotification/PersistentNotificationFragment.java new file mode 100644 index 0000000000..78e7791c2d --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Persistentnotification/PersistentNotificationFragment.java @@ -0,0 +1,12 @@ +package info.nightscout.androidaps.plugins.Persistentnotification; + +import android.support.v4.app.Fragment; + +/** + * Created by adrian on 23/12/16. + */ + +public class PersistentNotificationFragment extends Fragment { + + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Persistentnotification/PersistentNotificationPlugin.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/Persistentnotification/PersistentNotificationPlugin.java index 532959d926..6acd7a810c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Persistentnotification/PersistentNotificationPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.persistentnotification; +package info.nightscout.androidaps.plugins.Persistentnotification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -11,6 +11,8 @@ import android.support.v7.app.NotificationCompat; import com.squareup.otto.Subscribe; +import java.util.Date; + import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainActivity; import info.nightscout.androidaps.MainApp; @@ -28,7 +30,8 @@ import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.data.IobTotal; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DecimalFormatter; /** @@ -38,7 +41,7 @@ import info.nightscout.utils.DecimalFormatter; public class PersistentNotificationPlugin implements PluginBase{ private static final int ONGOING_NOTIFICATION_ID = 4711; - static boolean fragmentEnabled = false; + static boolean fragmentEnabled = true; private final Context ctx; public PersistentNotificationPlugin(Context ctx) { @@ -82,6 +85,16 @@ public class PersistentNotificationPlugin implements PluginBase{ return true; } + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { @@ -131,10 +144,13 @@ public class PersistentNotificationPlugin implements PluginBase{ } //IOB - MainApp.getConfigBuilder().getActiveTreatments().updateTotalIOB(); - IobTotal bolusIob = MainApp.getConfigBuilder().getActiveTreatments().getLastCalculation().round(); - MainApp.getConfigBuilder().getActiveTempBasals().updateTotalIOB(); - IobTotal basalIob = MainApp.getConfigBuilder().getActiveTempBasals().getLastCalculation().round(); + ConfigBuilderPlugin.getActiveTreatments().updateTotalIOB(); + IobTotal bolusIob = ConfigBuilderPlugin.getActiveTreatments().getLastCalculation().round(); + IobTotal basalIob = new IobTotal(new Date().getTime()); + if (ConfigBuilderPlugin.getActiveTempBasals() != null) { + ConfigBuilderPlugin.getActiveTempBasals().updateTotalIOB(); + basalIob = ConfigBuilderPlugin.getActiveTempBasals().getLastCalculation().round(); + } String line2 = ctx.getString(R.string.treatments_iob_label_string) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U (" + ctx.getString(R.string.bolus) + ": " + DecimalFormatter.to2Decimal(bolusIob.iob) + "U " + ctx.getString(R.string.basal) + ": " + DecimalFormatter.to2Decimal(basalIob.basaliob) + "U)"; @@ -151,7 +167,7 @@ public class PersistentNotificationPlugin implements PluginBase{ builder.setOngoing(true); builder.setCategory(NotificationCompat.CATEGORY_STATUS); builder.setSmallIcon(R.drawable.ic_notification); - Bitmap largeIcon = BitmapFactory.decodeResource(ctx.getResources(), R.mipmap.ic_launcher); + Bitmap largeIcon = BitmapFactory.decodeResource(ctx.getResources(), R.mipmap.blueowl); builder.setLargeIcon(largeIcon); builder.setContentTitle(line1); builder.setContentText(line2); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/CircadianPercentageProfile/CircadianPercentageProfileFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfileFragment.java similarity index 99% rename from app/src/main/java/info/nightscout/androidaps/plugins/CircadianPercentageProfile/CircadianPercentageProfileFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfileFragment.java index bb4513b069..7ae97a17b5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/CircadianPercentageProfile/CircadianPercentageProfileFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfileFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.CircadianPercentageProfile; +package info.nightscout.androidaps.plugins.ProfileCircadianPercentage; import android.app.Activity; @@ -33,14 +33,13 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventInitializationChanged; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SafeParse; -public class CircadianPercentageProfileFragment extends Fragment implements FragmentBase { +public class CircadianPercentageProfileFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(CircadianPercentageProfileFragment.class); private static CircadianPercentageProfilePlugin circadianPercentageProfilePlugin = new CircadianPercentageProfilePlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/CircadianPercentageProfile/CircadianPercentageProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java similarity index 72% rename from app/src/main/java/info/nightscout/androidaps/plugins/CircadianPercentageProfile/CircadianPercentageProfilePlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java index 56aa813c29..5a8813bdf8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/CircadianPercentageProfile/CircadianPercentageProfilePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileCircadianPercentage/CircadianPercentageProfilePlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.CircadianPercentageProfile; +package info.nightscout.androidaps.plugins.ProfileCircadianPercentage; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -15,8 +15,9 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DecimalFormatter; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; @@ -28,7 +29,7 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte public static final String SETTINGS_PREFIX = "CircadianPercentageProfile"; private static Logger log = LoggerFactory.getLogger(CircadianPercentageProfilePlugin.class); - private static boolean fragmentEnabled = true; + private static boolean fragmentEnabled = false; private static boolean fragmentVisible = true; private static NSProfile convertedProfile = null; @@ -66,7 +67,7 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte @Override public String getNameShort() { String name = MainApp.sResources.getString(R.string.circadian_percentage_profile_shortname); - if (!name.trim().isEmpty()){ + if (!name.trim().isEmpty()) { //only if translation exists return name; } @@ -89,6 +90,16 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PROFILE) this.fragmentEnabled = fragmentEnabled; @@ -125,75 +136,19 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte void loadSettings() { if (Config.logPrefsChange) log.debug("Loading stored settings"); - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - if (settings.contains(SETTINGS_PREFIX + "mgdl")) - try { - mgdl = settings.getBoolean(SETTINGS_PREFIX + "mgdl", true); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else mgdl = true; - if (settings.contains(SETTINGS_PREFIX + "mmol")) - try { - mmol = settings.getBoolean(SETTINGS_PREFIX + "mmol", false); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else mmol = false; - if (settings.contains(SETTINGS_PREFIX + "dia")) - try { - dia = SafeParse.stringToDouble(settings.getString(SETTINGS_PREFIX + "dia", "3")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else dia = 3d; - if (settings.contains(SETTINGS_PREFIX + "targetlow")) - try { - targetLow = SafeParse.stringToDouble(settings.getString(SETTINGS_PREFIX + "targetlow", "80")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else targetLow = 80d; - if (settings.contains(SETTINGS_PREFIX + "targethigh")) - try { - targetHigh = SafeParse.stringToDouble(settings.getString(SETTINGS_PREFIX + "targethigh", "120")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else targetHigh = 120d; - if (settings.contains(SETTINGS_PREFIX + "percentage")) - try { - percentage = SafeParse.stringToInt(settings.getString(SETTINGS_PREFIX + "percentage", "100")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else percentage = 100; - - if (settings.contains(SETTINGS_PREFIX + "timeshift")) - try { - timeshift = SafeParse.stringToInt(settings.getString(SETTINGS_PREFIX + "timeshift", "0")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else timeshift = 0; + mgdl = SP.getBoolean(SETTINGS_PREFIX + "mgdl", true); + mmol = SP.getBoolean(SETTINGS_PREFIX + "mmol", false); + dia = SP.getDouble(SETTINGS_PREFIX + "dia", Constants.defaultDIA); + targetLow = SP.getDouble(SETTINGS_PREFIX + "targetlow", 80d); + targetHigh = SP.getDouble(SETTINGS_PREFIX + "targethigh", 120d); + percentage = SP.getInt(SETTINGS_PREFIX + "percentage", 100); + timeshift = SP.getInt(SETTINGS_PREFIX + "timeshift", 0); for (int i = 0; i < 24; i++) { - try { - basebasal[i] = SafeParse.stringToDouble(settings.getString(SETTINGS_PREFIX + "basebasal" + i, DecimalFormatter.to2Decimal(basebasal[i]))); - } catch (Exception e) { - log.debug(e.getMessage()); - } - try { - baseic[i] = SafeParse.stringToDouble(settings.getString(SETTINGS_PREFIX + "baseic" + i, DecimalFormatter.to2Decimal(baseic[i]))); - } catch (Exception e) { - log.debug(e.getMessage()); - } - try { - baseisf[i] = SafeParse.stringToDouble(settings.getString(SETTINGS_PREFIX + "baseisf" + i, DecimalFormatter.to2Decimal(baseisf[i]))); - } catch (Exception e) { - log.debug(e.getMessage()); - } + basebasal[i] = SP.getDouble(SETTINGS_PREFIX + "basebasal" + i, basebasal[i]); + baseic[i] = SP.getDouble(SETTINGS_PREFIX + "baseic" + i, baseic[i]); + baseisf[i] = SP.getDouble(SETTINGS_PREFIX + "baseisf" + i, baseisf[i]); } @@ -227,7 +182,7 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte } profile.put("carbratio", icArray); - JSONArray isfArray = new JSONArray(); + JSONArray isfArray = new JSONArray(); for (int i = 0; i < 24; i++) { isfArray.put(new JSONObject().put("timeAsSeconds", i * 60 * 60).put("value", baseisf[(offset + i) % 24] * 100d / percentage)); } @@ -259,7 +214,7 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte } private void performLimitCheck() { - if (percentage < Constants.CPP_MIN_PERCENTAGE || percentage > Constants.CPP_MAX_PERCENTAGE){ + if (percentage < Constants.CPP_MIN_PERCENTAGE || percentage > Constants.CPP_MAX_PERCENTAGE) { String msg = String.format(MainApp.sResources.getString(R.string.openapsma_valueoutofrange), "Profile-Percentage"); log.error(msg); MainApp.getConfigBuilder().uploadError(msg); @@ -289,13 +244,15 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte return profileString(baseisf, 0, 100, false); } - String baseBasalString() {return profileString(basebasal, 0, 100, true);} + String baseBasalString() { + return profileString(basebasal, 0, 100, true); + } - public double baseBasalSum(){ + public double baseBasalSum() { return sum(basebasal); } - public double percentageBasalSum(){ + public double percentageBasalSum() { double result = 0; for (int i = 0; i < basebasal.length; i++) { result += SafeParse.stringToDouble(DecimalFormatter.to2Decimal(basebasal[i] * percentage / 100d)); @@ -304,7 +261,7 @@ public class CircadianPercentageProfilePlugin implements PluginBase, ProfileInte } - public static double sum(double values[]){ + public static double sum(double values[]) { double result = 0; for (int i = 0; i < values.length; i++) { result += values[i]; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/LocalProfile/LocalProfileFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileLocal/LocalProfileFragment.java similarity index 96% rename from app/src/main/java/info/nightscout/androidaps/plugins/LocalProfile/LocalProfileFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileLocal/LocalProfileFragment.java index 552a05cc28..86a983ae17 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/LocalProfile/LocalProfileFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileLocal/LocalProfileFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.LocalProfile; +package info.nightscout.androidaps.plugins.ProfileLocal; import android.app.Activity; @@ -11,7 +11,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; -import android.widget.LinearLayout; import android.widget.RadioButton; import com.squareup.otto.Subscribe; @@ -24,14 +23,13 @@ import java.text.DecimalFormat; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventInitializationChanged; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.utils.SafeParse; import info.nightscout.utils.TimeListEdit; -public class LocalProfileFragment extends Fragment implements FragmentBase { +public class LocalProfileFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(LocalProfileFragment.class); private static LocalProfilePlugin localProfilePlugin = new LocalProfilePlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/LocalProfile/LocalProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileLocal/LocalProfilePlugin.java similarity index 60% rename from app/src/main/java/info/nightscout/androidaps/plugins/LocalProfile/LocalProfilePlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileLocal/LocalProfilePlugin.java index 91c994cdbb..6e822e5d43 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/LocalProfile/LocalProfilePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileLocal/LocalProfilePlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.LocalProfile; +package info.nightscout.androidaps.plugins.ProfileLocal; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -15,9 +15,8 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; -import info.nightscout.androidaps.plugins.SimpleProfile.SimpleProfileFragment; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -25,7 +24,7 @@ import info.nightscout.utils.SafeParse; public class LocalProfilePlugin implements PluginBase, ProfileInterface { private static Logger log = LoggerFactory.getLogger(LocalProfilePlugin.class); - private static boolean fragmentEnabled = true; + private static boolean fragmentEnabled = false; private static boolean fragmentVisible = true; private static NSProfile convertedProfile = null; @@ -63,7 +62,7 @@ public class LocalProfilePlugin implements PluginBase, ProfileInterface { @Override public String getNameShort() { String name = MainApp.sResources.getString(R.string.localprofile_shortname); - if (!name.trim().isEmpty()){ + if (!name.trim().isEmpty()) { //only if translation exists return name; } @@ -86,6 +85,16 @@ public class LocalProfilePlugin implements PluginBase, ProfileInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PROFILE) this.fragmentEnabled = fragmentEnabled; @@ -117,117 +126,48 @@ public class LocalProfilePlugin implements PluginBase, ProfileInterface { private void loadSettings() { if (Config.logPrefsChange) log.debug("Loading stored settings"); - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - if (settings.contains("LocalProfile" + "mgdl")) - try { - mgdl = settings.getBoolean("LocalProfile" + "mgdl", false); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else mgdl = false; - if (settings.contains("LocalProfile" + "mmol")) - try { - mmol = settings.getBoolean("LocalProfile" + "mmol", true); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else mmol = true; - if (settings.contains("LocalProfile" + "dia")) - try { - dia = SafeParse.stringToDouble(settings.getString("LocalProfile" + "dia", "3")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else dia = 3d; - if (settings.contains("LocalProfile" + "ic")) - try { - ic = new JSONArray(settings.getString("LocalProfile" + "ic", DEFAULTARRAY)); - } catch (Exception e) { - log.debug(e.getMessage()); - try { - ic = new JSONArray(DEFAULTARRAY); - } catch (JSONException e1) { - e1.printStackTrace(); - } - } - else { + mgdl = SP.getBoolean("LocalProfile" + "mgdl", false); + mmol = SP.getBoolean("LocalProfile" + "mmol", true); + dia = SP.getDouble("LocalProfile" + "dia", Constants.defaultDIA); + try { + ic = new JSONArray(SP.getString("LocalProfile" + "ic", DEFAULTARRAY)); + } catch (JSONException e1) { try { ic = new JSONArray(DEFAULTARRAY); - } catch (JSONException e) { - e.printStackTrace(); + } catch (JSONException e2) { } } - if (settings.contains("LocalProfile" + "isf")) - try { - isf = new JSONArray(settings.getString("LocalProfile" + "isf", DEFAULTARRAY)); - } catch (Exception e) { - log.debug(e.getMessage()); - try { - isf = new JSONArray(DEFAULTARRAY); - } catch (JSONException e1) { - e1.printStackTrace(); - } - } - else { + try { + isf = new JSONArray(SP.getString("LocalProfile" + "isf", DEFAULTARRAY)); + } catch (JSONException e1) { try { isf = new JSONArray(DEFAULTARRAY); - } catch (JSONException e) { - e.printStackTrace(); + } catch (JSONException e2) { } } - if (settings.contains("LocalProfile" + "basal")) - try { - basal = new JSONArray(settings.getString("LocalProfile" + "basal", DEFAULTARRAY)); - } catch (Exception e) { - log.debug(e.getMessage()); - try { - basal = new JSONArray(DEFAULTARRAY); - } catch (JSONException e1) { - e1.printStackTrace(); - } - } - else { + try { + basal = new JSONArray(SP.getString("LocalProfile" + "basal", DEFAULTARRAY)); + } catch (JSONException e1) { try { basal = new JSONArray(DEFAULTARRAY); - } catch (JSONException e) { - e.printStackTrace(); + } catch (JSONException e2) { } } - if (settings.contains("LocalProfile" + "targetlow")) - try { - targetLow = new JSONArray(settings.getString("LocalProfile" + "targetlow", DEFAULTARRAY)); - } catch (Exception e) { - log.debug(e.getMessage()); - try { - targetLow = new JSONArray(DEFAULTARRAY); - } catch (JSONException e1) { - e1.printStackTrace(); - } - } - else { + try { + targetLow = new JSONArray(SP.getString("LocalProfile" + "targetlow", DEFAULTARRAY)); + } catch (JSONException e1) { try { targetLow = new JSONArray(DEFAULTARRAY); - } catch (JSONException e) { - e.printStackTrace(); + } catch (JSONException e2) { } } - if (settings.contains("LocalProfile" + "targethigh")) - try { - targetHigh = new JSONArray(settings.getString("LocalProfile" + "targethigh", DEFAULTARRAY)); - } catch (Exception e) { - log.debug(e.getMessage()); - try { - targetHigh = new JSONArray(DEFAULTARRAY); - } catch (JSONException e1) { - e1.printStackTrace(); - } - } - else { + try { + targetHigh = new JSONArray(SP.getString("LocalProfile" + "targethigh", DEFAULTARRAY)); + } catch (JSONException e1) { try { targetHigh = new JSONArray(DEFAULTARRAY); - } catch (JSONException e) { - e.printStackTrace(); + } catch (JSONException e2) { } } createConvertedProfile(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/NSProfileFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfileFragment.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/NSProfileFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfileFragment.java index da54fcb27c..028ef1ac45 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/NSProfileFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfileFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.NSProfile; +package info.nightscout.androidaps.plugins.ProfileNS; import android.app.Activity; import android.os.Bundle; @@ -12,11 +12,10 @@ import com.squareup.otto.Subscribe; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; -import info.nightscout.androidaps.plugins.NSProfile.events.EventNSProfileUpdateGUI; +import info.nightscout.androidaps.plugins.ProfileNS.events.EventNSProfileUpdateGUI; import info.nightscout.utils.DecimalFormatter; -public class NSProfileFragment extends Fragment implements FragmentBase { +public class NSProfileFragment extends Fragment { private static NSProfilePlugin nsProfilePlugin = new NSProfilePlugin(); public static NSProfilePlugin getPlugin() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/NSProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java similarity index 89% rename from app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/NSProfilePlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java index 5f5ed9ca1d..5f29881b2a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/NSProfilePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.NSProfile; +package info.nightscout.androidaps.plugins.ProfileNS; import android.content.Intent; import android.content.SharedPreferences; @@ -19,8 +19,9 @@ import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.events.EventNewBasalProfile; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; -import info.nightscout.androidaps.plugins.NSProfile.events.EventNSProfileUpdateGUI; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.androidaps.plugins.ProfileNS.events.EventNSProfileUpdateGUI; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -75,6 +76,16 @@ public class NSProfilePlugin implements PluginBase, ProfileInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PROFILE) this.fragmentEnabled = fragmentEnabled; @@ -110,9 +121,8 @@ public class NSProfilePlugin implements PluginBase, ProfileInterface { private void loadNSProfile() { if (Config.logPrefsChange) log.debug("Loading stored profile"); - SharedPreferences store = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - String activeProfile = store.getString("activeProfile", null); - String profileString = store.getString("profile", null); + String activeProfile = SP.getString("activeProfile", null); + String profileString = SP.getString("profile", null); if (profileString != null) { if (Config.logPrefsChange) { log.debug("Loaded profile: " + profileString); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/events/EventNSProfileUpdateGUI.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/events/EventNSProfileUpdateGUI.java similarity index 57% rename from app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/events/EventNSProfileUpdateGUI.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/events/EventNSProfileUpdateGUI.java index df7fe40879..7bb5df792f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSProfile/events/EventNSProfileUpdateGUI.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/events/EventNSProfileUpdateGUI.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.NSProfile.events; +package info.nightscout.androidaps.plugins.ProfileNS.events; /** * Created by mike on 05.08.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileSimple/SimpleProfileFragment.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileSimple/SimpleProfileFragment.java index 4a31333ad9..b183b28a0b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileSimple/SimpleProfileFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.SimpleProfile; +package info.nightscout.androidaps.plugins.ProfileSimple; import android.app.Activity; @@ -11,30 +11,22 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; -import android.widget.LinearLayout; import android.widget.RadioButton; import com.squareup.otto.Subscribe; -import org.json.JSONArray; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.text.DecimalFormat; - import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventInitializationChanged; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; -import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; -import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SafeParse; -import info.nightscout.utils.TimeListEdit; -public class SimpleProfileFragment extends Fragment implements FragmentBase { +public class SimpleProfileFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(SimpleProfileFragment.class); private static SimpleProfilePlugin simpleProfilePlugin = new SimpleProfilePlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileSimple/SimpleProfilePlugin.java similarity index 68% rename from app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfilePlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/ProfileSimple/SimpleProfilePlugin.java index 3264696feb..aac4a05798 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfilePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileSimple/SimpleProfilePlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.SimpleProfile; +package info.nightscout.androidaps.plugins.ProfileSimple; import android.content.SharedPreferences; import android.preference.PreferenceManager; @@ -15,8 +15,8 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -24,7 +24,7 @@ import info.nightscout.utils.SafeParse; public class SimpleProfilePlugin implements PluginBase, ProfileInterface { private static Logger log = LoggerFactory.getLogger(SimpleProfilePlugin.class); - private static boolean fragmentEnabled = true; + private static boolean fragmentEnabled = false; private static boolean fragmentVisible = true; private static NSProfile convertedProfile = null; @@ -60,7 +60,7 @@ public class SimpleProfilePlugin implements PluginBase, ProfileInterface { @Override public String getNameShort() { String name = MainApp.sResources.getString(R.string.simpleprofile_shortname); - if (!name.trim().isEmpty()){ + if (!name.trim().isEmpty()) { //only if translation exists return name; } @@ -83,6 +83,16 @@ public class SimpleProfilePlugin implements PluginBase, ProfileInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PROFILE) this.fragmentEnabled = fragmentEnabled; @@ -114,64 +124,15 @@ public class SimpleProfilePlugin implements PluginBase, ProfileInterface { private void loadSettings() { if (Config.logPrefsChange) log.debug("Loading stored settings"); - SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - if (settings.contains("SimpleProfile" + "mgdl")) - try { - mgdl = settings.getBoolean("SimpleProfile" + "mgdl", true); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else mgdl = true; - if (settings.contains("SimpleProfile" + "mmol")) - try { - mmol = settings.getBoolean("SimpleProfile" + "mmol", false); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else mmol = false; - if (settings.contains("SimpleProfile" + "dia")) - try { - dia = SafeParse.stringToDouble(settings.getString("SimpleProfile" + "dia", "3")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else dia = 3d; - if (settings.contains("SimpleProfile" + "ic")) - try { - ic = SafeParse.stringToDouble(settings.getString("SimpleProfile" + "ic", "20")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else ic = 20d; - if (settings.contains("SimpleProfile" + "isf")) - try { - isf = SafeParse.stringToDouble(settings.getString("SimpleProfile" + "isf", "200")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else isf = 200d; - if (settings.contains("SimpleProfile" + "basal")) - try { - basal = SafeParse.stringToDouble(settings.getString("SimpleProfile" + "basal", "1")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else basal = 1d; - if (settings.contains("SimpleProfile" + "targetlow")) - try { - targetLow = SafeParse.stringToDouble(settings.getString("SimpleProfile" + "targetlow", "80")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else targetLow = 80d; - if (settings.contains("SimpleProfile" + "targethigh")) - try { - targetHigh = SafeParse.stringToDouble(settings.getString("SimpleProfile" + "targethigh", "120")); - } catch (Exception e) { - log.debug(e.getMessage()); - } - else targetHigh = 120d; + mgdl = SP.getBoolean("SimpleProfile" + "mgdl", true); + mmol = SP.getBoolean("SimpleProfile" + "mmol", false); + dia = SP.getDouble("SimpleProfile" + "dia", Constants.defaultDIA); + ic = SP.getDouble("SimpleProfile" + "ic", 20d); + isf = SP.getDouble("SimpleProfile" + "isf", 200d); + basal = SP.getDouble("SimpleProfile" + "basal", 1d); + targetLow = SP.getDouble("SimpleProfile" + "targetlow", 80d); + targetHigh = SP.getDouble("SimpleProfile" + "targethigh", 120d); createConvertedProfile(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/BluetoothDevicePreference.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/BluetoothDevicePreference.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java index ba7ec5f533..63e14f0921 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/BluetoothDevicePreference.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/BluetoothDevicePreference.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR; +package info.nightscout.androidaps.plugins.PumpDanaR; import android.bluetooth.*; import android.content.Context; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java similarity index 89% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java index 7c59790e35..4aed68baec 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR; +package info.nightscout.androidaps.plugins.PumpDanaR; import android.annotation.SuppressLint; @@ -24,25 +24,23 @@ import java.util.Date; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.interfaces.FragmentBase; -import info.nightscout.androidaps.plugins.DanaR.Dialogs.ProfileViewDialog; -import info.nightscout.androidaps.plugins.DanaR.History.DanaRHistoryActivity; -import info.nightscout.androidaps.plugins.DanaR.History.DanaRStatsActivity; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRNewStatus; +import info.nightscout.androidaps.plugins.PumpDanaR.Dialogs.ProfileViewDialog; +import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRHistoryActivity; +import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRStatsActivity; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRNewStatus; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SetWarnColor; -public class DanaRFragment extends Fragment implements FragmentBase { +public class DanaRFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(DanaRFragment.class); private static DanaRPlugin danaRPlugin; public static DanaRPlugin getPlugin() { - if(danaRPlugin==null){ + if (danaRPlugin == null) { danaRPlugin = new DanaRPlugin(); } return danaRPlugin; @@ -166,18 +164,18 @@ public class DanaRFragment extends Fragment implements FragmentBase { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventPumpStatusChanged c) { Activity activity = getActivity(); if (activity != null) { activity.runOnUiThread( new Runnable() { @Override public void run() { - if (c.sStatus == EventDanaRConnectionStatus.CONNECTING) + if (c.sStatus == EventPumpStatusChanged.CONNECTING) btConnectionView.setText("{fa-bluetooth-b spin} " + c.sSecondsElapsed + "s"); - else if (c.sStatus == EventDanaRConnectionStatus.CONNECTED) + else if (c.sStatus == EventPumpStatusChanged.CONNECTED) btConnectionView.setText("{fa-bluetooth}"); - else + else if (c.sStatus == EventPumpStatusChanged.DISCONNECTED) btConnectionView.setText("{fa-bluetooth-b}"); } } @@ -195,11 +193,6 @@ public class DanaRFragment extends Fragment implements FragmentBase { updateGUI(); } - @Subscribe - public void onStatusEvent(final EventPreferenceChange s) { - updateGUI(); - } - // GUI functions private void updateGUI() { Activity activity = getActivity(); @@ -217,7 +210,7 @@ public class DanaRFragment extends Fragment implements FragmentBase { } if (pump.lastBolusTime.getTime() != 0) { Long agoMsec = new Date().getTime() - pump.lastBolusTime.getTime(); - double agoHours = agoMsec / 60d / 60d / 1000d; + double agoHours = agoMsec / 60d / 60d / 1000d; if (agoHours < 6) // max 6h back lastBolusView.setText(DateUtil.timeString(pump.lastBolusTime) + " (" + DecimalFormatter.to1Decimal(agoHours) + " " + MainApp.sResources.getString(R.string.hoursago) + ") " + DecimalFormatter.to2Decimal(getPlugin().getDanaRPump().lastBolusAmount) + " U"); else lastBolusView.setText(""); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java index 7889471d6b..dd3fb86837 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR; +package info.nightscout.androidaps.plugins.PumpDanaR; import android.content.ComponentName; import android.content.Context; @@ -30,17 +30,18 @@ import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.interfaces.ConstraintsInterface; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.Services.ExecutionService; -import info.nightscout.androidaps.plugins.NSProfile.NSProfilePlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.Services.ExecutionService; +import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.Round; @@ -56,8 +57,8 @@ public class DanaRPlugin implements PluginBase, PumpInterface, ConstraintsInterf return DanaRFragment.class.getName(); } - static boolean fragmentPumpEnabled = true; - static boolean fragmentProfileEnabled = true; + static boolean fragmentPumpEnabled = false; + static boolean fragmentProfileEnabled = false; static boolean fragmentPumpVisible = true; public static ExecutionService sExecutionService; @@ -185,6 +186,16 @@ public class DanaRPlugin implements PluginBase, PumpInterface, ConstraintsInterf return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return type == PUMP; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PluginBase.PROFILE) @@ -276,6 +287,7 @@ public class DanaRPlugin implements PluginBase, PumpInterface, ConstraintsInterf for (int h = 0; h < basalValues; h++) { Double pumpValue = pump.pumpProfiles[pump.activeProfile][h]; Double profileValue = profile.getBasal(h * basalIncrement); + if (profileValue == null) return true; if (Math.abs(pumpValue - profileValue) > getPumpDescription().basalStep) { log.debug("Diff found. Hour: " + h + " Pump: " + pumpValue + " Profile: " + profileValue); return false; @@ -285,12 +297,12 @@ public class DanaRPlugin implements PluginBase, PumpInterface, ConstraintsInterf } @Override - public Date lastStatusTime() { + public Date lastDataTime() { return getDanaRPump().lastConnection; } @Override - public void updateStatus(String reason) { + public void refreshDataFromPump(String reason) { if (!isConnected() && !isConnecting()) { doConnect(reason); } @@ -356,11 +368,11 @@ public class DanaRPlugin implements PluginBase, PumpInterface, ConstraintsInterf } @Override - public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) { + public PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context) { ConfigBuilderPlugin configBuilderPlugin = MainApp.getConfigBuilder(); insulin = configBuilderPlugin.applyBolusConstraints(insulin); if (insulin > 0 || carbs > 0) { - Treatment t = new Treatment(); + Treatment t = new Treatment(insulinType); boolean connectionOK = false; if (insulin > 0 || carbs > 0) connectionOK = sExecutionService.bolus(insulin, carbs, t); PumpEnactResult result = new PumpEnactResult(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRPump.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPump.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRPump.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPump.java index 1e9808becd..0714e2eeee 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRPump.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPump.java @@ -1,7 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR; - -import android.content.SharedPreferences; -import android.preference.PreferenceManager; +package info.nightscout.androidaps.plugins.PumpDanaR; import org.json.JSONArray; import org.json.JSONException; @@ -11,9 +8,9 @@ import java.text.DecimalFormat; import java.util.Date; import info.nightscout.androidaps.Constants; -import info.nightscout.androidaps.MainApp; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; /** * Created by mike on 04.07.2016. @@ -122,8 +119,7 @@ public class DanaRPump { // Evening / 17:00–21:59 // Night / 22:00–5:59 - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - double dia = SafeParse.stringToDouble(SP.getString("danarprofile_dia", "3")); + double dia = SP.getDouble(R.string.key_danarprofile_dia, Constants.defaultDIA); try { json.put("defaultProfile", PROFILE_PREFIX + (activeProfile + 1)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Dialogs/ProfileViewDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/Dialogs/ProfileViewDialog.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Dialogs/ProfileViewDialog.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/Dialogs/ProfileViewDialog.java index 3cb21f4221..8907a230d2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Dialogs/ProfileViewDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/Dialogs/ProfileViewDialog.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.Dialogs; +package info.nightscout.androidaps.plugins.PumpDanaR.Dialogs; import android.os.Bundle; import android.os.Handler; @@ -15,12 +15,10 @@ import org.slf4j.LoggerFactory; import java.util.Date; -import info.nightscout.androidaps.MainActivity; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.DanaRFragment; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DecimalFormatter; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRHistoryActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRHistoryActivity.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRHistoryActivity.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRHistoryActivity.java index 4056943e70..bc925c27bd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRHistoryActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRHistoryActivity.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.History; +package info.nightscout.androidaps.plugins.PumpDanaR.History; import android.app.Activity; import android.content.ComponentName; @@ -32,19 +32,18 @@ import org.slf4j.LoggerFactory; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Date; import java.util.List; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.DanaRHistoryRecord; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.Services.ExecutionService; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.Services.ExecutionService; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.ToastUtils; @@ -307,7 +306,7 @@ public class DanaRHistoryActivity extends Activity { case RecordTypes.RECORD_TYPE_DAILY: holder.dailybasal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBasal()) + "U"); holder.dailybolus.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()) + "U"); - holder.dailytotal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()+ record.getRecordDailyBasal()) + "U"); + holder.dailytotal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus() + record.getRecordDailyBasal()) + "U"); holder.time.setText(DateUtil.dateString(record.getRecordDate())); holder.time.setVisibility(View.VISIBLE); holder.value.setVisibility(View.GONE); @@ -435,21 +434,12 @@ public class DanaRHistoryActivity extends Activity { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventPumpStatusChanged s) { runOnUiThread( new Runnable() { @Override public void run() { - if (c.sStatus == EventDanaRConnectionStatus.CONNECTING) { - statusView.setText(String.format(getString(R.string.danar_history_connectingfor), c.sSecondsElapsed)); - log.debug("EventDanaRConnectionStatus: " + "Connecting for " + c.sSecondsElapsed + "s"); - } else if (c.sStatus == EventDanaRConnectionStatus.CONNECTED) { - statusView.setText(MainApp.sResources.getString(R.string.connected)); - log.debug("EventDanaRConnectionStatus: Connected"); - } else { - statusView.setText(MainApp.sResources.getString(R.string.disconnected)); - log.debug("EventDanaRConnectionStatus: Disconnected"); - } + statusView.setText(s.textStatus()); } } ); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRNSHistorySync.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRNSHistorySync.java similarity index 98% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRNSHistorySync.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRNSHistorySync.java index 327465eba2..4c1e2e1f05 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRNSHistorySync.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRNSHistorySync.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.History; +package info.nightscout.androidaps.plugins.PumpDanaR.History; import org.json.JSONException; import org.json.JSONObject; @@ -12,9 +12,9 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.DanaRHistoryRecord; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.ToastUtils; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRStatsActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRStatsActivity.java similarity index 83% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRStatsActivity.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRStatsActivity.java index 674213d66f..883330dd5b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/History/DanaRStatsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/History/DanaRStatsActivity.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.History; +package info.nightscout.androidaps.plugins.PumpDanaR.History; import android.app.Activity; import android.content.ComponentName; @@ -48,13 +48,13 @@ import java.util.List; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.DanaRHistoryRecord; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.interfaces.ProfileInterface; -import info.nightscout.androidaps.plugins.CircadianPercentageProfile.CircadianPercentageProfilePlugin; +import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfilePlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.Services.ExecutionService; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.PumpDanaR.Services.ExecutionService; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; @@ -68,11 +68,11 @@ public class DanaRStatsActivity extends Activity { private Handler mHandler; private static HandlerThread mHandlerThread; - TextView statusView, statsMessage,totalBaseBasal2; + TextView statusView, statsMessage, totalBaseBasal2; EditText totalBaseBasal; Button reloadButton; LinearLayoutManager llm; - TableLayout tl,ctl,etl; + TableLayout tl, ctl, etl; String TBB; double magicNumber; DecimalFormat decimalFormat; @@ -118,15 +118,15 @@ public class DanaRStatsActivity extends Activity { public boolean dispatchTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { View myView = getCurrentFocus(); - if ( myView instanceof EditText) { + if (myView instanceof EditText) { Rect rect = new Rect(); myView.getGlobalVisibleRect(rect); - if (!rect.contains((int)event.getRawX(), (int)event.getRawY())) { + if (!rect.contains((int) event.getRawX(), (int) event.getRawY())) { myView.clearFocus(); } } } - return super.dispatchTouchEvent( event ); + return super.dispatchTouchEvent(event); } ServiceConnection mConnection = new ServiceConnection() { @@ -172,11 +172,11 @@ public class DanaRStatsActivity extends Activity { totalBaseBasal.setText(TBB); ProfileInterface pi = ConfigBuilderPlugin.getActiveProfile(); - if (pi != null && pi instanceof CircadianPercentageProfilePlugin){ - double cppTBB = ((CircadianPercentageProfilePlugin)pi).baseBasalSum(); + if (pi != null && pi instanceof CircadianPercentageProfilePlugin) { + double cppTBB = ((CircadianPercentageProfilePlugin) pi).baseBasalSum(); totalBaseBasal.setText(decimalFormat.format(cppTBB)); SharedPreferences.Editor edit = preferences.edit(); - edit.putString("TBB",totalBaseBasal.getText().toString()); + edit.putString("TBB", totalBaseBasal.getText().toString()); edit.commit(); TBB = preferences.getString("TBB", ""); } @@ -312,7 +312,7 @@ public class DanaRStatsActivity extends Activity { totalBaseBasal.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if(actionId== EditorInfo.IME_ACTION_DONE){ + if (actionId == EditorInfo.IME_ACTION_DONE) { totalBaseBasal.clearFocus(); return true; } @@ -323,11 +323,11 @@ public class DanaRStatsActivity extends Activity { totalBaseBasal.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { - if(hasFocus){ + if (hasFocus) { totalBaseBasal.getText().clear(); } else { SharedPreferences.Editor edit = preferences.edit(); - edit.putString("TBB",totalBaseBasal.getText().toString()); + edit.putString("TBB", totalBaseBasal.getText().toString()); edit.commit(); TBB = preferences.getString("TBB", ""); loadDataFromDB(RecordTypes.RECORD_TYPE_DAILY); @@ -362,15 +362,14 @@ public class DanaRStatsActivity extends Activity { cleanTable(etl); DateFormat df = new SimpleDateFormat("dd.MM."); - if(TextUtils.isEmpty(TBB)) { + if (TextUtils.isEmpty(TBB)) { totalBaseBasal.setError("Please Enter Total Base Basal"); return; - } - else { + } else { magicNumber = SafeParse.stringToDouble(TBB); } - magicNumber *=2; + magicNumber *= 2; totalBaseBasal2.setText(decimalFormat.format(magicNumber)); int i = 0; @@ -379,45 +378,45 @@ public class DanaRStatsActivity extends Activity { double weighted05 = 0d; double weighted07 = 0d; - for (DanaRHistoryRecord record: historyList) { - double tdd= record.getRecordDailyBolus() + record.getRecordDailyBasal(); + for (DanaRHistoryRecord record : historyList) { + double tdd = record.getRecordDailyBolus() + record.getRecordDailyBasal(); // Create the table row TableRow tr = new TableRow(DanaRStatsActivity.this); - if(i%2!=0) tr.setBackgroundColor(Color.DKGRAY); - tr.setId(100+i); + if (i % 2 != 0) tr.setBackgroundColor(Color.DKGRAY); + tr.setId(100 + i); tr.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically TextView labelDATE = new TextView(DanaRStatsActivity.this); - labelDATE.setId(200+i); + labelDATE.setId(200 + i); labelDATE.setText(df.format(new Date(record.getRecordDate()))); labelDATE.setTextColor(Color.WHITE); tr.addView(labelDATE); TextView labelBASAL = new TextView(DanaRStatsActivity.this); - labelBASAL.setId(300+i); + labelBASAL.setId(300 + i); labelBASAL.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBasal()) + " U"); labelBASAL.setTextColor(Color.WHITE); tr.addView(labelBASAL); TextView labelBOLUS = new TextView(DanaRStatsActivity.this); - labelBOLUS.setId(400+i); + labelBOLUS.setId(400 + i); labelBOLUS.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()) + " U"); labelBOLUS.setTextColor(Color.WHITE); tr.addView(labelBOLUS); TextView labelTDD = new TextView(DanaRStatsActivity.this); - labelTDD.setId(500+i); + labelTDD.setId(500 + i); labelTDD.setText(DecimalFormatter.to2Decimal(tdd) + " U"); labelTDD.setTextColor(Color.WHITE); tr.addView(labelTDD); TextView labelRATIO = new TextView(DanaRStatsActivity.this); - labelRATIO.setId(600+i); - labelRATIO.setText(Math.round(100*tdd/magicNumber) +" %"); + labelRATIO.setId(600 + i); + labelRATIO.setText(Math.round(100 * tdd / magicNumber) + " %"); labelRATIO.setTextColor(Color.WHITE); tr.addView(labelRATIO); @@ -431,28 +430,28 @@ public class DanaRStatsActivity extends Activity { // Create the cumtable row TableRow ctr = new TableRow(DanaRStatsActivity.this); - if(i%2==0) ctr.setBackgroundColor(Color.DKGRAY); - ctr.setId(700+i); + if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY); + ctr.setId(700 + i); ctr.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically TextView labelDAYS = new TextView(DanaRStatsActivity.this); - labelDAYS.setId(800+i); + labelDAYS.setId(800 + i); labelDAYS.setText("" + i); labelDAYS.setTextColor(Color.WHITE); ctr.addView(labelDAYS); TextView labelCUMTDD = new TextView(DanaRStatsActivity.this); - labelCUMTDD.setId(900+i); - labelCUMTDD.setText(DecimalFormatter.to2Decimal(sum/i) + " U"); + labelCUMTDD.setId(900 + i); + labelCUMTDD.setText(DecimalFormatter.to2Decimal(sum / i) + " U"); labelCUMTDD.setTextColor(Color.WHITE); ctr.addView(labelCUMTDD); TextView labelCUMRATIO = new TextView(DanaRStatsActivity.this); - labelCUMRATIO.setId(1000+i); - labelCUMRATIO.setText(Math.round(100*sum/i/magicNumber) + " %"); + labelCUMRATIO.setId(1000 + i); + labelCUMRATIO.setText(Math.round(100 * sum / i / magicNumber) + " %"); labelCUMRATIO.setTextColor(Color.WHITE); ctr.addView(labelCUMRATIO); @@ -462,7 +461,7 @@ public class DanaRStatsActivity extends Activity { TableLayout.LayoutParams.WRAP_CONTENT)); } - if (historyList.size()<3 || !(df.format(new Date(historyList.get(0).getRecordDate())).equals(df.format(new Date(System.currentTimeMillis() - 1000*60*60*24))))){ + if (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).getRecordDate())).equals(df.format(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24))))) { statsMessage.setVisibility(View.VISIBLE); statsMessage.setText(getString(R.string.danar_stats_olddata_Message)); @@ -474,38 +473,38 @@ public class DanaRStatsActivity extends Activity { i = 0; - for (DanaRHistoryRecord record: historyList) { - double tdd= record.getRecordDailyBolus() + record.getRecordDailyBasal(); - if(i == 0 ) { + for (DanaRHistoryRecord record : historyList) { + double tdd = record.getRecordDailyBolus() + record.getRecordDailyBasal(); + if (i == 0) { weighted03 = tdd; weighted05 = tdd; weighted07 = tdd; } else { - weighted07 = (weighted07*0.3 + tdd*0.7); - weighted05 = (weighted05*0.5 + tdd*0.5); - weighted03 = (weighted03*0.7 + tdd*0.3); + weighted07 = (weighted07 * 0.3 + tdd * 0.7); + weighted05 = (weighted05 * 0.5 + tdd * 0.5); + weighted03 = (weighted03 * 0.7 + tdd * 0.3); } i++; } // Create the exptable row TableRow etr = new TableRow(DanaRStatsActivity.this); - if(i%2!=0) etr.setBackgroundColor(Color.DKGRAY); - etr.setId(1100+i); + if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY); + etr.setId(1100 + i); etr.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically TextView labelWEIGHT = new TextView(DanaRStatsActivity.this); - labelWEIGHT.setId(1200+i); + labelWEIGHT.setId(1200 + i); labelWEIGHT.setText("0.3\n" + "0.5\n" + "0.7"); labelWEIGHT.setTextColor(Color.WHITE); etr.addView(labelWEIGHT); TextView labelEXPTDD = new TextView(DanaRStatsActivity.this); - labelEXPTDD.setId(1300+i); + labelEXPTDD.setId(1300 + i); labelEXPTDD.setText(DecimalFormatter.to2Decimal(weighted03) + " U\n" + DecimalFormatter.to2Decimal(weighted05) + " U\n" + DecimalFormatter.to2Decimal(weighted07) + " U"); @@ -513,10 +512,10 @@ public class DanaRStatsActivity extends Activity { etr.addView(labelEXPTDD); TextView labelEXPRATIO = new TextView(DanaRStatsActivity.this); - labelEXPRATIO.setId(1400+i); - labelEXPRATIO.setText(Math.round(100*weighted03/magicNumber) +" %\n" - + Math.round(100*weighted05/magicNumber) +" %\n" - + Math.round(100*weighted07/magicNumber) +" %"); + labelEXPRATIO.setId(1400 + i); + labelEXPRATIO.setText(Math.round(100 * weighted03 / magicNumber) + " %\n" + + Math.round(100 * weighted05 / magicNumber) + " %\n" + + Math.round(100 * weighted07 / magicNumber) + " %"); labelEXPRATIO.setTextColor(Color.WHITE); etr.addView(labelEXPRATIO); @@ -549,21 +548,12 @@ public class DanaRStatsActivity extends Activity { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventPumpStatusChanged c) { runOnUiThread( new Runnable() { @Override public void run() { - if (c.sStatus == EventDanaRConnectionStatus.CONNECTING) { - statusView.setText(String.format(getString(R.string.danar_history_connectingfor), c.sSecondsElapsed)); - log.debug("EventDanaRConnectionStatus: " + "Connecting for " + c.sSecondsElapsed + "s"); - } else if (c.sStatus == EventDanaRConnectionStatus.CONNECTED) { - statusView.setText(MainApp.sResources.getString(R.string.connected)); - log.debug("EventDanaRConnectionStatus: Connected"); - } else { - statusView.setText(MainApp.sResources.getString(R.string.disconnected)); - log.debug("EventDanaRConnectionStatus: Disconnected"); - } + statusView.setText(c.textStatus()); } } ); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/SerialIOThread.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/SerialIOThread.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/SerialIOThread.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/SerialIOThread.java index 9521c00fcc..feb5a59b69 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/SerialIOThread.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/SerialIOThread.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR; +package info.nightscout.androidaps.plugins.PumpDanaR; import android.bluetooth.BluetoothSocket; @@ -14,8 +14,8 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageHashTable; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageHashTable; import info.nightscout.utils.CRC; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/Services/ExecutionService.java similarity index 74% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/Services/ExecutionService.java index e7ecb4c742..54aae17687 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/Services/ExecutionService.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.Services; +package info.nightscout.androidaps.plugins.PumpDanaR.Services; import android.app.Service; import android.bluetooth.BluetoothAdapter; @@ -8,11 +8,9 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; import android.os.Binder; import android.os.IBinder; import android.os.PowerManager; -import android.preference.PreferenceManager; import com.squareup.otto.Subscribe; @@ -33,63 +31,61 @@ import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; -import info.nightscout.androidaps.plugins.DanaR.SerialIOThread; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusProgress; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgCheckValue; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryAlarm; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryBasalHour; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryBolus; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryCarbo; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryDailyInsulin; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryDone; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryError; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryGlucose; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryRefill; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistorySuspend; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgPCCommStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgPCCommStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetActivateBasalProfile; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetBasalProfile; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetCarbsEntry; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetExtendedBolusStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetExtendedBolusStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTempBasalStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTempBasalStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTime; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingActiveProfile; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingBasal; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingMeal; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingGlucose; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingMaxValues; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingProfileRatios; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingProfileRatiosAll; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingPumpTime; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSettingShippingInfo; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgStatus; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgStatusBasic; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgStatusBolusExtended; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgStatusTempBasal; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRBolusStart; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRNewStatus; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.SerialIOThread; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusProgress; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgCheckValue; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryAlarm; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryBasalHour; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryBolus; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryCarbo; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryDailyInsulin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryDone; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryError; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryGlucose; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryRefill; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistorySuspend; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgPCCommStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgPCCommStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetActivateBasalProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetBasalProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetCarbsEntry; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetExtendedBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetExtendedBolusStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTempBasalStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTempBasalStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTime; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingActiveProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingBasal; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingMeal; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingGlucose; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingMaxValues; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingProfileRatios; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingProfileRatiosAll; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingPumpTime; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingShippingInfo; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgStatus; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgStatusBasic; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgStatusBolusExtended; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgStatusTempBasal; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRNewStatus; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; import info.nightscout.utils.ToastUtils; public class ExecutionService extends Service { private static Logger log = LoggerFactory.getLogger(ExecutionService.class); - private SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); private String devName; private SerialIOThread mSerialIOThread; @@ -114,11 +110,11 @@ public class ExecutionService extends Service { String action = intent.getAction(); if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { log.debug("Device has disconnected " + device.getName());//Device has disconnected - if (mBTDevice != null && mBTDevice.getName().equals(device.getName())) { + if (mBTDevice != null && mBTDevice.getName() != null && mBTDevice.getName().equals(device.getName())) { if (mSerialIOThread != null) { mSerialIOThread.disconnect("BT disconnection broadcast"); } - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.DISCONNECTED, 0)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED)); } } } @@ -188,7 +184,7 @@ public class ExecutionService extends Service { } public void connect(String from) { - if (danaRPump.password != -1 && danaRPump.password != SafeParse.stringToInt(SP.getString("danar_password", "-1"))) { + if (danaRPump.password != -1 && danaRPump.password != SP.getInt(R.string.key_danar_password, -1)) { ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.wrongpumppassword), R.raw.error); return; } @@ -208,7 +204,7 @@ public class ExecutionService extends Service { long startTime = new Date().getTime(); while (!isConnected() && startTime + maxConnectionTime >= new Date().getTime()) { long secondsElapsed = (new Date().getTime() - startTime) / 1000L; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.CONNECTING, (int) secondsElapsed)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed)); if (Config.logDanaBTComm) log.debug("connect waiting " + secondsElapsed + "sec from: " + from); try { @@ -227,18 +223,19 @@ public class ExecutionService extends Service { mSerialIOThread.disconnect("Recreate SerialIOThread"); } mSerialIOThread = new SerialIOThread(mRfcommSocket); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.CONNECTED, 0)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTED, 0)); if (!getPumpStatus()) { mSerialIOThread.disconnect("getPumpStatus failed"); waitMsec(3000); if (!MainApp.getSpecificPlugin(DanaRPlugin.class).isEnabled(PluginBase.PUMP)) return; getBTSocketForSelectedPump(); + startTime = new Date().getTime(); } } } if (!isConnected()) { - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.DISCONNECTED, 0)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED)); log.error("Pump connection timed out"); } connectionInProgress = false; @@ -247,7 +244,7 @@ public class ExecutionService extends Service { } private void getBTSocketForSelectedPump() { - devName = SP.getString("danar_bt_name", ""); + devName = SP.getString(MainApp.sResources.getString(R.string.key_danar_bt_name), ""); BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter != null) { @@ -280,7 +277,7 @@ public class ExecutionService extends Service { private boolean getPumpStatus() { try { - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.gettingpumpstatus))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.gettingpumpstatus))); MsgStatus statusMsg = new MsgStatus(); MsgStatusBasic statusBasicMsg = new MsgStatusBasic(); MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal(); @@ -341,7 +338,7 @@ public class ExecutionService extends Service { danaRPump.lastConnection = now; MainApp.bus().post(new EventDanaRNewStatus()); MainApp.bus().post(new EventInitializationChanged()); - MainApp.getConfigBuilder().uploadDeviceStatus(60); + MainApp.getConfigBuilder().uploadDeviceStatus(); if (danaRPump.dailyTotalUnits > danaRPump.maxDailyTotalUnits * Constants.dailyLimitWarning ) { log.debug("Approaching daily limit: " + danaRPump.dailyTotalUnits + "/" + danaRPump.maxDailyTotalUnits); Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.sResources.getString(R.string.approachingdailylimit), Notification.URGENT); @@ -357,46 +354,46 @@ public class ExecutionService extends Service { public boolean tempBasal(int percent, int durationInHours) { connect("tempBasal"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.settingtempbasal))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.settingtempbasal))); mSerialIOThread.sendMessage(new MsgSetTempBasalStart(percent, durationInHours)); mSerialIOThread.sendMessage(new MsgStatusTempBasal()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean tempBasalStop() { connect("tempBasalStop"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.stoppingtempbasal))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.stoppingtempbasal))); mSerialIOThread.sendMessage(new MsgSetTempBasalStop()); mSerialIOThread.sendMessage(new MsgStatusTempBasal()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean extendedBolus(double insulin, int durationInHalfHours) { connect("extendedBolus"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.settingextendedbolus))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.settingextendedbolus))); mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(insulin, (byte) (durationInHalfHours & 0xFF))); mSerialIOThread.sendMessage(new MsgStatusBolusExtended()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean extendedBolusStop() { connect("extendedBolusStop"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.stoppingextendedbolus))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.stoppingextendedbolus))); mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop()); mSerialIOThread.sendMessage(new MsgStatusBolusExtended()); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean bolus(Double amount, int carbs, Treatment t) { bolusingTreatment = t; MsgBolusStart start = new MsgBolusStart(amount); - MsgBolusProgress progress = new MsgBolusProgress(amount, t); // initialize static variables MsgBolusStop stop = new MsgBolusStop(amount, t); connect("bolus"); @@ -406,6 +403,7 @@ public class ExecutionService extends Service { Calendar time = Calendar.getInstance(); mSerialIOThread.sendMessage(new MsgSetCarbsEntry(time, carbs)); } + MsgBolusProgress progress = new MsgBolusProgress(amount, t); // initialize static variables MainApp.bus().post(new EventDanaRBolusStart()); if (!stop.stopped) { @@ -416,7 +414,7 @@ public class ExecutionService extends Service { } while (!stop.stopped && !start.failed) { waitMsec(100); - if (progress.lastReceive != 0 && (new Date().getTime() - progress.lastReceive) > 5 * 1000L) { // if i didn't receive status for more than 5 sec expecting broken comm + if ((new Date().getTime() - progress.lastReceive) > 5 * 1000L) { // if i didn't receive status for more than 5 sec expecting broken comm stop.stopped = true; stop.forced = true; log.debug("Communication stopped"); @@ -501,7 +499,7 @@ public class ExecutionService extends Service { public boolean updateBasalsInPump(final NSProfile profile) { connect("updateBasalsInPump"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.updatingbasalrates))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.updatingbasalrates))); double[] basal = buildDanaRProfileRecord(profile); MsgSetBasalProfile msgSet = new MsgSetBasalProfile((byte) 0, basal); mSerialIOThread.sendMessage(msgSet); @@ -509,7 +507,7 @@ public class ExecutionService extends Service { mSerialIOThread.sendMessage(msgActivate); danaRPump.lastSettingsRead = new Date(0); // force read full settings getPumpStatus(); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageBase.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java similarity index 99% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageBase.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java index 1d97a02ba1..4045f28f6e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageBase.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageBase.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import android.annotation.TargetApi; import android.os.Build; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageHashTable.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageHashTable.java similarity index 98% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageHashTable.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageHashTable.java index 221f7855e9..debdd8a35f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageHashTable.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageHashTable.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageOriginalNames.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageOriginalNames.java similarity index 99% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageOriginalNames.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageOriginalNames.java index 5aba354812..1ab166801d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MessageOriginalNames.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MessageOriginalNames.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusProgress.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusProgress.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusProgress.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusProgress.java index aa8a77f7bf..2130561aeb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusProgress.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusProgress.java @@ -1,6 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; - -import com.squareup.otto.Bus; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,7 +28,7 @@ public class MsgBolusProgress extends MessageBase { this(); this.amount = amount; this.t = t; - lastReceive = 0; + lastReceive = new Date().getTime(); } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusStart.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusStart.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusStart.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusStart.java index bf6af2841b..a5591746b0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusStart.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusStart.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; +import info.nightscout.utils.HardLimits; public class MsgBolusStart extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgBolusStart.class); @@ -20,7 +20,7 @@ public class MsgBolusStart extends MessageBase { // HARDCODED LIMIT amount = MainApp.getConfigBuilder().applyBolusConstraints(amount); if (amount < 0) amount = 0d; - if (amount > BuildConfig.MAXBOLUS) amount = BuildConfig.MAXBOLUS; + if (amount > HardLimits.maxBolus()) amount = HardLimits.maxBolus(); AddParamInt((int) (amount * 100)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusStop.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusStop.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusStop.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusStop.java index 68de53d50b..0d2c51bf7c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgBolusStop.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgBolusStop.java @@ -1,6 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; - -import com.squareup.otto.Bus; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgCheckValue.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgCheckValue.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgCheckValue.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgCheckValue.java index 5e97e2c55e..f63d49849b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgCheckValue.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgCheckValue.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,8 +6,8 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; import info.nightscout.utils.ToastUtils; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgError.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgError.java similarity index 96% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgError.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgError.java index c416a8baad..ec52d533dc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgError.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgError.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAlarm.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAlarm.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAlarm.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAlarm.java index 1964a58fc9..24ea6d0f37 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAlarm.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAlarm.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAll.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAll.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java index c00f7f6c8e..4ba8bfe143 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAll.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAll.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import com.j256.ormlite.dao.Dao; @@ -10,7 +10,7 @@ import java.util.Date; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.db.DanaRHistoryRecord; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; import info.nightscout.utils.DateUtil; public class MsgHistoryAll extends MessageBase { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAllDone.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAllDone.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAllDone.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAllDone.java index 1a839f5553..6ce3325715 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryAllDone.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryAllDone.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryBasalHour.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryBasalHour.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryBasalHour.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryBasalHour.java index dee4de6a39..3fd97135f0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryBasalHour.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryBasalHour.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryBolus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryBolus.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryBolus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryBolus.java index 97963955dd..b213ba52fd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryBolus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryBolus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryCarbo.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryCarbo.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryCarbo.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryCarbo.java index 26fe30c89f..115dc73e02 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryCarbo.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryCarbo.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryDailyInsulin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryDailyInsulin.java similarity index 86% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryDailyInsulin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryDailyInsulin.java index 2d0e6969ea..77933c40da 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryDailyInsulin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryDailyInsulin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryDone.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryDone.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryDone.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryDone.java index b2fdcbeb61..04d3cb3faf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryDone.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryDone.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryError.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryError.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryError.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryError.java index 85443a271e..3358a88fea 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryError.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryError.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryGlucose.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryGlucose.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryGlucose.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryGlucose.java index 903a402810..f07b91e9d8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryGlucose.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryGlucose.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryNew.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryNew.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryNew.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryNew.java index 0bfe82fd30..5de685f65b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryNew.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryNew.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryNewDone.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryNewDone.java similarity index 91% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryNewDone.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryNewDone.java index fb5de7515e..2cde92bf9a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryNewDone.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryNewDone.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryRefill.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryRefill.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryRefill.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryRefill.java index 6db3e972ff..daaed79023 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistoryRefill.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistoryRefill.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistorySuspend.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistorySuspend.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistorySuspend.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistorySuspend.java index a7a6c5ee04..db807a31b5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgHistorySuspend.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgHistorySuspend.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBasic.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusBasic.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBasic.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusBasic.java index 6303391d4a..2a22fd86d9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBasic.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusBasic.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; public class MsgInitConnStatusBasic extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgInitConnStatusBasic.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusBolus.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusBolus.java index 36705c49ec..1b7a8dbe5c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusBolus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,8 +6,8 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusOption.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusOption.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusOption.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusOption.java index 2b424a949b..2009bddd40 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusOption.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusOption.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; /** * Created by mike on 28.05.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusTime.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java index d1d5652f4d..00b8379179 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusTime.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgInitConnStatusTime.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,9 +10,8 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; import info.nightscout.utils.ToastUtils; public class MsgInitConnStatusTime extends MessageBase { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgPCCommStart.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgPCCommStart.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgPCCommStart.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgPCCommStart.java index 4e4cab19e5..619bbd9461 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgPCCommStart.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgPCCommStart.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgPCCommStop.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgPCCommStop.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgPCCommStop.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgPCCommStop.java index f5e3ce9b1f..20dd4e060f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgPCCommStop.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgPCCommStop.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetActivateBasalProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetActivateBasalProfile.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetActivateBasalProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetActivateBasalProfile.java index 9357a05aef..64ed0488a4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetActivateBasalProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetActivateBasalProfile.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetBasalProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetBasalProfile.java similarity index 96% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetBasalProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetBasalProfile.java index 9acd5ec824..dea2734a3e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetBasalProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetBasalProfile.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetCarbsEntry.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetCarbsEntry.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetCarbsEntry.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetCarbsEntry.java index 667070c684..6a16fd1a57 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetCarbsEntry.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetCarbsEntry.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -27,7 +27,7 @@ public class MsgSetCarbsEntry extends MessageBase { AddParamByte((byte) 0x43); //?? AddParamInt(amount); if (Config.logDanaMessageDetail) - log.debug("Set carb entry: " + amount + " date " + time.toString()); + log.debug("Set carb entry: " + amount + " date " + time.getTime().toString()); } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetExtendedBolusStart.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetExtendedBolusStart.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetExtendedBolusStart.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetExtendedBolusStart.java index 894227e07d..9ef6b0136e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetExtendedBolusStart.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetExtendedBolusStart.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; +import info.nightscout.utils.HardLimits; public class MsgSetExtendedBolusStart extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgSetExtendedBolusStart.class); @@ -22,7 +22,7 @@ public class MsgSetExtendedBolusStart extends MessageBase { if (halfhours > 16) halfhours = 16; amount = MainApp.getConfigBuilder().applyBolusConstraints(amount); if (amount < 0d) amount = 0d; - if (amount > BuildConfig.MAXBOLUS) amount = BuildConfig.MAXBOLUS; + if (amount > HardLimits.maxBolus()) amount = HardLimits.maxBolus(); AddParamInt((int) (amount * 100)); AddParamByte(halfhours); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetExtendedBolusStop.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetExtendedBolusStop.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetExtendedBolusStop.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetExtendedBolusStop.java index 49933fc004..7084949daa 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetExtendedBolusStop.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetExtendedBolusStop.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetSingleBasalProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetSingleBasalProfile.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetSingleBasalProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetSingleBasalProfile.java index 4e57712b04..b56de8fd7a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetSingleBasalProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetSingleBasalProfile.java @@ -1,6 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; - -import com.j256.ormlite.stmt.query.Not; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTempBasalStart.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTempBasalStart.java similarity index 95% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTempBasalStart.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTempBasalStart.java index 29ab838b37..2b72c35749 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTempBasalStart.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTempBasalStart.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTempBasalStop.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTempBasalStop.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTempBasalStop.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTempBasalStop.java index 02d095c679..39582ac399 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTempBasalStop.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTempBasalStop.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTime.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTime.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTime.java index 827958608c..aa15a02709 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSetTime.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSetTime.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingActiveProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingActiveProfile.java similarity index 83% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingActiveProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingActiveProfile.java index 723b4efbbf..b737073a43 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingActiveProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingActiveProfile.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingBasal.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingBasal.java similarity index 85% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingBasal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingBasal.java index 319fe787f3..82d003b434 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingBasal.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingBasalProfileAll.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingBasalProfileAll.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingBasalProfileAll.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingBasalProfileAll.java index 4dc9137a4f..6fab757486 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingBasalProfileAll.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingBasalProfileAll.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingGlucose.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingGlucose.java similarity index 81% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingGlucose.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingGlucose.java index 1327445b19..6c7b302abf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingGlucose.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingGlucose.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingMaxValues.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingMaxValues.java similarity index 88% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingMaxValues.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingMaxValues.java index b5ced45f67..0f2de2fe0b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingMaxValues.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingMaxValues.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingMeal.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingMeal.java similarity index 86% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingMeal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingMeal.java index a588479869..1c8e3c2fcb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingMeal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingMeal.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 13.12.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingProfileRatios.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingProfileRatios.java similarity index 91% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingProfileRatios.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingProfileRatios.java index 56e7d6c6cb..512c96990e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingProfileRatios.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingProfileRatios.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingProfileRatiosAll.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingProfileRatiosAll.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingProfileRatiosAll.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingProfileRatiosAll.java index 09b386ab11..aaadb2bd59 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingProfileRatiosAll.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingProfileRatiosAll.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingPumpTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingPumpTime.java similarity index 87% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingPumpTime.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingPumpTime.java index e0d81a9614..5344ae86b6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingPumpTime.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingPumpTime.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,7 +6,7 @@ import org.slf4j.LoggerFactory; import java.util.Date; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; public class MsgSettingPumpTime extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgSettingPumpTime.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingShippingInfo.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingShippingInfo.java similarity index 81% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingShippingInfo.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingShippingInfo.java index faa68c5eb7..797a82f80a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingShippingInfo.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingShippingInfo.java @@ -1,13 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Date; - import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingUserOptions.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java similarity index 86% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingUserOptions.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java index d1e0e9471b..8fb1e4f712 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgSettingUserOptions.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgSettingUserOptions.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatus.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatus.java index e7f5472feb..9e64f86363 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatus.java @@ -1,10 +1,10 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; public class MsgStatus extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgStatus.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusBasic.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusBasic.java similarity index 91% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusBasic.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusBasic.java index d79dd6aea8..c50fac371a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusBasic.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusBasic.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; public class MsgStatusBasic extends MessageBase { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusBolusExtended.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusBolusExtended.java similarity index 96% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusBolusExtended.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusBolusExtended.java index 3ffef7862f..de0749c292 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusBolusExtended.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusBolusExtended.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import android.support.annotation.NonNull; @@ -12,8 +12,8 @@ import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; public class MsgStatusBolusExtended extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgStatusBolusExtended.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusProfile.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusProfile.java index 5006a7b1ea..7a703d468a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusProfile.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusTempBasal.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusTempBasal.java similarity index 95% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusTempBasal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusTempBasal.java index cdcac0c365..1a2e21c004 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgStatusTempBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/MsgStatusTempBasal.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; import android.support.annotation.NonNull; @@ -12,8 +12,8 @@ import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump; public class MsgStatusTempBasal extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgStatusTempBasal.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/RecordTypes.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/RecordTypes.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/RecordTypes.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/RecordTypes.java index 9d6b2e4d64..f0de05810a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/RecordTypes.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/comm/RecordTypes.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.comm; +package info.nightscout.androidaps.plugins.PumpDanaR.comm; /** * Created by mike on 28.05.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRBolusStart.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRBolusStart.java similarity index 57% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRBolusStart.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRBolusStart.java index 0be3cfb770..8217b51432 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRBolusStart.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRBolusStart.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.events; +package info.nightscout.androidaps.plugins.PumpDanaR.events; /** * Created by mike on 03.08.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRNewStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRNewStatus.java similarity index 56% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRNewStatus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRNewStatus.java index af57fabf8d..a04f27f2d6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRNewStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRNewStatus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.events; +package info.nightscout.androidaps.plugins.PumpDanaR.events; /** * Created by mike on 08.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRSyncStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRSyncStatus.java similarity index 79% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRSyncStatus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRSyncStatus.java index 628fdb5aab..b64cf22748 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/events/EventDanaRSyncStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/events/EventDanaRSyncStatus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaR.events; +package info.nightscout.androidaps.plugins.PumpDanaR.events; /** * Created by mike on 20.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanFragment.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanFragment.java index 4142b43ff6..bafe3f63ff 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean; +package info.nightscout.androidaps.plugins.PumpDanaRKorean; import android.annotation.SuppressLint; @@ -24,19 +24,17 @@ import java.util.Date; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.interfaces.FragmentBase; -import info.nightscout.androidaps.plugins.DanaR.Dialogs.ProfileViewDialog; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRNewStatus; -import info.nightscout.androidaps.plugins.DanaRKorean.History.DanaRHistoryActivity; -import info.nightscout.androidaps.plugins.DanaRKorean.History.DanaRStatsActivity; +import info.nightscout.androidaps.plugins.PumpDanaR.Dialogs.ProfileViewDialog; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRNewStatus; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.History.DanaRHistoryActivity; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.History.DanaRStatsActivity; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SetWarnColor; -public class DanaRKoreanFragment extends Fragment implements FragmentBase { +public class DanaRKoreanFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(DanaRKoreanFragment.class); private static DanaRKoreanPlugin danaRKoreanPlugin = new DanaRKoreanPlugin(); @@ -163,18 +161,18 @@ public class DanaRKoreanFragment extends Fragment implements FragmentBase { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventPumpStatusChanged c) { Activity activity = getActivity(); if (activity != null) { activity.runOnUiThread( new Runnable() { @Override public void run() { - if (c.sStatus == EventDanaRConnectionStatus.CONNECTING) + if (c.sStatus == EventPumpStatusChanged.CONNECTING) btConnectionView.setText("{fa-bluetooth-b spin} " + c.sSecondsElapsed + "s"); - else if (c.sStatus == EventDanaRConnectionStatus.CONNECTED) + else if (c.sStatus == EventPumpStatusChanged.CONNECTED) btConnectionView.setText("{fa-bluetooth}"); - else + else if (c.sStatus == EventPumpStatusChanged.DISCONNECTED) btConnectionView.setText("{fa-bluetooth-b}"); } } @@ -192,11 +190,6 @@ public class DanaRKoreanFragment extends Fragment implements FragmentBase { updateGUI(); } - @Subscribe - public void onStatusEvent(final EventPreferenceChange s) { - updateGUI(); - } - // GUI functions private void updateGUI() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java index 1384be16e2..726e1b95ab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean; +package info.nightscout.androidaps.plugins.PumpDanaRKorean; import android.content.ComponentName; import android.content.Context; @@ -30,17 +30,18 @@ import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.interfaces.ConstraintsInterface; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.Services.ExecutionService; -import info.nightscout.androidaps.plugins.NSProfile.NSProfilePlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.Services.ExecutionService; +import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.Round; @@ -56,8 +57,8 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, Constraints return DanaRKoreanFragment.class.getName(); } - static boolean fragmentPumpEnabled = true; - static boolean fragmentProfileEnabled = true; + static boolean fragmentPumpEnabled = false; + static boolean fragmentProfileEnabled = false; static boolean fragmentPumpVisible = true; public static ExecutionService sExecutionService; @@ -72,6 +73,8 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, Constraints return sDanaRKoreanPump; } + String textStatus = ""; + public DanaRKoreanPlugin() { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); useExtendedBoluses = sharedPreferences.getBoolean("danar_useextended", false); @@ -185,6 +188,16 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, Constraints return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return type == PUMP; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PluginBase.PROFILE) @@ -213,7 +226,7 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, Constraints @Override public boolean isSuspended() { - return false; + return getDanaRPump().pumpSuspended; } @Override @@ -285,12 +298,12 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, Constraints } @Override - public Date lastStatusTime() { + public Date lastDataTime() { return getDanaRPump().lastConnection; } @Override - public void updateStatus(String reason) { + public void refreshDataFromPump(String reason) { if (!isConnected() && !isConnecting()) { doConnect(reason); } @@ -356,11 +369,11 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, Constraints } @Override - public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) { + public PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context) { ConfigBuilderPlugin configBuilderPlugin = MainApp.getConfigBuilder(); insulin = configBuilderPlugin.applyBolusConstraints(insulin); if (insulin > 0 || carbs > 0) { - Treatment t = new Treatment(); + Treatment t = new Treatment(insulinType); boolean connectionOK = false; if (insulin > 0 || carbs > 0) connectionOK = sExecutionService.bolus(insulin, carbs, t); PumpEnactResult result = new PumpEnactResult(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanPump.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPump.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanPump.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPump.java index b29d9a4347..7ea3a0cffc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/DanaRKoreanPump.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPump.java @@ -1,7 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean; - -import android.content.SharedPreferences; -import android.preference.PreferenceManager; +package info.nightscout.androidaps.plugins.PumpDanaRKorean; import org.json.JSONArray; import org.json.JSONException; @@ -11,9 +8,9 @@ import java.text.DecimalFormat; import java.util.Date; import info.nightscout.androidaps.Constants; -import info.nightscout.androidaps.MainApp; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; /** * Created by mike on 04.07.2016. @@ -46,6 +43,8 @@ public class DanaRKoreanPump { public int protocol; public int productCode; + public boolean pumpSuspended; + public boolean isConfigUD; public boolean isExtendedBolusEnabled; public boolean isEasyModeEnabled; @@ -115,8 +114,7 @@ public class DanaRKoreanPump { // Evening / 17:00–21:59 // Night / 22:00–5:59 - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - double dia = SafeParse.stringToDouble(SP.getString("danarprofile_dia", "3")); + double dia = SP.getDouble(R.string.key_danarprofile_dia, Constants.defaultDIA); try { json.put("defaultProfile", PROFILE_PREFIX + (activeProfile + 1)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/History/DanaRHistoryActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/History/DanaRHistoryActivity.java similarity index 92% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/History/DanaRHistoryActivity.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/History/DanaRHistoryActivity.java index d23cff488b..adbbf09e75 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/History/DanaRHistoryActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/History/DanaRHistoryActivity.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.History; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.History; import android.app.Activity; import android.content.ComponentName; @@ -32,20 +32,19 @@ import org.slf4j.LoggerFactory; import java.sql.SQLException; import java.util.ArrayList; -import java.util.Date; import java.util.List; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.DanaRHistoryRecord; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.History.DanaRNSHistorySync; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus; -import info.nightscout.androidaps.plugins.DanaRKorean.Services.ExecutionService; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.History.DanaRNSHistorySync; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.Services.ExecutionService; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.ToastUtils; @@ -306,7 +305,7 @@ public class DanaRHistoryActivity extends Activity { case RecordTypes.RECORD_TYPE_DAILY: holder.dailybasal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBasal()) + "U"); holder.dailybolus.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()) + "U"); - holder.dailytotal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()+ record.getRecordDailyBasal()) + "U"); + holder.dailytotal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus() + record.getRecordDailyBasal()) + "U"); holder.time.setText(DateUtil.dateString(record.getRecordDate())); holder.time.setVisibility(View.VISIBLE); holder.value.setVisibility(View.GONE); @@ -434,21 +433,12 @@ public class DanaRHistoryActivity extends Activity { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventPumpStatusChanged c) { runOnUiThread( new Runnable() { @Override public void run() { - if (c.sStatus == EventDanaRConnectionStatus.CONNECTING) { - statusView.setText(String.format(getString(R.string.danar_history_connectingfor), c.sSecondsElapsed)); - log.debug("EventDanaRConnectionStatus: " + "Connecting for " + c.sSecondsElapsed + "s"); - } else if (c.sStatus == EventDanaRConnectionStatus.CONNECTED) { - statusView.setText(MainApp.sResources.getString(R.string.connected)); - log.debug("EventDanaRConnectionStatus: Connected"); - } else { - statusView.setText(MainApp.sResources.getString(R.string.disconnected)); - log.debug("EventDanaRConnectionStatus: Disconnected"); - } + statusView.setText(c.textStatus()); } } ); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/History/DanaRStatsActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/History/DanaRStatsActivity.java similarity index 83% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/History/DanaRStatsActivity.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/History/DanaRStatsActivity.java index d8b5390fbd..dc0e513913 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/History/DanaRStatsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/History/DanaRStatsActivity.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.History; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.History; import android.app.Activity; import android.content.ComponentName; @@ -48,13 +48,13 @@ import java.util.List; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.DanaRHistoryRecord; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.interfaces.ProfileInterface; -import info.nightscout.androidaps.plugins.CircadianPercentageProfile.CircadianPercentageProfilePlugin; +import info.nightscout.androidaps.plugins.ProfileCircadianPercentage.CircadianPercentageProfilePlugin; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus; -import info.nightscout.androidaps.plugins.DanaRKorean.Services.ExecutionService; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRSyncStatus; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.Services.ExecutionService; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; @@ -68,11 +68,11 @@ public class DanaRStatsActivity extends Activity { private Handler mHandler; private static HandlerThread mHandlerThread; - TextView statusView, statsMessage,totalBaseBasal2; + TextView statusView, statsMessage, totalBaseBasal2; EditText totalBaseBasal; Button reloadButton; LinearLayoutManager llm; - TableLayout tl,ctl,etl; + TableLayout tl, ctl, etl; String TBB; double magicNumber; DecimalFormat decimalFormat; @@ -118,15 +118,15 @@ public class DanaRStatsActivity extends Activity { public boolean dispatchTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { View myView = getCurrentFocus(); - if ( myView instanceof EditText) { + if (myView instanceof EditText) { Rect rect = new Rect(); myView.getGlobalVisibleRect(rect); - if (!rect.contains((int)event.getRawX(), (int)event.getRawY())) { + if (!rect.contains((int) event.getRawX(), (int) event.getRawY())) { myView.clearFocus(); } } } - return super.dispatchTouchEvent( event ); + return super.dispatchTouchEvent(event); } ServiceConnection mConnection = new ServiceConnection() { @@ -172,11 +172,11 @@ public class DanaRStatsActivity extends Activity { totalBaseBasal.setText(TBB); ProfileInterface pi = ConfigBuilderPlugin.getActiveProfile(); - if (pi != null && pi instanceof CircadianPercentageProfilePlugin){ - double cppTBB = ((CircadianPercentageProfilePlugin)pi).baseBasalSum(); + if (pi != null && pi instanceof CircadianPercentageProfilePlugin) { + double cppTBB = ((CircadianPercentageProfilePlugin) pi).baseBasalSum(); totalBaseBasal.setText(decimalFormat.format(cppTBB)); SharedPreferences.Editor edit = preferences.edit(); - edit.putString("TBB",totalBaseBasal.getText().toString()); + edit.putString("TBB", totalBaseBasal.getText().toString()); edit.commit(); TBB = preferences.getString("TBB", ""); } @@ -312,7 +312,7 @@ public class DanaRStatsActivity extends Activity { totalBaseBasal.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { - if(actionId== EditorInfo.IME_ACTION_DONE){ + if (actionId == EditorInfo.IME_ACTION_DONE) { totalBaseBasal.clearFocus(); return true; } @@ -323,11 +323,11 @@ public class DanaRStatsActivity extends Activity { totalBaseBasal.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { - if(hasFocus){ + if (hasFocus) { totalBaseBasal.getText().clear(); } else { SharedPreferences.Editor edit = preferences.edit(); - edit.putString("TBB",totalBaseBasal.getText().toString()); + edit.putString("TBB", totalBaseBasal.getText().toString()); edit.commit(); TBB = preferences.getString("TBB", ""); loadDataFromDB(RecordTypes.RECORD_TYPE_DAILY); @@ -362,15 +362,14 @@ public class DanaRStatsActivity extends Activity { cleanTable(etl); DateFormat df = new SimpleDateFormat("dd.MM."); - if(TextUtils.isEmpty(TBB)) { + if (TextUtils.isEmpty(TBB)) { totalBaseBasal.setError("Please Enter Total Base Basal"); return; - } - else { + } else { magicNumber = SafeParse.stringToDouble(TBB); } - magicNumber *=2; + magicNumber *= 2; totalBaseBasal2.setText(decimalFormat.format(magicNumber)); int i = 0; @@ -379,45 +378,45 @@ public class DanaRStatsActivity extends Activity { double weighted05 = 0d; double weighted07 = 0d; - for (DanaRHistoryRecord record: historyList) { - double tdd= record.getRecordDailyBolus() + record.getRecordDailyBasal(); + for (DanaRHistoryRecord record : historyList) { + double tdd = record.getRecordDailyBolus() + record.getRecordDailyBasal(); // Create the table row TableRow tr = new TableRow(DanaRStatsActivity.this); - if(i%2!=0) tr.setBackgroundColor(Color.DKGRAY); - tr.setId(100+i); + if (i % 2 != 0) tr.setBackgroundColor(Color.DKGRAY); + tr.setId(100 + i); tr.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically TextView labelDATE = new TextView(DanaRStatsActivity.this); - labelDATE.setId(200+i); + labelDATE.setId(200 + i); labelDATE.setText(df.format(new Date(record.getRecordDate()))); labelDATE.setTextColor(Color.WHITE); tr.addView(labelDATE); TextView labelBASAL = new TextView(DanaRStatsActivity.this); - labelBASAL.setId(300+i); + labelBASAL.setId(300 + i); labelBASAL.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBasal()) + " U"); labelBASAL.setTextColor(Color.WHITE); tr.addView(labelBASAL); TextView labelBOLUS = new TextView(DanaRStatsActivity.this); - labelBOLUS.setId(400+i); + labelBOLUS.setId(400 + i); labelBOLUS.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()) + " U"); labelBOLUS.setTextColor(Color.WHITE); tr.addView(labelBOLUS); TextView labelTDD = new TextView(DanaRStatsActivity.this); - labelTDD.setId(500+i); + labelTDD.setId(500 + i); labelTDD.setText(DecimalFormatter.to2Decimal(tdd) + " U"); labelTDD.setTextColor(Color.WHITE); tr.addView(labelTDD); TextView labelRATIO = new TextView(DanaRStatsActivity.this); - labelRATIO.setId(600+i); - labelRATIO.setText(Math.round(100*tdd/magicNumber) +" %"); + labelRATIO.setId(600 + i); + labelRATIO.setText(Math.round(100 * tdd / magicNumber) + " %"); labelRATIO.setTextColor(Color.WHITE); tr.addView(labelRATIO); @@ -431,28 +430,28 @@ public class DanaRStatsActivity extends Activity { // Create the cumtable row TableRow ctr = new TableRow(DanaRStatsActivity.this); - if(i%2==0) ctr.setBackgroundColor(Color.DKGRAY); - ctr.setId(700+i); + if (i % 2 == 0) ctr.setBackgroundColor(Color.DKGRAY); + ctr.setId(700 + i); ctr.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically TextView labelDAYS = new TextView(DanaRStatsActivity.this); - labelDAYS.setId(800+i); + labelDAYS.setId(800 + i); labelDAYS.setText("" + i); labelDAYS.setTextColor(Color.WHITE); ctr.addView(labelDAYS); TextView labelCUMTDD = new TextView(DanaRStatsActivity.this); - labelCUMTDD.setId(900+i); - labelCUMTDD.setText(DecimalFormatter.to2Decimal(sum/i) + " U"); + labelCUMTDD.setId(900 + i); + labelCUMTDD.setText(DecimalFormatter.to2Decimal(sum / i) + " U"); labelCUMTDD.setTextColor(Color.WHITE); ctr.addView(labelCUMTDD); TextView labelCUMRATIO = new TextView(DanaRStatsActivity.this); - labelCUMRATIO.setId(1000+i); - labelCUMRATIO.setText(Math.round(100*sum/i/magicNumber) + " %"); + labelCUMRATIO.setId(1000 + i); + labelCUMRATIO.setText(Math.round(100 * sum / i / magicNumber) + " %"); labelCUMRATIO.setTextColor(Color.WHITE); ctr.addView(labelCUMRATIO); @@ -462,7 +461,7 @@ public class DanaRStatsActivity extends Activity { TableLayout.LayoutParams.WRAP_CONTENT)); } - if (historyList.size()<3 || !(df.format(new Date(historyList.get(0).getRecordDate())).equals(df.format(new Date(System.currentTimeMillis() - 1000*60*60*24))))){ + if (historyList.size() < 3 || !(df.format(new Date(historyList.get(0).getRecordDate())).equals(df.format(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24))))) { statsMessage.setVisibility(View.VISIBLE); statsMessage.setText(getString(R.string.danar_stats_olddata_Message)); @@ -474,38 +473,38 @@ public class DanaRStatsActivity extends Activity { i = 0; - for (DanaRHistoryRecord record: historyList) { - double tdd= record.getRecordDailyBolus() + record.getRecordDailyBasal(); - if(i == 0 ) { + for (DanaRHistoryRecord record : historyList) { + double tdd = record.getRecordDailyBolus() + record.getRecordDailyBasal(); + if (i == 0) { weighted03 = tdd; weighted05 = tdd; weighted07 = tdd; } else { - weighted07 = (weighted07*0.3 + tdd*0.7); - weighted05 = (weighted05*0.5 + tdd*0.5); - weighted03 = (weighted03*0.7 + tdd*0.3); + weighted07 = (weighted07 * 0.3 + tdd * 0.7); + weighted05 = (weighted05 * 0.5 + tdd * 0.5); + weighted03 = (weighted03 * 0.7 + tdd * 0.3); } i++; } // Create the exptable row TableRow etr = new TableRow(DanaRStatsActivity.this); - if(i%2!=0) etr.setBackgroundColor(Color.DKGRAY); - etr.setId(1100+i); + if (i % 2 != 0) etr.setBackgroundColor(Color.DKGRAY); + etr.setId(1100 + i); etr.setLayoutParams(new TableLayout.LayoutParams( TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT)); // Here create the TextView dynamically TextView labelWEIGHT = new TextView(DanaRStatsActivity.this); - labelWEIGHT.setId(1200+i); + labelWEIGHT.setId(1200 + i); labelWEIGHT.setText("0.3\n" + "0.5\n" + "0.7"); labelWEIGHT.setTextColor(Color.WHITE); etr.addView(labelWEIGHT); TextView labelEXPTDD = new TextView(DanaRStatsActivity.this); - labelEXPTDD.setId(1300+i); + labelEXPTDD.setId(1300 + i); labelEXPTDD.setText(DecimalFormatter.to2Decimal(weighted03) + " U\n" + DecimalFormatter.to2Decimal(weighted05) + " U\n" + DecimalFormatter.to2Decimal(weighted07) + " U"); @@ -513,10 +512,10 @@ public class DanaRStatsActivity extends Activity { etr.addView(labelEXPTDD); TextView labelEXPRATIO = new TextView(DanaRStatsActivity.this); - labelEXPRATIO.setId(1400+i); - labelEXPRATIO.setText(Math.round(100*weighted03/magicNumber) +" %\n" - + Math.round(100*weighted05/magicNumber) +" %\n" - + Math.round(100*weighted07/magicNumber) +" %"); + labelEXPRATIO.setId(1400 + i); + labelEXPRATIO.setText(Math.round(100 * weighted03 / magicNumber) + " %\n" + + Math.round(100 * weighted05 / magicNumber) + " %\n" + + Math.round(100 * weighted07 / magicNumber) + " %"); labelEXPRATIO.setTextColor(Color.WHITE); etr.addView(labelEXPRATIO); @@ -549,21 +548,12 @@ public class DanaRStatsActivity extends Activity { } @Subscribe - public void onStatusEvent(final EventDanaRConnectionStatus c) { + public void onStatusEvent(final EventPumpStatusChanged c) { runOnUiThread( new Runnable() { @Override public void run() { - if (c.sStatus == EventDanaRConnectionStatus.CONNECTING) { - statusView.setText(String.format(getString(R.string.danar_history_connectingfor), c.sSecondsElapsed)); - log.debug("EventDanaRConnectionStatus: " + "Connecting for " + c.sSecondsElapsed + "s"); - } else if (c.sStatus == EventDanaRConnectionStatus.CONNECTED) { - statusView.setText(MainApp.sResources.getString(R.string.connected)); - log.debug("EventDanaRConnectionStatus: Connected"); - } else { - statusView.setText(MainApp.sResources.getString(R.string.disconnected)); - log.debug("EventDanaRConnectionStatus: Disconnected"); - } + statusView.setText(c.textStatus()); } } ); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/SerialIOThread.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/SerialIOThread.java similarity index 97% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/SerialIOThread.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/SerialIOThread.java index 50f9e855ef..b6b7a291e0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/SerialIOThread.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/SerialIOThread.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean; +package info.nightscout.androidaps.plugins.PumpDanaRKorean; import android.bluetooth.BluetoothSocket; @@ -14,8 +14,8 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MessageHashTable; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MessageHashTable; import info.nightscout.utils.CRC; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/Services/ExecutionService.java similarity index 74% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/Services/ExecutionService.java index 0bad19b38e..83cae228f0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/Services/ExecutionService.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.Services; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.Services; import android.app.Service; import android.bluetooth.BluetoothAdapter; @@ -8,11 +8,9 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.content.SharedPreferences; import android.os.Binder; import android.os.IBinder; import android.os.PowerManager; -import android.preference.PreferenceManager; import com.squareup.otto.Subscribe; @@ -33,58 +31,57 @@ import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventAppExit; import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventPumpStatusChanged; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusProgress; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryAlarm; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryBasalHour; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryBolus; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryCarbo; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryDailyInsulin; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryDone; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryError; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryGlucose; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryRefill; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistorySuspend; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgPCCommStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgPCCommStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetCarbsEntry; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetExtendedBolusStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetExtendedBolusStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetSingleBasalProfile; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTempBasalStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTempBasalStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTime; -import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRBolusStart; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus; -import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRNewStatus; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; -import info.nightscout.androidaps.plugins.DanaRKorean.SerialIOThread; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgCheckValue; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingBasal; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingGlucose; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingMaxValues; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingMeal; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingProfileRatios; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingPumpTime; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgSettingShippingInfo; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgStatusBasic; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgStatusBolusExtended; -import info.nightscout.androidaps.plugins.DanaRKorean.comm.MsgStatusTempBasal; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusProgress; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryAlarm; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryBasalHour; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryBolus; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryCarbo; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryDailyInsulin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryDone; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryError; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryGlucose; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryRefill; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistorySuspend; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgPCCommStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgPCCommStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetCarbsEntry; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetExtendedBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetExtendedBolusStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetSingleBasalProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTempBasalStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTempBasalStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTime; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.RecordTypes; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRNewStatus; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.SerialIOThread; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgCheckValue; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingBasal; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingGlucose; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingMaxValues; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingMeal; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingProfileRatios; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingPumpTime; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgSettingShippingInfo; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgStatusBasic; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgStatusBolusExtended; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.comm.MsgStatusTempBasal; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.utils.SP; import info.nightscout.utils.ToastUtils; public class ExecutionService extends Service { private static Logger log = LoggerFactory.getLogger(ExecutionService.class); - private SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); private String devName; private SerialIOThread mSerialIOThread; @@ -109,11 +106,11 @@ public class ExecutionService extends Service { String action = intent.getAction(); if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) { log.debug("Device has disconnected " + device.getName());//Device has disconnected - if (mBTDevice != null && mBTDevice.getName().equals(device.getName())) { + if (mBTDevice != null && mBTDevice.getName() != null && mBTDevice.getName().equals(device.getName())) { if (mSerialIOThread != null) { mSerialIOThread.disconnect("BT disconnection broadcast"); } - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.DISCONNECTED, 0)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED)); } } } @@ -183,7 +180,7 @@ public class ExecutionService extends Service { } public void connect(String from) { - if (danaRKoreanPump.password != -1 && danaRKoreanPump.password != SafeParse.stringToInt(SP.getString("danar_password", "-1"))) { + if (danaRKoreanPump.password != -1 && danaRKoreanPump.password != SP.getInt(R.string.key_danar_password, -1)) { ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.sResources.getString(R.string.wrongpumppassword), R.raw.error); return; } @@ -203,7 +200,7 @@ public class ExecutionService extends Service { long startTime = new Date().getTime(); while (!isConnected() && startTime + maxConnectionTime >= new Date().getTime()) { long secondsElapsed = (new Date().getTime() - startTime) / 1000L; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.CONNECTING, (int) secondsElapsed)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTING, (int) secondsElapsed)); if (Config.logDanaBTComm) log.debug("connect waiting " + secondsElapsed + "sec from: " + from); try { @@ -222,18 +219,19 @@ public class ExecutionService extends Service { mSerialIOThread.disconnect("Recreate SerialIOThread"); } mSerialIOThread = new SerialIOThread(mRfcommSocket); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.CONNECTED, 0)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTED)); if (!getPumpStatus()) { mSerialIOThread.disconnect("getPumpStatus failed"); waitMsec(3000); if (!MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).isEnabled(PluginBase.PUMP)) return; getBTSocketForSelectedPump(); + startTime = new Date().getTime(); } } } if (!isConnected()) { - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.DISCONNECTED, 0)); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTED)); log.error("Pump connection timed out"); } connectionInProgress = false; @@ -242,7 +240,7 @@ public class ExecutionService extends Service { } private void getBTSocketForSelectedPump() { - devName = SP.getString("danar_bt_name", ""); + devName = SP.getString(MainApp.sResources.getString(R.string.key_danar_bt_name), ""); BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter != null) { @@ -275,7 +273,7 @@ public class ExecutionService extends Service { private boolean getPumpStatus() { try { - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.gettingpumpstatus))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.gettingpumpstatus))); //MsgStatus statusMsg = new MsgStatus(); MsgStatusBasic statusBasicMsg = new MsgStatusBasic(); MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal(); @@ -334,7 +332,7 @@ public class ExecutionService extends Service { danaRKoreanPump.lastConnection = now; MainApp.bus().post(new EventDanaRNewStatus()); MainApp.bus().post(new EventInitializationChanged()); - MainApp.getConfigBuilder().uploadDeviceStatus(60); + MainApp.getConfigBuilder().uploadDeviceStatus(); if (danaRKoreanPump.dailyTotalUnits > danaRKoreanPump.maxDailyTotalUnits * Constants.dailyLimitWarning ) { log.debug("Approaching daily limit: " + danaRKoreanPump.dailyTotalUnits + "/" + danaRKoreanPump.maxDailyTotalUnits); Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, MainApp.sResources.getString(R.string.approachingdailylimit), Notification.URGENT); @@ -350,47 +348,46 @@ public class ExecutionService extends Service { public boolean tempBasal(int percent, int durationInHours) { connect("tempBasal"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.settingtempbasal))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.settingtempbasal))); mSerialIOThread.sendMessage(new MsgSetTempBasalStart(percent, durationInHours)); mSerialIOThread.sendMessage(new MsgStatusTempBasal()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean tempBasalStop() { connect("tempBasalStop"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.stoppingtempbasal))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.stoppingtempbasal))); mSerialIOThread.sendMessage(new MsgSetTempBasalStop()); mSerialIOThread.sendMessage(new MsgStatusTempBasal()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean extendedBolus(double insulin, int durationInHalfHours) { connect("extendedBolus"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.settingextendedbolus))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.settingextendedbolus))); mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(insulin, (byte) (durationInHalfHours & 0xFF))); mSerialIOThread.sendMessage(new MsgStatusBolusExtended()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean extendedBolusStop() { connect("extendedBolusStop"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.stoppingextendedbolus))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.stoppingextendedbolus))); mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop()); mSerialIOThread.sendMessage(new MsgStatusBolusExtended()); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } public boolean bolus(Double amount, int carbs, Treatment t) { bolusingTreatment = t; MsgBolusStart start = new MsgBolusStart(amount); - MsgBolusProgress progress = new MsgBolusProgress(amount, t); // initialize static variables MsgBolusStop stop = new MsgBolusStop(amount, t); connect("bolus"); @@ -400,6 +397,8 @@ public class ExecutionService extends Service { Calendar time = Calendar.getInstance(); mSerialIOThread.sendMessage(new MsgSetCarbsEntry(time, carbs)); } + + MsgBolusProgress progress = new MsgBolusProgress(amount, t); // initialize static variables MainApp.bus().post(new EventDanaRBolusStart()); if (!stop.stopped) { @@ -410,7 +409,7 @@ public class ExecutionService extends Service { } while (!stop.stopped && !start.failed) { waitMsec(100); - if (progress.lastReceive != 0 && (new Date().getTime() - progress.lastReceive) > 5 * 1000L) { // if i didn't receive status for more than 5 sec expecting broken comm + if ((new Date().getTime() - progress.lastReceive) > 5 * 1000L) { // if i didn't receive status for more than 5 sec expecting broken comm stop.stopped = true; stop.forced = true; log.debug("Communication stopped"); @@ -495,13 +494,13 @@ public class ExecutionService extends Service { public boolean updateBasalsInPump(final NSProfile profile) { connect("updateBasalsInPump"); if (!isConnected()) return false; - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.updatingbasalrates))); + MainApp.bus().post(new EventPumpStatusChanged(MainApp.sResources.getString(R.string.updatingbasalrates))); double[] basal = buildDanaRProfileRecord(profile); MsgSetSingleBasalProfile msgSet = new MsgSetSingleBasalProfile(basal); mSerialIOThread.sendMessage(msgSet); danaRKoreanPump.lastSettingsRead = new Date(0); // force read full settings getPumpStatus(); - MainApp.bus().post(new EventDanaRConnectionStatus(EventDanaRConnectionStatus.PERFORMING, 0, MainApp.sResources.getString(R.string.disconnecting))); + MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.DISCONNECTING)); return true; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MessageHashTable.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MessageHashTable.java similarity index 71% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MessageHashTable.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MessageHashTable.java index 084ad11074..36cf8c8edb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MessageHashTable.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MessageHashTable.java @@ -1,31 +1,31 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusProgress; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgBolusStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgError; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryAlarm; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryAll; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryBolus; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryCarbo; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryDailyInsulin; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryGlucose; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryNew; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgHistoryNewDone; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgPCCommStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgPCCommStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetCarbsEntry; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetExtendedBolusStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetExtendedBolusStop; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetSingleBasalProfile; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTempBasalStart; -import info.nightscout.androidaps.plugins.DanaR.comm.MsgSetTempBasalStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusProgress; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgBolusStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgError; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryAlarm; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryAll; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryBolus; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryCarbo; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryDailyInsulin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryGlucose; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryNew; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgHistoryNewDone; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgPCCommStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgPCCommStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetCarbsEntry; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetExtendedBolusStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetExtendedBolusStop; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetSingleBasalProfile; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTempBasalStart; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetTempBasalStop; /** * Created by mike on 28.05.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgCheckValue.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgCheckValue.java similarity index 84% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgCheckValue.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgCheckValue.java index efcb32f2ba..1cd6c25abf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgCheckValue.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgCheckValue.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,9 +6,9 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; import info.nightscout.utils.ToastUtils; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusBasic.java similarity index 80% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusBasic.java index 39f45d7843..53f62972c2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusBasic.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,9 +6,9 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; @@ -26,13 +26,13 @@ public class MsgInitConnStatusBasic extends MessageBase { return; } DanaRKoreanPump pump = DanaRKoreanPlugin.getDanaRPump(); - int isStatusSuspendOn = intFromBuff(bytes, 0, 1); + pump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1; int isUtilityEnable = intFromBuff(bytes, 1, 1); pump.isEasyModeEnabled = intFromBuff(bytes, 2, 1) == 1; int easyUIMode = intFromBuff(bytes, 3, 1); pump.password = intFromBuff(bytes, 4, 2) ^ 0x3463; if (Config.logDanaMessageDetail) { - log.debug("isStatusSuspendOn: " + isStatusSuspendOn); + log.debug("isStatusSuspendOn: " + pump.pumpSuspended); log.debug("isUtilityEnable: " + isUtilityEnable); log.debug("Is EasyUI Enabled: " + pump.isEasyModeEnabled); log.debug("easyUIMode: " + easyUIMode); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusBolus.java similarity index 87% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusBolus.java index b391fe11e3..5fe064dcdd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusBolus.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,9 +6,9 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusTime.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime.java index 5e904a493b..e302d55e7f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusTime.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgInitConnStatusTime.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -10,9 +10,9 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; import info.nightscout.utils.ToastUtils; public class MsgInitConnStatusTime extends MessageBase { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingBasal.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingBasal.java similarity index 80% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingBasal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingBasal.java index 57f63efa5a..fcf8a1e1f6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingBasal.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingBasalProfileAll.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingBasalProfileAll.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingBasalProfileAll.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingBasalProfileAll.java index 9397ed86c6..1a5eeeeba3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingBasalProfileAll.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingBasalProfileAll.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingGlucose.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingGlucose.java similarity index 74% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingGlucose.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingGlucose.java index 8ebc972495..10b8f5ef74 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingGlucose.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingGlucose.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMaxValues.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingMaxValues.java similarity index 82% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMaxValues.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingMaxValues.java index 428881e715..c5eca68dca 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMaxValues.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingMaxValues.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; /** diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingMeal.java similarity index 82% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingMeal.java index 488cf3becf..0fae0a27db 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingMeal.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,11 +6,9 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaR.DanaRPump; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingProfileRatios.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingProfileRatios.java similarity index 87% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingProfileRatios.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingProfileRatios.java index e023c1bb5b..f34dff5328 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingProfileRatios.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingProfileRatios.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingPumpTime.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingPumpTime.java similarity index 81% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingPumpTime.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingPumpTime.java index 359ffb924e..180da93bbb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingPumpTime.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingPumpTime.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -6,8 +6,8 @@ import org.slf4j.LoggerFactory; import java.util.Date; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; public class MsgSettingPumpTime extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgSettingPumpTime.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingShippingInfo.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingShippingInfo.java similarity index 75% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingShippingInfo.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingShippingInfo.java index f222d86cbf..80900dfba5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingShippingInfo.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgSettingShippingInfo.java @@ -1,14 +1,12 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Date; - import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatus.java similarity index 89% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatus.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatus.java index bb4adaa58e..d17b41edd2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatus.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; public class MsgStatus extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgStatus.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusBasic.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusBasic.java similarity index 86% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusBasic.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusBasic.java index 46a230b184..5332ec5ffa 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusBasic.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusBasic.java @@ -1,11 +1,11 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; public class MsgStatusBasic extends MessageBase { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusBolusExtended.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusBolusExtended.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusBolusExtended.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusBolusExtended.java index 1c740fd960..f5879b76a8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusBolusExtended.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusBolusExtended.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import android.support.annotation.NonNull; @@ -12,9 +12,9 @@ import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; public class MsgStatusBolusExtended extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgStatusBolusExtended.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusProfile.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusProfile.java similarity index 86% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusProfile.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusProfile.java index 7af3260b3a..58f7077ae8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusProfile.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusProfile.java @@ -1,12 +1,12 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; /** * Created by mike on 05.07.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusTempBasal.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusTempBasal.java similarity index 94% rename from app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusTempBasal.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusTempBasal.java index 4506bb944a..6ba599f33b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgStatusTempBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/comm/MsgStatusTempBasal.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.DanaRKorean.comm; +package info.nightscout.androidaps.plugins.PumpDanaRKorean.comm; import android.support.annotation.NonNull; @@ -12,9 +12,9 @@ import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; +import info.nightscout.androidaps.plugins.PumpDanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPump; public class MsgStatusTempBasal extends MessageBase { private static Logger log = LoggerFactory.getLogger(MsgStatusTempBasal.class); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpMDI/MDIFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpMDI/MDIFragment.java new file mode 100644 index 0000000000..f6221d627e --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpMDI/MDIFragment.java @@ -0,0 +1,12 @@ +package info.nightscout.androidaps.plugins.PumpMDI; + + +import android.support.v4.app.Fragment; + +public class MDIFragment extends Fragment { + private static MDIPlugin mdiPlugin = new MDIPlugin(); + + public static MDIPlugin getPlugin() { + return mdiPlugin; + } +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/MDI/MDIPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpMDI/MDIPlugin.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/MDI/MDIPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpMDI/MDIPlugin.java index ce48a966de..e9010438c6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/MDI/MDIPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpMDI/MDIPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.MDI; +package info.nightscout.androidaps.plugins.PumpMDI; import android.content.Context; @@ -7,7 +7,6 @@ import org.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.sql.SQLException; import java.util.Date; import info.nightscout.androidaps.BuildConfig; @@ -16,13 +15,11 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.TempBasal; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProgress; -import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpFragment; -import info.nightscout.androidaps.plugins.VirtualPump.events.EventVirtualPumpUpdateGui; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; /** @@ -95,6 +92,16 @@ public class MDIPlugin implements PluginBase, PumpInterface { return true; } + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PUMP) this.fragmentEnabled = fragmentEnabled; @@ -147,12 +154,12 @@ public class MDIPlugin implements PluginBase, PumpInterface { } @Override - public Date lastStatusTime() { + public Date lastDataTime() { return new Date(); } @Override - public void updateStatus(String reason) { + public void refreshDataFromPump(String reason) { // do nothing } @@ -187,7 +194,7 @@ public class MDIPlugin implements PluginBase, PumpInterface { } @Override - public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) { + public PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context) { PumpEnactResult result = new PumpEnactResult(); result.success = true; result.bolusDelivered = insulin; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpFragment.java similarity index 93% rename from app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpFragment.java index 4f842fdaa3..edad845092 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpFragment.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.VirtualPump; +package info.nightscout.androidaps.plugins.PumpVirtual; import android.app.Activity; @@ -18,10 +18,9 @@ import org.slf4j.LoggerFactory; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; -import info.nightscout.androidaps.plugins.VirtualPump.events.EventVirtualPumpUpdateGui; +import info.nightscout.androidaps.plugins.PumpVirtual.events.EventVirtualPumpUpdateGui; -public class VirtualPumpFragment extends Fragment implements FragmentBase { +public class VirtualPumpFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(VirtualPumpFragment.class); private static VirtualPumpPlugin virtualPumpPlugin = new VirtualPumpPlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java similarity index 90% rename from app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpPlugin.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java index e90916122f..2a1221e88d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/VirtualPumpPlugin.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.VirtualPump; +package info.nightscout.androidaps.plugins.PumpVirtual; import android.content.Context; import android.content.SharedPreferences; @@ -18,12 +18,14 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.TempBasal; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; +import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProgress; -import info.nightscout.androidaps.plugins.VirtualPump.events.EventVirtualPumpUpdateGui; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.PumpVirtual.events.EventVirtualPumpUpdateGui; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; /** @@ -37,6 +39,8 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { public static Integer batteryPercent = 50; public static Integer reservoirInUnits = 50; + Date lastDataTime = new Date(0); + boolean fragmentEnabled = true; boolean fragmentVisible = true; @@ -106,6 +110,16 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == PUMP) this.fragmentEnabled = fragmentEnabled; @@ -149,6 +163,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { @Override public int setNewBasalProfile(NSProfile profile) { // Do nothing here. we are using MainApp.getConfigBuilder().getActiveProfile().getProfile(); + lastDataTime = new Date(); return SUCCESS; } @@ -158,18 +173,19 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { } @Override - public Date lastStatusTime() { - return new Date(); + public Date lastDataTime() { + return lastDataTime; } @Override - public void updateStatus(String reason) { - // do nothing + public void refreshDataFromPump(String reason) { + MainApp.getConfigBuilder().uploadDeviceStatus(); + lastDataTime = new Date(); } @Override public double getBaseBasalRate() { - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); if (profile == null) return defaultBasalValue; return profile.getBasal(profile.secondsFromMidnight()); @@ -182,7 +198,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { if (getTempBasal().isAbsolute) { return getTempBasal().absolute; } else { - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); if (profile == null) return defaultBasalValue; Double baseRate = profile.getBasal(profile.secondsFromMidnight()); @@ -193,12 +209,12 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { @Override public TempBasal getTempBasal() { - return MainApp.getConfigBuilder().getActiveTempBasals().getTempBasal(new Date()); + return ConfigBuilderPlugin.getActiveTempBasals().getTempBasal(new Date()); } @Override public TempBasal getExtendedBolus() { - return MainApp.getConfigBuilder().getActiveTempBasals().getExtendedBolus(new Date()); + return ConfigBuilderPlugin.getActiveTempBasals().getExtendedBolus(new Date()); } @Override @@ -210,11 +226,11 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { @Override public TempBasal getTempBasal(Date time) { - return MainApp.getConfigBuilder().getActiveTempBasals().getTempBasal(time); + return ConfigBuilderPlugin.getActiveTempBasals().getTempBasal(time); } @Override - public PumpEnactResult deliverTreatment(Double insulin, Integer carbs, Context context) { + public PumpEnactResult deliverTreatment(InsulinInterface insulinType, Double insulin, Integer carbs, Context context) { PumpEnactResult result = new PumpEnactResult(); result.success = true; result.bolusDelivered = insulin; @@ -250,6 +266,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { if (Config.logPumpComm) log.debug("Delivering treatment insulin: " + insulin + "U carbs: " + carbs + "g " + result); MainApp.bus().post(new EventVirtualPumpUpdateGui()); + lastDataTime = new Date(); return result; } @@ -284,6 +301,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { if (Config.logPumpComm) log.debug("Setting temp basal absolute: " + result); MainApp.bus().post(new EventVirtualPumpUpdateGui()); + lastDataTime = new Date(); return result; } @@ -317,6 +335,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { if (Config.logPumpComm) log.debug("Settings temp basal percent: " + result); MainApp.bus().post(new EventVirtualPumpUpdateGui()); + lastDataTime = new Date(); return result; } @@ -348,6 +367,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { if (Config.logPumpComm) log.debug("Setting extended bolus: " + result); MainApp.bus().post(new EventVirtualPumpUpdateGui()); + lastDataTime = new Date(); return result; } @@ -374,6 +394,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { result.comment = MainApp.instance().getString(R.string.virtualpump_sqlerror); } } + lastDataTime = new Date(); return result; } @@ -398,6 +419,7 @@ public class VirtualPumpPlugin implements PluginBase, PumpInterface { if (Config.logPumpComm) log.debug("Canceling extended basal: " + result); MainApp.bus().post(new EventVirtualPumpUpdateGui()); + lastDataTime = new Date(); return result; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/events/EventVirtualPumpUpdateGui.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/events/EventVirtualPumpUpdateGui.java similarity index 57% rename from app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/events/EventVirtualPumpUpdateGui.java rename to app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/events/EventVirtualPumpUpdateGui.java index 4892ae33eb..110e0f4a56 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/events/EventVirtualPumpUpdateGui.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpVirtual/events/EventVirtualPumpUpdateGui.java @@ -1,4 +1,4 @@ -package info.nightscout.androidaps.plugins.VirtualPump.events; +package info.nightscout.androidaps.plugins.PumpVirtual.events; /** * Created by mike on 05.08.2016. diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java index 4097efcdf9..6e9d555268 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java @@ -1,12 +1,12 @@ package info.nightscout.androidaps.plugins.SmsCommunicator; import android.content.Intent; -import android.content.SharedPreferences; import android.content.pm.ResolveInfo; -import android.preference.PreferenceManager; import android.telephony.SmsManager; import android.telephony.SmsMessage; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.squareup.otto.Subscribe; import org.slf4j.Logger; @@ -22,21 +22,23 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.data.GlucoseStatus; +import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.events.EventPreferenceChange; +import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin; +import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; -import info.nightscout.androidaps.data.IobTotal; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.Overview.Notification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventNewSMS; import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventSmsCommunicatorUpdateGui; -import info.nightscout.client.data.NSProfile; import info.nightscout.utils.DecimalFormatter; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; import info.nightscout.utils.XdripCalibrations; @@ -65,6 +67,7 @@ public class SmsCommunicatorPlugin implements PluginBase { double bolusRequested = 0d; double tempBasal = 0d; double calibrationRequested = 0d; + int duration = 0; public Sms(SmsMessage message) { phoneNumber = message.getOriginatingAddress(); @@ -97,6 +100,7 @@ public class SmsCommunicatorPlugin implements PluginBase { Sms tempBasalWaitingForConfirmation = null; Sms bolusWaitingForConfirmation = null; Sms calibrationWaitingForConfirmation = null; + Sms suspendWaitingForConfirmation = null; Date lastRemoteBolusTime = new Date(0); ArrayList messages = new ArrayList<>(); @@ -147,6 +151,16 @@ public class SmsCommunicatorPlugin implements PluginBase { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == GENERAL) this.fragmentEnabled = fragmentEnabled; @@ -159,16 +173,17 @@ public class SmsCommunicatorPlugin implements PluginBase { @Subscribe public void processSettings(final EventPreferenceChange ev) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - String settings = sharedPreferences.getString("smscommunicator_allowednumbers", ""); + if (ev == null || ev.isChanged(R.string.key_smscommunicator_allowednumbers)) { + String settings = SP.getString(R.string.key_smscommunicator_allowednumbers, ""); - String pattern = ";"; + String pattern = ";"; - String[] substrings = settings.split(pattern); - for (String number : substrings) { - String cleaned = number.replaceAll("\\s+", ""); - allowedNumbers.add(cleaned); - log.debug("Found allowed number: " + cleaned); + String[] substrings = settings.split(pattern); + for (String number : substrings) { + String cleaned = number.replaceAll("\\s+", ""); + allowedNumbers.add(cleaned); + log.debug("Found allowed number: " + cleaned); + } } } @@ -191,8 +206,6 @@ public class SmsCommunicatorPlugin implements PluginBase { } private void processSms(Sms receivedSms) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - if (!isEnabled(PluginBase.GENERAL)) { log.debug("Ignoring SMS. Plugin disabled."); return; @@ -210,7 +223,9 @@ public class SmsCommunicatorPlugin implements PluginBase { String[] splited = receivedSms.text.split("\\s+"); Double amount = 0d; Double tempBasal = 0d; + int duration = 0; String passCode = ""; + boolean remoteCommandsAllowed = SP.getBoolean(R.string.key_smscommunicator_remotecommandsallowed, false); if (splited.length > 0) { switch (splited[0].toUpperCase()) { @@ -244,9 +259,11 @@ public class SmsCommunicatorPlugin implements PluginBase { sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Bg")); break; case "LOOP": switch (splited[1].toUpperCase()) { + case "DISABLE": case "STOP": LoopPlugin loopPlugin = (LoopPlugin) MainApp.getSpecificPlugin(LoopPlugin.class); if (loopPlugin != null && loopPlugin.isEnabled(PluginBase.LOOP)) { @@ -255,7 +272,9 @@ public class SmsCommunicatorPlugin implements PluginBase { sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Stop")); break; + case "ENABLE": case "START": loopPlugin = (LoopPlugin) MainApp.getSpecificPlugin(LoopPlugin.class); if (loopPlugin != null && !loopPlugin.isEnabled(PluginBase.LOOP)) { @@ -264,18 +283,52 @@ public class SmsCommunicatorPlugin implements PluginBase { sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Start")); break; case "STATUS": loopPlugin = (LoopPlugin) MainApp.getSpecificPlugin(LoopPlugin.class); if (loopPlugin != null) { if (loopPlugin.isEnabled(PluginBase.LOOP)) { - reply = MainApp.sResources.getString(R.string.smscommunicator_loopisenabled); + if (loopPlugin.isSuspended()) + reply = String.format(MainApp.sResources.getString(R.string.loopsuspendedfor), loopPlugin.minutesToEndOfSuspend()); + else + reply = MainApp.sResources.getString(R.string.smscommunicator_loopisenabled); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_loopisdisabled); } sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Status")); + break; + case "RESUME": + final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + activeloop.suspendTo(0); + MainApp.bus().post(new EventRefreshGui(false)); + reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_loopresumed)); + sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date())); + Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Resume")); + break; + case "SUSPEND": + if (splited.length >= 3) + duration = SafeParse.stringToInt(splited[2]); + duration = Math.max(0, duration); + duration = Math.min(180, duration); + if (duration == 0) { + reply = MainApp.sResources.getString(R.string.smscommunicator_wrongduration); + sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); + } else if (remoteCommandsAllowed) { + passCode = generatePasscode(); + reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_suspendreplywithcode), duration, passCode); + receivedSms.processed = true; + resetWaitingMessages(); + sendSMS(suspendWaitingForConfirmation = new Sms(receivedSms.phoneNumber, reply, new Date(), passCode)); + suspendWaitingForConfirmation.duration = duration; + Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Suspend")); + } else { + reply = MainApp.sResources.getString(R.string.smscommunicator_remotecommandnotallowed); + sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); + } break; } break; @@ -289,6 +342,7 @@ public class SmsCommunicatorPlugin implements PluginBase { reply = "TERATMENTS REFRESH " + q.size() + " receivers"; sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Treatments_Refresh")); break; } break; @@ -301,6 +355,7 @@ public class SmsCommunicatorPlugin implements PluginBase { reply = "NSCLIENT RESTART " + q.size() + " receivers"; sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Nsclient_Restart")); break; } break; @@ -316,10 +371,10 @@ public class SmsCommunicatorPlugin implements PluginBase { sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } receivedSms.processed = true; + Answers.getInstance().logCustom(new CustomEvent("SMS_Danar")); break; case "BASAL": if (splited.length > 1) { - boolean remoteCommandsAllowed = sharedPreferences.getBoolean("smscommunicator_remotecommandsallowed", false); if (splited[1].toUpperCase().equals("CANCEL") || splited[1].toUpperCase().equals("STOP")) { if (remoteCommandsAllowed) { passCode = generatePasscode(); @@ -327,6 +382,7 @@ public class SmsCommunicatorPlugin implements PluginBase { receivedSms.processed = true; resetWaitingMessages(); sendSMS(cancelTempBasalWaitingForConfirmation = new Sms(receivedSms.phoneNumber, reply, new Date(), passCode)); + Answers.getInstance().logCustom(new CustomEvent("SMS_Basal")); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_remotebasalnotallowed); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); @@ -341,6 +397,7 @@ public class SmsCommunicatorPlugin implements PluginBase { resetWaitingMessages(); sendSMS(tempBasalWaitingForConfirmation = new Sms(receivedSms.phoneNumber, reply, new Date(), passCode)); tempBasalWaitingForConfirmation.tempBasal = tempBasal; + Answers.getInstance().logCustom(new CustomEvent("SMS_Basal")); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_remotebasalnotallowed); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); @@ -355,7 +412,6 @@ public class SmsCommunicatorPlugin implements PluginBase { } else if (splited.length > 1) { amount = SafeParse.stringToDouble(splited[1]); amount = MainApp.getConfigBuilder().applyBolusConstraints(amount); - boolean remoteCommandsAllowed = sharedPreferences.getBoolean("smscommunicator_remotecommandsallowed", false); if (amount > 0d && remoteCommandsAllowed) { passCode = generatePasscode(); reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_bolusreplywithcode), amount, passCode); @@ -363,6 +419,7 @@ public class SmsCommunicatorPlugin implements PluginBase { resetWaitingMessages(); sendSMS(bolusWaitingForConfirmation = new Sms(receivedSms.phoneNumber, reply, new Date(), passCode)); bolusWaitingForConfirmation.bolusRequested = amount; + Answers.getInstance().logCustom(new CustomEvent("SMS_Bolus")); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_remotebolusnotallowed); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); @@ -372,7 +429,6 @@ public class SmsCommunicatorPlugin implements PluginBase { case "CAL": if (splited.length > 1) { amount = SafeParse.stringToDouble(splited[1]); - boolean remoteCommandsAllowed = sharedPreferences.getBoolean("smscommunicator_remotecommandsallowed", false); if (amount > 0d && remoteCommandsAllowed) { passCode = generatePasscode(); reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_calibrationreplywithcode), amount, passCode); @@ -380,6 +436,7 @@ public class SmsCommunicatorPlugin implements PluginBase { resetWaitingMessages(); sendSMS(calibrationWaitingForConfirmation = new Sms(receivedSms.phoneNumber, reply, new Date(), passCode)); calibrationWaitingForConfirmation.calibrationRequested = amount; + Answers.getInstance().logCustom(new CustomEvent("SMS_Cal")); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_remotecalibrationnotallowed); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); @@ -393,15 +450,17 @@ public class SmsCommunicatorPlugin implements PluginBase { PumpInterface pumpInterface = MainApp.getConfigBuilder(); if (pumpInterface != null) { danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); - PumpEnactResult result = pumpInterface.deliverTreatment(bolusWaitingForConfirmation.bolusRequested, 0, null); + PumpEnactResult result = pumpInterface.deliverTreatment(MainApp.getConfigBuilder().getActiveInsulin() ,bolusWaitingForConfirmation.bolusRequested, 0, null); if (result.success) { reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_bolusdelivered), result.bolusDelivered); - if (danaRPlugin != null) reply += "\n" + danaRPlugin.shortStatus(true); + if (danaRPlugin != null) + reply += "\n" + danaRPlugin.shortStatus(true); lastRemoteBolusTime = new Date(); sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date())); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_bolusfailed); - if (danaRPlugin != null) reply += "\n" + danaRPlugin.shortStatus(true); + if (danaRPlugin != null) + reply += "\n" + danaRPlugin.shortStatus(true); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } } @@ -414,11 +473,13 @@ public class SmsCommunicatorPlugin implements PluginBase { PumpEnactResult result = pumpInterface.setTempBasalAbsolute(tempBasalWaitingForConfirmation.tempBasal, 30); if (result.success) { reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_tempbasalset), result.absolute, result.duration); - if (danaRPlugin != null) reply += "\n" + danaRPlugin.shortStatus(true); + if (danaRPlugin != null) + reply += "\n" + danaRPlugin.shortStatus(true); sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date())); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_tempbasalfailed); - if (danaRPlugin != null) reply += "\n" + danaRPlugin.shortStatus(true); + if (danaRPlugin != null) + reply += "\n" + danaRPlugin.shortStatus(true); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } } @@ -431,11 +492,13 @@ public class SmsCommunicatorPlugin implements PluginBase { PumpEnactResult result = pumpInterface.cancelTempBasal(); if (result.success) { reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_tempbasalcanceled)); - if (danaRPlugin != null) reply += "\n" + danaRPlugin.shortStatus(true); + if (danaRPlugin != null) + reply += "\n" + danaRPlugin.shortStatus(true); sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date())); } else { reply = MainApp.sResources.getString(R.string.smscommunicator_tempbasalcancelfailed); - if (danaRPlugin != null) reply += "\n" + danaRPlugin.shortStatus(true); + if (danaRPlugin != null) + reply += "\n" + danaRPlugin.shortStatus(true); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } } @@ -450,6 +513,14 @@ public class SmsCommunicatorPlugin implements PluginBase { reply = MainApp.sResources.getString(R.string.smscommunicator_calibrationfailed); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } + } else if (suspendWaitingForConfirmation != null && !suspendWaitingForConfirmation.processed && + suspendWaitingForConfirmation.confirmCode.equals(splited[0]) && new Date().getTime() - suspendWaitingForConfirmation.date.getTime() < CONFIRM_TIMEOUT) { + suspendWaitingForConfirmation.processed = true; + final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + activeloop.suspendTo(new Date().getTime() + suspendWaitingForConfirmation.duration * 60L * 1000); + MainApp.bus().post(new EventRefreshGui(false)); + reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_loopsuspended)); + sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date())); } else { sendSMS(new Sms(receivedSms.phoneNumber, MainApp.sResources.getString(R.string.smscommunicator_unknowncommand), new Date())); } @@ -469,8 +540,8 @@ public class SmsCommunicatorPlugin implements PluginBase { } public void sendSMSToAllNumbers(Sms sms) { - for (int i = 0; i < allowedNumbers.size(); i++) { - sms.phoneNumber = allowedNumbers.get(i); + for (String number : allowedNumbers) { + sms.phoneNumber = number; sendSMS(sms); } } @@ -480,6 +551,7 @@ public class SmsCommunicatorPlugin implements PluginBase { sms.text = stripAccents(sms.text); if (sms.text.length() > 140) sms.text = sms.text.substring(0, 139); try { + log.debug("Sending SMS to " + sms.phoneNumber + ": " + sms.text); smsManager.sendTextMessage(sms.phoneNumber, null, sms.text, null, null); messages.add(sms); } catch (IllegalArgumentException e) { @@ -503,6 +575,7 @@ public class SmsCommunicatorPlugin implements PluginBase { cancelTempBasalWaitingForConfirmation = null; bolusWaitingForConfirmation = null; calibrationWaitingForConfirmation = null; + suspendWaitingForConfirmation = null; } public static String stripAccents(String s) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceGlimp/SourceGlimpFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceGlimp/SourceGlimpFragment.java new file mode 100644 index 0000000000..63ab27deee --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceGlimp/SourceGlimpFragment.java @@ -0,0 +1,14 @@ +package info.nightscout.androidaps.plugins.SourceGlimp; + + +import android.support.v4.app.Fragment; + +public class SourceGlimpFragment extends Fragment { + + private static SourceGlimpPlugin sourceGlimpPlugin = new SourceGlimpPlugin(); + + public static SourceGlimpPlugin getPlugin() { + return sourceGlimpPlugin; + } + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceGlimp/SourceGlimpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceGlimp/SourceGlimpPlugin.java new file mode 100644 index 0000000000..3c1248c4de --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceGlimp/SourceGlimpPlugin.java @@ -0,0 +1,72 @@ +package info.nightscout.androidaps.plugins.SourceGlimp; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; +import info.nightscout.androidaps.interfaces.BgSourceInterface; +import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment; + +/** + * Created by mike on 05.08.2016. + */ +public class SourceGlimpPlugin implements PluginBase, BgSourceInterface { + boolean fragmentEnabled = false; + + @Override + public String getFragmentClass() { + return SourceGlimpFragment.class.getName(); + } + + @Override + public int getType() { + return PluginBase.BGSOURCE; + } + + @Override + public String getName() { + return MainApp.instance().getString(R.string.Glimp); + } + + @Override + public String getNameShort() { + // use long name as fallback (no tabs) + return getName(); + } + + @Override + public boolean isEnabled(int type) { + return type == BGSOURCE && fragmentEnabled; + } + + @Override + public boolean isVisibleInTabs(int type) { + return false; + } + + @Override + public boolean canBeHidden(int type) { + return true; + } + + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return true; + } + + @Override + public void setFragmentEnabled(int type, boolean fragmentEnabled) { + if (type == BGSOURCE) this.fragmentEnabled = fragmentEnabled; + } + + @Override + public void setFragmentVisible(int type, boolean fragmentVisible) { + + } + + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gFragment.java index f43dc6ada7..28bfabf813 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gFragment.java @@ -3,9 +3,7 @@ package info.nightscout.androidaps.plugins.SourceMM640g; import android.support.v4.app.Fragment; -import info.nightscout.androidaps.interfaces.FragmentBase; - -public class SourceMM640gFragment extends Fragment implements FragmentBase { +public class SourceMM640gFragment extends Fragment { private static SourceMM640gPlugin sourceMM640gPlugin = new SourceMM640gPlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gPlugin.java index b1d7a52cd0..df8111b5cd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceMM640g/SourceMM640gPlugin.java @@ -10,7 +10,7 @@ import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment; * Created by mike on 05.08.2016. */ public class SourceMM640gPlugin implements PluginBase, BgSourceInterface { - boolean fragmentEnabled = true; + boolean fragmentEnabled = false; @Override public String getFragmentClass() { @@ -48,6 +48,16 @@ public class SourceMM640gPlugin implements PluginBase, BgSourceInterface { return true; } + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == BGSOURCE) this.fragmentEnabled = fragmentEnabled; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientFragment.java index c119952112..b2eddc09fc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientFragment.java @@ -3,9 +3,7 @@ package info.nightscout.androidaps.plugins.SourceNSClient; import android.support.v4.app.Fragment; -import info.nightscout.androidaps.interfaces.FragmentBase; - -public class SourceNSClientFragment extends Fragment implements FragmentBase { +public class SourceNSClientFragment extends Fragment { private static SourceNSClientPlugin sourceNSClientPlugin = new SourceNSClientPlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientPlugin.java index 7e38e6dc47..db11ab4ea5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceNSClient/SourceNSClientPlugin.java @@ -48,6 +48,16 @@ public class SourceNSClientPlugin implements PluginBase, BgSourceInterface { return true; } + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == BGSOURCE) this.fragmentEnabled = fragmentEnabled; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripFragment.java index e3c58f4bf8..c9be1298d2 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripFragment.java @@ -3,9 +3,7 @@ package info.nightscout.androidaps.plugins.SourceXdrip; import android.support.v4.app.Fragment; -import info.nightscout.androidaps.interfaces.FragmentBase; - -public class SourceXdripFragment extends Fragment implements FragmentBase { +public class SourceXdripFragment extends Fragment { private static SourceXdripPlugin sourceXdripPlugin = new SourceXdripPlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripPlugin.java index a1a4f01b86..b32040a2e8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SourceXdrip/SourceXdripPlugin.java @@ -16,7 +16,7 @@ public class SourceXdripPlugin implements PluginBase, BgSourceInterface { return SourceNSClientFragment.class.getName(); } - private static boolean fragmentEnabled = true; + private static boolean fragmentEnabled = false; @Override public int getType() { @@ -49,6 +49,16 @@ public class SourceXdripPlugin implements PluginBase, BgSourceInterface { return true; } + @Override + public boolean hasFragment() { + return false; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == BGSOURCE) this.fragmentEnabled = fragmentEnabled; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java index 8317623fd2..fee0d278e8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java @@ -26,12 +26,11 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.events.EventTempBasalChange; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; -public class TempBasalsFragment extends Fragment implements FragmentBase { +public class TempBasalsFragment extends Fragment { private static Logger log = LoggerFactory.getLogger(TempBasalsFragment.class); private static TempBasalsPlugin tempBasalsPlugin = new TempBasalsPlugin(); @@ -77,7 +76,7 @@ public class TempBasalsFragment extends Fragment implements FragmentBase { holder.percent.setText(DecimalFormatter.to0Decimal(tempBasal.percent) + "%"); } holder.realDuration.setText(DecimalFormatter.to0Decimal(tempBasal.getRealDuration()) + " min"); - IobTotal iob = tempBasal.iobCalc(new Date()); + IobTotal iob = tempBasal.iobCalc(new Date().getTime()); holder.iob.setText(DecimalFormatter.to2Decimal(iob.basaliob) + " U"); holder.netInsulin.setText(DecimalFormatter.to2Decimal(iob.netInsulin) + " U"); holder.netRatio.setText(DecimalFormatter.to2Decimal(iob.netRatio) + " U/h"); @@ -86,7 +85,7 @@ public class TempBasalsFragment extends Fragment implements FragmentBase { holder.dateLinearLayout.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.colorInProgress)); else if (tempBasal.timeEnd == null) holder.dateLinearLayout.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.colorNotEnded)); - else if (tempBasal.iobCalc(new Date()).basaliob != 0) + else if (tempBasal.iobCalc(new Date().getTime()).basaliob != 0) holder.dateLinearLayout.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.colorAffectingIOB)); else holder.dateLinearLayout.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.cardColorBackground)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsPlugin.java index 058d5a7e0b..d398ddfad6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsPlugin.java @@ -87,6 +87,16 @@ public class TempBasalsPlugin implements PluginBase, TempBasalsInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == TEMPBASAL) this.fragmentEnabled = fragmentEnabled; @@ -128,8 +138,8 @@ public class TempBasalsPlugin implements PluginBase, TempBasalsInterface { for (int position = list.size() - 1; position >= 0; position--) { TempBasal t = list.get(position); boolean update = false; - if (t.timeEnd == null && t.getPlannedTimeEnd().getTime() < now) { - t.timeEnd = new Date(t.getPlannedTimeEnd().getTime()); + if (t.timeEnd == null && t.getPlannedTimeEnd() < now) { + t.timeEnd = new Date(t.getPlannedTimeEnd()); if (Config.logTempBasalsCut) log.debug("Add timeEnd to old record"); update = true; @@ -137,7 +147,7 @@ public class TempBasalsPlugin implements PluginBase, TempBasalsInterface { if (position > 0) { Date startofnewer = list.get(position - 1).timeStart; if (t.timeEnd == null) { - t.timeEnd = new Date(Math.min(startofnewer.getTime(), t.getPlannedTimeEnd().getTime())); + t.timeEnd = new Date(Math.min(startofnewer.getTime(), t.getPlannedTimeEnd())); if (Config.logTempBasalsCut) log.debug("Add timeEnd to old record"); update = true; @@ -180,19 +190,19 @@ public class TempBasalsPlugin implements PluginBase, TempBasalsInterface { public IobTotal getCalculationToTime(long time) { checkForExpired(tempBasals); checkForExpired(extendedBoluses); - Date now = new Date(time); IobTotal total = new IobTotal(time); for (Integer pos = 0; pos < tempBasals.size(); pos++) { TempBasal t = tempBasals.get(pos); if (t.timeStart.getTime() > time) continue; - IobTotal calc = t.iobCalc(now); + IobTotal calc = t.iobCalc(time); + //log.debug("BasalIOB " + new Date(time) + " >>> " + calc.basaliob); total.plus(calc); } if (useExtendedBoluses) { for (Integer pos = 0; pos < extendedBoluses.size(); pos++) { TempBasal t = extendedBoluses.get(pos); if (t.timeStart.getTime() > time) continue; - IobTotal calc = t.iobCalc(now); + IobTotal calc = t.iobCalc(time); total.plus(calc); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangeFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangeFragment.java index 4bfe4ca74e..13cae1aad0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangeFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangeFragment.java @@ -31,10 +31,9 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.db.TempTarget; -import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange; -import info.nightscout.client.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.ToastUtils; @@ -43,7 +42,7 @@ import info.nightscout.utils.ToastUtils; * Created by mike on 13/01/17. */ -public class TempTargetRangeFragment extends Fragment implements View.OnClickListener, FragmentBase { +public class TempTargetRangeFragment extends Fragment implements View.OnClickListener { private static TempTargetRangePlugin tempTargetRangePlugin = new TempTargetRangePlugin(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangePlugin.java index 08a09aa644..63592f7878 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/TempTargetRange/TempTargetRangePlugin.java @@ -19,7 +19,7 @@ import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTarget public class TempTargetRangePlugin implements PluginBase { - static boolean fragmentEnabled = true; + static boolean fragmentEnabled = false; static boolean fragmentVisible = true; private static List tempTargets; @@ -70,6 +70,16 @@ public class TempTargetRangePlugin implements PluginBase { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == GENERAL) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsFragment.java index 38a4904b56..704d71e61b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsFragment.java @@ -21,6 +21,8 @@ import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; +import com.crashlytics.android.answers.Answers; +import com.crashlytics.android.answers.CustomEvent; import com.squareup.otto.Subscribe; import org.slf4j.Logger; @@ -35,13 +37,13 @@ import info.nightscout.androidaps.Services.Intents; import info.nightscout.androidaps.data.Iob; import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventTreatmentChange; -import info.nightscout.androidaps.interfaces.FragmentBase; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.interfaces.InsulinInterface; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.ToastUtils; -public class TreatmentsFragment extends Fragment implements View.OnClickListener, FragmentBase { +public class TreatmentsFragment extends Fragment implements View.OnClickListener { private static Logger log = LoggerFactory.getLogger(TreatmentsFragment.class); private static TreatmentsPlugin treatmentsPlugin = new TreatmentsPlugin(); @@ -79,12 +81,13 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener if (MainApp.getConfigBuilder() == null || MainApp.getConfigBuilder().getActiveProfile() == null) // app not initialized yet return; NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - if (profile == null) + InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); + if (profile == null || insulinInterface == null) return; holder.date.setText(DateUtil.dateAndTimeString(treatments.get(position).created_at)); holder.insulin.setText(DecimalFormatter.to2Decimal(treatments.get(position).insulin) + " U"); holder.carbs.setText(DecimalFormatter.to0Decimal(treatments.get(position).carbs) + " g"); - Iob iob = treatments.get(position).iobCalc(new Date(), profile.getDia()); + Iob iob = insulinInterface.iobCalc(treatments.get(position), new Date().getTime(), profile.getDia()); holder.iob.setText(DecimalFormatter.to2Decimal(iob.iobContrib) + " U"); holder.activity.setText(DecimalFormatter.to3Decimal(iob.activityContrib) + " U"); holder.mealOrCorrection.setText(treatments.get(position).mealBolus ? MainApp.sResources.getString(R.string.mealbolus) : MainApp.sResources.getString(R.string.correctionbous)); @@ -149,6 +152,7 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener MainApp.getDbHelper().delete(treatment); treatmentsPlugin.initializeData(); updateGUI(); + Answers.getInstance().logCustom(new CustomEvent("RefreshTreatments")); } }); builder.setNegativeButton(MainApp.sResources.getString(R.string.cancel), null); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java index 966a5e7578..d0ba64f124 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java @@ -1,18 +1,10 @@ package info.nightscout.androidaps.plugins.Treatments; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - -import com.j256.ormlite.dao.Dao; -import com.j256.ormlite.stmt.PreparedQuery; -import com.j256.ormlite.stmt.QueryBuilder; -import com.j256.ormlite.stmt.Where; import com.squareup.otto.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.sql.SQLException; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -21,15 +13,18 @@ import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.Iob; +import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.MealData; import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventTreatmentChange; +import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.TreatmentsInterface; -import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.client.data.NSProfile; -import info.nightscout.utils.SafeParse; +import info.nightscout.androidaps.plugins.IobCobCalculator.AutosensData; +import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; +import info.nightscout.utils.SP; /** * Created by mike on 05.08.2016. @@ -58,7 +53,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { @Override public String getNameShort() { String name = MainApp.sResources.getString(R.string.treatments_shortname); - if (!name.trim().isEmpty()){ + if (!name.trim().isEmpty()) { //only if translation exists return name; } @@ -81,6 +76,16 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == TREATMENT) this.fragmentEnabled = fragmentEnabled; @@ -102,7 +107,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { } public void initializeData() { - double dia = 3; + double dia = Constants.defaultDIA; if (MainApp.getConfigBuilder().getActiveProfile() != null && MainApp.getConfigBuilder().getActiveProfile().getProfile() != null) dia = MainApp.getConfigBuilder().getActiveProfile().getProfile().getDia(); long fromMills = (long) (new Date().getTime() - 60 * 60 * 1000L * (24 + dia)); @@ -125,25 +130,24 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { @Override public IobTotal getCalculationToTime(long time) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); IobTotal total = new IobTotal(time); if (MainApp.getConfigBuilder() == null || ConfigBuilderPlugin.getActiveProfile() == null) // app not initialized yet return total; NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); + InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); if (profile == null) return total; Double dia = profile.getDia(); - Date now = new Date(time); for (Integer pos = 0; pos < treatments.size(); pos++) { Treatment t = treatments.get(pos); if (t.created_at.getTime() > time) continue; - Iob tIOB = t.iobCalc(now, dia); + Iob tIOB = insulinInterface.iobCalc(t, time, dia); total.iob += tIOB.iobContrib; total.activity += tIOB.activityContrib; - Iob bIOB = t.iobCalc(now, dia / SafeParse.stringToInt(SP.getString("openapsama_bolussnooze_dia_divisor", "2"))); + Iob bIOB = insulinInterface.iobCalc(t, time, dia / SP.getInt("openapsama_bolussnooze_dia_divisor", 2)); total.bolussnooze += bIOB.iobContrib; } return total; @@ -161,8 +165,27 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { public MealData getMealData() { MealData result = new MealData(); + NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + if (profile == null) return result; + + long now = new Date().getTime(); + long dia_ago = now - (new Double(1.5d * profile.getDia() * 60 * 60 * 1000l)).longValue(); + for (Treatment treatment : treatments) { - result.addTreatment(treatment); + long t = treatment.created_at.getTime(); + if (t > dia_ago && t <= now) { + if (treatment.carbs >= 1) { + result.carbs += treatment.carbs; + } + if (treatment.insulin > 0 && treatment.mealBolus) { + result.boluses += treatment.insulin; + } + } + } + + AutosensData autosensData = IobCobCalculatorPlugin.getLastAutosensData(); + if (autosensData != null) { + result.mealCOB = autosensData.cob; } return result; } @@ -172,6 +195,17 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { return treatments; } + @Override + public List getTreatments5MinBack(long time) { + List in5minback = new ArrayList<>(); + for (Integer pos = 0; pos < treatments.size(); pos++) { + Treatment t = treatments.get(pos); + if (t.created_at.getTime() <= time && t.created_at.getTime() > time - 5 * 60 * 1000) + in5minback.add(t); + } + return in5minback; + } + @Subscribe public void onStatusEvent(final EventTreatmentChange ev) { initializeData(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java index 8b24be7979..682073d42f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java @@ -1,21 +1,11 @@ package info.nightscout.androidaps.plugins.Wear; -import android.content.DialogInterface; -import android.content.SharedPreferences; -import android.graphics.Color; import android.os.Handler; import android.os.HandlerThread; -import android.preference.PreferenceManager; -import android.support.annotation.BoolRes; import android.support.annotation.NonNull; -import android.support.v7.app.AlertDialog; -import android.view.View; import com.j256.ormlite.dao.Dao; -import org.json.JSONException; -import org.json.JSONObject; - import java.sql.SQLException; import java.text.DecimalFormat; import java.util.Date; @@ -32,15 +22,14 @@ import info.nightscout.androidaps.db.TempTarget; import info.nightscout.androidaps.interfaces.APSInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog; -import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; -import info.nightscout.androidaps.plugins.Overview.QuickWizard; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangePlugin; import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange; -import info.nightscout.client.data.NSProfile; import info.nightscout.utils.BolusWizard; import info.nightscout.utils.DateUtil; import info.nightscout.utils.DecimalFormatter; +import info.nightscout.utils.SP; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; @@ -56,9 +45,6 @@ public class ActionStringHandler { private static String lastConfirmActionString = null; private static BolusWizard lastBolusWizard = null; - private static SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - - private static HandlerThread handlerThread = new HandlerThread(FillDialog.class.getSimpleName()); static { handlerThread.start(); @@ -83,11 +69,11 @@ public class ActionStringHandler { ///////////////////////////////////// PRIME/FILL double amount = 0d; if ("1".equals(act[1])) { - amount = SafeParse.stringToDouble(DecimalFormatter.to2Decimal(SafeParse.stringToDouble(sp.getString("fill_button1", "0.3")))); + amount = SP.getDouble("fill_button1", 0.3); } else if ("2".equals(act[1])) { - amount = SafeParse.stringToDouble(DecimalFormatter.to2Decimal(SafeParse.stringToDouble(sp.getString("fill_button2", "0")))); + amount = SP.getDouble("fill_button2", 0d); } else if ("3".equals(act[1])) { - amount = SafeParse.stringToDouble(DecimalFormatter.to2Decimal(SafeParse.stringToDouble(sp.getString("fill_button3", "0")))); + amount = SP.getDouble("fill_button3", 0d); } else { return; } @@ -206,7 +192,7 @@ public class ActionStringHandler { } DecimalFormat format = new DecimalFormat("0.00"); BolusWizard bolusWizard = new BolusWizard(); - bolusWizard.doCalc(profile.getDefaultProfile(), carbsAfterConstraints, useBG?bgReading.valueToUnits(profile.getUnits()):0d, 0d, useBolusIOB, useBasalIOB); + bolusWizard.doCalc(profile.getDefaultProfile(), carbsAfterConstraints, 0d, useBG?bgReading.valueToUnits(profile.getUnits()):0d, 0d, useBolusIOB, useBasalIOB, false, false); Double insulinAfterConstraints = MainApp.getConfigBuilder().applyBolusConstraints(bolusWizard.calculatedTotalInsulin); if(insulinAfterConstraints - bolusWizard.calculatedTotalInsulin !=0){ @@ -305,17 +291,17 @@ public class ActionStringHandler { } //Default Range/Target - String maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; - String minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; - String targetBgDefault = Constants.TARGET_BG_DEFAULT_MGDL; + Double maxBgDefault = Constants.MAX_BG_DEFAULT_MGDL; + Double minBgDefault = Constants.MIN_BG_DEFAULT_MGDL; + Double targetBgDefault = Constants.TARGET_BG_DEFAULT_MGDL; if (!profile.getUnits().equals(Constants.MGDL)) { maxBgDefault = Constants.MAX_BG_DEFAULT_MMOL; minBgDefault = Constants.MIN_BG_DEFAULT_MMOL; targetBgDefault = Constants.TARGET_BG_DEFAULT_MMOL; } ret += "DEFAULT RANGE: "; - ret += sp.getString("openapsma_min_bg", minBgDefault) + " - " + sp.getString("openapsma_max_bg", maxBgDefault); - ret += " target: " + sp.getString("openapsma_target_bg", targetBgDefault); + ret += SP.getDouble("openapsma_min_bg", minBgDefault) + " - " + SP.getDouble("openapsma_max_bg", maxBgDefault); + ret += " target: " + SP.getDouble("openapsma_target_bg", targetBgDefault); return ret; } @@ -398,7 +384,7 @@ public class ActionStringHandler { handler.post(new Runnable() { @Override public void run() { - PumpEnactResult result = MainApp.getConfigBuilder().deliverTreatment(amount, 0, null, false); + PumpEnactResult result = MainApp.getConfigBuilder().deliverTreatment(MainApp.getConfigBuilder().getActiveInsulin(), amount, 0, null, false); if (!result.success) { sendError(MainApp.sResources.getString(R.string.treatmentdeliveryerror) + "\n" + @@ -414,7 +400,7 @@ public class ActionStringHandler { handler.post(new Runnable() { @Override public void run() { - PumpEnactResult result = MainApp.getConfigBuilder().deliverTreatment(amount, carbs, null, true); + PumpEnactResult result = MainApp.getConfigBuilder().deliverTreatment(MainApp.getConfigBuilder().getActiveInsulin(), amount, carbs, null, true); if (!result.success) { sendError(MainApp.sResources.getString(R.string.treatmentdeliveryerror) + "\n" + diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearFragment.java index 8f4e7f9be2..d243da7d60 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearFragment.java @@ -8,19 +8,18 @@ import android.view.View; import android.view.ViewGroup; import info.nightscout.androidaps.R; -import info.nightscout.androidaps.interfaces.FragmentBase; /** * Created by adrian on 17/11/16. */ -public class WearFragment extends Fragment implements FragmentBase { +public class WearFragment extends Fragment { private static WearPlugin wearPlugin; public static WearPlugin getPlugin(Context ctx) { - if (wearPlugin == null){ + if (wearPlugin == null) { wearPlugin = new WearPlugin(ctx); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearPlugin.java index 96f2b75062..9508908c84 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/WearPlugin.java @@ -5,6 +5,7 @@ import android.content.Intent; import com.squareup.otto.Subscribe; +import info.nightscout.androidaps.Config; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventBolusRequested; @@ -15,7 +16,9 @@ import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.events.EventTempBasalChange; import info.nightscout.androidaps.events.EventTreatmentChange; import info.nightscout.androidaps.interfaces.PluginBase; +import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Loop.events.EventNewOpenLoopNotification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissBolusprogressIfRunning; import info.nightscout.androidaps.plugins.Overview.events.EventOverviewBolusProgress; import info.nightscout.androidaps.plugins.Wear.wearintegration.WatchUpdaterService; import info.nightscout.utils.ToastUtils; @@ -26,7 +29,7 @@ import info.nightscout.utils.ToastUtils; public class WearPlugin implements PluginBase { - static boolean fragmentEnabled = true; + static boolean fragmentEnabled = Config.WEAR; static boolean fragmentVisible = true; private static WatchUpdaterService watchUS; private final Context ctx; @@ -77,6 +80,16 @@ public class WearPlugin implements PluginBase { return true; } + @Override + public boolean hasFragment() { + return true; + } + + @Override + public boolean showInList(int type) { + return true; + } + @Override public void setFragmentEnabled(int type, boolean fragmentEnabled) { if (type == GENERAL) { @@ -120,8 +133,10 @@ public class WearPlugin implements PluginBase { @Subscribe public void onStatusEvent(final EventPreferenceChange ev) { - //possibly new high or low mark + // possibly new high or low mark resendDataToWatch(); + // status may be formated differently + sendDataToWatch(true, false, false); } @Subscribe @@ -144,6 +159,17 @@ public class WearPlugin implements PluginBase { sendDataToWatch(false, true, false); } + @Subscribe + public void onStatusEvent(final EventRefreshGui ev) { + + LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + if (activeloop == null) return; + + if(WatchUpdaterService.shouldReportLoopStatus(activeloop.isEnabled(PluginBase.LOOP))) { + sendDataToWatch(true, false, false); + } + } + @Subscribe public void onStatusEvent(final EventOverviewBolusProgress ev) { @@ -163,6 +189,20 @@ public class WearPlugin implements PluginBase { } + @Subscribe + public void onStatusEvent(final EventDismissBolusprogressIfRunning ev) { + String status; + if(ev.result.success){ + status = MainApp.sResources.getString(R.string.success); + } else { + status = MainApp.sResources.getString(R.string.nosuccess); + } + Intent intent = new Intent(ctx, WatchUpdaterService.class).setAction(WatchUpdaterService.ACTION_SEND_BOLUSPROGRESS); + intent.putExtra("progresspercent", 100); + intent.putExtra("progressstatus", status); + ctx.startService(intent); + } + public void requestActionConfirmation(String title, String message, String actionstring){ Intent intent = new Intent(ctx, WatchUpdaterService.class).setAction(WatchUpdaterService.ACTION_SEND_ACTIONCONFIRMATIONREQUEST); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java index fc08941cd3..5df62fd4dd 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java @@ -28,12 +28,14 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.TempBasal; +import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.data.IobTotal; +import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.Overview.OverviewPlugin; import info.nightscout.androidaps.plugins.Wear.ActionStringHandler; import info.nightscout.androidaps.plugins.Wear.WearPlugin; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; import info.nightscout.utils.DecimalFormatter; import info.nightscout.utils.SafeParse; import info.nightscout.utils.ToastUtils; @@ -66,6 +68,7 @@ public class WatchUpdaterService extends WearableListenerService implements boolean wear_integration = false; SharedPreferences mPrefs; + private static boolean lastLoopStatus; @Override public void onCreate() { @@ -503,6 +506,15 @@ public class WatchUpdaterService extends WearableListenerService implements String status = ""; boolean shortString = true; + LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop(); + + if (activeloop != null && !activeloop.isEnabled(PluginBase.LOOP)) { + status += getString(R.string.disabledloop) + "\n"; + lastLoopStatus = false; + } else if (activeloop != null && activeloop.isEnabled(PluginBase.LOOP)) { + lastLoopStatus = true; + } + //Temp basal PumpInterface pump = MainApp.getConfigBuilder(); @@ -520,9 +532,13 @@ public class WatchUpdaterService extends WearableListenerService implements IobTotal bolusIob = MainApp.getConfigBuilder().getActiveTreatments().getLastCalculation().round(); MainApp.getConfigBuilder().getActiveTempBasals().updateTotalIOB(); IobTotal basalIob = MainApp.getConfigBuilder().getActiveTempBasals().getLastCalculation().round(); - status += (shortString?"":(getString(R.string.treatments_iob_label_string) + " ")) + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "(" - + DecimalFormatter.to2Decimal(bolusIob.iob) + "|" - + DecimalFormatter.to2Decimal(basalIob.basaliob) + ")"; + status += (shortString?"":(getString(R.string.treatments_iob_label_string) + " ")) + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob); + + if (mPrefs.getBoolean("wear_detailediob", true)) { + status += "(" + + DecimalFormatter.to2Decimal(bolusIob.iob) + "|" + + DecimalFormatter.to2Decimal(basalIob.basaliob) + ")"; + } PutDataMapRequest dataMapRequest = PutDataMapRequest.create(NEW_STATUS_PATH); //unique content @@ -551,6 +567,10 @@ public class WatchUpdaterService extends WearableListenerService implements public void onConnectionFailed(ConnectionResult connectionResult) { } + public static boolean shouldReportLoopStatus(boolean enabled){ + return (lastLoopStatus != enabled); + } + public static int getBatteryLevel(Context context) { Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java deleted file mode 100644 index 6834124167..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/plugins/persistentnotification/PersistentNotificationFragment.java +++ /dev/null @@ -1,14 +0,0 @@ -package info.nightscout.androidaps.plugins.persistentnotification; - -import android.support.v4.app.Fragment; - -import info.nightscout.androidaps.interfaces.FragmentBase; - -/** - * Created by adrian on 23/12/16. - */ - -public class PersistentNotificationFragment extends Fragment implements FragmentBase { - - -} diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java index a7f3f02f36..5c889b661f 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java +++ b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java @@ -18,14 +18,10 @@ import org.slf4j.LoggerFactory; import java.util.Date; -import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; -import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.interfaces.PumpInterface; -import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; -import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; public class KeepAliveReceiver extends BroadcastReceiver { private static Logger log = LoggerFactory.getLogger(KeepAliveReceiver.class); @@ -39,11 +35,11 @@ public class KeepAliveReceiver extends BroadcastReceiver { final PumpInterface pump = MainApp.getConfigBuilder(); final NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - if (pump != null && profile != null) { + if (pump != null && profile != null && profile.getBasal(NSProfile.secondsFromMidnight()) != null) { boolean isBasalOutdated = false; boolean isStatusOutdated = false; - Date lastConnection = pump.lastStatusTime(); + Date lastConnection = pump.lastDataTime(); if (lastConnection.getTime() + 30 * 60 * 1000L < new Date().getTime()) isStatusOutdated = true; if (Math.abs(profile.getBasal(NSProfile.secondsFromMidnight()) - pump.getBaseBasalRate()) > pump.getPumpDescription().basalStep) @@ -62,7 +58,7 @@ public class KeepAliveReceiver extends BroadcastReceiver { Thread t = new Thread(new Runnable() { @Override public void run() { - pump.updateStatus("KeepAlive. Status outdated."); + pump.refreshDataFromPump("KeepAlive. Status outdated."); } }); t.start(); @@ -70,7 +66,7 @@ public class KeepAliveReceiver extends BroadcastReceiver { Thread t = new Thread(new Runnable() { @Override public void run() { - pump.updateStatus("KeepAlive. Basal outdated."); + pump.refreshDataFromPump("KeepAlive. Basal outdated."); } }); t.start(); diff --git a/app/src/main/java/info/nightscout/androidaps/tabs/SlidingTabLayout.java b/app/src/main/java/info/nightscout/androidaps/tabs/SlidingTabLayout.java index 5c1ef3b25f..80424a04f7 100644 --- a/app/src/main/java/info/nightscout/androidaps/tabs/SlidingTabLayout.java +++ b/app/src/main/java/info/nightscout/androidaps/tabs/SlidingTabLayout.java @@ -29,6 +29,8 @@ import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; +import info.nightscout.androidaps.R; + /** * To be used with ViewPager to provide a tab indicator component which give constant feedback as to * the user's scroll progress. @@ -95,6 +97,7 @@ public class SlidingTabLayout extends HorizontalScrollView { mTabStrip = new SlidingTabStrip(context); addView(mTabStrip, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); + setBackgroundColor(context.getResources().getColor(R.color.tabBgColor)); } /** diff --git a/app/src/main/java/info/nightscout/androidaps/tabs/TabFragment.java b/app/src/main/java/info/nightscout/androidaps/tabs/TabFragment.java deleted file mode 100644 index 54b6ce217f..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/tabs/TabFragment.java +++ /dev/null @@ -1,10 +0,0 @@ -package info.nightscout.androidaps.tabs; - -import android.support.v4.app.Fragment; - -/** - * Created by mike on 30.05.2016. - */ -public abstract class TabFragment extends Fragment { - -} diff --git a/app/src/main/java/info/nightscout/androidaps/tabs/TabPageAdapter.java b/app/src/main/java/info/nightscout/androidaps/tabs/TabPageAdapter.java index cedae6e9d7..4f7b4a7a30 100644 --- a/app/src/main/java/info/nightscout/androidaps/tabs/TabPageAdapter.java +++ b/app/src/main/java/info/nightscout/androidaps/tabs/TabPageAdapter.java @@ -7,6 +7,7 @@ import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; +import android.view.ViewGroup; import java.util.ArrayList; @@ -36,6 +37,15 @@ public class TabPageAdapter extends FragmentStatePagerAdapter { return Fragment.instantiate(context, visibleFragmentList.get(position).getFragmentClass()); } + @Override + public void finishUpdate(ViewGroup container) { + try{ + super.finishUpdate(container); + } catch (NullPointerException nullPointerException){ + System.out.println("Catch the NullPointerException in FragmentStatePagerAdapter.finishUpdate"); + } + } + @Override public CharSequence getPageTitle(int position) { SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -58,4 +68,6 @@ public class TabPageAdapter extends FragmentStatePagerAdapter { notifyDataSetChanged(); } } + + } diff --git a/app/src/main/java/info/nightscout/sampleData/cgm/glucose.json b/app/src/main/java/info/nightscout/sampleData/cgm/glucose.json deleted file mode 100644 index c4c0130106..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/cgm/glucose.json +++ /dev/null @@ -1,15002 +0,0 @@ -[ - { - "filtered": 217664, - "direction": "DoubleDown", - "noise": 1, - "dateString": "2017-01-04T16:36:41.224000+01:00", - "sgv": 148, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 191424, - "delta": -20.713, - "date": 1483544201224, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153b", - "type": "sgv", - "glucose": 148 - }, - { - "filtered": 226528, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T16:31:41.395000+01:00", - "sgv": 169, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 210592, - "delta": -13.679, - "date": 1483543901395, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151c", - "type": "sgv", - "glucose": 169 - }, - { - "filtered": 226528, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T16:31:41.395000+01:00", - "sgv": 169, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 210592, - "delta": -20.713, - "date": 1483543901395, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153c", - "type": "sgv", - "glucose": 169 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -4.631, - "date": 1483543601244, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fc", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -13.679, - "date": 1483543601244, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151d", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -20.713, - "date": 1483543601244, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153d", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": 0.173, - "date": 1483543001221, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14db", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -4.631, - "date": 1483543001221, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fd", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -13.679, - "date": 1483543001221, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151e", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -20.713, - "date": 1483543001221, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153e", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -0.207, - "date": 1483542701253, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bb", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": 0.173, - "date": 1483542701253, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14dc", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -4.631, - "date": 1483542701253, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fe", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -13.679, - "date": 1483542701253, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151f", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -20.713, - "date": 1483542701253, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153f", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": 1.348, - "date": 1483542401161, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149a", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -0.207, - "date": 1483542401161, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bc", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": 0.173, - "date": 1483542401161, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14dd", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -4.631, - "date": 1483542401161, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14ff", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -13.679, - "date": 1483542401161, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1520", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -20.713, - "date": 1483542401161, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1540", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 1.936, - "date": 1483542101177, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1478", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 1.348, - "date": 1483542101177, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149b", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -0.207, - "date": 1483542101177, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bd", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 0.173, - "date": 1483542101177, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14de", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -4.631, - "date": 1483542101177, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1500", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -13.679, - "date": 1483542101177, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1521", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -20.713, - "date": 1483542101177, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1541", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.262, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1459", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.936, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1479", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.348, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149c", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -0.207, - "date": 1483541801241, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14be", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 0.173, - "date": 1483541801241, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14df", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -4.631, - "date": 1483541801241, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1501", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -13.679, - "date": 1483541801241, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1522", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -20.713, - "date": 1483541801241, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1542", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -0.658, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1435", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.262, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145a", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.936, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147b", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.348, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149d", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -0.207, - "date": 1483541201285, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bf", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 0.173, - "date": 1483541201285, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e0", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -4.631, - "date": 1483541201285, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1502", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -13.679, - "date": 1483541201285, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1524", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -20.713, - "date": 1483541201285, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1543", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 2.933, - "date": 1483540901755, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1415", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -0.658, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1436", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.262, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145b", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.936, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147a", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.348, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149e", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -0.207, - "date": 1483540901755, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c0", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 0.173, - "date": 1483540901755, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e1", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -4.631, - "date": 1483540901755, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1503", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -13.679, - "date": 1483540901755, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1523", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -20.713, - "date": 1483540901755, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1544", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -6.913, - "date": 1483540601273, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f6", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 2.933, - "date": 1483540601273, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1416", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -0.658, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1437", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.262, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145c", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.936, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147c", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.348, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149f", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -0.207, - "date": 1483540601273, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c1", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 0.173, - "date": 1483540601273, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e2", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -4.631, - "date": 1483540601273, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1504", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -13.679, - "date": 1483540601273, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1525", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -20.713, - "date": 1483540601273, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1545", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -3.87, - "date": 1483540301318, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d7", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -6.913, - "date": 1483540301318, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f7", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 2.933, - "date": 1483540301318, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1417", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -0.658, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1438", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.262, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145d", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.936, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147d", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.348, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a0", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -0.207, - "date": 1483540301318, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c2", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 0.173, - "date": 1483540301318, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e3", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -4.631, - "date": 1483540301318, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1505", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -13.679, - "date": 1483540301318, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1526", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -20.713, - "date": 1483540301318, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1546", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -2.869, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b6", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -3.87, - "date": 1483540001288, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d8", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -6.913, - "date": 1483540001288, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f9", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 2.933, - "date": 1483540001288, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1418", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -0.658, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1439", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.262, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145e", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.936, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147e", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.348, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a1", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -0.207, - "date": 1483540001288, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c3", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 0.173, - "date": 1483540001288, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e4", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -4.631, - "date": 1483540001288, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1506", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -13.679, - "date": 1483540001288, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1527", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -20.713, - "date": 1483540001288, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1547", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -10.022, - "date": 1483539701330, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1396", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -2.869, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ba", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -3.87, - "date": 1483539701330, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d9", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -6.913, - "date": 1483539701330, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f8", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 2.933, - "date": 1483539701330, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1419", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -0.658, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143a", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.262, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145f", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.936, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147f", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.348, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a2", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -0.207, - "date": 1483539701330, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c4", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 0.173, - "date": 1483539701330, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e5", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -4.631, - "date": 1483539701330, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1507", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -13.679, - "date": 1483539701330, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1528", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -20.713, - "date": 1483539701330, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1548", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -9.038, - "date": 1483539101287, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1375", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -10.022, - "date": 1483539101287, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1397", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -2.869, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b7", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -3.87, - "date": 1483539101287, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13da", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -6.913, - "date": 1483539101287, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fa", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 2.933, - "date": 1483539101287, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141a", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -0.658, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143b", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.262, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1460", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.936, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1480", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.348, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a3", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -0.207, - "date": 1483539101287, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c5", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 0.173, - "date": 1483539101287, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e6", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -4.631, - "date": 1483539101287, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1508", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -13.679, - "date": 1483539101287, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1529", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -20.713, - "date": 1483539101287, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1549", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 6.496, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1355", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -9.038, - "date": 1483538501333, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1376", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -10.022, - "date": 1483538501333, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1398", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -2.869, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b8", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -3.87, - "date": 1483538501333, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13db", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -6.913, - "date": 1483538501333, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fb", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 2.933, - "date": 1483538501333, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141b", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -0.658, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143c", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.262, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1461", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.936, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1481", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.348, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a4", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -0.207, - "date": 1483538501333, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c6", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 0.173, - "date": 1483538501333, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e7", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -4.631, - "date": 1483538501333, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1509", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -13.679, - "date": 1483538501333, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152a", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -20.713, - "date": 1483538501333, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154a", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 11.613, - "date": 1483538201284, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1336", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 6.496, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1356", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -9.038, - "date": 1483538201284, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1377", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -10.022, - "date": 1483538201284, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1399", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -2.869, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b9", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -3.87, - "date": 1483538201284, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13dc", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -6.913, - "date": 1483538201284, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fc", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 2.933, - "date": 1483538201284, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141c", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -0.658, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143d", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.262, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1462", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.936, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1482", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.348, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a5", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -0.207, - "date": 1483538201284, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c7", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 0.173, - "date": 1483538201284, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e8", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -4.631, - "date": 1483538201284, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150a", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -13.679, - "date": 1483538201284, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152b", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -20.713, - "date": 1483538201284, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154b", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 11.911, - "date": 1483537901316, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1317", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 11.613, - "date": 1483537901316, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1337", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 6.496, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1357", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -9.038, - "date": 1483537901316, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1378", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -10.022, - "date": 1483537901316, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139a", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -2.869, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bb", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -3.87, - "date": 1483537901316, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13de", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -6.913, - "date": 1483537901316, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fd", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 2.933, - "date": 1483537901316, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141d", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -0.658, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143e", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.262, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1463", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.936, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1483", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.348, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a6", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -0.207, - "date": 1483537901316, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c8", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 0.173, - "date": 1483537901316, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e9", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -4.631, - "date": 1483537901316, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150b", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -13.679, - "date": 1483537901316, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152c", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -20.713, - "date": 1483537901316, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154c", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 17.921, - "date": 1483537601014, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f7", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 11.911, - "date": 1483537601014, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1318", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 11.613, - "date": 1483537601014, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1338", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 6.496, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1358", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -9.038, - "date": 1483537601014, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1379", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -10.022, - "date": 1483537601014, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139b", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -2.869, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bd", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -3.87, - "date": 1483537601014, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13dd", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -6.913, - "date": 1483537601014, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fe", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 2.933, - "date": 1483537601014, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141e", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -0.658, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143f", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.262, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1464", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.936, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1484", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.348, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a7", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -0.207, - "date": 1483537601014, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c9", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 0.173, - "date": 1483537601014, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ea", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -4.631, - "date": 1483537601014, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150c", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -13.679, - "date": 1483537601014, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152d", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -20.713, - "date": 1483537601014, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154d", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 14.55, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12d8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 17.921, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 11.911, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1319", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 11.613, - "date": 1483537301326, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1339", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 6.496, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1359", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -9.038, - "date": 1483537301326, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137a", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -10.022, - "date": 1483537301326, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139c", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -2.869, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bc", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -3.87, - "date": 1483537301326, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13df", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -6.913, - "date": 1483537301326, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13ff", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 2.933, - "date": 1483537301326, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1420", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -0.658, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1440", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.262, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1465", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.936, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1485", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.348, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -0.207, - "date": 1483537301326, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14ca", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 0.173, - "date": 1483537301326, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14eb", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -4.631, - "date": 1483537301326, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150d", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -13.679, - "date": 1483537301326, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152e", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -20.713, - "date": 1483537301326, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154e", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 21.457, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 14.55, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12d9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 17.921, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 11.911, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 11.613, - "date": 1483537001325, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 6.496, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -9.038, - "date": 1483537001325, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137b", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -10.022, - "date": 1483537001325, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139d", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -2.869, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13be", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -3.87, - "date": 1483537001325, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e0", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -6.913, - "date": 1483537001325, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1400", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 2.933, - "date": 1483537001325, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -0.658, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1441", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.262, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1466", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.936, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1486", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.348, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14aa", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -0.207, - "date": 1483537001325, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cb", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 0.173, - "date": 1483537001325, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ec", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -4.631, - "date": 1483537001325, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150e", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -13.679, - "date": 1483537001325, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -20.713, - "date": 1483537001325, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 16.247, - "date": 1483536701263, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1297", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 21.457, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ba", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 14.55, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12da", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 17.921, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fa", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 11.911, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 11.613, - "date": 1483536701263, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 6.496, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -9.038, - "date": 1483536701263, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137c", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -10.022, - "date": 1483536701263, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139e", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -2.869, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bf", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -3.87, - "date": 1483536701263, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e1", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -6.913, - "date": 1483536701263, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1401", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 2.933, - "date": 1483536701263, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1421", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -0.658, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1443", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.262, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1467", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.936, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1490", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.348, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a9", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -0.207, - "date": 1483536701263, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cc", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 0.173, - "date": 1483536701263, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ed", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -4.631, - "date": 1483536701263, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150f", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -13.679, - "date": 1483536701263, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1530", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -20.713, - "date": 1483536701263, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1551", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 3.904, - "date": 1483536401340, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1275", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 16.247, - "date": 1483536401340, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1298", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 21.457, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b8", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 14.55, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12db", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 17.921, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fb", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 11.911, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 11.613, - "date": 1483536401340, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 6.496, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -9.038, - "date": 1483536401340, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137d", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -10.022, - "date": 1483536401340, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139f", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -2.869, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c0", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -3.87, - "date": 1483536401340, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e3", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -6.913, - "date": 1483536401340, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1402", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 2.933, - "date": 1483536401340, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1422", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -0.658, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1442", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.262, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1468", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.936, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148a", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.348, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ab", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -0.207, - "date": 1483536401340, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cd", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 0.173, - "date": 1483536401340, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ee", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -4.631, - "date": 1483536401340, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1510", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -13.679, - "date": 1483536401340, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1531", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -20.713, - "date": 1483536401340, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1550", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 5.385, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1252", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 3.904, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1276", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 16.247, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1299", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 21.457, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b7", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 14.55, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12dc", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 17.921, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fc", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 11.911, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 11.613, - "date": 1483536101258, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 6.496, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -9.038, - "date": 1483536101258, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137e", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -10.022, - "date": 1483536101258, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a6", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -2.869, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c1", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -3.87, - "date": 1483536101258, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e2", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -6.913, - "date": 1483536101258, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1403", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 2.933, - "date": 1483536101258, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1423", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -0.658, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1444", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.262, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146b", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.936, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1487", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.348, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ad", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -0.207, - "date": 1483536101258, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14ce", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 0.173, - "date": 1483536101258, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ef", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -4.631, - "date": 1483536101258, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1512", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -13.679, - "date": 1483536101258, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1532", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -20.713, - "date": 1483536101258, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1552", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.686, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1233", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 5.385, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1253", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 3.904, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1277", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 16.247, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129a", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 21.457, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bb", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 14.55, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12dd", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 17.921, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fd", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 11.911, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 11.613, - "date": 1483535802855, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 6.496, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -9.038, - "date": 1483535802855, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137f", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -10.022, - "date": 1483535802855, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a3", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -2.869, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c2", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -3.87, - "date": 1483535802855, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e4", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -6.913, - "date": 1483535802855, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1404", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 2.933, - "date": 1483535802855, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1424", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -0.658, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1445", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.262, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1469", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.936, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1488", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.348, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ac", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -0.207, - "date": 1483535802855, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cf", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 0.173, - "date": 1483535802855, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f0", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -4.631, - "date": 1483535802855, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1511", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -13.679, - "date": 1483535802855, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1533", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -20.713, - "date": 1483535802855, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1553", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.314, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1213", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.686, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1234", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 5.385, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1254", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 3.904, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1278", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 16.247, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129b", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 21.457, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bc", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 14.55, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12de", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 17.921, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fe", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 11.911, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 11.613, - "date": 1483535501468, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 6.496, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -9.038, - "date": 1483535501468, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1380", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -10.022, - "date": 1483535501468, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a0", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -2.869, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c4", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -3.87, - "date": 1483535501468, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e5", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -6.913, - "date": 1483535501468, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1405", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 2.933, - "date": 1483535501468, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1426", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -0.658, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1446", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.262, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146a", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.936, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1489", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.348, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14af", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -0.207, - "date": 1483535501468, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d0", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 0.173, - "date": 1483535501468, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f1", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -4.631, - "date": 1483535501468, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1513", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -13.679, - "date": 1483535501468, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1534", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -20.713, - "date": 1483535501468, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1554", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.554, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.314, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1214", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.686, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1235", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 5.385, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1255", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 3.904, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1279", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 16.247, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129c", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 21.457, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bd", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 14.55, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12df", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 17.921, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12ff", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.911, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1320", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.613, - "date": 1483535201718, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1340", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 6.496, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1360", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -9.038, - "date": 1483535201718, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1381", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -10.022, - "date": 1483535201718, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.869, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.87, - "date": 1483535201718, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e6", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -6.913, - "date": 1483535201718, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1406", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.933, - "date": 1483535201718, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1425", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.658, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1447", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.262, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146c", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.936, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148b", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.348, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ae", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.207, - "date": 1483535201718, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.173, - "date": 1483535201718, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -4.631, - "date": 1483535201718, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1514", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -13.679, - "date": 1483535201718, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1535", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -20.713, - "date": 1483535201718, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1555", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.87, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 2.554, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.314, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1215", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.686, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1236", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 5.385, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1256", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 3.904, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127a", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 16.247, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129d", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 21.457, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12be", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 14.55, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e0", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 17.921, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1300", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 11.911, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1321", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 11.613, - "date": 1483534901296, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1341", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 6.496, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1361", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -9.038, - "date": 1483534901296, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1382", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -10.022, - "date": 1483534901296, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -2.869, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c5", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -3.87, - "date": 1483534901296, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e8", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -6.913, - "date": 1483534901296, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1407", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 2.933, - "date": 1483534901296, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1427", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -0.658, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1448", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.262, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146d", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.936, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148c", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.348, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b0", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -0.207, - "date": 1483534901296, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 0.173, - "date": 1483534901296, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f3", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -4.631, - "date": 1483534901296, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1515", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -13.679, - "date": 1483534901296, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1536", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -20.713, - "date": 1483534901296, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1556", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 0.069, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.87, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 2.554, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.314, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1216", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.686, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1237", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 5.385, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1257", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 3.904, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 16.247, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 21.457, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bf", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 14.55, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 17.921, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1301", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 11.911, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1322", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 11.613, - "date": 1483534601873, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1343", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 6.496, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1362", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -9.038, - "date": 1483534601873, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1383", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -10.022, - "date": 1483534601873, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -2.869, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c6", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -3.87, - "date": 1483534601873, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -6.913, - "date": 1483534601873, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1408", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 2.933, - "date": 1483534601873, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1428", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -0.658, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1449", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.262, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.936, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148d", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.348, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -0.207, - "date": 1483534601873, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 0.173, - "date": 1483534601873, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -4.631, - "date": 1483534601873, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1517", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -13.679, - "date": 1483534601873, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1537", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -20.713, - "date": 1483534601873, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1558", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.207, - "date": 1483534301597, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1192", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.069, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.87, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 2.554, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.314, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1217", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.686, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1238", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 5.385, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1258", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 3.904, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 16.247, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 21.457, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 14.55, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 17.921, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1302", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 11.911, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1323", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 11.613, - "date": 1483534301597, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1342", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 6.496, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1363", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -9.038, - "date": 1483534301597, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1384", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -10.022, - "date": 1483534301597, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -2.869, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -3.87, - "date": 1483534301597, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e9", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -6.913, - "date": 1483534301597, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1409", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 2.933, - "date": 1483534301597, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1429", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -0.658, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.262, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1470", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.936, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.348, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -0.207, - "date": 1483534301597, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.173, - "date": 1483534301597, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -4.631, - "date": 1483534301597, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1516", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -13.679, - "date": 1483534301597, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1538", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -20.713, - "date": 1483534301597, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1557", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.177, - "date": 1483534001427, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1173", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.207, - "date": 1483534001427, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1193", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.069, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.87, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.554, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.314, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1218", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.686, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1239", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 5.385, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1259", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 3.904, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127d", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 16.247, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 21.457, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 14.55, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 17.921, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1303", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 11.911, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1324", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 11.613, - "date": 1483534001427, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1344", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 6.496, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1364", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -9.038, - "date": 1483534001427, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1385", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -10.022, - "date": 1483534001427, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -2.869, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c8", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -3.87, - "date": 1483534001427, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ea", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -6.913, - "date": 1483534001427, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.933, - "date": 1483534001427, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -0.658, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.262, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.936, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.348, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -0.207, - "date": 1483534001427, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.173, - "date": 1483534001427, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f6", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -4.631, - "date": 1483534001427, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1519", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -13.679, - "date": 1483534001427, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1539", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.523, - "date": 1483533701407, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1153", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.177, - "date": 1483533701407, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1174", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.207, - "date": 1483533701407, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1194", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.069, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.87, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.554, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.314, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.686, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 5.385, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 3.904, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 16.247, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a1", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 21.457, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 14.55, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 17.921, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1304", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 11.911, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1325", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 11.613, - "date": 1483533701407, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1345", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 6.496, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1367", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -9.038, - "date": 1483533701407, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1386", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -10.022, - "date": 1483533701407, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a8", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -2.869, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ca", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -3.87, - "date": 1483533701407, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13eb", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -6.913, - "date": 1483533701407, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140b", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.933, - "date": 1483533701407, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142b", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -0.658, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.262, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1471", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.936, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1491", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.348, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -0.207, - "date": 1483533701407, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.173, - "date": 1483533701407, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f7", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -4.631, - "date": 1483533701407, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1518", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.597, - "date": 1483533401451, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1133", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.523, - "date": 1483533401451, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1154", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.177, - "date": 1483533401451, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1175", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.207, - "date": 1483533401451, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1195", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.069, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.87, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.554, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.314, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1219", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.686, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 5.385, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 3.904, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 16.247, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 21.457, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c3", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 14.55, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e5", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 17.921, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1305", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.911, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1326", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.613, - "date": 1483533401451, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1346", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 6.496, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1365", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -9.038, - "date": 1483533401451, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1387", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -10.022, - "date": 1483533401451, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ac", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -2.869, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.87, - "date": 1483533401451, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ec", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -6.913, - "date": 1483533401451, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.933, - "date": 1483533401451, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.658, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.262, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1472", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.936, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1492", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.348, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.207, - "date": 1483533401451, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.173, - "date": 1483533401451, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f8", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.658, - "date": 1483533101684, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1114", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -3.597, - "date": 1483533101684, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1134", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.523, - "date": 1483533101684, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1155", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.177, - "date": 1483533101684, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1176", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 0.207, - "date": 1483533101684, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1196", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 0.069, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b5", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.87, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.554, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.314, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.686, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123c", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 5.385, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 3.904, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1280", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 16.247, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 21.457, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c4", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 14.55, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e6", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 17.921, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1306", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 11.911, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1328", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 11.613, - "date": 1483533101684, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1347", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 6.496, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1368", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -9.038, - "date": 1483533101684, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1388", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -10.022, - "date": 1483533101684, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a9", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -2.869, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cc", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -3.87, - "date": 1483533101684, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ed", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -6.913, - "date": 1483533101684, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140d", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.933, - "date": 1483533101684, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142d", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -0.658, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.262, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1473", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.936, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1493", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.348, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b4", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -0.207, - "date": 1483533101684, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.935, - "date": 1483532801480, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.658, - "date": 1483532801480, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1115", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -3.597, - "date": 1483532801480, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1135", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.523, - "date": 1483532801480, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1156", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.177, - "date": 1483532801480, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1177", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 0.207, - "date": 1483532801480, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1197", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 0.069, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.87, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d9", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.554, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f9", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.314, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.686, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123d", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 5.385, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 3.904, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1282", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 16.247, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a4", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 21.457, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c5", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 14.55, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e7", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 17.921, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1307", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 11.911, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1327", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 11.613, - "date": 1483532801480, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1348", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 6.496, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1366", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -9.038, - "date": 1483532801480, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -10.022, - "date": 1483532801480, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ad", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -2.869, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cb", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -3.87, - "date": 1483532801480, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ee", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -6.913, - "date": 1483532801480, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.933, - "date": 1483532801480, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -0.658, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.262, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1474", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.936, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1494", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.348, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b5", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.417, - "date": 1483532501420, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.935, - "date": 1483532501420, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.658, - "date": 1483532501420, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1116", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.597, - "date": 1483532501420, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1136", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.523, - "date": 1483532501420, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1157", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.177, - "date": 1483532501420, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1178", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.207, - "date": 1483532501420, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1198", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.069, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.87, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11da", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.554, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.314, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.686, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1241", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 5.385, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 3.904, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1281", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 16.247, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a5", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 21.457, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c6", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 14.55, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e8", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 17.921, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1308", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.911, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1329", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.613, - "date": 1483532501420, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1349", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 6.496, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1369", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -9.038, - "date": 1483532501420, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1389", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -10.022, - "date": 1483532501420, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13aa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -2.869, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.87, - "date": 1483532501420, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ef", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -6.913, - "date": 1483532501420, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.933, - "date": 1483532501420, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.658, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1450", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.262, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1475", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.936, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1495", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -1.417, - "date": 1483532201043, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cb", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.417, - "date": 1483532201043, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.935, - "date": 1483532201043, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.658, - "date": 1483532201043, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1118", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.597, - "date": 1483532201043, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1137", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.523, - "date": 1483532201043, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1158", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.177, - "date": 1483532201043, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 0.207, - "date": 1483532201043, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1199", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 0.069, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.87, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11db", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.554, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fb", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.314, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.686, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 5.385, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125f", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 3.904, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1283", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 16.247, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a6", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 21.457, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 14.55, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e9", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 17.921, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1309", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 11.911, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 11.613, - "date": 1483532201043, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134a", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 6.496, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136a", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -9.038, - "date": 1483532201043, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -10.022, - "date": 1483532201043, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ab", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -2.869, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ce", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.87, - "date": 1483532201043, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f2", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -6.913, - "date": 1483532201043, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1410", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.933, - "date": 1483532201043, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1430", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -0.658, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1451", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.262, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1476", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 6.609, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ac", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -1.417, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.417, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.935, - "date": 1483531901044, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.658, - "date": 1483531901044, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1117", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.597, - "date": 1483531901044, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1138", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.523, - "date": 1483531901044, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1159", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.177, - "date": 1483531901044, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1179", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 0.207, - "date": 1483531901044, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 0.069, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b9", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.87, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11dc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.554, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.314, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1221", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.686, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 5.385, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1260", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 3.904, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1284", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 16.247, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 21.457, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c8", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 14.55, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ea", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 17.921, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 11.911, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 11.613, - "date": 1483531901044, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 6.496, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -9.038, - "date": 1483531901044, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -10.022, - "date": 1483531901044, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ae", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -2.869, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cf", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.87, - "date": 1483531901044, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -6.913, - "date": 1483531901044, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1411", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.933, - "date": 1483531901044, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1431", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -0.658, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1452", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.069, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108d", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 6.609, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ad", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -1.417, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.417, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d6", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.935, - "date": 1483531601420, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f6", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.658, - "date": 1483531601420, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1119", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.597, - "date": 1483531601420, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1139", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.523, - "date": 1483531601420, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115a", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.177, - "date": 1483531601420, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117a", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 0.207, - "date": 1483531601420, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119b", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 0.069, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11ba", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.87, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11dd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.554, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.314, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121f", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.686, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1240", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 5.385, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1261", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 3.904, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1285", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 16.247, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a8", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 21.457, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c9", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 14.55, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12eb", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 17.921, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130b", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 11.911, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 11.613, - "date": 1483531601420, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 6.496, - "date": 1483531601420, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -9.038, - "date": 1483531601420, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138d", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -10.022, - "date": 1483531601420, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13af", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -2.869, - "date": 1483531601420, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d0", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.87, - "date": 1483531601420, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f1", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -6.913, - "date": 1483531601420, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1412", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.933, - "date": 1483531601420, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1432", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.331, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.069, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108e", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 6.609, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ae", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -1.417, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10ce", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.417, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d8", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.935, - "date": 1483531300848, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f8", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.658, - "date": 1483531300848, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111a", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.597, - "date": 1483531300848, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113a", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.523, - "date": 1483531300848, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115b", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.177, - "date": 1483531300848, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 0.207, - "date": 1483531300848, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 0.069, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bb", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.87, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11de", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.554, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fe", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.314, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1220", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.686, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1242", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 5.385, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1262", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 3.904, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1286", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 16.247, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a9", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 21.457, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ca", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 14.55, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ec", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 17.921, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 11.911, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 11.613, - "date": 1483531300848, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134e", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 6.496, - "date": 1483531300848, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -9.038, - "date": 1483531300848, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138f", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -10.022, - "date": 1483531300848, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b0", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -2.869, - "date": 1483531300848, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d1", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.87, - "date": 1483531300848, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f3", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -6.913, - "date": 1483531300848, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1413", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.516, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.331, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.069, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 6.609, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10af", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -1.417, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cf", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.417, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.935, - "date": 1483531002068, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.658, - "date": 1483531002068, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.597, - "date": 1483531002068, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.523, - "date": 1483531002068, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.177, - "date": 1483531002068, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 0.207, - "date": 1483531002068, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 0.069, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bc", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.87, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11df", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.554, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11ff", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.314, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1222", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.686, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1243", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 5.385, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1263", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 3.904, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1287", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 16.247, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12aa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 21.457, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cb", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 14.55, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ed", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 17.921, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 11.911, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 11.613, - "date": 1483531002068, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 6.496, - "date": 1483531002068, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -9.038, - "date": 1483531002068, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -10.022, - "date": 1483531002068, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -2.869, - "date": 1483531002068, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.87, - "date": 1483531002068, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -1.417, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e102e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.516, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.331, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.069, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1090", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 6.609, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10b0", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.417, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10da", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.935, - "date": 1483530701141, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fa", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.658, - "date": 1483530701141, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111d", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.597, - "date": 1483530701141, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113c", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.523, - "date": 1483530701141, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115d", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.177, - "date": 1483530701141, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 0.207, - "date": 1483530701141, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 0.069, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11be", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.87, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e0", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.554, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1200", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.314, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1223", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.686, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1245", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 5.385, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1264", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 3.904, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1288", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 16.247, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ab", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 21.457, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cc", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 14.55, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ee", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 17.921, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 11.911, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 11.613, - "date": 1483530701141, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1350", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 6.496, - "date": 1483530701141, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -9.038, - "date": 1483530701141, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1390", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -10.022, - "date": 1483530701141, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b3", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -2.869, - "date": 1483530701141, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d3", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -2.218, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e100e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -1.417, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e102f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.516, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.331, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1070", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.069, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1091", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 6.609, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.417, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10db", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.935, - "date": 1483530401170, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fb", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.658, - "date": 1483530401170, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.597, - "date": 1483530401170, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.523, - "date": 1483530401170, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.177, - "date": 1483530401170, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 0.207, - "date": 1483530401170, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 0.069, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.87, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.554, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1201", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.314, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1224", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.686, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1244", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 5.385, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1265", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 3.904, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1289", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 16.247, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ac", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 21.457, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 14.55, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ef", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 17.921, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 11.911, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1330", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 11.613, - "date": 1483530401170, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 6.496, - "date": 1483530401170, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1370", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -9.038, - "date": 1483530401170, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1391", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -10.022, - "date": 1483530401170, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -0.207, - "date": 1483530102052, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0fef", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -2.218, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e100f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -1.417, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1030", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.516, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1051", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.331, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1071", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.069, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1092", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 6.609, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.417, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10dc", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.935, - "date": 1483530102052, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fc", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.658, - "date": 1483530102052, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.597, - "date": 1483530102052, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.523, - "date": 1483530102052, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.177, - "date": 1483530102052, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1180", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 0.207, - "date": 1483530102052, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a0", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 0.069, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bf", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.87, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.554, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1202", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.314, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1225", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.686, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1246", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 5.385, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1266", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 3.904, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 16.247, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ad", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 21.457, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ce", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 14.55, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f0", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 17.921, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1310", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 11.911, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1331", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 11.613, - "date": 1483530102052, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1351", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 6.496, - "date": 1483530102052, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1371", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -9.038, - "date": 1483530102052, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1392", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -2.237, - "date": 1483529802048, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -0.207, - "date": 1483529802048, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff0", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -2.218, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1010", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -1.417, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1031", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.516, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1050", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.331, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1072", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.069, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1093", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 6.609, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.417, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10dd", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.935, - "date": 1483529802048, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fd", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.658, - "date": 1483529802048, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.597, - "date": 1483529802048, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113f", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.523, - "date": 1483529802048, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1160", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.177, - "date": 1483529802048, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1182", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 0.207, - "date": 1483529802048, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 0.069, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c0", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.87, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.554, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1203", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.314, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1226", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.686, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1247", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 5.385, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1267", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 3.904, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 16.247, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ae", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 21.457, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cf", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 14.55, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 17.921, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1311", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 11.911, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1332", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 11.613, - "date": 1483529802048, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1353", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 6.496, - "date": 1483529802048, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1372", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -4.355, - "date": 1483529500848, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -2.237, - "date": 1483529500848, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -0.207, - "date": 1483529500848, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -2.218, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1011", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -1.417, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1032", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.516, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1052", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.331, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1073", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.069, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1094", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 6.609, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.417, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10df", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.935, - "date": 1483529500848, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fe", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.658, - "date": 1483529500848, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1120", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.597, - "date": 1483529500848, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1140", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.523, - "date": 1483529500848, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1161", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.177, - "date": 1483529500848, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1181", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 0.207, - "date": 1483529500848, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 0.069, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.87, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.554, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1204", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.314, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1229", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.686, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1248", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 5.385, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1268", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 3.904, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 16.247, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12af", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 21.457, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 14.55, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 17.921, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1312", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 11.911, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1333", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 11.613, - "date": 1483529500848, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1352", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.002, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdbf3dbab07be5f2e0f93", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -4.355, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.237, - "date": 1483529200876, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.207, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.218, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1012", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -1.417, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1033", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.516, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1053", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.331, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1074", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.069, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1095", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 6.609, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b5", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.417, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10de", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.935, - "date": 1483529200876, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10ff", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.658, - "date": 1483529200876, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1121", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.597, - "date": 1483529200876, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1141", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.523, - "date": 1483529200876, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1162", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.177, - "date": 1483529200876, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1183", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.207, - "date": 1483529200876, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.069, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.87, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e5", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.554, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1205", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.314, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1228", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.686, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1249", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 5.385, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1269", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 3.904, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128d", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 16.247, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12b0", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 21.457, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 14.55, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 17.921, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1313", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.911, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1334", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 4.079, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdac7dbab07be5f2e0f6e", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.002, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdbf3dbab07be5f2e0f94", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -4.355, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -2.237, - "date": 1483528900865, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -0.207, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff3", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -2.218, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1013", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -1.417, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1034", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.516, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1054", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.331, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1075", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.069, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce553dbab07be5f2e10a1", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 6.609, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b6", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.417, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10e0", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.935, - "date": 1483528900865, - "rssi": 100, - "_id": "586cea04dbab07be5f2e1100", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.658, - "date": 1483528900865, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1122", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.597, - "date": 1483528900865, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1142", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.523, - "date": 1483528900865, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1163", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.177, - "date": 1483528900865, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1184", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 0.207, - "date": 1483528900865, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 0.069, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c3", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.87, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e7", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.554, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1206", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.314, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1227", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.686, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e124a", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 5.385, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e126a", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 3.904, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128e", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 16.247, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12b1", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 21.457, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d2", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 14.55, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 17.921, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1314", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 161184, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:16:40.916000+01:00", - "sgv": 118, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163488, - "delta": 1.071, - "date": 1483528600916, - "rssi": 100, - "_id": "586cd99cdbab07be5f2e0f4f", - "type": "sgv", - "glucose": 118 - }, - { - "filtered": 161184, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:16:40.916000+01:00", - "sgv": 118, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163488, - "delta": 4.079, - "date": 1483528600916, - "rssi": 100, - "_id": "586cdac7dbab07be5f2e0f6f", - "type": "sgv", - "glucose": 118 - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/cgm/ns-glucose.json b/app/src/main/java/info/nightscout/sampleData/cgm/ns-glucose.json deleted file mode 100644 index c4c0130106..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/cgm/ns-glucose.json +++ /dev/null @@ -1,15002 +0,0 @@ -[ - { - "filtered": 217664, - "direction": "DoubleDown", - "noise": 1, - "dateString": "2017-01-04T16:36:41.224000+01:00", - "sgv": 148, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 191424, - "delta": -20.713, - "date": 1483544201224, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153b", - "type": "sgv", - "glucose": 148 - }, - { - "filtered": 226528, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T16:31:41.395000+01:00", - "sgv": 169, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 210592, - "delta": -13.679, - "date": 1483543901395, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151c", - "type": "sgv", - "glucose": 169 - }, - { - "filtered": 226528, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T16:31:41.395000+01:00", - "sgv": 169, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 210592, - "delta": -20.713, - "date": 1483543901395, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153c", - "type": "sgv", - "glucose": 169 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -4.631, - "date": 1483543601244, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fc", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -13.679, - "date": 1483543601244, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151d", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -20.713, - "date": 1483543601244, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153d", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": 0.173, - "date": 1483543001221, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14db", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -4.631, - "date": 1483543001221, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fd", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -13.679, - "date": 1483543001221, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151e", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -20.713, - "date": 1483543001221, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153e", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -0.207, - "date": 1483542701253, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bb", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": 0.173, - "date": 1483542701253, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14dc", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -4.631, - "date": 1483542701253, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fe", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -13.679, - "date": 1483542701253, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151f", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -20.713, - "date": 1483542701253, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153f", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": 1.348, - "date": 1483542401161, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149a", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -0.207, - "date": 1483542401161, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bc", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": 0.173, - "date": 1483542401161, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14dd", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -4.631, - "date": 1483542401161, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14ff", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -13.679, - "date": 1483542401161, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1520", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -20.713, - "date": 1483542401161, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1540", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 1.936, - "date": 1483542101177, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1478", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 1.348, - "date": 1483542101177, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149b", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -0.207, - "date": 1483542101177, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bd", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 0.173, - "date": 1483542101177, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14de", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -4.631, - "date": 1483542101177, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1500", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -13.679, - "date": 1483542101177, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1521", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -20.713, - "date": 1483542101177, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1541", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.262, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1459", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.936, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1479", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.348, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149c", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -0.207, - "date": 1483541801241, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14be", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 0.173, - "date": 1483541801241, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14df", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -4.631, - "date": 1483541801241, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1501", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -13.679, - "date": 1483541801241, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1522", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -20.713, - "date": 1483541801241, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1542", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -0.658, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1435", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.262, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145a", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.936, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147b", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.348, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149d", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -0.207, - "date": 1483541201285, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bf", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 0.173, - "date": 1483541201285, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e0", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -4.631, - "date": 1483541201285, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1502", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -13.679, - "date": 1483541201285, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1524", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -20.713, - "date": 1483541201285, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1543", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 2.933, - "date": 1483540901755, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1415", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -0.658, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1436", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.262, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145b", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.936, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147a", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.348, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149e", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -0.207, - "date": 1483540901755, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c0", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 0.173, - "date": 1483540901755, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e1", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -4.631, - "date": 1483540901755, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1503", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -13.679, - "date": 1483540901755, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1523", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -20.713, - "date": 1483540901755, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1544", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -6.913, - "date": 1483540601273, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f6", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 2.933, - "date": 1483540601273, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1416", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -0.658, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1437", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.262, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145c", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.936, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147c", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.348, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149f", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -0.207, - "date": 1483540601273, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c1", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 0.173, - "date": 1483540601273, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e2", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -4.631, - "date": 1483540601273, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1504", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -13.679, - "date": 1483540601273, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1525", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -20.713, - "date": 1483540601273, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1545", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -3.87, - "date": 1483540301318, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d7", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -6.913, - "date": 1483540301318, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f7", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 2.933, - "date": 1483540301318, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1417", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -0.658, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1438", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.262, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145d", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.936, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147d", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.348, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a0", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -0.207, - "date": 1483540301318, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c2", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 0.173, - "date": 1483540301318, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e3", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -4.631, - "date": 1483540301318, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1505", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -13.679, - "date": 1483540301318, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1526", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -20.713, - "date": 1483540301318, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1546", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -2.869, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b6", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -3.87, - "date": 1483540001288, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d8", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -6.913, - "date": 1483540001288, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f9", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 2.933, - "date": 1483540001288, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1418", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -0.658, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1439", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.262, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145e", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.936, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147e", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.348, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a1", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -0.207, - "date": 1483540001288, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c3", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 0.173, - "date": 1483540001288, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e4", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -4.631, - "date": 1483540001288, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1506", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -13.679, - "date": 1483540001288, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1527", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -20.713, - "date": 1483540001288, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1547", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -10.022, - "date": 1483539701330, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1396", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -2.869, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ba", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -3.87, - "date": 1483539701330, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d9", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -6.913, - "date": 1483539701330, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f8", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 2.933, - "date": 1483539701330, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1419", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -0.658, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143a", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.262, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145f", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.936, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147f", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.348, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a2", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -0.207, - "date": 1483539701330, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c4", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 0.173, - "date": 1483539701330, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e5", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -4.631, - "date": 1483539701330, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1507", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -13.679, - "date": 1483539701330, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1528", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -20.713, - "date": 1483539701330, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1548", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -9.038, - "date": 1483539101287, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1375", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -10.022, - "date": 1483539101287, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1397", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -2.869, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b7", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -3.87, - "date": 1483539101287, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13da", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -6.913, - "date": 1483539101287, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fa", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 2.933, - "date": 1483539101287, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141a", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -0.658, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143b", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.262, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1460", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.936, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1480", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.348, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a3", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -0.207, - "date": 1483539101287, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c5", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 0.173, - "date": 1483539101287, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e6", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -4.631, - "date": 1483539101287, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1508", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -13.679, - "date": 1483539101287, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1529", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -20.713, - "date": 1483539101287, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1549", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 6.496, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1355", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -9.038, - "date": 1483538501333, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1376", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -10.022, - "date": 1483538501333, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1398", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -2.869, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b8", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -3.87, - "date": 1483538501333, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13db", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -6.913, - "date": 1483538501333, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fb", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 2.933, - "date": 1483538501333, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141b", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -0.658, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143c", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.262, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1461", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.936, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1481", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.348, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a4", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -0.207, - "date": 1483538501333, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c6", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 0.173, - "date": 1483538501333, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e7", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -4.631, - "date": 1483538501333, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1509", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -13.679, - "date": 1483538501333, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152a", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -20.713, - "date": 1483538501333, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154a", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 11.613, - "date": 1483538201284, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1336", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 6.496, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1356", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -9.038, - "date": 1483538201284, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1377", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -10.022, - "date": 1483538201284, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1399", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -2.869, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b9", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -3.87, - "date": 1483538201284, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13dc", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -6.913, - "date": 1483538201284, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fc", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 2.933, - "date": 1483538201284, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141c", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -0.658, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143d", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.262, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1462", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.936, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1482", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.348, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a5", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -0.207, - "date": 1483538201284, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c7", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 0.173, - "date": 1483538201284, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e8", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -4.631, - "date": 1483538201284, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150a", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -13.679, - "date": 1483538201284, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152b", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -20.713, - "date": 1483538201284, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154b", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 11.911, - "date": 1483537901316, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1317", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 11.613, - "date": 1483537901316, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1337", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 6.496, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1357", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -9.038, - "date": 1483537901316, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1378", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -10.022, - "date": 1483537901316, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139a", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -2.869, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bb", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -3.87, - "date": 1483537901316, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13de", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -6.913, - "date": 1483537901316, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fd", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 2.933, - "date": 1483537901316, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141d", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -0.658, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143e", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.262, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1463", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.936, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1483", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.348, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a6", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -0.207, - "date": 1483537901316, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c8", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 0.173, - "date": 1483537901316, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e9", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -4.631, - "date": 1483537901316, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150b", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -13.679, - "date": 1483537901316, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152c", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -20.713, - "date": 1483537901316, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154c", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 17.921, - "date": 1483537601014, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f7", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 11.911, - "date": 1483537601014, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1318", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 11.613, - "date": 1483537601014, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1338", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 6.496, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1358", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -9.038, - "date": 1483537601014, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1379", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -10.022, - "date": 1483537601014, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139b", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -2.869, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bd", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -3.87, - "date": 1483537601014, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13dd", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -6.913, - "date": 1483537601014, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fe", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 2.933, - "date": 1483537601014, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141e", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -0.658, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143f", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.262, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1464", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.936, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1484", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.348, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a7", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -0.207, - "date": 1483537601014, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c9", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 0.173, - "date": 1483537601014, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ea", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -4.631, - "date": 1483537601014, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150c", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -13.679, - "date": 1483537601014, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152d", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -20.713, - "date": 1483537601014, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154d", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 14.55, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12d8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 17.921, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 11.911, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1319", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 11.613, - "date": 1483537301326, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1339", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 6.496, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1359", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -9.038, - "date": 1483537301326, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137a", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -10.022, - "date": 1483537301326, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139c", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -2.869, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bc", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -3.87, - "date": 1483537301326, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13df", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -6.913, - "date": 1483537301326, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13ff", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 2.933, - "date": 1483537301326, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1420", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -0.658, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1440", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.262, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1465", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.936, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1485", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.348, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -0.207, - "date": 1483537301326, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14ca", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 0.173, - "date": 1483537301326, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14eb", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -4.631, - "date": 1483537301326, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150d", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -13.679, - "date": 1483537301326, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152e", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -20.713, - "date": 1483537301326, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154e", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 21.457, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 14.55, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12d9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 17.921, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 11.911, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 11.613, - "date": 1483537001325, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 6.496, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -9.038, - "date": 1483537001325, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137b", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -10.022, - "date": 1483537001325, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139d", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -2.869, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13be", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -3.87, - "date": 1483537001325, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e0", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -6.913, - "date": 1483537001325, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1400", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 2.933, - "date": 1483537001325, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -0.658, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1441", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.262, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1466", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.936, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1486", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.348, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14aa", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -0.207, - "date": 1483537001325, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cb", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 0.173, - "date": 1483537001325, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ec", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -4.631, - "date": 1483537001325, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150e", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -13.679, - "date": 1483537001325, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -20.713, - "date": 1483537001325, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 16.247, - "date": 1483536701263, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1297", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 21.457, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ba", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 14.55, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12da", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 17.921, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fa", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 11.911, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 11.613, - "date": 1483536701263, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 6.496, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -9.038, - "date": 1483536701263, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137c", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -10.022, - "date": 1483536701263, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139e", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -2.869, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bf", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -3.87, - "date": 1483536701263, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e1", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -6.913, - "date": 1483536701263, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1401", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 2.933, - "date": 1483536701263, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1421", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -0.658, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1443", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.262, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1467", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.936, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1490", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.348, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a9", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -0.207, - "date": 1483536701263, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cc", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 0.173, - "date": 1483536701263, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ed", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -4.631, - "date": 1483536701263, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150f", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -13.679, - "date": 1483536701263, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1530", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -20.713, - "date": 1483536701263, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1551", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 3.904, - "date": 1483536401340, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1275", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 16.247, - "date": 1483536401340, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1298", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 21.457, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b8", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 14.55, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12db", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 17.921, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fb", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 11.911, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 11.613, - "date": 1483536401340, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 6.496, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -9.038, - "date": 1483536401340, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137d", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -10.022, - "date": 1483536401340, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139f", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -2.869, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c0", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -3.87, - "date": 1483536401340, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e3", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -6.913, - "date": 1483536401340, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1402", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 2.933, - "date": 1483536401340, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1422", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -0.658, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1442", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.262, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1468", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.936, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148a", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.348, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ab", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -0.207, - "date": 1483536401340, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cd", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 0.173, - "date": 1483536401340, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ee", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -4.631, - "date": 1483536401340, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1510", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -13.679, - "date": 1483536401340, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1531", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -20.713, - "date": 1483536401340, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1550", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 5.385, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1252", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 3.904, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1276", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 16.247, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1299", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 21.457, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b7", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 14.55, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12dc", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 17.921, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fc", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 11.911, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 11.613, - "date": 1483536101258, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 6.496, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -9.038, - "date": 1483536101258, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137e", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -10.022, - "date": 1483536101258, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a6", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -2.869, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c1", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -3.87, - "date": 1483536101258, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e2", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -6.913, - "date": 1483536101258, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1403", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 2.933, - "date": 1483536101258, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1423", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -0.658, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1444", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.262, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146b", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.936, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1487", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.348, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ad", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -0.207, - "date": 1483536101258, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14ce", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 0.173, - "date": 1483536101258, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ef", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -4.631, - "date": 1483536101258, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1512", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -13.679, - "date": 1483536101258, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1532", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -20.713, - "date": 1483536101258, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1552", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.686, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1233", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 5.385, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1253", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 3.904, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1277", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 16.247, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129a", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 21.457, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bb", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 14.55, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12dd", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 17.921, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fd", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 11.911, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 11.613, - "date": 1483535802855, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 6.496, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -9.038, - "date": 1483535802855, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137f", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -10.022, - "date": 1483535802855, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a3", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -2.869, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c2", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -3.87, - "date": 1483535802855, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e4", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -6.913, - "date": 1483535802855, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1404", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 2.933, - "date": 1483535802855, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1424", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -0.658, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1445", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.262, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1469", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.936, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1488", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.348, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ac", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -0.207, - "date": 1483535802855, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cf", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 0.173, - "date": 1483535802855, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f0", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -4.631, - "date": 1483535802855, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1511", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -13.679, - "date": 1483535802855, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1533", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -20.713, - "date": 1483535802855, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1553", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.314, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1213", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.686, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1234", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 5.385, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1254", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 3.904, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1278", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 16.247, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129b", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 21.457, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bc", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 14.55, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12de", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 17.921, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fe", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 11.911, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 11.613, - "date": 1483535501468, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 6.496, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -9.038, - "date": 1483535501468, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1380", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -10.022, - "date": 1483535501468, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a0", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -2.869, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c4", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -3.87, - "date": 1483535501468, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e5", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -6.913, - "date": 1483535501468, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1405", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 2.933, - "date": 1483535501468, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1426", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -0.658, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1446", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.262, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146a", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.936, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1489", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.348, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14af", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -0.207, - "date": 1483535501468, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d0", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 0.173, - "date": 1483535501468, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f1", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -4.631, - "date": 1483535501468, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1513", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -13.679, - "date": 1483535501468, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1534", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -20.713, - "date": 1483535501468, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1554", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.554, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.314, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1214", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.686, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1235", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 5.385, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1255", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 3.904, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1279", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 16.247, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129c", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 21.457, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bd", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 14.55, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12df", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 17.921, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12ff", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.911, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1320", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.613, - "date": 1483535201718, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1340", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 6.496, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1360", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -9.038, - "date": 1483535201718, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1381", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -10.022, - "date": 1483535201718, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.869, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.87, - "date": 1483535201718, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e6", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -6.913, - "date": 1483535201718, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1406", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.933, - "date": 1483535201718, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1425", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.658, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1447", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.262, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146c", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.936, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148b", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.348, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ae", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.207, - "date": 1483535201718, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.173, - "date": 1483535201718, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -4.631, - "date": 1483535201718, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1514", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -13.679, - "date": 1483535201718, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1535", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -20.713, - "date": 1483535201718, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1555", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.87, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 2.554, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.314, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1215", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.686, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1236", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 5.385, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1256", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 3.904, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127a", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 16.247, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129d", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 21.457, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12be", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 14.55, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e0", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 17.921, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1300", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 11.911, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1321", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 11.613, - "date": 1483534901296, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1341", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 6.496, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1361", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -9.038, - "date": 1483534901296, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1382", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -10.022, - "date": 1483534901296, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -2.869, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c5", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -3.87, - "date": 1483534901296, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e8", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -6.913, - "date": 1483534901296, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1407", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 2.933, - "date": 1483534901296, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1427", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -0.658, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1448", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.262, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146d", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.936, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148c", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.348, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b0", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -0.207, - "date": 1483534901296, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 0.173, - "date": 1483534901296, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f3", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -4.631, - "date": 1483534901296, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1515", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -13.679, - "date": 1483534901296, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1536", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -20.713, - "date": 1483534901296, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1556", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 0.069, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.87, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 2.554, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.314, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1216", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.686, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1237", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 5.385, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1257", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 3.904, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 16.247, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 21.457, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bf", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 14.55, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 17.921, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1301", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 11.911, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1322", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 11.613, - "date": 1483534601873, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1343", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 6.496, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1362", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -9.038, - "date": 1483534601873, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1383", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -10.022, - "date": 1483534601873, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -2.869, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c6", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -3.87, - "date": 1483534601873, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -6.913, - "date": 1483534601873, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1408", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 2.933, - "date": 1483534601873, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1428", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -0.658, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1449", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.262, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.936, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148d", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.348, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -0.207, - "date": 1483534601873, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 0.173, - "date": 1483534601873, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -4.631, - "date": 1483534601873, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1517", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -13.679, - "date": 1483534601873, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1537", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -20.713, - "date": 1483534601873, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1558", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.207, - "date": 1483534301597, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1192", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.069, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.87, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 2.554, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.314, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1217", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.686, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1238", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 5.385, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1258", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 3.904, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 16.247, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 21.457, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 14.55, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 17.921, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1302", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 11.911, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1323", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 11.613, - "date": 1483534301597, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1342", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 6.496, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1363", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -9.038, - "date": 1483534301597, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1384", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -10.022, - "date": 1483534301597, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -2.869, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -3.87, - "date": 1483534301597, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e9", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -6.913, - "date": 1483534301597, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1409", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 2.933, - "date": 1483534301597, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1429", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -0.658, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.262, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1470", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.936, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.348, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -0.207, - "date": 1483534301597, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.173, - "date": 1483534301597, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -4.631, - "date": 1483534301597, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1516", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -13.679, - "date": 1483534301597, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1538", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -20.713, - "date": 1483534301597, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1557", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.177, - "date": 1483534001427, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1173", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.207, - "date": 1483534001427, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1193", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.069, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.87, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.554, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.314, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1218", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.686, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1239", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 5.385, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1259", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 3.904, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127d", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 16.247, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 21.457, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 14.55, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 17.921, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1303", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 11.911, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1324", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 11.613, - "date": 1483534001427, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1344", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 6.496, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1364", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -9.038, - "date": 1483534001427, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1385", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -10.022, - "date": 1483534001427, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -2.869, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c8", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -3.87, - "date": 1483534001427, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ea", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -6.913, - "date": 1483534001427, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.933, - "date": 1483534001427, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -0.658, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.262, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.936, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.348, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -0.207, - "date": 1483534001427, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.173, - "date": 1483534001427, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f6", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -4.631, - "date": 1483534001427, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1519", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -13.679, - "date": 1483534001427, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1539", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.523, - "date": 1483533701407, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1153", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.177, - "date": 1483533701407, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1174", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.207, - "date": 1483533701407, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1194", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.069, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.87, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.554, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.314, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.686, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 5.385, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 3.904, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 16.247, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a1", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 21.457, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 14.55, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 17.921, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1304", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 11.911, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1325", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 11.613, - "date": 1483533701407, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1345", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 6.496, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1367", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -9.038, - "date": 1483533701407, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1386", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -10.022, - "date": 1483533701407, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a8", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -2.869, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ca", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -3.87, - "date": 1483533701407, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13eb", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -6.913, - "date": 1483533701407, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140b", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.933, - "date": 1483533701407, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142b", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -0.658, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.262, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1471", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.936, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1491", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.348, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -0.207, - "date": 1483533701407, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.173, - "date": 1483533701407, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f7", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -4.631, - "date": 1483533701407, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1518", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.597, - "date": 1483533401451, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1133", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.523, - "date": 1483533401451, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1154", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.177, - "date": 1483533401451, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1175", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.207, - "date": 1483533401451, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1195", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.069, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.87, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.554, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.314, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1219", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.686, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 5.385, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 3.904, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 16.247, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 21.457, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c3", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 14.55, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e5", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 17.921, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1305", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.911, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1326", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.613, - "date": 1483533401451, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1346", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 6.496, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1365", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -9.038, - "date": 1483533401451, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1387", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -10.022, - "date": 1483533401451, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ac", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -2.869, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.87, - "date": 1483533401451, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ec", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -6.913, - "date": 1483533401451, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.933, - "date": 1483533401451, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.658, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.262, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1472", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.936, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1492", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.348, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.207, - "date": 1483533401451, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.173, - "date": 1483533401451, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f8", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.658, - "date": 1483533101684, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1114", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -3.597, - "date": 1483533101684, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1134", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.523, - "date": 1483533101684, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1155", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.177, - "date": 1483533101684, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1176", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 0.207, - "date": 1483533101684, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1196", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 0.069, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b5", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.87, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.554, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.314, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.686, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123c", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 5.385, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 3.904, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1280", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 16.247, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 21.457, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c4", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 14.55, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e6", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 17.921, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1306", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 11.911, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1328", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 11.613, - "date": 1483533101684, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1347", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 6.496, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1368", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -9.038, - "date": 1483533101684, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1388", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -10.022, - "date": 1483533101684, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a9", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -2.869, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cc", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -3.87, - "date": 1483533101684, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ed", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -6.913, - "date": 1483533101684, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140d", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.933, - "date": 1483533101684, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142d", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -0.658, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.262, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1473", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.936, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1493", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.348, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b4", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -0.207, - "date": 1483533101684, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.935, - "date": 1483532801480, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.658, - "date": 1483532801480, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1115", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -3.597, - "date": 1483532801480, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1135", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.523, - "date": 1483532801480, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1156", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.177, - "date": 1483532801480, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1177", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 0.207, - "date": 1483532801480, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1197", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 0.069, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.87, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d9", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.554, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f9", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.314, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.686, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123d", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 5.385, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 3.904, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1282", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 16.247, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a4", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 21.457, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c5", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 14.55, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e7", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 17.921, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1307", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 11.911, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1327", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 11.613, - "date": 1483532801480, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1348", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 6.496, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1366", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -9.038, - "date": 1483532801480, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -10.022, - "date": 1483532801480, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ad", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -2.869, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cb", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -3.87, - "date": 1483532801480, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ee", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -6.913, - "date": 1483532801480, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.933, - "date": 1483532801480, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -0.658, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.262, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1474", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.936, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1494", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.348, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b5", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.417, - "date": 1483532501420, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.935, - "date": 1483532501420, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.658, - "date": 1483532501420, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1116", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.597, - "date": 1483532501420, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1136", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.523, - "date": 1483532501420, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1157", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.177, - "date": 1483532501420, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1178", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.207, - "date": 1483532501420, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1198", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.069, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.87, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11da", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.554, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.314, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.686, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1241", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 5.385, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 3.904, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1281", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 16.247, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a5", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 21.457, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c6", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 14.55, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e8", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 17.921, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1308", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.911, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1329", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.613, - "date": 1483532501420, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1349", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 6.496, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1369", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -9.038, - "date": 1483532501420, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1389", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -10.022, - "date": 1483532501420, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13aa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -2.869, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.87, - "date": 1483532501420, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ef", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -6.913, - "date": 1483532501420, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.933, - "date": 1483532501420, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.658, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1450", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.262, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1475", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.936, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1495", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -1.417, - "date": 1483532201043, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cb", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.417, - "date": 1483532201043, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.935, - "date": 1483532201043, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.658, - "date": 1483532201043, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1118", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.597, - "date": 1483532201043, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1137", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.523, - "date": 1483532201043, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1158", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.177, - "date": 1483532201043, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 0.207, - "date": 1483532201043, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1199", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 0.069, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.87, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11db", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.554, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fb", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.314, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.686, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 5.385, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125f", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 3.904, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1283", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 16.247, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a6", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 21.457, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 14.55, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e9", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 17.921, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1309", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 11.911, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 11.613, - "date": 1483532201043, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134a", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 6.496, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136a", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -9.038, - "date": 1483532201043, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -10.022, - "date": 1483532201043, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ab", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -2.869, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ce", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.87, - "date": 1483532201043, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f2", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -6.913, - "date": 1483532201043, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1410", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.933, - "date": 1483532201043, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1430", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -0.658, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1451", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.262, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1476", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 6.609, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ac", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -1.417, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.417, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.935, - "date": 1483531901044, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.658, - "date": 1483531901044, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1117", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.597, - "date": 1483531901044, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1138", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.523, - "date": 1483531901044, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1159", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.177, - "date": 1483531901044, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1179", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 0.207, - "date": 1483531901044, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 0.069, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b9", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.87, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11dc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.554, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.314, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1221", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.686, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 5.385, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1260", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 3.904, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1284", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 16.247, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 21.457, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c8", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 14.55, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ea", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 17.921, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 11.911, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 11.613, - "date": 1483531901044, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 6.496, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -9.038, - "date": 1483531901044, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -10.022, - "date": 1483531901044, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ae", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -2.869, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cf", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.87, - "date": 1483531901044, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -6.913, - "date": 1483531901044, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1411", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.933, - "date": 1483531901044, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1431", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -0.658, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1452", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.069, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108d", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 6.609, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ad", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -1.417, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.417, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d6", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.935, - "date": 1483531601420, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f6", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.658, - "date": 1483531601420, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1119", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.597, - "date": 1483531601420, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1139", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.523, - "date": 1483531601420, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115a", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.177, - "date": 1483531601420, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117a", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 0.207, - "date": 1483531601420, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119b", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 0.069, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11ba", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.87, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11dd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.554, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.314, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121f", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.686, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1240", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 5.385, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1261", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 3.904, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1285", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 16.247, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a8", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 21.457, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c9", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 14.55, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12eb", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 17.921, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130b", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 11.911, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 11.613, - "date": 1483531601420, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 6.496, - "date": 1483531601420, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -9.038, - "date": 1483531601420, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138d", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -10.022, - "date": 1483531601420, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13af", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -2.869, - "date": 1483531601420, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d0", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.87, - "date": 1483531601420, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f1", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -6.913, - "date": 1483531601420, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1412", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.933, - "date": 1483531601420, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1432", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.331, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.069, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108e", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 6.609, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ae", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -1.417, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10ce", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.417, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d8", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.935, - "date": 1483531300848, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f8", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.658, - "date": 1483531300848, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111a", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.597, - "date": 1483531300848, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113a", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.523, - "date": 1483531300848, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115b", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.177, - "date": 1483531300848, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 0.207, - "date": 1483531300848, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 0.069, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bb", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.87, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11de", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.554, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fe", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.314, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1220", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.686, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1242", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 5.385, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1262", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 3.904, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1286", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 16.247, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a9", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 21.457, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ca", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 14.55, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ec", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 17.921, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 11.911, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 11.613, - "date": 1483531300848, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134e", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 6.496, - "date": 1483531300848, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -9.038, - "date": 1483531300848, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138f", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -10.022, - "date": 1483531300848, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b0", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -2.869, - "date": 1483531300848, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d1", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.87, - "date": 1483531300848, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f3", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -6.913, - "date": 1483531300848, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1413", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.516, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.331, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.069, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 6.609, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10af", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -1.417, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cf", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.417, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.935, - "date": 1483531002068, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.658, - "date": 1483531002068, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.597, - "date": 1483531002068, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.523, - "date": 1483531002068, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.177, - "date": 1483531002068, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 0.207, - "date": 1483531002068, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 0.069, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bc", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.87, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11df", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.554, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11ff", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.314, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1222", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.686, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1243", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 5.385, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1263", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 3.904, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1287", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 16.247, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12aa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 21.457, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cb", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 14.55, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ed", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 17.921, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 11.911, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 11.613, - "date": 1483531002068, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 6.496, - "date": 1483531002068, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -9.038, - "date": 1483531002068, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -10.022, - "date": 1483531002068, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -2.869, - "date": 1483531002068, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.87, - "date": 1483531002068, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -1.417, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e102e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.516, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.331, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.069, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1090", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 6.609, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10b0", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.417, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10da", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.935, - "date": 1483530701141, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fa", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.658, - "date": 1483530701141, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111d", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.597, - "date": 1483530701141, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113c", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.523, - "date": 1483530701141, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115d", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.177, - "date": 1483530701141, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 0.207, - "date": 1483530701141, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 0.069, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11be", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.87, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e0", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.554, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1200", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.314, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1223", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.686, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1245", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 5.385, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1264", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 3.904, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1288", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 16.247, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ab", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 21.457, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cc", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 14.55, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ee", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 17.921, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 11.911, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 11.613, - "date": 1483530701141, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1350", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 6.496, - "date": 1483530701141, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -9.038, - "date": 1483530701141, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1390", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -10.022, - "date": 1483530701141, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b3", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -2.869, - "date": 1483530701141, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d3", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -2.218, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e100e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -1.417, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e102f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.516, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.331, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1070", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.069, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1091", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 6.609, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.417, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10db", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.935, - "date": 1483530401170, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fb", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.658, - "date": 1483530401170, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.597, - "date": 1483530401170, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.523, - "date": 1483530401170, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.177, - "date": 1483530401170, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 0.207, - "date": 1483530401170, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 0.069, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.87, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.554, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1201", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.314, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1224", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.686, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1244", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 5.385, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1265", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 3.904, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1289", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 16.247, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ac", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 21.457, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 14.55, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ef", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 17.921, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 11.911, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1330", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 11.613, - "date": 1483530401170, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 6.496, - "date": 1483530401170, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1370", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -9.038, - "date": 1483530401170, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1391", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -10.022, - "date": 1483530401170, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -0.207, - "date": 1483530102052, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0fef", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -2.218, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e100f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -1.417, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1030", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.516, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1051", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.331, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1071", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.069, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1092", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 6.609, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.417, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10dc", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.935, - "date": 1483530102052, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fc", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.658, - "date": 1483530102052, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.597, - "date": 1483530102052, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.523, - "date": 1483530102052, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.177, - "date": 1483530102052, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1180", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 0.207, - "date": 1483530102052, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a0", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 0.069, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bf", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.87, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.554, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1202", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.314, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1225", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.686, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1246", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 5.385, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1266", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 3.904, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 16.247, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ad", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 21.457, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ce", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 14.55, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f0", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 17.921, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1310", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 11.911, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1331", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 11.613, - "date": 1483530102052, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1351", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 6.496, - "date": 1483530102052, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1371", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -9.038, - "date": 1483530102052, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1392", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -2.237, - "date": 1483529802048, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -0.207, - "date": 1483529802048, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff0", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -2.218, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1010", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -1.417, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1031", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.516, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1050", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.331, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1072", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.069, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1093", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 6.609, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.417, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10dd", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.935, - "date": 1483529802048, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fd", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.658, - "date": 1483529802048, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.597, - "date": 1483529802048, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113f", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.523, - "date": 1483529802048, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1160", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.177, - "date": 1483529802048, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1182", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 0.207, - "date": 1483529802048, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 0.069, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c0", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.87, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.554, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1203", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.314, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1226", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.686, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1247", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 5.385, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1267", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 3.904, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 16.247, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ae", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 21.457, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cf", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 14.55, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 17.921, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1311", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 11.911, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1332", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 11.613, - "date": 1483529802048, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1353", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 6.496, - "date": 1483529802048, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1372", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -4.355, - "date": 1483529500848, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -2.237, - "date": 1483529500848, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -0.207, - "date": 1483529500848, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -2.218, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1011", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -1.417, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1032", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.516, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1052", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.331, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1073", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.069, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1094", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 6.609, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.417, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10df", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.935, - "date": 1483529500848, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fe", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.658, - "date": 1483529500848, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1120", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.597, - "date": 1483529500848, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1140", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.523, - "date": 1483529500848, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1161", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.177, - "date": 1483529500848, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1181", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 0.207, - "date": 1483529500848, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 0.069, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.87, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.554, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1204", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.314, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1229", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.686, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1248", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 5.385, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1268", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 3.904, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 16.247, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12af", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 21.457, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 14.55, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 17.921, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1312", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 11.911, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1333", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 11.613, - "date": 1483529500848, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1352", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.002, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdbf3dbab07be5f2e0f93", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -4.355, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.237, - "date": 1483529200876, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.207, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.218, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1012", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -1.417, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1033", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.516, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1053", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.331, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1074", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.069, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1095", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 6.609, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b5", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.417, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10de", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.935, - "date": 1483529200876, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10ff", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.658, - "date": 1483529200876, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1121", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.597, - "date": 1483529200876, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1141", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.523, - "date": 1483529200876, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1162", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.177, - "date": 1483529200876, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1183", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.207, - "date": 1483529200876, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.069, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.87, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e5", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.554, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1205", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.314, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1228", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.686, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1249", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 5.385, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1269", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 3.904, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128d", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 16.247, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12b0", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 21.457, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 14.55, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 17.921, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1313", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.911, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1334", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 4.079, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdac7dbab07be5f2e0f6e", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.002, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdbf3dbab07be5f2e0f94", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -4.355, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -2.237, - "date": 1483528900865, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -0.207, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff3", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -2.218, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1013", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -1.417, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1034", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.516, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1054", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.331, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1075", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.069, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce553dbab07be5f2e10a1", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 6.609, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b6", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.417, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10e0", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.935, - "date": 1483528900865, - "rssi": 100, - "_id": "586cea04dbab07be5f2e1100", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.658, - "date": 1483528900865, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1122", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.597, - "date": 1483528900865, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1142", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.523, - "date": 1483528900865, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1163", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.177, - "date": 1483528900865, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1184", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 0.207, - "date": 1483528900865, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 0.069, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c3", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.87, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e7", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.554, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1206", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.314, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1227", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.686, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e124a", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 5.385, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e126a", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 3.904, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128e", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 16.247, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12b1", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 21.457, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d2", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 14.55, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 17.921, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1314", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 161184, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:16:40.916000+01:00", - "sgv": 118, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163488, - "delta": 1.071, - "date": 1483528600916, - "rssi": 100, - "_id": "586cd99cdbab07be5f2e0f4f", - "type": "sgv", - "glucose": 118 - }, - { - "filtered": 161184, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:16:40.916000+01:00", - "sgv": 118, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163488, - "delta": 4.079, - "date": 1483528600916, - "rssi": 100, - "_id": "586cdac7dbab07be5f2e0f6f", - "type": "sgv", - "glucose": 118 - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/enact/enacted.json b/app/src/main/java/info/nightscout/sampleData/enact/enacted.json deleted file mode 100644 index c1460545c8..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/enact/enacted.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "bg": 148, - "temp": "absolute", - "snoozeBG": 17, - "recieved": true, - "predBGs": { - "IOB": [ - 148, - 128, - 109, - 91, - 75, - 59, - 45, - 39, - 39, - 39, - 39, - 39, - 39 - ] - }, - "rate": 0.0, - "reason": "COB: 0, Dev: -64, BGI: -8.24, ISF: 21, Target: 81; Eventual BG -34 < 81, setting -11.1U/hr", - "COB": 0, - "eventualBG": -34, - "timestamp": "2017-01-04T16:37:56.113148", - "duration": 30, - "tick": -21, - "IOB": 5.521 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/enact/suggested.json b/app/src/main/java/info/nightscout/sampleData/enact/suggested.json deleted file mode 100644 index e5a25dbb3f..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/enact/suggested.json +++ /dev/null @@ -1 +0,0 @@ -{"temp":"absolute","bg":148,"tick":-21,"eventualBG":-28,"snoozeBG":16,"predBGs":{"IOB":[148,128,109,92,75,60,46,39,39,39,39,39,39]},"COB":0,"IOB":5.248,"reason":"COB: 0, Dev: -64, BGI: -8.2, ISF: 21, Target: 81; Eventual BG -28 < 81, setting -11.3U/hr, but 28m left and 0 ~ req 0U/hr: no action required"} diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/battery.json b/app/src/main/java/info/nightscout/sampleData/monitor/battery.json deleted file mode 100644 index 4f4bc03804..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/battery.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "status": "normal", - "voltage": 1.45 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/carbhistory.json b/app/src/main/java/info/nightscout/sampleData/monitor/carbhistory.json deleted file mode 100644 index 1169f8d030..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/carbhistory.json +++ /dev/null @@ -1 +0,0 @@ -[{"_id":"586caa0edbab07be5f2e0a9d","carbs":60,"ratio":"7","bg":"98","glucose":98,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":98,"_byte[5]":2,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-04T08:53:23 head[2], body[13] op[0x5b]","timestamp":"2017-01-04T08:53:23+01:00","_body":"3c50071e5a025500000000575a","bg_target_high":90,"sensitivity":30,"carb_ratio":7,"food_estimate":8.5,"unabsorbed_insulin_total":0,"correction_estimate":0.2,"carb_input":60,"_head":"5b62","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":8.7,"_date":"1775080411","bg_target_low":90},"timestamp":"2017-01-04T08:53:23+01:00","created_at":"2017-01-04T08:53:23+01:00","eventType":"Carb Correction","notes":"Food estimate 8.5\nCorrection estimate 0.2\nBolus estimate 8.7\nTarget low 90\nTarget high 90\nHypothetical glucose delta 0\nGlucose was: 98","medtronic":"mm://openaps/mm-format-ns-treatments/Carb Correction","enteredBy":"openaps://medtronic/522","insulin":null},{"_id":"586c03acdbab07be5f2df99e","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-03T20:57:24 head[4], body[0] op[0x01]","timestamp":"2017-01-03T20:57:24+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[23], body[0] op[0x5c]","_body":"","_head":"5c177894c0b4f8c07a20d0262ad0503ed07c98d0eca2d0","data":[{"amount":3,"age":148},{"amount":4.5,"age":248},{"amount":3.05,"age":288},{"amount":0.95,"age":298},{"amount":2,"age":318},{"amount":3.1,"age":408},{"amount":5.9,"age":418}],"_date":""}],"programmed":7,"duration":0,"amount":7,"_head":"01464600","type":"normal","_date":"1879540311"},"timestamp":"2017-01-03T20:57:24+01:00","created_at":"2017-01-03T20:57:24+01:00","carbs":55,"ratio":"9","bg":"90","glucose":90,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":90,"_byte[5]":0,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-03T20:57:24 head[2], body[13] op[0x5b]","timestamp":"2017-01-03T20:57:24+01:00","_body":"3750091e5a003d000004003d5a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":6.1,"unabsorbed_insulin_total":0.4,"correction_estimate":0,"carb_input":55,"_head":"5b5a","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":6.1,"_date":"1879140311","bg_target_low":90},"eventType":"Meal Bolus","insulin":7,"notes":"Normal bolus with wizard.\nProgrammed bolus 7\nDelivered bolus 7\nPercent delivered: 100%\nFood estimate 6.1\nCorrection estimate 0\nBolus estimate 6.1\nTarget low 90\nTarget high 90\nHypothetical glucose delta -210\nGlucose was: 90","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"586bc94adbab07be5f2df3c1","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-03T16:50:06 head[4], body[0] op[0x01]","timestamp":"2017-01-03T16:50:06+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[17], body[0] op[0x5c]","_body":"","_head":"5c117a29c02633c05047c07ca1c0ecabc0","data":[{"amount":3.05,"age":41},{"amount":0.95,"age":51},{"amount":2,"age":71},{"amount":3.1,"age":161},{"amount":5.9,"age":171}],"_date":""}],"programmed":4.5,"duration":0,"amount":4.5,"_head":"012d2d00","type":"normal","_date":"0672500311"},"timestamp":"2017-01-03T16:50:06+01:00","created_at":"2017-01-03T16:50:06+01:00","carbs":40,"ratio":"9","bg":"111","glucose":111,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":111,"_byte[5]":7,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-03T16:50:06 head[2], body[13] op[0x5b]","timestamp":"2017-01-03T16:50:06+01:00","_body":"2850091e5a072c000035002c5a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":4.4,"unabsorbed_insulin_total":5.3,"correction_estimate":0.7,"carb_input":40,"_head":"5b6f","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":4.4,"_date":"0672100311","bg_target_low":90},"eventType":"Meal Bolus","insulin":4.5,"notes":"Normal bolus with wizard.\nProgrammed bolus 4.5\nDelivered bolus 4.5\nPercent delivered: 100%\nFood estimate 4.4\nCorrection estimate 0.7\nBolus estimate 4.4\nTarget low 90\nTarget high 90\nHypothetical glucose delta -135\nGlucose was: 111","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/"},{"_id":"586ba38cdbab07be5f2def9f","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-03T14:04:52 head[4], body[0] op[0x01]","timestamp":"2017-01-03T14:04:52+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[11], body[0] op[0x5c]","_body":"","_head":"5c0b503bd02263d0326dd1","data":[{"amount":2,"age":315},{"amount":0.85,"age":355},{"amount":1.25,"age":365}],"_date":""}],"programmed":9,"duration":0,"amount":9,"_head":"015a5a00","type":"normal","_date":"34444e0311"},"timestamp":"2017-01-03T14:04:52+01:00","created_at":"2017-01-03T14:04:52+01:00","carbs":70,"ratio":"9","bg":"130","glucose":130,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":130,"_byte[5]":13,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-03T14:04:52 head[2], body[13] op[0x5b]","timestamp":"2017-01-03T14:04:52+01:00","_body":"4650091e5a0d4d000000005a5a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":7.7,"unabsorbed_insulin_total":0,"correction_estimate":1.3,"carb_input":70,"_head":"5b82","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":9,"_date":"34440e0311","bg_target_low":90},"eventType":"Meal Bolus","insulin":9,"notes":"Normal bolus with wizard.\nProgrammed bolus 9\nDelivered bolus 9\nPercent delivered: 100%\nFood estimate 7.7\nCorrection estimate 1.3\nBolus estimate 9\nTarget low 90\nTarget high 90\nHypothetical glucose delta -270\nGlucose was: 130","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"586b4fdbdbab07be5f2de63f","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-03T08:03:47 head[4], body[0] op[0x01]","timestamp":"2017-01-03T08:03:47+01:00","_body":"","programmed":8.5,"_head":"01555500","amount":8.5,"duration":0,"type":"normal","_date":"2f43480311"},"timestamp":"2017-01-03T08:03:47+01:00","created_at":"2017-01-03T08:03:47+01:00","carbs":60,"ratio":"7","bg":"90","glucose":90,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":90,"_byte[5]":0,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-03T08:03:47 head[2], body[13] op[0x5b]","timestamp":"2017-01-03T08:03:47+01:00","_body":"3c50071e5a005500000000555a","bg_target_high":90,"sensitivity":30,"carb_ratio":7,"food_estimate":8.5,"unabsorbed_insulin_total":0,"correction_estimate":0,"carb_input":60,"_head":"5b5a","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":8.5,"_date":"2f43080311","bg_target_low":90},"eventType":"Meal Bolus","insulin":8.5,"notes":"Normal bolus with wizard.\nProgrammed bolus 8.5\nDelivered bolus 8.5\nPercent delivered: 100%\nFood estimate 8.5\nCorrection estimate 0\nBolus estimate 8.5\nTarget low 90\nTarget high 90\nHypothetical glucose delta -255\nGlucose was: 90","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"586aa57edbab07be5f2dd4e9","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-02T20:06:46 head[4], body[0] op[0x01]","timestamp":"2017-01-02T20:06:46+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[29], body[0] op[0x5c]","_body":"","_head":"5c1d501bc02825c0282fc05043c05475c01c7fc05083d028a1d050c9d0","data":[{"amount":2,"age":27},{"amount":1,"age":37},{"amount":1,"age":47},{"amount":2,"age":67},{"amount":2.1,"age":117},{"amount":0.7,"age":127},{"amount":2,"age":387},{"amount":1,"age":417},{"amount":2,"age":457}],"_date":""}],"programmed":3.3,"duration":0,"amount":3.3,"_head":"01212100","type":"normal","_date":"2e46540211"},"timestamp":"2017-01-02T20:06:46+01:00","created_at":"2017-01-02T20:06:46+01:00","carbs":30,"ratio":"9","bg":"110","glucose":110,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":110,"_byte[5]":6,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-02T20:06:46 head[2], body[13] op[0x5b]","timestamp":"2017-01-02T20:06:46+01:00","_body":"1e50091e5a062100003800215a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":3.3,"unabsorbed_insulin_total":5.6,"correction_estimate":0.6,"carb_input":30,"_head":"5b6e","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":3.3,"_date":"2e46140211","bg_target_low":90},"eventType":"Meal Bolus","insulin":3.3,"notes":"Normal bolus with wizard.\nProgrammed bolus 3.3\nDelivered bolus 3.3\nPercent delivered: 100%\nFood estimate 3.3\nCorrection estimate 0.6\nBolus estimate 3.3\nTarget low 90\nTarget high 90\nHypothetical glucose delta -99\nGlucose was: 110","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"586a89d5dbab07be5f2dd231","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-02T18:08:32 head[4], body[0] op[0x01]","timestamp":"2017-01-02T18:08:32+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[11], body[0] op[0x5c]","_body":"","_head":"5c0b500dd0282bd05053d0","data":[{"amount":2,"age":269},{"amount":1,"age":299},{"amount":2,"age":339}],"_date":""}],"programmed":2.8,"duration":0,"amount":2.8,"_head":"011c1c00","type":"normal","_date":"2048520211"},"timestamp":"2017-01-02T18:08:32+01:00","created_at":"2017-01-02T18:08:32+01:00","carbs":25,"ratio":"9","bg":"94","glucose":94,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":94,"_byte[5]":1,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-02T18:08:32 head[2], body[13] op[0x5b]","timestamp":"2017-01-02T18:08:32+01:00","_body":"1950091e5a011b000000001c5a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":2.7,"unabsorbed_insulin_total":0,"correction_estimate":0.1,"carb_input":25,"_head":"5b5e","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":2.8,"_date":"2048120211","bg_target_low":90},"eventType":"Meal Bolus","insulin":2.8,"notes":"Normal bolus with wizard.\nProgrammed bolus 2.8\nDelivered bolus 2.8\nPercent delivered: 100%\nFood estimate 2.7\nCorrection estimate 0.1\nBolus estimate 2.8\nTarget low 90\nTarget high 90\nHypothetical glucose delta -84\nGlucose was: 94","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"5869ed83dbab07be5f2dc96e","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-02T06:58:00 head[4], body[0] op[0x01]","timestamp":"2017-01-02T06:58:00+01:00","_body":"","programmed":8.5,"_head":"01555500","amount":8.5,"duration":0,"type":"normal","_date":"007a460211"},"timestamp":"2017-01-02T06:58:00+01:00","created_at":"2017-01-02T06:58:00+01:00","carbs":60,"ratio":"7","bg":"101","glucose":101,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":101,"_byte[5]":3,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-02T06:58:00 head[2], body[13] op[0x5b]","timestamp":"2017-01-02T06:58:00+01:00","_body":"3c50071e5a035500000000585a","bg_target_high":90,"sensitivity":30,"carb_ratio":7,"food_estimate":8.5,"unabsorbed_insulin_total":0,"correction_estimate":0.3,"carb_input":60,"_head":"5b65","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":8.8,"_date":"007a060211","bg_target_low":90},"eventType":"Meal Bolus","insulin":8.5,"notes":"Normal bolus with wizard.\nProgrammed bolus 8.5\nDelivered bolus 8.5\nPercent delivered: 100%\nFood estimate 8.5\nCorrection estimate 0.3\nBolus estimate 8.8\nTarget low 90\nTarget high 90\nHypothetical glucose delta -255\nGlucose was: 101","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"58694d71dbab07be5f2db898","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-01T19:33:43 head[4], body[0] op[0x01]","timestamp":"2017-01-01T19:33:43+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[26], body[0] op[0x5c]","_body":"","_head":"5c1a0e90c06a9ac078c2c050f4c0501cd028a8d050b2d050bcd0","data":[{"amount":0.35,"age":144},{"amount":2.65,"age":154},{"amount":3,"age":194},{"amount":2,"age":244},{"amount":2,"age":284},{"amount":1,"age":424},{"amount":2,"age":434},{"amount":2,"age":444}],"_date":""}],"programmed":9.5,"duration":0,"amount":9.5,"_head":"015f5f00","type":"normal","_date":"2b61530111"},"timestamp":"2017-01-01T19:33:43+01:00","created_at":"2017-01-01T19:33:43+01:00","carbs":85,"ratio":"9","bg":"105","glucose":105,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":105,"_byte[5]":5,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-01T19:33:43 head[2], body[13] op[0x5b]","timestamp":"2017-01-01T19:33:43+01:00","_body":"5550091e55055e000004005f5a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":9.4,"unabsorbed_insulin_total":0.4,"correction_estimate":0.5,"carb_input":85,"_head":"5b69","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":9.5,"_date":"2b61130111","bg_target_low":85},"eventType":"Meal Bolus","insulin":9.5,"notes":"Normal bolus with wizard.\nProgrammed bolus 9.5\nDelivered bolus 9.5\nPercent delivered: 100%\nFood estimate 9.4\nCorrection estimate 0.5\nBolus estimate 9.5\nTarget low 85\nTarget high 90\nHypothetical glucose delta -285\nGlucose was: 105","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"586914b5dbab07be5f2db2ed","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-01T15:36:56 head[4], body[0] op[0x01]","timestamp":"2017-01-01T15:36:56+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[23], body[0] op[0x5c]","_body":"","_head":"5c17502fc028bbc050c5c050cfc0281fd0c065d0806fd0","data":[{"amount":2,"age":47},{"amount":1,"age":187},{"amount":2,"age":197},{"amount":2,"age":207},{"amount":1,"age":287},{"amount":4.8,"age":357},{"amount":3.2,"age":367}],"_date":""}],"programmed":2,"duration":0,"amount":2,"_head":"01141400","type":"normal","_date":"38644f0111"},"timestamp":"2017-01-01T15:36:56+01:00","created_at":"2017-01-01T15:36:56+01:00","carbs":20,"ratio":"9","bg":"90","glucose":90,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":90,"_byte[5]":0,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-01T15:36:56 head[2], body[13] op[0x5b]","timestamp":"2017-01-01T15:36:56+01:00","_body":"1450091e55001600001100165a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":2.2,"unabsorbed_insulin_total":1.7,"correction_estimate":0,"carb_input":20,"_head":"5b5a","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":2.2,"_date":"38640f0111","bg_target_low":85},"eventType":"Meal Bolus","insulin":2,"notes":"Normal bolus with wizard.\nProgrammed bolus 2\nDelivered bolus 2\nPercent delivered: 100%\nFood estimate 2.2\nCorrection estimate 0\nBolus estimate 2.2\nTarget low 85\nTarget high 90\nHypothetical glucose delta -60\nGlucose was: 90","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"5868c13edbab07be5f2dabdf","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2017-01-01T09:36:51 head[4], body[0] op[0x01]","timestamp":"2017-01-01T09:36:51+01:00","_body":"","programmed":8,"_head":"01505000","amount":8,"duration":0,"type":"normal","_date":"3364490111"},"timestamp":"2017-01-01T09:36:50+01:00","created_at":"2017-01-01T09:36:50+01:00","carbs":60,"ratio":"9","bg":"86","glucose":86,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":86,"_byte[5]":0,"unknown_byte[10]":0,"_description":"BolusWizard 2017-01-01T09:36:50 head[2], body[13] op[0x5b]","timestamp":"2017-01-01T09:36:50+01:00","_body":"3c50091e55004200000000425a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":6.6,"unabsorbed_insulin_total":0,"correction_estimate":0,"carb_input":60,"_head":"5b56","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":6.6,"_date":"3264090111","bg_target_low":85},"eventType":"Meal Bolus","insulin":8,"notes":"Normal bolus with wizard.\nProgrammed bolus 8\nDelivered bolus 8\nPercent delivered: 100%\nFood estimate 6.6\nCorrection estimate 0\nBolus estimate 6.6\nTarget low 85\nTarget high 90\nHypothetical glucose delta -240\nGlucose was: 86","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"},{"_id":"5867f162dbab07be5f2d9631","duration":0,"bolus":{"_type":"Bolus","_description":"Bolus 2016-12-31T18:49:42 head[4], body[0] op[0x01]","timestamp":"2016-12-31T18:49:42+01:00","_body":"","appended":[{"_type":"UnabsorbedInsulinBolus","_description":"UnabsorbedInsulinBolus unknown head[26], body[0] op[0x5c]","_body":"","_head":"5c1a5014c05096c028aac050bec0c804d06440d05090d0509ad0","data":[{"amount":2,"age":20},{"amount":2,"age":150},{"amount":1,"age":170},{"amount":2,"age":190},{"amount":5,"age":260},{"amount":2.5,"age":320},{"amount":2,"age":400},{"amount":2,"age":410}],"_date":""}],"programmed":6.5,"duration":0,"amount":6.5,"_head":"01414100","type":"normal","_date":"ea31521f10"},"timestamp":"2016-12-31T18:49:42+01:00","created_at":"2016-12-31T18:49:42+01:00","carbs":60,"ratio":"9","bg":"120","glucose":120,"glucoseType":"BolusWizard","wizard":{"unknown_byte[8]":0,"_type":"BolusWizard","bg":120,"_byte[5]":10,"unknown_byte[10]":0,"_description":"BolusWizard 2016-12-31T18:49:42 head[2], body[13] op[0x5b]","timestamp":"2016-12-31T18:49:42+01:00","_body":"3c50091e550a4200001700425a","bg_target_high":90,"sensitivity":30,"carb_ratio":9,"food_estimate":6.6,"unabsorbed_insulin_total":2.3,"correction_estimate":1,"carb_input":60,"_head":"5b78","unabsorbed_insulin_count":"??","_byte[7]":0,"bolus_estimate":6.6,"_date":"ea31121f10","bg_target_low":85},"eventType":"Meal Bolus","insulin":6.5,"notes":"Normal bolus with wizard.\nProgrammed bolus 6.5\nDelivered bolus 6.5\nPercent delivered: 100%\nFood estimate 6.6\nCorrection estimate 1\nBolus estimate 6.6\nTarget low 85\nTarget high 90\nHypothetical glucose delta -195\nGlucose was: 120","medtronic":"mm://openaps/mm-format-ns-treatments/Meal Bolus","enteredBy":"openaps://medtronic/522"}] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/clock-zoned.json b/app/src/main/java/info/nightscout/sampleData/monitor/clock-zoned.json deleted file mode 100644 index d8e4e2f4fe..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/clock-zoned.json +++ /dev/null @@ -1 +0,0 @@ -"2017-01-04T16:40:31+01:00" \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/clock.json b/app/src/main/java/info/nightscout/sampleData/monitor/clock.json deleted file mode 100644 index 233cee13ee..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/clock.json +++ /dev/null @@ -1 +0,0 @@ -"2017-01-04T16:40:31" \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/edison-battery.json b/app/src/main/java/info/nightscout/sampleData/monitor/edison-battery.json deleted file mode 100644 index 15da5e3d65..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/edison-battery.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "battery": 52, - "batteryVoltage": 3701 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/glucose.json b/app/src/main/java/info/nightscout/sampleData/monitor/glucose.json deleted file mode 100644 index c4c0130106..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/glucose.json +++ /dev/null @@ -1,15002 +0,0 @@ -[ - { - "filtered": 217664, - "direction": "DoubleDown", - "noise": 1, - "dateString": "2017-01-04T16:36:41.224000+01:00", - "sgv": 148, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 191424, - "delta": -20.713, - "date": 1483544201224, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153b", - "type": "sgv", - "glucose": 148 - }, - { - "filtered": 226528, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T16:31:41.395000+01:00", - "sgv": 169, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 210592, - "delta": -13.679, - "date": 1483543901395, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151c", - "type": "sgv", - "glucose": 169 - }, - { - "filtered": 226528, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T16:31:41.395000+01:00", - "sgv": 169, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 210592, - "delta": -20.713, - "date": 1483543901395, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153c", - "type": "sgv", - "glucose": 169 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -4.631, - "date": 1483543601244, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fc", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -13.679, - "date": 1483543601244, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151d", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 230624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:26:41.244000+01:00", - "sgv": 183, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 223264, - "delta": -20.713, - "date": 1483543601244, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153d", - "type": "sgv", - "glucose": 183 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": 0.173, - "date": 1483543001221, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14db", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -4.631, - "date": 1483543001221, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fd", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -13.679, - "date": 1483543001221, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151e", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 231808, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:16:41.221000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231840, - "delta": -20.713, - "date": 1483543001221, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153e", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -0.207, - "date": 1483542701253, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bb", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": 0.173, - "date": 1483542701253, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14dc", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -4.631, - "date": 1483542701253, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14fe", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -13.679, - "date": 1483542701253, - "rssi": 100, - "_id": "586d155fdbab07be5f2e151f", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 230944, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:11:41.253000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231680, - "delta": -20.713, - "date": 1483542701253, - "rssi": 100, - "_id": "586d168bdbab07be5f2e153f", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": 1.348, - "date": 1483542401161, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149a", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -0.207, - "date": 1483542401161, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bc", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": 0.173, - "date": 1483542401161, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14dd", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -4.631, - "date": 1483542401161, - "rssi": 100, - "_id": "586d1433dbab07be5f2e14ff", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -13.679, - "date": 1483542401161, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1520", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 229536, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:06:41.161000+01:00", - "sgv": 192, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 231872, - "delta": -20.713, - "date": 1483542401161, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1540", - "type": "sgv", - "glucose": 192 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 1.936, - "date": 1483542101177, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1478", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 1.348, - "date": 1483542101177, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149b", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -0.207, - "date": 1483542101177, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bd", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": 0.173, - "date": 1483542101177, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14de", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -4.631, - "date": 1483542101177, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1500", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -13.679, - "date": 1483542101177, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1521", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 227968, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T16:01:41.177000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230624, - "delta": -20.713, - "date": 1483542101177, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1541", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.262, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1459", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.936, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1479", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 1.348, - "date": 1483541801241, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149c", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -0.207, - "date": 1483541801241, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14be", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": 0.173, - "date": 1483541801241, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14df", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -4.631, - "date": 1483541801241, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1501", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -13.679, - "date": 1483541801241, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1522", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:56:41.241000+01:00", - "sgv": 189, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 228832, - "delta": -20.713, - "date": 1483541801241, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1542", - "type": "sgv", - "glucose": 189 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -0.658, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1435", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.262, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145a", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.936, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147b", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 1.348, - "date": 1483541201285, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149d", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -0.207, - "date": 1483541201285, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14bf", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": 0.173, - "date": 1483541201285, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e0", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -4.631, - "date": 1483541201285, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1502", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -13.679, - "date": 1483541201285, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1524", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 226464, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:46:41.285000+01:00", - "sgv": 186, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 226496, - "delta": -20.713, - "date": 1483541201285, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1543", - "type": "sgv", - "glucose": 186 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 2.933, - "date": 1483540901755, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1415", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -0.658, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1436", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.262, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145b", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.936, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147a", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 1.348, - "date": 1483540901755, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149e", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -0.207, - "date": 1483540901755, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c0", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": 0.173, - "date": 1483540901755, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e1", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -4.631, - "date": 1483540901755, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1503", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -13.679, - "date": 1483540901755, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1523", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 227840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:41:41.755000+01:00", - "sgv": 187, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227104, - "delta": -20.713, - "date": 1483540901755, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1544", - "type": "sgv", - "glucose": 187 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -6.913, - "date": 1483540601273, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f6", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 2.933, - "date": 1483540601273, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1416", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -0.658, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1437", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.262, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145c", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.936, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147c", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 1.348, - "date": 1483540601273, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e149f", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -0.207, - "date": 1483540601273, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c1", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": 0.173, - "date": 1483540601273, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e2", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -4.631, - "date": 1483540601273, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1504", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -13.679, - "date": 1483540601273, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1525", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 230208, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:36:41.273000+01:00", - "sgv": 184, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 224384, - "delta": -20.713, - "date": 1483540601273, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1545", - "type": "sgv", - "glucose": 184 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -3.87, - "date": 1483540301318, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d7", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -6.913, - "date": 1483540301318, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f7", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 2.933, - "date": 1483540301318, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1417", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -0.658, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1438", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.262, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145d", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.936, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147d", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 1.348, - "date": 1483540301318, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a0", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -0.207, - "date": 1483540301318, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c2", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": 0.173, - "date": 1483540301318, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e3", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -4.631, - "date": 1483540301318, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1505", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -13.679, - "date": 1483540301318, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1526", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 234784, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:31:41.318000+01:00", - "sgv": 191, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 230784, - "delta": -20.713, - "date": 1483540301318, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1546", - "type": "sgv", - "glucose": 191 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -2.869, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b6", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -3.87, - "date": 1483540001288, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d8", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -6.913, - "date": 1483540001288, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f9", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 2.933, - "date": 1483540001288, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1418", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -0.658, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1439", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.262, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145e", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.936, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147e", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 1.348, - "date": 1483540001288, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a1", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -0.207, - "date": 1483540001288, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c3", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": 0.173, - "date": 1483540001288, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e4", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -4.631, - "date": 1483540001288, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1506", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -13.679, - "date": 1483540001288, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1527", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 242592, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T15:26:41.288000+01:00", - "sgv": 195, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 234368, - "delta": -20.713, - "date": 1483540001288, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1547", - "type": "sgv", - "glucose": 195 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -10.022, - "date": 1483539701330, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1396", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -2.869, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ba", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -3.87, - "date": 1483539701330, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13d9", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -6.913, - "date": 1483539701330, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13f8", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 2.933, - "date": 1483539701330, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1419", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -0.658, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143a", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.262, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e145f", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.936, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e147f", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 1.348, - "date": 1483539701330, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a2", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -0.207, - "date": 1483539701330, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c4", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": 0.173, - "date": 1483539701330, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e5", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -4.631, - "date": 1483539701330, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1507", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -13.679, - "date": 1483539701330, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1528", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 253376, - "direction": "SingleDown", - "noise": 1, - "dateString": "2017-01-04T15:21:41.330000+01:00", - "sgv": 198, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 237024, - "delta": -20.713, - "date": 1483539701330, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1548", - "type": "sgv", - "glucose": 198 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -9.038, - "date": 1483539101287, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1375", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -10.022, - "date": 1483539101287, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1397", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -2.869, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b7", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -3.87, - "date": 1483539101287, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13da", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -6.913, - "date": 1483539101287, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fa", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 2.933, - "date": 1483539101287, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141a", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -0.658, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143b", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.262, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1460", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.936, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1480", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 1.348, - "date": 1483539101287, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a3", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -0.207, - "date": 1483539101287, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c5", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": 0.173, - "date": 1483539101287, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e6", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -4.631, - "date": 1483539101287, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1508", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -13.679, - "date": 1483539101287, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1529", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 269184, - "direction": "FortyFiveDown", - "noise": 1, - "dateString": "2017-01-04T15:11:41.287000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255584, - "delta": -20.713, - "date": 1483539101287, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1549", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 6.496, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1355", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -9.038, - "date": 1483538501333, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1376", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -10.022, - "date": 1483538501333, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1398", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -2.869, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b8", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -3.87, - "date": 1483538501333, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13db", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -6.913, - "date": 1483538501333, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fb", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 2.933, - "date": 1483538501333, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141b", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -0.658, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143c", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.262, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1461", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.936, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1481", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 1.348, - "date": 1483538501333, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a4", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -0.207, - "date": 1483538501333, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c6", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": 0.173, - "date": 1483538501333, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e7", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -4.631, - "date": 1483538501333, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1509", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -13.679, - "date": 1483538501333, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152a", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 261440, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T15:01:41.333000+01:00", - "sgv": 236, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 272320, - "delta": -20.713, - "date": 1483538501333, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154a", - "type": "sgv", - "glucose": 236 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 11.613, - "date": 1483538201284, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1336", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 6.496, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1356", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -9.038, - "date": 1483538201284, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1377", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -10.022, - "date": 1483538201284, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e1399", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -2.869, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13b9", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -3.87, - "date": 1483538201284, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13dc", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -6.913, - "date": 1483538201284, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fc", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 2.933, - "date": 1483538201284, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141c", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -0.658, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143d", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.262, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1462", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.936, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1482", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 1.348, - "date": 1483538201284, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a5", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -0.207, - "date": 1483538201284, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c7", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": 0.173, - "date": 1483538201284, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e8", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -4.631, - "date": 1483538201284, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150a", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -13.679, - "date": 1483538201284, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152b", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 250240, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:56:41.284000+01:00", - "sgv": 229, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 266304, - "delta": -20.713, - "date": 1483538201284, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154b", - "type": "sgv", - "glucose": 229 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 11.911, - "date": 1483537901316, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1317", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 11.613, - "date": 1483537901316, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1337", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 6.496, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1357", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -9.038, - "date": 1483537901316, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1378", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -10.022, - "date": 1483537901316, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139a", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -2.869, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bb", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -3.87, - "date": 1483537901316, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13de", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -6.913, - "date": 1483537901316, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fd", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 2.933, - "date": 1483537901316, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141d", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -0.658, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143e", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.262, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1463", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.936, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1483", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 1.348, - "date": 1483537901316, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a6", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -0.207, - "date": 1483537901316, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c8", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": 0.173, - "date": 1483537901316, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14e9", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -4.631, - "date": 1483537901316, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150b", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -13.679, - "date": 1483537901316, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152c", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 235712, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:51:41.316000+01:00", - "sgv": 218, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 255552, - "delta": -20.713, - "date": 1483537901316, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154c", - "type": "sgv", - "glucose": 218 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 17.921, - "date": 1483537601014, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f7", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 11.911, - "date": 1483537601014, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1318", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 11.613, - "date": 1483537601014, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1338", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 6.496, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1358", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -9.038, - "date": 1483537601014, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1379", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -10.022, - "date": 1483537601014, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139b", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -2.869, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bd", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -3.87, - "date": 1483537601014, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13dd", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -6.913, - "date": 1483537601014, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13fe", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 2.933, - "date": 1483537601014, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141e", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -0.658, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e143f", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.262, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1464", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.936, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1484", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 1.348, - "date": 1483537601014, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a7", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -0.207, - "date": 1483537601014, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14c9", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": 0.173, - "date": 1483537601014, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ea", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -4.631, - "date": 1483537601014, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150c", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -13.679, - "date": 1483537601014, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152d", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 218464, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:46:41.014000+01:00", - "sgv": 206, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 244512, - "delta": -20.713, - "date": 1483537601014, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154d", - "type": "sgv", - "glucose": 206 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 14.55, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12d8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 17.921, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 11.911, - "date": 1483537301326, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1319", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 11.613, - "date": 1483537301326, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1339", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 6.496, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1359", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -9.038, - "date": 1483537301326, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137a", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -10.022, - "date": 1483537301326, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139c", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -2.869, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bc", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -3.87, - "date": 1483537301326, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13df", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -6.913, - "date": 1483537301326, - "rssi": 100, - "_id": "586d087bdbab07be5f2e13ff", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 2.933, - "date": 1483537301326, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1420", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -0.658, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1440", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.262, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1465", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.936, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1485", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 1.348, - "date": 1483537301326, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a8", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -0.207, - "date": 1483537301326, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14ca", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": 0.173, - "date": 1483537301326, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14eb", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -4.631, - "date": 1483537301326, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150d", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -13.679, - "date": 1483537301326, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152e", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 201152, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:41:41.326000+01:00", - "sgv": 188, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 227936, - "delta": -20.713, - "date": 1483537301326, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154e", - "type": "sgv", - "glucose": 188 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 21.457, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 14.55, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12d9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 17.921, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12f9", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 11.911, - "date": 1483537001325, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 11.613, - "date": 1483537001325, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 6.496, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135a", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -9.038, - "date": 1483537001325, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137b", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -10.022, - "date": 1483537001325, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139d", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -2.869, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13be", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -3.87, - "date": 1483537001325, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e0", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -6.913, - "date": 1483537001325, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1400", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 2.933, - "date": 1483537001325, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e141f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -0.658, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1441", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.262, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1466", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.936, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1486", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 1.348, - "date": 1483537001325, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14aa", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -0.207, - "date": 1483537001325, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cb", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": 0.173, - "date": 1483537001325, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ec", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -4.631, - "date": 1483537001325, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150e", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -13.679, - "date": 1483537001325, - "rssi": 100, - "_id": "586d155fdbab07be5f2e152f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 187264, - "direction": "DoubleUp", - "noise": 1, - "dateString": "2017-01-04T14:36:41.325000+01:00", - "sgv": 173, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 214464, - "delta": -20.713, - "date": 1483537001325, - "rssi": 100, - "_id": "586d168bdbab07be5f2e154f", - "type": "sgv", - "glucose": 173 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 16.247, - "date": 1483536701263, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1297", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 21.457, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ba", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 14.55, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12da", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 17.921, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fa", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 11.911, - "date": 1483536701263, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 11.613, - "date": 1483536701263, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 6.496, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135b", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -9.038, - "date": 1483536701263, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137c", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -10.022, - "date": 1483536701263, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139e", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -2.869, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13bf", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -3.87, - "date": 1483536701263, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e1", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -6.913, - "date": 1483536701263, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1401", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 2.933, - "date": 1483536701263, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1421", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -0.658, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1443", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.262, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1467", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.936, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1490", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 1.348, - "date": 1483536701263, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14a9", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -0.207, - "date": 1483536701263, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cc", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": 0.173, - "date": 1483536701263, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ed", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -4.631, - "date": 1483536701263, - "rssi": 100, - "_id": "586d1433dbab07be5f2e150f", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -13.679, - "date": 1483536701263, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1530", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 178208, - "direction": "SingleUp", - "noise": 1, - "dateString": "2017-01-04T14:31:41.263000+01:00", - "sgv": 152, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 194592, - "delta": -20.713, - "date": 1483536701263, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1551", - "type": "sgv", - "glucose": 152 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 3.904, - "date": 1483536401340, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1275", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 16.247, - "date": 1483536401340, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1298", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 21.457, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b8", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 14.55, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12db", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 17.921, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fb", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 11.911, - "date": 1483536401340, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 11.613, - "date": 1483536401340, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 6.496, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135c", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -9.038, - "date": 1483536401340, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137d", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -10.022, - "date": 1483536401340, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e139f", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -2.869, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c0", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -3.87, - "date": 1483536401340, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e3", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -6.913, - "date": 1483536401340, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1402", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 2.933, - "date": 1483536401340, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1422", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -0.658, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1442", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.262, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1468", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.936, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148a", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 1.348, - "date": 1483536401340, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ab", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -0.207, - "date": 1483536401340, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cd", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": 0.173, - "date": 1483536401340, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ee", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -4.631, - "date": 1483536401340, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1510", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -13.679, - "date": 1483536401340, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1531", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 173344, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:26:41.340000+01:00", - "sgv": 136, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 179552, - "delta": -20.713, - "date": 1483536401340, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1550", - "type": "sgv", - "glucose": 136 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 5.385, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1252", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 3.904, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1276", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 16.247, - "date": 1483536101258, - "rssi": 100, - "_id": "586cf940dbab07be5f2e1299", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 21.457, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12b7", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 14.55, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12dc", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 17.921, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fc", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 11.911, - "date": 1483536101258, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 11.613, - "date": 1483536101258, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 6.496, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135d", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -9.038, - "date": 1483536101258, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137e", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -10.022, - "date": 1483536101258, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a6", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -2.869, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c1", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -3.87, - "date": 1483536101258, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e2", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -6.913, - "date": 1483536101258, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1403", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 2.933, - "date": 1483536101258, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1423", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -0.658, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1444", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.262, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146b", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.936, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1487", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 1.348, - "date": 1483536101258, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ad", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -0.207, - "date": 1483536101258, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14ce", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": 0.173, - "date": 1483536101258, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14ef", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -4.631, - "date": 1483536101258, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1512", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -13.679, - "date": 1483536101258, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1532", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 170496, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T14:21:41.258000+01:00", - "sgv": 132, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 175936, - "delta": -20.713, - "date": 1483536101258, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1552", - "type": "sgv", - "glucose": 132 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.686, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1233", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 5.385, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1253", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 3.904, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1277", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 16.247, - "date": 1483535802855, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129a", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 21.457, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bb", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 14.55, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12dd", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 17.921, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fd", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 11.911, - "date": 1483535802855, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 11.613, - "date": 1483535802855, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 6.496, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135e", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -9.038, - "date": 1483535802855, - "rssi": 100, - "_id": "586d029fdbab07be5f2e137f", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -10.022, - "date": 1483535802855, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a3", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -2.869, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c2", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -3.87, - "date": 1483535802855, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e4", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -6.913, - "date": 1483535802855, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1404", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 2.933, - "date": 1483535802855, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1424", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -0.658, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1445", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.262, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1469", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.936, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1488", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 1.348, - "date": 1483535802855, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ac", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -0.207, - "date": 1483535802855, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14cf", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": 0.173, - "date": 1483535802855, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f0", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -4.631, - "date": 1483535802855, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1511", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -13.679, - "date": 1483535802855, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1533", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 168288, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:16:42.855000+01:00", - "sgv": 126, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 170976, - "delta": -20.713, - "date": 1483535802855, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1553", - "type": "sgv", - "glucose": 126 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.314, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1213", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.686, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1234", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 5.385, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1254", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 3.904, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1278", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 16.247, - "date": 1483535501468, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129b", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 21.457, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bc", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 14.55, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12de", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 17.921, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12fe", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 11.911, - "date": 1483535501468, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e131f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 11.613, - "date": 1483535501468, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e133f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 6.496, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0047dbab07be5f2e135f", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -9.038, - "date": 1483535501468, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1380", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -10.022, - "date": 1483535501468, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a0", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -2.869, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c4", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -3.87, - "date": 1483535501468, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e5", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -6.913, - "date": 1483535501468, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1405", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 2.933, - "date": 1483535501468, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1426", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -0.658, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1446", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.262, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146a", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.936, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1489", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 1.348, - "date": 1483535501468, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14af", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -0.207, - "date": 1483535501468, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d0", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": 0.173, - "date": 1483535501468, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f1", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -4.631, - "date": 1483535501468, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1513", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -13.679, - "date": 1483535501468, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1534", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 166624, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:11:41.468000+01:00", - "sgv": 125, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 169408, - "delta": -20.713, - "date": 1483535501468, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1554", - "type": "sgv", - "glucose": 125 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.554, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.314, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1214", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.686, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1235", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 5.385, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1255", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 3.904, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1279", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 16.247, - "date": 1483535201718, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129c", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 21.457, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bd", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 14.55, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12df", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 17.921, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e12ff", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.911, - "date": 1483535201718, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1320", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.613, - "date": 1483535201718, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1340", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 6.496, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1360", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -9.038, - "date": 1483535201718, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1381", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -10.022, - "date": 1483535201718, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.869, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.87, - "date": 1483535201718, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e6", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -6.913, - "date": 1483535201718, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1406", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.933, - "date": 1483535201718, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1425", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.658, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1447", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.262, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146c", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.936, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148b", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.348, - "date": 1483535201718, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14ae", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.207, - "date": 1483535201718, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.173, - "date": 1483535201718, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -4.631, - "date": 1483535201718, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1514", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -13.679, - "date": 1483535201718, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1535", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165376, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:06:41.718000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -20.713, - "date": 1483535201718, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1555", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.87, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 2.554, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.314, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1215", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.686, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1236", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 5.385, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1256", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 3.904, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127a", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 16.247, - "date": 1483534901296, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129d", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 21.457, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12be", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 14.55, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e0", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 17.921, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1300", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 11.911, - "date": 1483534901296, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1321", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 11.613, - "date": 1483534901296, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1341", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 6.496, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1361", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -9.038, - "date": 1483534901296, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1382", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -10.022, - "date": 1483534901296, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -2.869, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c5", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -3.87, - "date": 1483534901296, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e8", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -6.913, - "date": 1483534901296, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1407", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 2.933, - "date": 1483534901296, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1427", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -0.658, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1448", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.262, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146d", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.936, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148c", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 1.348, - "date": 1483534901296, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b0", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -0.207, - "date": 1483534901296, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d2", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": 0.173, - "date": 1483534901296, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f3", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -4.631, - "date": 1483534901296, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1515", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -13.679, - "date": 1483534901296, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1536", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 164416, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T14:01:41.296000+01:00", - "sgv": 121, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 165824, - "delta": -20.713, - "date": 1483534901296, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1556", - "type": "sgv", - "glucose": 121 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 0.069, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.87, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 2.554, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.314, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1216", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.686, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1237", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 5.385, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1257", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 3.904, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 16.247, - "date": 1483534601873, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 21.457, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12bf", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 14.55, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 17.921, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1301", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 11.911, - "date": 1483534601873, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1322", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 11.613, - "date": 1483534601873, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1343", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 6.496, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1362", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -9.038, - "date": 1483534601873, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1383", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -10.022, - "date": 1483534601873, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -2.869, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c6", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -3.87, - "date": 1483534601873, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -6.913, - "date": 1483534601873, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1408", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 2.933, - "date": 1483534601873, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1428", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -0.658, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1449", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.262, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.936, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148d", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 1.348, - "date": 1483534601873, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -0.207, - "date": 1483534601873, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": 0.173, - "date": 1483534601873, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -4.631, - "date": 1483534601873, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1517", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -13.679, - "date": 1483534601873, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1537", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 163328, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:56:41.873000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164096, - "delta": -20.713, - "date": 1483534601873, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1558", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.207, - "date": 1483534301597, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1192", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.069, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.87, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 2.554, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.314, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1217", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.686, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1238", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 5.385, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1258", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 3.904, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 16.247, - "date": 1483534301597, - "rssi": 100, - "_id": "586cf940dbab07be5f2e129f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 21.457, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 14.55, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 17.921, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1302", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 11.911, - "date": 1483534301597, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1323", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 11.613, - "date": 1483534301597, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1342", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 6.496, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1363", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -9.038, - "date": 1483534301597, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1384", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -10.022, - "date": 1483534301597, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -2.869, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -3.87, - "date": 1483534301597, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13e9", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -6.913, - "date": 1483534301597, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1409", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 2.933, - "date": 1483534301597, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1429", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -0.658, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.262, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1470", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.936, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 1.348, - "date": 1483534301597, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -0.207, - "date": 1483534301597, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": 0.173, - "date": 1483534301597, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -4.631, - "date": 1483534301597, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1516", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -13.679, - "date": 1483534301597, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1538", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 162144, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:51:41.597000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164032, - "delta": -20.713, - "date": 1483534301597, - "rssi": 100, - "_id": "586d168bdbab07be5f2e1557", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.177, - "date": 1483534001427, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1173", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.207, - "date": 1483534001427, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1193", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.069, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.87, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.554, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.314, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1218", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.686, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1239", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 5.385, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1259", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 3.904, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127d", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 16.247, - "date": 1483534001427, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 21.457, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 14.55, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 17.921, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1303", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 11.911, - "date": 1483534001427, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1324", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 11.613, - "date": 1483534001427, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1344", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 6.496, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1364", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -9.038, - "date": 1483534001427, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1385", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -10.022, - "date": 1483534001427, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -2.869, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c8", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -3.87, - "date": 1483534001427, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ea", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -6.913, - "date": 1483534001427, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 2.933, - "date": 1483534001427, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -0.658, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.262, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e146f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.936, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e148e", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 1.348, - "date": 1483534001427, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b3", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -0.207, - "date": 1483534001427, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": 0.173, - "date": 1483534001427, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f6", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -4.631, - "date": 1483534001427, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1519", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 161280, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:46:41.427000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163840, - "delta": -13.679, - "date": 1483534001427, - "rssi": 100, - "_id": "586d155fdbab07be5f2e1539", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.523, - "date": 1483533701407, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1153", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.177, - "date": 1483533701407, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1174", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.207, - "date": 1483533701407, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1194", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.069, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.87, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.554, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.314, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.686, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 5.385, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 3.904, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 16.247, - "date": 1483533701407, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a1", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 21.457, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 14.55, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 17.921, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1304", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 11.911, - "date": 1483533701407, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1325", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 11.613, - "date": 1483533701407, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1345", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 6.496, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1367", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -9.038, - "date": 1483533701407, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1386", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -10.022, - "date": 1483533701407, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a8", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -2.869, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ca", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -3.87, - "date": 1483533701407, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13eb", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -6.913, - "date": 1483533701407, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140b", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 2.933, - "date": 1483533701407, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142b", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -0.658, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.262, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1471", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.936, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1491", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 1.348, - "date": 1483533701407, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -0.207, - "date": 1483533701407, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": 0.173, - "date": 1483533701407, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f7", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 160896, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:41:41.407000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161824, - "delta": -4.631, - "date": 1483533701407, - "rssi": 100, - "_id": "586d1433dbab07be5f2e1518", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.597, - "date": 1483533401451, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1133", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.523, - "date": 1483533401451, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1154", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.177, - "date": 1483533401451, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1175", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.207, - "date": 1483533401451, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1195", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.069, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.87, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.554, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.314, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1219", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.686, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 5.385, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 3.904, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf814dbab07be5f2e127f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 16.247, - "date": 1483533401451, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 21.457, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c3", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 14.55, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e5", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 17.921, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1305", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.911, - "date": 1483533401451, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1326", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.613, - "date": 1483533401451, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1346", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 6.496, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1365", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -9.038, - "date": 1483533401451, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1387", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -10.022, - "date": 1483533401451, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ac", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -2.869, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13c9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.87, - "date": 1483533401451, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ec", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -6.913, - "date": 1483533401451, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.933, - "date": 1483533401451, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.658, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.262, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1472", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.936, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1492", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.348, - "date": 1483533401451, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.207, - "date": 1483533401451, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161152, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:36:41.451000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.173, - "date": 1483533401451, - "rssi": 100, - "_id": "586d11dbdbab07be5f2e14f8", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.658, - "date": 1483533101684, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1114", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -3.597, - "date": 1483533101684, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1134", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.523, - "date": 1483533101684, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1155", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.177, - "date": 1483533101684, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1176", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 0.207, - "date": 1483533101684, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1196", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 0.069, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b5", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.87, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.554, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.314, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.686, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123c", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 5.385, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 3.904, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1280", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 16.247, - "date": 1483533101684, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 21.457, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c4", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 14.55, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e6", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 17.921, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1306", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 11.911, - "date": 1483533101684, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1328", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 11.613, - "date": 1483533101684, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1347", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 6.496, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1368", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -9.038, - "date": 1483533101684, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1388", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -10.022, - "date": 1483533101684, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13a9", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -2.869, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cc", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -3.87, - "date": 1483533101684, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ed", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -6.913, - "date": 1483533101684, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140d", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 2.933, - "date": 1483533101684, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142d", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -0.658, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.262, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1473", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.936, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1493", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": 1.348, - "date": 1483533101684, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b4", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 161856, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:31:41.684000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162816, - "delta": -0.207, - "date": 1483533101684, - "rssi": 100, - "_id": "586d10afdbab07be5f2e14d8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.935, - "date": 1483532801480, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f3", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.658, - "date": 1483532801480, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1115", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -3.597, - "date": 1483532801480, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1135", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.523, - "date": 1483532801480, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1156", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.177, - "date": 1483532801480, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1177", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 0.207, - "date": 1483532801480, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1197", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 0.069, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b6", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.87, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11d9", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.554, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11f9", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.314, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.686, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123d", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 5.385, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125c", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 3.904, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1282", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 16.247, - "date": 1483532801480, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a4", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 21.457, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c5", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 14.55, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e7", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 17.921, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1307", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 11.911, - "date": 1483532801480, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1327", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 11.613, - "date": 1483532801480, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1348", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 6.496, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1366", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -9.038, - "date": 1483532801480, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -10.022, - "date": 1483532801480, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ad", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -2.869, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cb", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -3.87, - "date": 1483532801480, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ee", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -6.913, - "date": 1483532801480, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 2.933, - "date": 1483532801480, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": -0.658, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e144f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.262, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1474", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.936, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1494", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 162176, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:26:41.480000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161280, - "delta": 1.348, - "date": 1483532801480, - "rssi": 100, - "_id": "586d0f83dbab07be5f2e14b5", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.417, - "date": 1483532501420, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.935, - "date": 1483532501420, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.658, - "date": 1483532501420, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1116", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.597, - "date": 1483532501420, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1136", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.523, - "date": 1483532501420, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1157", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.177, - "date": 1483532501420, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1178", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.207, - "date": 1483532501420, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1198", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 0.069, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b7", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.87, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11da", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.554, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.314, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.686, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1241", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 5.385, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 3.904, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1281", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 16.247, - "date": 1483532501420, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a5", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 21.457, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c6", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 14.55, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e8", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 17.921, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1308", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.911, - "date": 1483532501420, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1329", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 11.613, - "date": 1483532501420, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1349", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 6.496, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1369", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -9.038, - "date": 1483532501420, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1389", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -10.022, - "date": 1483532501420, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13aa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -2.869, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -3.87, - "date": 1483532501420, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13ef", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -6.913, - "date": 1483532501420, - "rssi": 100, - "_id": "586d087bdbab07be5f2e140f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 2.933, - "date": 1483532501420, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e142f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": -0.658, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1450", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.262, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1475", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 161408, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:21:41.420000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159488, - "delta": 1.936, - "date": 1483532501420, - "rssi": 100, - "_id": "586d0e58dbab07be5f2e1495", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -1.417, - "date": 1483532201043, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cb", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.417, - "date": 1483532201043, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.935, - "date": 1483532201043, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.658, - "date": 1483532201043, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1118", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.597, - "date": 1483532201043, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1137", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.523, - "date": 1483532201043, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1158", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.177, - "date": 1483532201043, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 0.207, - "date": 1483532201043, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e1199", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 0.069, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b8", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.87, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11db", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.554, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fb", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.314, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.686, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 5.385, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e125f", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 3.904, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1283", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 16.247, - "date": 1483532201043, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a6", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 21.457, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c7", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 14.55, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12e9", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 17.921, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1309", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 11.911, - "date": 1483532201043, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 11.613, - "date": 1483532201043, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134a", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 6.496, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136a", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -9.038, - "date": 1483532201043, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -10.022, - "date": 1483532201043, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ab", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -2.869, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13ce", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -3.87, - "date": 1483532201043, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f2", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -6.913, - "date": 1483532201043, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1410", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 2.933, - "date": 1483532201043, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1430", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": -0.658, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1451", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 159840, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:16:41.043000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162656, - "delta": 1.262, - "date": 1483532201043, - "rssi": 100, - "_id": "586d0d2cdbab07be5f2e1476", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 6.609, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ac", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -1.417, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.417, - "date": 1483531901044, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.935, - "date": 1483531901044, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f5", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.658, - "date": 1483531901044, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1117", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.597, - "date": 1483531901044, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1138", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.523, - "date": 1483531901044, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1159", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.177, - "date": 1483531901044, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1179", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 0.207, - "date": 1483531901044, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 0.069, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11b9", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.87, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11dc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.554, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fc", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.314, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1221", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 1.686, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e123f", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 5.385, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1260", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 3.904, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1284", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 16.247, - "date": 1483531901044, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a7", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 21.457, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c8", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 14.55, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ea", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 17.921, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 11.911, - "date": 1483531901044, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132a", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 11.613, - "date": 1483531901044, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 6.496, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136b", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -9.038, - "date": 1483531901044, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -10.022, - "date": 1483531901044, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13ae", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -2.869, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13cf", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -3.87, - "date": 1483531901044, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -6.913, - "date": 1483531901044, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1411", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": 2.933, - "date": 1483531901044, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1431", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158592, - "direction": "FortyFiveUp", - "noise": 1, - "dateString": "2017-01-04T13:11:41.044000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163968, - "delta": -0.658, - "date": 1483531901044, - "rssi": 100, - "_id": "586d0ad3dbab07be5f2e1452", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.069, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108d", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 6.609, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ad", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -1.417, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.417, - "date": 1483531601420, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d6", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.935, - "date": 1483531601420, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f6", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.658, - "date": 1483531601420, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1119", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.597, - "date": 1483531601420, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1139", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.523, - "date": 1483531601420, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115a", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.177, - "date": 1483531601420, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117a", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 0.207, - "date": 1483531601420, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119b", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 0.069, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11ba", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.87, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11dd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.554, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fd", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.314, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf490dbab07be5f2e121f", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 1.686, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1240", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 5.385, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1261", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 3.904, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1285", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 16.247, - "date": 1483531601420, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a8", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 21.457, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12c9", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 14.55, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12eb", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 17.921, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130b", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 11.911, - "date": 1483531601420, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 11.613, - "date": 1483531601420, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 6.496, - "date": 1483531601420, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136c", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -9.038, - "date": 1483531601420, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138d", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -10.022, - "date": 1483531601420, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13af", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -2.869, - "date": 1483531601420, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d0", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -3.87, - "date": 1483531601420, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f1", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": -6.913, - "date": 1483531601420, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1412", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158304, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:06:41.420000+01:00", - "sgv": 112, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 157856, - "delta": 2.933, - "date": 1483531601420, - "rssi": 100, - "_id": "586d09a9dbab07be5f2e1432", - "type": "sgv", - "glucose": 112 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.331, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.069, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108e", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 6.609, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10ae", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -1.417, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10ce", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.417, - "date": 1483531300848, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d8", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.935, - "date": 1483531300848, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f8", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.658, - "date": 1483531300848, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111a", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.597, - "date": 1483531300848, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113a", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.523, - "date": 1483531300848, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115b", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.177, - "date": 1483531300848, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 0.207, - "date": 1483531300848, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 0.069, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bb", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.87, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11de", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 2.554, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11fe", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.314, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1220", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 1.686, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1242", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 5.385, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1262", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 3.904, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1286", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 16.247, - "date": 1483531300848, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12a9", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 21.457, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ca", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 14.55, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ec", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 17.921, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130c", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 11.911, - "date": 1483531300848, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 11.613, - "date": 1483531300848, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134e", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": 6.496, - "date": 1483531300848, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136d", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -9.038, - "date": 1483531300848, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138f", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -10.022, - "date": 1483531300848, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b0", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -2.869, - "date": 1483531300848, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d1", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -3.87, - "date": 1483531300848, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f3", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 158720, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T13:01:40.848000+01:00", - "sgv": 111, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 156864, - "delta": -6.913, - "date": 1483531300848, - "rssi": 100, - "_id": "586d087bdbab07be5f2e1413", - "type": "sgv", - "glucose": 111 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.516, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.331, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.069, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce553dbab07be5f2e108f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 6.609, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10af", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -1.417, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce7acdbab07be5f2e10cf", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.417, - "date": 1483531002068, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10d9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.935, - "date": 1483531002068, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10f9", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.658, - "date": 1483531002068, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.597, - "date": 1483531002068, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113b", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.523, - "date": 1483531002068, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.177, - "date": 1483531002068, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 0.207, - "date": 1483531002068, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 0.069, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bc", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.87, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11df", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 2.554, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf364dbab07be5f2e11ff", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.314, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1222", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 1.686, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1243", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 5.385, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1263", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 3.904, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1287", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 16.247, - "date": 1483531002068, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12aa", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 21.457, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cb", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 14.55, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ed", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 17.921, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 11.911, - "date": 1483531002068, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 11.613, - "date": 1483531002068, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": 6.496, - "date": 1483531002068, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -9.038, - "date": 1483531002068, - "rssi": 100, - "_id": "586d029fdbab07be5f2e138e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -10.022, - "date": 1483531002068, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -2.869, - "date": 1483531002068, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 159264, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:56:42.068000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159936, - "delta": -3.87, - "date": 1483531002068, - "rssi": 100, - "_id": "586d074fdbab07be5f2e13f4", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -1.417, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e102e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.516, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.331, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e106f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.069, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1090", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 6.609, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce67fdbab07be5f2e10b0", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.417, - "date": 1483530701141, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10da", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.935, - "date": 1483530701141, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fa", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.658, - "date": 1483530701141, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111d", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -3.597, - "date": 1483530701141, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113c", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.523, - "date": 1483530701141, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115d", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.177, - "date": 1483530701141, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 0.207, - "date": 1483530701141, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 0.069, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11be", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.87, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e0", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 2.554, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1200", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.314, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1223", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 1.686, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1245", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 5.385, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1264", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 3.904, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1288", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 16.247, - "date": 1483530701141, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ab", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 21.457, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cc", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 14.55, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ee", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 17.921, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130e", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 11.911, - "date": 1483530701141, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e132f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 11.613, - "date": 1483530701141, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1350", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": 6.496, - "date": 1483530701141, - "rssi": 100, - "_id": "586d0047dbab07be5f2e136f", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -9.038, - "date": 1483530701141, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1390", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -10.022, - "date": 1483530701141, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b3", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 160256, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:51:41.141000+01:00", - "sgv": 113, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 158528, - "delta": -2.869, - "date": 1483530701141, - "rssi": 100, - "_id": "586d0623dbab07be5f2e13d3", - "type": "sgv", - "glucose": 113 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -2.218, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e100e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -1.417, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e102f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.516, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e104f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.331, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1070", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.069, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1091", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 6.609, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.417, - "date": 1483530401170, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10db", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.935, - "date": 1483530401170, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fb", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.658, - "date": 1483530401170, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111c", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -3.597, - "date": 1483530401170, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113d", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.523, - "date": 1483530401170, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115e", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.177, - "date": 1483530401170, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e117f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 0.207, - "date": 1483530401170, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e119f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 0.069, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.87, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e1", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 2.554, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1201", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.314, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1224", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 1.686, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1244", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 5.385, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1265", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 3.904, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf814dbab07be5f2e1289", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 16.247, - "date": 1483530401170, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ac", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 21.457, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cd", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 14.55, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12ef", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 17.921, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e130f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 11.911, - "date": 1483530401170, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1330", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 11.613, - "date": 1483530401170, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e134f", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": 6.496, - "date": 1483530401170, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1370", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -9.038, - "date": 1483530401170, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1391", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 162240, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:46:41.170000+01:00", - "sgv": 114, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 159840, - "delta": -10.022, - "date": 1483530401170, - "rssi": 100, - "_id": "586d04f8dbab07be5f2e13b2", - "type": "sgv", - "glucose": 114 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -0.207, - "date": 1483530102052, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0fef", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -2.218, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e100f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -1.417, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1030", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.516, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1051", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.331, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1071", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.069, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1092", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 6.609, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.417, - "date": 1483530102052, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10dc", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.935, - "date": 1483530102052, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fc", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.658, - "date": 1483530102052, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -3.597, - "date": 1483530102052, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113e", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.523, - "date": 1483530102052, - "rssi": 100, - "_id": "586ced88dbab07be5f2e115f", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.177, - "date": 1483530102052, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1180", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 0.207, - "date": 1483530102052, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a0", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 0.069, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11bf", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.87, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e2", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 2.554, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1202", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.314, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1225", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 1.686, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1246", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 5.385, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1266", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 3.904, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128a", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 16.247, - "date": 1483530102052, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ad", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 21.457, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12ce", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 14.55, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f0", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 17.921, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1310", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 11.911, - "date": 1483530102052, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1331", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 11.613, - "date": 1483530102052, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1351", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": 6.496, - "date": 1483530102052, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1371", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 164736, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:41:42.052000+01:00", - "sgv": 116, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 161888, - "delta": -9.038, - "date": 1483530102052, - "rssi": 100, - "_id": "586d029fdbab07be5f2e1392", - "type": "sgv", - "glucose": 116 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -2.237, - "date": 1483529802048, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -0.207, - "date": 1483529802048, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff0", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -2.218, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1010", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -1.417, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1031", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.516, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1050", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.331, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1072", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.069, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1093", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 6.609, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.417, - "date": 1483529802048, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10dd", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.935, - "date": 1483529802048, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fd", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.658, - "date": 1483529802048, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e111e", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": -3.597, - "date": 1483529802048, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e113f", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.523, - "date": 1483529802048, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1160", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.177, - "date": 1483529802048, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1182", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 0.207, - "date": 1483529802048, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 0.069, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c0", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.87, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e3", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 2.554, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1203", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.314, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1226", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 1.686, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1247", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 5.385, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1267", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 3.904, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128b", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 16.247, - "date": 1483529802048, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12ae", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 21.457, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12cf", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 14.55, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f1", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 17.921, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1311", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 11.911, - "date": 1483529802048, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1332", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 11.613, - "date": 1483529802048, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1353", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166528, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:36:42.048000+01:00", - "sgv": 117, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 162080, - "delta": 6.496, - "date": 1483529802048, - "rssi": 100, - "_id": "586d0047dbab07be5f2e1372", - "type": "sgv", - "glucose": 117 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -4.355, - "date": 1483529500848, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -2.237, - "date": 1483529500848, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -0.207, - "date": 1483529500848, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -2.218, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1011", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -1.417, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1032", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.516, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1052", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.331, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1073", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.069, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1094", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 6.609, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.417, - "date": 1483529500848, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10df", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.935, - "date": 1483529500848, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10fe", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.658, - "date": 1483529500848, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1120", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": -3.597, - "date": 1483529500848, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1140", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.523, - "date": 1483529500848, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1161", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.177, - "date": 1483529500848, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1181", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 0.207, - "date": 1483529500848, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 0.069, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c1", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.87, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e4", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 2.554, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1204", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.314, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1229", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 1.686, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1248", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 5.385, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1268", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 3.904, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128c", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 16.247, - "date": 1483529500848, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12af", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 21.457, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d0", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 14.55, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f2", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 17.921, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1312", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 11.911, - "date": 1483529500848, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1333", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 166656, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:31:40.848000+01:00", - "sgv": 119, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 164160, - "delta": 11.613, - "date": 1483529500848, - "rssi": 100, - "_id": "586cff1cdbab07be5f2e1352", - "type": "sgv", - "glucose": 119 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.002, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdbf3dbab07be5f2e0f93", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -4.355, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.237, - "date": 1483529200876, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -0.207, - "date": 1483529200876, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -2.218, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1012", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -1.417, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1033", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.516, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1053", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.331, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1074", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.069, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce553dbab07be5f2e1095", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 6.609, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b5", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.417, - "date": 1483529200876, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10de", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.935, - "date": 1483529200876, - "rssi": 100, - "_id": "586cea04dbab07be5f2e10ff", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.658, - "date": 1483529200876, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1121", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": -3.597, - "date": 1483529200876, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1141", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.523, - "date": 1483529200876, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1162", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.177, - "date": 1483529200876, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1183", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.207, - "date": 1483529200876, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 0.069, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c2", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.87, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e5", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 2.554, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1205", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.314, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1228", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 1.686, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e1249", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 5.385, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e1269", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 3.904, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128d", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 16.247, - "date": 1483529200876, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12b0", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 21.457, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d1", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 14.55, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f3", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 17.921, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1313", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 165216, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:26:40.876000+01:00", - "sgv": 123, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 168192, - "delta": 11.911, - "date": 1483529200876, - "rssi": 100, - "_id": "586cfdefdbab07be5f2e1334", - "type": "sgv", - "glucose": 123 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 4.079, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdac7dbab07be5f2e0f6e", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.002, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdbf3dbab07be5f2e0f94", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -4.355, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdd20dbab07be5f2e0fb4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -2.237, - "date": 1483528900865, - "rssi": 100, - "_id": "586cde4cdbab07be5f2e0fd4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -0.207, - "date": 1483528900865, - "rssi": 100, - "_id": "586cdf78dbab07be5f2e0ff3", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -2.218, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce0a4dbab07be5f2e1013", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -1.417, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce1d1dbab07be5f2e1034", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.516, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce2fddbab07be5f2e1054", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.331, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce42ddbab07be5f2e1075", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.069, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce553dbab07be5f2e10a1", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 6.609, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce680dbab07be5f2e10b6", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.417, - "date": 1483528900865, - "rssi": 100, - "_id": "586ce8d8dbab07be5f2e10e0", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.935, - "date": 1483528900865, - "rssi": 100, - "_id": "586cea04dbab07be5f2e1100", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.658, - "date": 1483528900865, - "rssi": 100, - "_id": "586ceb30dbab07be5f2e1122", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": -3.597, - "date": 1483528900865, - "rssi": 100, - "_id": "586cec5bdbab07be5f2e1142", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.523, - "date": 1483528900865, - "rssi": 100, - "_id": "586ced88dbab07be5f2e1163", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.177, - "date": 1483528900865, - "rssi": 100, - "_id": "586ceeb3dbab07be5f2e1184", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 0.207, - "date": 1483528900865, - "rssi": 100, - "_id": "586cefe0dbab07be5f2e11a4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 0.069, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf10cdbab07be5f2e11c3", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.87, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf238dbab07be5f2e11e7", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 2.554, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf364dbab07be5f2e1206", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.314, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf490dbab07be5f2e1227", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 1.686, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf5bddbab07be5f2e124a", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 5.385, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf6e8dbab07be5f2e126a", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 3.904, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf814dbab07be5f2e128e", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 16.247, - "date": 1483528900865, - "rssi": 100, - "_id": "586cf940dbab07be5f2e12b1", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 21.457, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfa6cdbab07be5f2e12d2", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 14.55, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfb98dbab07be5f2e12f4", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 163104, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:21:40.865000+01:00", - "sgv": 122, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 167264, - "delta": 17.921, - "date": 1483528900865, - "rssi": 100, - "_id": "586cfcc3dbab07be5f2e1314", - "type": "sgv", - "glucose": 122 - }, - { - "filtered": 161184, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:16:40.916000+01:00", - "sgv": 118, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163488, - "delta": 1.071, - "date": 1483528600916, - "rssi": 100, - "_id": "586cd99cdbab07be5f2e0f4f", - "type": "sgv", - "glucose": 118 - }, - { - "filtered": 161184, - "direction": "Flat", - "noise": 1, - "dateString": "2017-01-04T12:16:40.916000+01:00", - "sgv": 118, - "device": "xDrip-DexbridgeWixel", - "unfiltered": 163488, - "delta": 4.079, - "date": 1483528600916, - "rssi": 100, - "_id": "586cdac7dbab07be5f2e0f6f", - "type": "sgv", - "glucose": 118 - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/iob.json b/app/src/main/java/info/nightscout/sampleData/monitor/iob.json deleted file mode 100644 index f96f4137a9..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/iob.json +++ /dev/null @@ -1 +0,0 @@ -[{"iob":5.248,"activity":0.0766,"bolussnooze":1.371,"basaliob":1.751,"netbasalinsulin":4.95,"hightempinsulin":5.05,"time":"2017-01-04T15:40:31.000Z"},{"iob":4.818,"activity":0.076,"bolussnooze":1.057,"basaliob":1.55,"netbasalinsulin":4.85,"hightempinsulin":5,"time":"2017-01-04T15:45:31.000Z"},{"iob":4.391,"activity":0.0753,"bolussnooze":0.785,"basaliob":1.357,"netbasalinsulin":4.65,"hightempinsulin":4.85,"time":"2017-01-04T15:50:31.000Z"},{"iob":3.967,"activity":0.0749,"bolussnooze":0.556,"basaliob":1.171,"netbasalinsulin":4.4,"hightempinsulin":4.65,"time":"2017-01-04T15:55:31.000Z"},{"iob":3.545,"activity":0.0741,"bolussnooze":0.369,"basaliob":0.992,"netbasalinsulin":4.3,"hightempinsulin":4.6,"time":"2017-01-04T16:00:31.000Z"},{"iob":3.139,"activity":0.0713,"bolussnooze":0.224,"basaliob":0.821,"netbasalinsulin":4.25,"hightempinsulin":4.6,"time":"2017-01-04T16:05:31.000Z"},{"iob":2.796,"activity":0.0686,"bolussnooze":0.121,"basaliob":0.709,"netbasalinsulin":4.2,"hightempinsulin":4.55,"time":"2017-01-04T16:10:31.000Z"},{"iob":2.471,"activity":0.0648,"bolussnooze":0.059,"basaliob":0.604,"netbasalinsulin":4.15,"hightempinsulin":4.5,"time":"2017-01-04T16:15:31.000Z"},{"iob":2.173,"activity":0.0594,"bolussnooze":0.019,"basaliob":0.508,"netbasalinsulin":4.05,"hightempinsulin":4.4,"time":"2017-01-04T16:20:31.000Z"},{"iob":1.901,"activity":0.0546,"bolussnooze":0.001,"basaliob":0.42,"netbasalinsulin":4,"hightempinsulin":4.35,"time":"2017-01-04T16:25:31.000Z"},{"iob":1.65,"activity":0.0502,"bolussnooze":0,"basaliob":0.341,"netbasalinsulin":3.95,"hightempinsulin":4.3,"time":"2017-01-04T16:30:31.000Z"},{"iob":1.419,"activity":0.0461,"bolussnooze":0,"basaliob":0.271,"netbasalinsulin":3.85,"hightempinsulin":4.2,"time":"2017-01-04T16:35:31.000Z"},{"iob":1.21,"activity":0.0419,"bolussnooze":0,"basaliob":0.211,"netbasalinsulin":3.65,"hightempinsulin":4,"time":"2017-01-04T16:40:31.000Z"},{"iob":1.022,"activity":0.0377,"bolussnooze":0,"basaliob":0.162,"netbasalinsulin":3.2,"hightempinsulin":3.55,"time":"2017-01-04T16:45:31.000Z"},{"iob":0.854,"activity":0.0336,"bolussnooze":0,"basaliob":0.123,"netbasalinsulin":2.75,"hightempinsulin":3.1,"time":"2017-01-04T16:50:31.000Z"},{"iob":0.705,"activity":0.0298,"bolussnooze":0,"basaliob":0.093,"netbasalinsulin":2.3,"hightempinsulin":2.65,"time":"2017-01-04T16:55:31.000Z"},{"iob":0.573,"activity":0.0263,"bolussnooze":0,"basaliob":0.069,"netbasalinsulin":1.8,"hightempinsulin":2.15,"time":"2017-01-04T17:00:31.000Z"},{"iob":0.458,"activity":0.0232,"bolussnooze":0,"basaliob":0.05,"netbasalinsulin":1.35,"hightempinsulin":1.7,"time":"2017-01-04T17:05:31.000Z"},{"iob":0.356,"activity":0.0203,"bolussnooze":0,"basaliob":0.035,"netbasalinsulin":0.85,"hightempinsulin":1.2,"time":"2017-01-04T17:10:31.000Z"},{"iob":0.268,"activity":0.0178,"bolussnooze":0,"basaliob":0.022,"netbasalinsulin":0.6,"hightempinsulin":0.95,"time":"2017-01-04T17:15:31.000Z"},{"iob":0.191,"activity":0.0153,"bolussnooze":0,"basaliob":0.011,"netbasalinsulin":0.6,"hightempinsulin":0.95,"time":"2017-01-04T17:20:31.000Z"},{"iob":0.127,"activity":0.0129,"bolussnooze":0,"basaliob":0.001,"netbasalinsulin":0.65,"hightempinsulin":0.95,"time":"2017-01-04T17:25:31.000Z"},{"iob":0.075,"activity":0.0104,"bolussnooze":0,"basaliob":-0.007,"netbasalinsulin":0.6,"hightempinsulin":0.9,"time":"2017-01-04T17:30:31.000Z"},{"iob":0.035,"activity":0.008,"bolussnooze":0,"basaliob":-0.013,"netbasalinsulin":0.6,"hightempinsulin":0.9,"time":"2017-01-04T17:35:31.000Z"},{"iob":0.007,"activity":0.0056,"bolussnooze":0,"basaliob":-0.018,"netbasalinsulin":0.6,"hightempinsulin":0.9,"time":"2017-01-04T17:40:31.000Z"},{"iob":-0.01,"activity":0.0034,"bolussnooze":0,"basaliob":-0.021,"netbasalinsulin":0.55,"hightempinsulin":0.85,"time":"2017-01-04T17:45:31.000Z"},{"iob":-0.02,"activity":0.0021,"bolussnooze":0,"basaliob":-0.023,"netbasalinsulin":0.5,"hightempinsulin":0.8,"time":"2017-01-04T17:50:31.000Z"},{"iob":-0.024,"activity":0.0008,"bolussnooze":0,"basaliob":-0.024,"netbasalinsulin":0.45,"hightempinsulin":0.75,"time":"2017-01-04T17:55:31.000Z"},{"iob":-0.023,"activity":-0.0001,"bolussnooze":0,"basaliob":-0.023,"netbasalinsulin":0.45,"hightempinsulin":0.75,"time":"2017-01-04T18:00:31.000Z"},{"iob":-0.022,"activity":-0.0003,"bolussnooze":0,"basaliob":-0.022,"netbasalinsulin":0.4,"hightempinsulin":0.7,"time":"2017-01-04T18:05:31.000Z"},{"iob":-0.019,"activity":-0.0005,"bolussnooze":0,"basaliob":-0.019,"netbasalinsulin":0.35,"hightempinsulin":0.65,"time":"2017-01-04T18:10:31.000Z"},{"iob":-0.016,"activity":-0.0007,"bolussnooze":0,"basaliob":-0.016,"netbasalinsulin":0.2,"hightempinsulin":0.5,"time":"2017-01-04T18:15:31.000Z"},{"iob":-0.012,"activity":-0.0008,"bolussnooze":0,"basaliob":-0.012,"netbasalinsulin":0.05,"hightempinsulin":0.35,"time":"2017-01-04T18:20:31.000Z"},{"iob":-0.008,"activity":-0.0007,"bolussnooze":0,"basaliob":-0.008,"netbasalinsulin":-0.15,"hightempinsulin":0.15,"time":"2017-01-04T18:25:31.000Z"},{"iob":-0.005,"activity":-0.0006,"bolussnooze":0,"basaliob":-0.005,"netbasalinsulin":-0.3,"hightempinsulin":0,"time":"2017-01-04T18:30:31.000Z"},{"iob":-0.003,"activity":-0.0004,"bolussnooze":0,"basaliob":-0.003,"netbasalinsulin":-0.3,"hightempinsulin":0,"time":"2017-01-04T18:35:31.000Z"},{"iob":-0.002,"activity":-0.0003,"bolussnooze":0,"basaliob":-0.002,"netbasalinsulin":-0.25,"hightempinsulin":0,"time":"2017-01-04T18:40:31.000Z"},{"iob":-0.001,"activity":-0.0002,"bolussnooze":0,"basaliob":-0.001,"netbasalinsulin":-0.2,"hightempinsulin":0,"time":"2017-01-04T18:45:31.000Z"},{"iob":0,"activity":-0.0001,"bolussnooze":0,"basaliob":0,"netbasalinsulin":-0.15,"hightempinsulin":0,"time":"2017-01-04T18:50:31.000Z"},{"iob":0,"activity":0,"bolussnooze":0,"basaliob":0,"netbasalinsulin":-0.1,"hightempinsulin":0,"time":"2017-01-04T18:55:31.000Z"},{"iob":0,"activity":0,"bolussnooze":0,"basaliob":0,"netbasalinsulin":-0.05,"hightempinsulin":0,"time":"2017-01-04T19:00:31.000Z"},{"iob":0,"activity":0,"bolussnooze":0,"basaliob":0,"netbasalinsulin":0,"hightempinsulin":0,"time":"2017-01-04T19:05:31.000Z"}] diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/meal.json b/app/src/main/java/info/nightscout/sampleData/monitor/meal.json deleted file mode 100644 index d0e41ca9fa..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/meal.json +++ /dev/null @@ -1 +0,0 @@ -{"carbs":0,"boluses":8,"mealCOB":0} diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/mmtune.json b/app/src/main/java/info/nightscout/sampleData/monitor/mmtune.json deleted file mode 100644 index 460af83e51..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/mmtune.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "scanDetails": [ - [ - "868.300", - 0, - -99 - ], - [ - "868.312", - 0, - -99 - ], - [ - "868.324", - 0, - -99 - ], - [ - "868.336", - 0, - -99 - ], - [ - "868.348", - 0, - -99 - ], - [ - "868.360", - 0, - -99 - ], - [ - "868.372", - 4, - -91 - ], - [ - "868.384", - 5, - -81 - ], - [ - "868.396", - 5, - -78 - ], - [ - "868.408", - 5, - -77 - ], - [ - "868.420", - 5, - -76 - ], - [ - "868.432", - 5, - -76 - ], - [ - "868.444", - 5, - -76 - ], - [ - "868.456", - 5, - -76 - ], - [ - "868.468", - 5, - -75 - ], - [ - "868.480", - 5, - -76 - ], - [ - "868.492", - 5, - -76 - ], - [ - "868.504", - 5, - -77 - ], - [ - "868.516", - 5, - -80 - ], - [ - "868.528", - 5, - -86 - ], - [ - "868.540", - 0, - -99 - ], - [ - "868.552", - 0, - -99 - ], - [ - "868.564", - 0, - -99 - ], - [ - "868.576", - 0, - -99 - ], - [ - "868.588", - 0, - -99 - ] - ], - "setFreq": 868.468, - "usedDefault": false -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/pumphistory-zoned.json b/app/src/main/java/info/nightscout/sampleData/monitor/pumphistory-zoned.json deleted file mode 100644 index 3070d01cd5..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/pumphistory-zoned.json +++ /dev/null @@ -1,936 +0,0 @@ -[ - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:37:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:37:57+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3965104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:37:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:37:57+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3965104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:28:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:28:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c5c104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:28:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:28:28+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1c5c104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:21:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:21:31+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1f55104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:21:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:21:31+01:00", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "1f55104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:15:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:15:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d4f104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:15:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:15:29+01:00", - "_body": "00", - "_head": "3362", - "rate": 2.45, - "_date": "1d4f104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:08:41 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:08:41+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2948104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:08:41 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:08:41+01:00", - "_body": "00", - "_head": "334e", - "rate": 1.95, - "_date": "2948104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:06:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:06:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3246104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:06:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:06:50+01:00", - "_body": "00", - "_head": "3332", - "rate": 1.25, - "_date": "3246104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:02:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:02:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0342104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:02:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:02:03+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "0342104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:01:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:01:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c41104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:01:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:01:28+01:00", - "_body": "00", - "_head": "3396", - "rate": 3.75, - "_date": "1c41104411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T15:58:37 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T15:58:37+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "257a4f0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:55:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:55:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d770f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:55:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:55:29+01:00", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "1d770f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:46:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:46:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "326e0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:46:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:46:50+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "326e0f4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T15:44:07 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T15:44:07+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "076c4f0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:43:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:43:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "326b0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:43:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:43:50+01:00", - "_body": "00", - "_head": "3341", - "rate": 1.625, - "_date": "326b0f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:41:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:41:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "16690f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:41:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:41:22+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "16690f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:28:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:28:24+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "185c0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:28:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:28:24+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "185c0f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:22:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:22:58+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3a560f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:22:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:22:58+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3a560f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:13:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:13:01+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "014d0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:13:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:13:01+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "014d0f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:50:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:50:21+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "15720e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:50:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:50:21+01:00", - "_body": "00", - "_head": "33fb", - "rate": 6.275, - "_date": "15720e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:38:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:38:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "32660e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:38:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:38:50+01:00", - "_body": "00", - "_head": "33e7", - "rate": 5.775, - "_date": "32660e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:34:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:34:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "03620e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:34:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:34:03+01:00", - "_body": "00", - "_head": "3344", - "rate": 1.7, - "_date": "03620e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:33:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:33:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d610e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:33:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:33:29+01:00", - "_body": "00", - "_head": "3392", - "rate": 3.65, - "_date": "1d610e4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T14:32:05 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T14:32:05+01:00", - "_body": "", - "programmed": 1.0, - "_head": "010a0a00", - "amount": 1.0, - "duration": 0, - "type": "normal", - "_date": "05604e0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:26:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:26:30+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:26:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:26:30+01:00", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:25:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:25:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f590e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:25:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:25:47+01:00", - "_body": "00", - "_head": "3378", - "rate": 3.0, - "_date": "2f590e4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T14:22:59 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T14:22:59+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "3b564e0411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T14:18:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:18:15+01:00", - "_body": "", - "_head": "0300000027", - "amount": 3.9, - "fixed": 0.0, - "type": "manual", - "_date": "0f522e0411" - }, - { - "_type": "Rewind", - "_description": "Rewind 2017-01-04T14:18:03 head[2], body[0] op[0x21]", - "timestamp": "2017-01-04T14:18:03+01:00", - "_body": "", - "_head": "2100", - "_date": "03520e0411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T14:17:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:17:15+01:00", - "_body": "", - "_head": "03000a000a", - "amount": 1.0, - "fixed": 1.0, - "type": "fixed", - "_date": "0f510e0411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T14:14:56 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:14:56+01:00", - "_body": "", - "_head": "0300190019", - "amount": 2.5, - "fixed": 2.5, - "type": "fixed", - "_date": "384e0e0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:14:32 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:14:32+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "204e0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:14:32 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:14:32+01:00", - "_body": "00", - "_head": "3346", - "rate": 1.75, - "_date": "204e0e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:09:45 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:09:45+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2d490e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:09:45 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:09:45+01:00", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "2d490e4411" - }, - { - "_type": "ClearAlarm", - "_description": "ClearAlarm 2017-01-04T14:04:16 head[2], body[0] op[0x0c]", - "timestamp": "2017-01-04T14:04:16+01:00", - "_body": "", - "_head": "0c04", - "_date": "10440e0411" - }, - { - "_type": "AlarmPump", - "_description": "AlarmPump 2017-01-04T14:04:05 head[4], body[0] op[0x06]", - "timestamp": "2017-01-04T14:04:05+01:00", - "_body": "", - "_head": "06040bff", - "_date": "05444e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:57:38 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:57:38+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "26790d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:57:38 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:57:38+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "26790d4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T13:53:05 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T13:53:05+01:00", - "_body": "", - "programmed": 1.0, - "_head": "010a0a00", - "amount": 1.0, - "duration": 0, - "type": "normal", - "_date": "05754d0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:47:51 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:47:51+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "336f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:47:51 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:47:51+01:00", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "336f0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:43:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:43:53+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "356b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:43:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:43:53+01:00", - "_body": "00", - "_head": "3355", - "rate": 2.125, - "_date": "356b0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:40:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:40:04+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "04680d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:40:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:40:04+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "04680d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:27:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:46+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:46+01:00", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:27:00 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:00+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "005b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:00 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:00+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "005b0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:20:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:20:49+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "31540d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:20:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:20:49+01:00", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "31540d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:15:40 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:40+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "284f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:40 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:40+01:00", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "284f0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:15:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:31+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:31+01:00", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:08:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:08:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d480d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:08:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:08:29+01:00", - "_body": "00", - "_head": "332c", - "rate": 1.1, - "_date": "1d480d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:03:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:03:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c430d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:03:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:03:28+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1c430d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:57:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:57:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c790c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:57:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:57:44+01:00", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "2c790c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:47:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:47:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:47:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:47:29+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:35:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:35:30+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1e630c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:35:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:35:30+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1e630c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:23:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:23:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f570c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:23:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:23:47+01:00", - "_body": "00", - "_head": "33b5", - "rate": 4.525, - "_date": "2f570c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:18:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:18:48+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "30520c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:18:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:18:48+01:00", - "_body": "00", - "_head": "334a", - "rate": 1.85, - "_date": "30520c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:13:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:13:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:13:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:13:29+01:00", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:08:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:08:07+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "07480c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:08:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:08:07+01:00", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "07480c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T11:55:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:55:46+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2e770b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:55:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:55:46+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2e770b4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T11:42:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:42:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c6a0b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:42:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:42:44+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2c6a0b4411" - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/pumphistory.json b/app/src/main/java/info/nightscout/sampleData/monitor/pumphistory.json deleted file mode 100644 index 709365d77c..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/pumphistory.json +++ /dev/null @@ -1,936 +0,0 @@ -[ - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:37:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:37:57", - "_body": "", - "_head": "1601", - "_date": "3965104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:37:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:37:57", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3965104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:28:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:28:28", - "_body": "", - "_head": "1601", - "_date": "1c5c104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:28:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:28:28", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1c5c104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:21:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:21:31", - "_body": "", - "_head": "1601", - "_date": "1f55104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:21:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:21:31", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "1f55104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:15:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:15:29", - "_body": "", - "_head": "1601", - "_date": "1d4f104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:15:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:15:29", - "_body": "00", - "_head": "3362", - "rate": 2.45, - "_date": "1d4f104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:08:41 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:08:41", - "_body": "", - "_head": "1601", - "_date": "2948104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:08:41 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:08:41", - "_body": "00", - "_head": "334e", - "rate": 1.95, - "_date": "2948104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:06:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:06:50", - "_body": "", - "_head": "1601", - "_date": "3246104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:06:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:06:50", - "_body": "00", - "_head": "3332", - "rate": 1.25, - "_date": "3246104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:02:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:02:03", - "_body": "", - "_head": "1601", - "_date": "0342104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:02:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:02:03", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "0342104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:01:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:01:28", - "_body": "", - "_head": "1601", - "_date": "1c41104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:01:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:01:28", - "_body": "00", - "_head": "3396", - "rate": 3.75, - "_date": "1c41104411" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T15:58:37 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T15:58:37", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "257a4f0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:55:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:55:29", - "_body": "", - "_head": "1601", - "_date": "1d770f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:55:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:55:29", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "1d770f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:46:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:46:50", - "_body": "", - "_head": "1601", - "_date": "326e0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:46:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:46:50", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "326e0f4411" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T15:44:07 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T15:44:07", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "076c4f0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:43:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:43:50", - "_body": "", - "_head": "1601", - "_date": "326b0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:43:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:43:50", - "_body": "00", - "_head": "3341", - "rate": 1.625, - "_date": "326b0f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:41:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:41:22", - "_body": "", - "_head": "1601", - "_date": "16690f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:41:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:41:22", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "16690f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:28:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:28:24", - "_body": "", - "_head": "1601", - "_date": "185c0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:28:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:28:24", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "185c0f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:22:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:22:58", - "_body": "", - "_head": "1601", - "_date": "3a560f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:22:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:22:58", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3a560f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:13:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:13:01", - "_body": "", - "_head": "1601", - "_date": "014d0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:13:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:13:01", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "014d0f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:50:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:50:21", - "_body": "", - "_head": "1601", - "_date": "15720e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:50:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:50:21", - "_body": "00", - "_head": "33fb", - "rate": 6.275, - "_date": "15720e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:38:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:38:50", - "_body": "", - "_head": "1601", - "_date": "32660e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:38:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:38:50", - "_body": "00", - "_head": "33e7", - "rate": 5.775, - "_date": "32660e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:34:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:34:03", - "_body": "", - "_head": "1601", - "_date": "03620e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:34:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:34:03", - "_body": "00", - "_head": "3344", - "rate": 1.7, - "_date": "03620e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:33:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:33:29", - "_body": "", - "_head": "1601", - "_date": "1d610e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:33:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:33:29", - "_body": "00", - "_head": "3392", - "rate": 3.65, - "_date": "1d610e4411" - }, - { - "programmed": 1.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T14:32:05 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T14:32:05", - "_body": "", - "_head": "010a0a00", - "amount": 1.0, - "_date": "05604e0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:26:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:26:30", - "_body": "", - "_head": "1601", - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:26:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:26:30", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:25:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:25:47", - "_body": "", - "_head": "1601", - "_date": "2f590e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:25:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:25:47", - "_body": "00", - "_head": "3378", - "rate": 3.0, - "_date": "2f590e4411" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T14:22:59 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T14:22:59", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "3b564e0411" - }, - { - "_type": "Prime", - "type": "manual", - "_description": "Prime 2017-01-04T14:18:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:18:15", - "_body": "", - "fixed": 0.0, - "_head": "0300000027", - "amount": 3.9, - "_date": "0f522e0411" - }, - { - "_type": "Rewind", - "_description": "Rewind 2017-01-04T14:18:03 head[2], body[0] op[0x21]", - "timestamp": "2017-01-04T14:18:03", - "_body": "", - "_head": "2100", - "_date": "03520e0411" - }, - { - "_type": "Prime", - "type": "fixed", - "_description": "Prime 2017-01-04T14:17:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:17:15", - "_body": "", - "fixed": 1.0, - "_head": "03000a000a", - "amount": 1.0, - "_date": "0f510e0411" - }, - { - "_type": "Prime", - "type": "fixed", - "_description": "Prime 2017-01-04T14:14:56 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:14:56", - "_body": "", - "fixed": 2.5, - "_head": "0300190019", - "amount": 2.5, - "_date": "384e0e0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:14:32 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:14:32", - "_body": "", - "_head": "1601", - "_date": "204e0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:14:32 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:14:32", - "_body": "00", - "_head": "3346", - "rate": 1.75, - "_date": "204e0e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:09:45 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:09:45", - "_body": "", - "_head": "1601", - "_date": "2d490e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:09:45 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:09:45", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "2d490e4411" - }, - { - "_type": "ClearAlarm", - "_description": "ClearAlarm 2017-01-04T14:04:16 head[2], body[0] op[0x0c]", - "timestamp": "2017-01-04T14:04:16", - "_body": "", - "_head": "0c04", - "_date": "10440e0411" - }, - { - "_type": "AlarmPump", - "_description": "AlarmPump 2017-01-04T14:04:05 head[4], body[0] op[0x06]", - "timestamp": "2017-01-04T14:04:05", - "_body": "", - "_head": "06040bff", - "_date": "05444e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:57:38 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:57:38", - "_body": "", - "_head": "1601", - "_date": "26790d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:57:38 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:57:38", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "26790d4411" - }, - { - "programmed": 1.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T13:53:05 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T13:53:05", - "_body": "", - "_head": "010a0a00", - "amount": 1.0, - "_date": "05754d0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:47:51 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:47:51", - "_body": "", - "_head": "1601", - "_date": "336f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:47:51 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:47:51", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "336f0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:43:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:43:53", - "_body": "", - "_head": "1601", - "_date": "356b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:43:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:43:53", - "_body": "00", - "_head": "3355", - "rate": 2.125, - "_date": "356b0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:40:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:40:04", - "_body": "", - "_head": "1601", - "_date": "04680d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:40:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:40:04", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "04680d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:27:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:46", - "_body": "", - "_head": "1601", - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:46", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:27:00 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:00", - "_body": "", - "_head": "1601", - "_date": "005b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:00 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "005b0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:20:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:20:49", - "_body": "", - "_head": "1601", - "_date": "31540d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:20:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:20:49", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "31540d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:15:40 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:40", - "_body": "", - "_head": "1601", - "_date": "284f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:40 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:40", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "284f0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:15:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:31", - "_body": "", - "_head": "1601", - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:31", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:08:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:08:29", - "_body": "", - "_head": "1601", - "_date": "1d480d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:08:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:08:29", - "_body": "00", - "_head": "332c", - "rate": 1.1, - "_date": "1d480d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:03:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:03:28", - "_body": "", - "_head": "1601", - "_date": "1c430d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:03:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:03:28", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1c430d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:57:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:57:44", - "_body": "", - "_head": "1601", - "_date": "2c790c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:57:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:57:44", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "2c790c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:47:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:47:29", - "_body": "", - "_head": "1601", - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:47:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:47:29", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:35:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:35:30", - "_body": "", - "_head": "1601", - "_date": "1e630c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:35:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:35:30", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1e630c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:23:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:23:47", - "_body": "", - "_head": "1601", - "_date": "2f570c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:23:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:23:47", - "_body": "00", - "_head": "33b5", - "rate": 4.525, - "_date": "2f570c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:18:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:18:48", - "_body": "", - "_head": "1601", - "_date": "30520c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:18:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:18:48", - "_body": "00", - "_head": "334a", - "rate": 1.85, - "_date": "30520c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:13:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:13:29", - "_body": "", - "_head": "1601", - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:13:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:13:29", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:08:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:08:07", - "_body": "", - "_head": "1601", - "_date": "07480c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:08:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:08:07", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "07480c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T11:55:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:55:46", - "_body": "", - "_head": "1601", - "_date": "2e770b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:55:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:55:46", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2e770b4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T11:42:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:42:44", - "_body": "", - "_head": "1601", - "_date": "2c6a0b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:42:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:42:44", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2c6a0b4411" - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/reservoir.json b/app/src/main/java/info/nightscout/sampleData/monitor/reservoir.json deleted file mode 100644 index 8044dad1ca..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/reservoir.json +++ /dev/null @@ -1 +0,0 @@ -120.5 \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/status.json b/app/src/main/java/info/nightscout/sampleData/monitor/status.json deleted file mode 100644 index 557b2e011f..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/status.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "status": "normal", - "bolusing": false, - "suspended": false -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/monitor/temp_basal.json b/app/src/main/java/info/nightscout/sampleData/monitor/temp_basal.json deleted file mode 100644 index 199234eef0..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/monitor/temp_basal.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "duration": 28, - "rate": 0.0, - "temp": "absolute" -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/autosens.json b/app/src/main/java/info/nightscout/sampleData/settings/autosens.json deleted file mode 100644 index 531ce45238..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/autosens.json +++ /dev/null @@ -1 +0,0 @@ -{"ratio":1.4} diff --git a/app/src/main/java/info/nightscout/sampleData/settings/basal_profile.json b/app/src/main/java/info/nightscout/sampleData/settings/basal_profile.json deleted file mode 100644 index 80e240fb56..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/basal_profile.json +++ /dev/null @@ -1,140 +0,0 @@ -[ - { - "i": 0, - "start": "00:00:00", - "rate": 1.0, - "minutes": 0 - }, - { - "i": 1, - "start": "01:00:00", - "rate": 0.9, - "minutes": 60 - }, - { - "i": 2, - "start": "02:00:00", - "rate": 0.8, - "minutes": 120 - }, - { - "i": 3, - "start": "03:00:00", - "rate": 0.8, - "minutes": 180 - }, - { - "i": 4, - "start": "04:00:00", - "rate": 1.3, - "minutes": 240 - }, - { - "i": 5, - "start": "05:00:00", - "rate": 1.4000000000000001, - "minutes": 300 - }, - { - "i": 6, - "start": "06:00:00", - "rate": 1.8, - "minutes": 360 - }, - { - "i": 7, - "start": "07:00:00", - "rate": 1.8, - "minutes": 420 - }, - { - "i": 8, - "start": "08:00:00", - "rate": 1.8, - "minutes": 480 - }, - { - "i": 9, - "start": "09:00:00", - "rate": 1.5, - "minutes": 540 - }, - { - "i": 10, - "start": "10:00:00", - "rate": 1.0, - "minutes": 600 - }, - { - "i": 11, - "start": "11:00:00", - "rate": 0.9, - "minutes": 660 - }, - { - "i": 12, - "start": "12:00:00", - "rate": 0.6000000000000001, - "minutes": 720 - }, - { - "i": 13, - "start": "13:00:00", - "rate": 0.6000000000000001, - "minutes": 780 - }, - { - "i": 14, - "start": "14:00:00", - "rate": 0.6000000000000001, - "minutes": 840 - }, - { - "i": 15, - "start": "15:00:00", - "rate": 0.6000000000000001, - "minutes": 900 - }, - { - "i": 16, - "start": "17:00:00", - "rate": 0.6000000000000001, - "minutes": 1020 - }, - { - "i": 17, - "start": "18:00:00", - "rate": 0.6000000000000001, - "minutes": 1080 - }, - { - "i": 18, - "start": "19:00:00", - "rate": 0.6000000000000001, - "minutes": 1140 - }, - { - "i": 19, - "start": "20:00:00", - "rate": 0.6000000000000001, - "minutes": 1200 - }, - { - "i": 20, - "start": "21:00:00", - "rate": 0.6000000000000001, - "minutes": 1260 - }, - { - "i": 21, - "start": "22:00:00", - "rate": 0.6000000000000001, - "minutes": 1320 - }, - { - "i": 22, - "start": "23:00:00", - "rate": 0.6000000000000001, - "minutes": 1380 - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/bg_targets.json b/app/src/main/java/info/nightscout/sampleData/settings/bg_targets.json deleted file mode 100644 index a53f740ae4..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/bg_targets.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "units": "mg/dL", - "raw": "0x01 0x00 0x5a 0x5a 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00", - "user_preferred_units": "mg/dL", - "targets": [ - { - "i": 0, - "high": 90, - "start": "00:00:00", - "low": 90, - "offset": 0, - "x": 0 - } - ], - "first": 1 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/bg_targets_raw.json b/app/src/main/java/info/nightscout/sampleData/settings/bg_targets_raw.json deleted file mode 100644 index 887bc01e31..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/bg_targets_raw.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "units": "mg/dL", - "raw": "0x01 0x00 0x5a 0x5a 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00", - "targets": [ - { - "high": 90, - "start": "00:00:00", - "low": 90, - "offset": 0, - "i": 0, - "x": 0 - } - ], - "first": 1 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/carb_ratios.json b/app/src/main/java/info/nightscout/sampleData/settings/carb_ratios.json deleted file mode 100644 index 8249963d76..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/carb_ratios.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "units": "grams", - "raw": "0x01 0x00 0x09 0x0b 0x07 0x12 0x09 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00", - "first": 1, - "schedule": [ - { - "start": "00:00:00", - "r": 9, - "ratio": 9, - "offset": 0, - "i": 0, - "x": 0 - }, - { - "start": "05:30:00", - "r": 7, - "ratio": 7, - "offset": 330, - "i": 11, - "x": 1 - }, - { - "start": "09:00:00", - "r": 9, - "ratio": 9, - "offset": 540, - "i": 18, - "x": 2 - } - ] -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/insulin_sensitivities.json b/app/src/main/java/info/nightscout/sampleData/settings/insulin_sensitivities.json deleted file mode 100644 index 42aa84cbae..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/insulin_sensitivities.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "units": "mg/dL", - "user_preferred_units": "mg/dL", - "sensitivities": [ - { - "i": 0, - "start": "00:00:00", - "sensitivity": 35, - "x": 0, - "offset": 0 - }, - { - "i": 8, - "start": "04:00:00", - "sensitivity": 30, - "x": 1, - "offset": 240 - }, - { - "i": 20, - "start": "10:00:00", - "sensitivity": 30, - "x": 2, - "offset": 600 - } - ], - "first": 1 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/insulin_sensitivities_raw.json b/app/src/main/java/info/nightscout/sampleData/settings/insulin_sensitivities_raw.json deleted file mode 100644 index ca36a04c94..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/insulin_sensitivities_raw.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "units": "mg/dL", - "sensitivities": [ - { - "i": 0, - "start": "00:00:00", - "sensitivity": 35, - "offset": 0, - "x": 0 - }, - { - "i": 8, - "start": "04:00:00", - "sensitivity": 30, - "offset": 240, - "x": 1 - }, - { - "i": 20, - "start": "10:00:00", - "sensitivity": 30, - "offset": 600, - "x": 2 - } - ], - "first": 1 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/model.json b/app/src/main/java/info/nightscout/sampleData/settings/model.json deleted file mode 100644 index 7bd9b5e600..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/model.json +++ /dev/null @@ -1 +0,0 @@ -"522" \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/profile.json b/app/src/main/java/info/nightscout/sampleData/settings/profile.json deleted file mode 100644 index 66e6cbc197..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/profile.json +++ /dev/null @@ -1 +0,0 @@ -{"max_iob":15,"max_daily_safety_multiplier":9,"current_basal_safety_multiplier":12,"autosens_max":1.4,"autosens_min":0.6,"autosens_adjust_targets":true,"override_high_target_with_low":false,"skip_neutral_temps":false,"bolussnooze_dia_divisor":2,"min_5m_carbimpact":3,"carbratio_adjustmentratio":1,"dia":3,"model":"522","current_basal":0.6,"basalprofile":[{"i":0,"start":"00:00:00","rate":1,"minutes":0},{"i":1,"start":"01:00:00","rate":0.9,"minutes":60},{"i":2,"start":"02:00:00","rate":0.8,"minutes":120},{"i":3,"start":"03:00:00","rate":0.8,"minutes":180},{"i":4,"start":"04:00:00","rate":1.3,"minutes":240},{"i":5,"start":"05:00:00","rate":1.4000000000000001,"minutes":300},{"i":6,"start":"06:00:00","rate":1.8,"minutes":360},{"i":7,"start":"07:00:00","rate":1.8,"minutes":420},{"i":8,"start":"08:00:00","rate":1.8,"minutes":480},{"i":9,"start":"09:00:00","rate":1.5,"minutes":540},{"i":10,"start":"10:00:00","rate":1,"minutes":600},{"i":11,"start":"11:00:00","rate":0.9,"minutes":660},{"i":12,"start":"12:00:00","rate":0.6000000000000001,"minutes":720},{"i":13,"start":"13:00:00","rate":0.6000000000000001,"minutes":780},{"i":14,"start":"14:00:00","rate":0.6000000000000001,"minutes":840},{"i":15,"start":"15:00:00","rate":0.6000000000000001,"minutes":900},{"i":16,"start":"17:00:00","rate":0.6000000000000001,"minutes":1020},{"i":17,"start":"18:00:00","rate":0.6000000000000001,"minutes":1080},{"i":18,"start":"19:00:00","rate":0.6000000000000001,"minutes":1140},{"i":19,"start":"20:00:00","rate":0.6000000000000001,"minutes":1200},{"i":20,"start":"21:00:00","rate":0.6000000000000001,"minutes":1260},{"i":21,"start":"22:00:00","rate":0.6000000000000001,"minutes":1320},{"i":22,"start":"23:00:00","rate":0.6000000000000001,"minutes":1380}],"max_daily_basal":1.8,"max_basal":6.3,"out_units":"mg/dL","min_bg":90,"max_bg":90,"sens":30,"isfProfile":{"units":"mg/dL","user_preferred_units":"mg/dL","sensitivities":[{"i":0,"start":"00:00:00","sensitivity":35,"x":0,"offset":0},{"i":8,"start":"04:00:00","sensitivity":30,"x":1,"offset":240},{"i":20,"start":"10:00:00","sensitivity":30,"x":2,"offset":600,"endOffset":1440}],"first":1},"carb_ratio":9} diff --git a/app/src/main/java/info/nightscout/sampleData/settings/pumphistory-24h-zoned.json b/app/src/main/java/info/nightscout/sampleData/settings/pumphistory-24h-zoned.json deleted file mode 100644 index 3110d24e4c..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/pumphistory-24h-zoned.json +++ /dev/null @@ -1,4075 +0,0 @@ -[ - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:37:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:37:57+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3965104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:37:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:37:57+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3965104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:28:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:28:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c5c104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:28:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:28:28+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1c5c104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:21:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:21:31+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1f55104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:21:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:21:31+01:00", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "1f55104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:15:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:15:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d4f104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:15:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:15:29+01:00", - "_body": "00", - "_head": "3362", - "rate": 2.45, - "_date": "1d4f104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:08:41 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:08:41+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2948104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:08:41 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:08:41+01:00", - "_body": "00", - "_head": "334e", - "rate": 1.95, - "_date": "2948104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:06:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:06:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3246104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:06:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:06:50+01:00", - "_body": "00", - "_head": "3332", - "rate": 1.25, - "_date": "3246104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:02:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:02:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0342104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:02:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:02:03+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "0342104411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:01:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:01:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c41104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:01:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:01:28+01:00", - "_body": "00", - "_head": "3396", - "rate": 3.75, - "_date": "1c41104411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T15:58:37 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T15:58:37+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "257a4f0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:55:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:55:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d770f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:55:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:55:29+01:00", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "1d770f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:46:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:46:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "326e0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:46:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:46:50+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "326e0f4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T15:44:07 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T15:44:07+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "076c4f0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:43:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:43:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "326b0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:43:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:43:50+01:00", - "_body": "00", - "_head": "3341", - "rate": 1.625, - "_date": "326b0f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:41:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:41:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "16690f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:41:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:41:22+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "16690f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:28:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:28:24+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "185c0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:28:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:28:24+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "185c0f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:22:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:22:58+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3a560f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:22:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:22:58+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3a560f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T15:13:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:13:01+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "014d0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:13:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:13:01+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "014d0f4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:50:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:50:21+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "15720e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:50:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:50:21+01:00", - "_body": "00", - "_head": "33fb", - "rate": 6.275, - "_date": "15720e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:38:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:38:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "32660e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:38:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:38:50+01:00", - "_body": "00", - "_head": "33e7", - "rate": 5.775, - "_date": "32660e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:34:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:34:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "03620e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:34:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:34:03+01:00", - "_body": "00", - "_head": "3344", - "rate": 1.7, - "_date": "03620e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:33:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:33:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d610e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:33:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:33:29+01:00", - "_body": "00", - "_head": "3392", - "rate": 3.65, - "_date": "1d610e4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T14:32:05 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T14:32:05+01:00", - "_body": "", - "programmed": 1.0, - "_head": "010a0a00", - "amount": 1.0, - "duration": 0, - "type": "normal", - "_date": "05604e0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:26:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:26:30+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:26:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:26:30+01:00", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:25:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:25:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f590e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:25:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:25:47+01:00", - "_body": "00", - "_head": "3378", - "rate": 3.0, - "_date": "2f590e4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T14:22:59 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T14:22:59+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "3b564e0411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T14:18:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:18:15+01:00", - "_body": "", - "_head": "0300000027", - "amount": 3.9, - "fixed": 0.0, - "type": "manual", - "_date": "0f522e0411" - }, - { - "_type": "Rewind", - "_description": "Rewind 2017-01-04T14:18:03 head[2], body[0] op[0x21]", - "timestamp": "2017-01-04T14:18:03+01:00", - "_body": "", - "_head": "2100", - "_date": "03520e0411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T14:17:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:17:15+01:00", - "_body": "", - "_head": "03000a000a", - "amount": 1.0, - "fixed": 1.0, - "type": "fixed", - "_date": "0f510e0411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T14:14:56 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:14:56+01:00", - "_body": "", - "_head": "0300190019", - "amount": 2.5, - "fixed": 2.5, - "type": "fixed", - "_date": "384e0e0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:14:32 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:14:32+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "204e0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:14:32 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:14:32+01:00", - "_body": "00", - "_head": "3346", - "rate": 1.75, - "_date": "204e0e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T14:09:45 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:09:45+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2d490e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:09:45 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:09:45+01:00", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "2d490e4411" - }, - { - "_type": "ClearAlarm", - "_description": "ClearAlarm 2017-01-04T14:04:16 head[2], body[0] op[0x0c]", - "timestamp": "2017-01-04T14:04:16+01:00", - "_body": "", - "_head": "0c04", - "_date": "10440e0411" - }, - { - "_type": "AlarmPump", - "_description": "AlarmPump 2017-01-04T14:04:05 head[4], body[0] op[0x06]", - "timestamp": "2017-01-04T14:04:05+01:00", - "_body": "", - "_head": "06040bff", - "_date": "05444e4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:57:38 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:57:38+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "26790d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:57:38 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:57:38+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "26790d4411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T13:53:05 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T13:53:05+01:00", - "_body": "", - "programmed": 1.0, - "_head": "010a0a00", - "amount": 1.0, - "duration": 0, - "type": "normal", - "_date": "05754d0411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:47:51 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:47:51+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "336f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:47:51 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:47:51+01:00", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "336f0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:43:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:43:53+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "356b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:43:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:43:53+01:00", - "_body": "00", - "_head": "3355", - "rate": 2.125, - "_date": "356b0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:40:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:40:04+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "04680d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:40:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:40:04+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "04680d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:27:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:46+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:46+01:00", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:27:00 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:00+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "005b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:00 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:00+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "005b0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:20:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:20:49+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "31540d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:20:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:20:49+01:00", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "31540d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:15:40 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:40+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "284f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:40 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:40+01:00", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "284f0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:15:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:31+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:31+01:00", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:08:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:08:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d480d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:08:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:08:29+01:00", - "_body": "00", - "_head": "332c", - "rate": 1.1, - "_date": "1d480d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T13:03:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:03:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c430d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:03:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:03:28+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1c430d4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:57:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:57:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c790c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:57:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:57:44+01:00", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "2c790c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:47:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:47:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:47:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:47:29+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:35:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:35:30+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1e630c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:35:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:35:30+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1e630c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:23:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:23:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f570c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:23:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:23:47+01:00", - "_body": "00", - "_head": "33b5", - "rate": 4.525, - "_date": "2f570c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:18:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:18:48+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "30520c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:18:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:18:48+01:00", - "_body": "00", - "_head": "334a", - "rate": 1.85, - "_date": "30520c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:13:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:13:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:13:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:13:29+01:00", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T12:08:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:08:07+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "07480c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:08:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:08:07+01:00", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "07480c4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T11:55:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:55:46+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2e770b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:55:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:55:46+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2e770b4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T11:42:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:42:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c6a0b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:42:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:42:44+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2c6a0b4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T11:31:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:31:27+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1b5f0b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:31:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:31:27+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1b5f0b4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T11:19:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:19:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "19530b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:19:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:19:25+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "19530b4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:58:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:58:19+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "137a0a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:58:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:58:19+01:00", - "_body": "00", - "_head": "33c9", - "rate": 5.025, - "_date": "137a0a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:52:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:52:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c740a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:52:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:52:44+01:00", - "_body": "00", - "_head": "33a8", - "rate": 4.2, - "_date": "2c740a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:48:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:48:19+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "13700a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:48:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:48:19+01:00", - "_body": "00", - "_head": "3380", - "rate": 3.2, - "_date": "13700a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:33:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:33:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e610a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:33:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:33:14+01:00", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "0e610a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:27:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:27:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c5b0a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:27:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:27:44+01:00", - "_body": "00", - "_head": "334a", - "rate": 1.85, - "_date": "2c5b0a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:23:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:23:49+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "31570a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:23:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:23:49+01:00", - "_body": "00", - "_head": "3310", - "rate": 0.4, - "_date": "31570a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:18:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:18:26+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1a520a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:18:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:18:26+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1a520a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:08:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:08:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "19480a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:08:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:08:25+01:00", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "19480a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T10:03:08 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:03:08+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "08430a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:03:08 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:03:08+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "08430a4411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T09:45:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:45:24+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "186d094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:45:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:45:24+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "186d094411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T09:33:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:33:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e61094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:33:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:33:14+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0e61094411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T09:32:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:32:28+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1c60094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:32:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:32:28+01:00", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "1c60094411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T09:18:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:18:26+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1a52094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:18:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:18:26+01:00", - "_body": "00", - "_head": "3336", - "rate": 1.35, - "_date": "1a52094411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T09:01:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:01:07+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0741094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:01:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:01:07+01:00", - "_body": "00", - "_head": "3336", - "rate": 1.35, - "_date": "0741094411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T09:00:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:00:27+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1b40094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:00:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:00:27+01:00", - "_body": "00", - "_head": "33d3", - "rate": 5.275, - "_date": "1b40094411" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-04T08:53:23 head[4], body[0] op[0x01]", - "timestamp": "2017-01-04T08:53:23+01:00", - "_body": "", - "programmed": 8.5, - "_head": "01555500", - "amount": 8.5, - "duration": 0, - "type": "normal", - "_date": "1775480411" - }, - { - "unknown_byte[8]": 0, - "_type": "BolusWizard", - "bg": 98, - "_byte[5]": 2, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-04T08:53:23 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-04T08:53:23+01:00", - "_body": "3c50071e5a025500000000575a", - "bg_target_high": 90, - "sensitivity": 30, - "carb_ratio": 7, - "food_estimate": 8.5, - "unabsorbed_insulin_total": 0.0, - "correction_estimate": 0.2, - "carb_input": 60, - "_head": "5b62", - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "bolus_estimate": 8.7, - "_date": "1775080411", - "bg_target_low": 90 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-04T08:53:09 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-04T08:53:09+01:00", - "_body": "", - "_head": "0a62", - "amount": 98, - "_date": "0975280411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T08:49:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:49:26+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1a71084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:49:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:49:26+01:00", - "_body": "00", - "_head": "3397", - "rate": 3.775, - "_date": "1a71084411" - }, - { - "_type": "Prime", - "_description": "Prime 2017-01-04T08:47:41 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T08:47:41+01:00", - "_body": "", - "_head": "0300000035", - "amount": 5.3, - "fixed": 0.0, - "type": "manual", - "_date": "296f280411" - }, - { - "_type": "Rewind", - "_description": "Rewind 2017-01-04T08:46:39 head[2], body[0] op[0x21]", - "timestamp": "2017-01-04T08:46:39+01:00", - "_body": "", - "_head": "2100", - "_date": "276e080411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T08:35:51 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:35:51+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3363084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:35:51 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:35:51+01:00", - "_body": "00", - "_head": "3364", - "rate": 2.5, - "_date": "3363084411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T08:16:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:16:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1950084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:16:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:16:25+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1950084411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T08:02:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:02:26+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1a42084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:02:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:02:26+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1a42084411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T07:49:32 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:49:32+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2071074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:49:32 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:49:32+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2071074411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T07:37:12 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:37:12+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0c65074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:37:12 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:37:12+01:00", - "_body": "00", - "_head": "335e", - "rate": 2.35, - "_date": "0c65074411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T07:29:09 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:29:09+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "095d074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:29:09 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:29:09+01:00", - "_body": "00", - "_head": "3341", - "rate": 1.625, - "_date": "095d074411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T07:13:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:13:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "034d074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:13:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:13:03+01:00", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "034d074411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T06:55:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:55:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1977064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:55:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:55:25+01:00", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "1977064411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T06:39:20 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:39:20+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1467064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:39:20 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:39:20+01:00", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "1467064411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T06:13:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:13:02+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "024d064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:13:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:13:02+01:00", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "024d064411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T06:05:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:05:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f45064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:05:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:05:47+01:00", - "_body": "00", - "_head": "334e", - "rate": 1.95, - "_date": "2f45064411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:57:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:57:53+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3579054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:57:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:57:53+01:00", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "3579054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:48:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:48:01+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0170054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:48:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:48:01+01:00", - "_body": "00", - "_head": "3351", - "rate": 2.025, - "_date": "0170054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:44:11 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:44:11+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0b6c054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:44:11 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:44:11+01:00", - "_body": "00", - "_head": "339a", - "rate": 3.85, - "_date": "0b6c054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:42:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:42:18+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "126a054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:42:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:42:18+01:00", - "_body": "00", - "_head": "3372", - "rate": 2.85, - "_date": "126a054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:27:12 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:27:12+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0c5b054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:27:12 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:27:12+01:00", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "0c5b054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:24:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:24:13+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0d58054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:24:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:24:13+01:00", - "_body": "00", - "_head": "334b", - "rate": 1.875, - "_date": "0d58054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:19:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:19:49+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3153054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:19:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:19:49+01:00", - "_body": "00", - "_head": "333c", - "rate": 1.5, - "_date": "3153054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T05:07:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:07:57+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3947054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:07:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:07:57+01:00", - "_body": "00", - "_head": "3339", - "rate": 1.425, - "_date": "3947054411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T04:58:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:58:02+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "027a044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:58:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:58:02+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "027a044411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T04:52:15 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:52:15+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0f74044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:52:15 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:52:15+01:00", - "_body": "00", - "_head": "333e", - "rate": 1.55, - "_date": "0f74044411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T04:32:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:32:13+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0d60044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:32:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:32:13+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0d60044411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T04:13:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:13:58+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3a4d044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:13:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:13:58+01:00", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "3a4d044411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T04:02:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:02:18+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1242044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:02:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:02:18+01:00", - "_body": "00", - "_head": "335b", - "rate": 2.275, - "_date": "1242044411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:57:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:57:54+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3679034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:57:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:57:54+01:00", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "3679034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:50:05 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:50:05+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0572034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:50:05 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:50:05+01:00", - "_body": "00", - "_head": "332c", - "rate": 1.1, - "_date": "0572034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:38:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:38:04+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0466034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:38:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:38:04+01:00", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "0466034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:34:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:34:07+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0762034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:34:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:34:07+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "0762034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:32:16 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:32:16+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1060034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:32:16 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:32:16+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1060034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:28:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:28:18+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "125c034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:28:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:28:18+01:00", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "125c034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:23:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:23:59+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3b57034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:23:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:23:59+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3b57034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:15:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:15:58+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3a4f034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:15:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:15:58+01:00", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "3a4f034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:09:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:09:54+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3649034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:09:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:09:54+01:00", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "3649034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T03:04:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:04:59+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3b44034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:04:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:04:59+01:00", - "_body": "00", - "_head": "333c", - "rate": 1.5, - "_date": "3b44034411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T02:53:05 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:53:05+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0575024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:53:05 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:53:05+01:00", - "_body": "00", - "_head": "3332", - "rate": 1.25, - "_date": "0575024411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T02:50:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:50:55+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3772024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:50:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:50:55+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "3772024411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T02:37:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:37:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1665024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:37:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:37:22+01:00", - "_body": "00", - "_head": "3312", - "rate": 0.45, - "_date": "1665024411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T02:34:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:34:59+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3b62024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:34:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:34:59+01:00", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "3b62024411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T02:23:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:23:02+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0257024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:23:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:23:02+01:00", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "0257024411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T02:07:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:07:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1647024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:07:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:07:22+01:00", - "_body": "00", - "_head": "3383", - "rate": 3.275, - "_date": "1647024411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:57:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:57:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f79014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:57:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:57:47+01:00", - "_body": "00", - "_head": "336c", - "rate": 2.7, - "_date": "2f79014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:52:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:52:18+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1274014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:52:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:52:18+01:00", - "_body": "00", - "_head": "3351", - "rate": 2.025, - "_date": "1274014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:50:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:50:04+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0472014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:50:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:50:04+01:00", - "_body": "00", - "_head": "338a", - "rate": 3.45, - "_date": "0472014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:38:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:38:02+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0266014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:38:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:38:02+01:00", - "_body": "00", - "_head": "3388", - "rate": 3.4, - "_date": "0266014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:32:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:32:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e60014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:32:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:32:14+01:00", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "0e60014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:27:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:27:55+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "375b014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:27:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:27:55+01:00", - "_body": "00", - "_head": "3354", - "rate": 2.1, - "_date": "375b014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:22:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:22:27+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1b56014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:22:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:22:27+01:00", - "_body": "00", - "_head": "3340", - "rate": 1.6, - "_date": "1b56014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:18:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:18:07+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0752014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:18:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:18:07+01:00", - "_body": "00", - "_head": "332f", - "rate": 1.175, - "_date": "0752014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T01:13:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:13:54+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "364d014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:13:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:13:54+01:00", - "_body": "00", - "_head": "3325", - "rate": 0.925, - "_date": "364d014411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:55:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:55:59+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3b77004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:55:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:55:59+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3b77004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:44:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:44:48+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "306c004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:44:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:44:48+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "306c004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:33:20 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:33:20+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1461004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:33:20 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:33:20+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1461004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:30:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:30:57+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "395e004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:30:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:30:57+01:00", - "_body": "00", - "_head": "3382", - "rate": 3.25, - "_date": "395e004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:23:08 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:23:08+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0857004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:23:08 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:23:08+01:00", - "_body": "00", - "_head": "334b", - "rate": 1.875, - "_date": "0857004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:21:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:21:10+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0a55004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:21:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:21:10+01:00", - "_body": "00", - "_head": "3334", - "rate": 1.3, - "_date": "0a55004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:17:20 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:17:20+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1451004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:17:20 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:17:20+01:00", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "1451004411" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T00:07:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:07:10+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0a47004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:07:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:07:10+01:00", - "_body": "00", - "_head": "33d2", - "rate": 5.25, - "_date": "0a47004411" - }, - { - "_type": "Model522ResultTotals", - "_description": "Model522ResultTotals 2017-01-04T00:00:00 head[1], body[41] op[0x6d]", - "timestamp": "2017-01-04T00:00:00+01:00", - "_body": "0500695a820400000c2804f82907303b00e107303b04403b00480402a8250a020002060c00e8000000", - "_head": "6d", - "_date": "0391" - }, - { - "_type": "ResultDailyTotal", - "_description": "ResultDailyTotal 2017-01-04T00:00:00 head[5], body[0] op[0x07]", - "timestamp": "2017-01-04T00:00:00+01:00", - "_body": "", - "_head": "0700000c28", - "valid_date": "2017-01-03", - "_date": "0391" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:57:37 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:57:37+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2579174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:57:37 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:57:37+01:00", - "_body": "00", - "_head": "33aa", - "rate": 4.25, - "_date": "2579174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:53:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:53:56+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3875174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:53:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:53:56+01:00", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "3875174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:42:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:42:13+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0d6a174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:42:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:42:13+01:00", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "0d6a174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:38:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:38:13+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0d66174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:38:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:38:13+01:00", - "_body": "00", - "_head": "3351", - "rate": 2.025, - "_date": "0d66174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:33:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:33:48+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3061174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:33:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:33:48+01:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "3061174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:22:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:22:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e56174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:22:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:22:14+01:00", - "_body": "00", - "_head": "331a", - "rate": 0.65, - "_date": "0e56174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:12:12 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:12:12+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0c4c174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:12:12 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:12:12+01:00", - "_body": "00", - "_head": "339a", - "rate": 3.85, - "_date": "0c4c174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:10:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:10:13+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0d4a174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:10:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:10:13+01:00", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "0d4a174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:08:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:08:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e48174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:08:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:08:14+01:00", - "_body": "00", - "_head": "333e", - "rate": 1.55, - "_date": "0e48174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:05:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:05:07+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0745174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:05:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:05:07+01:00", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "0745174311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T23:04:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:04:47+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2f44174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:04:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:04:47+01:00", - "_body": "00", - "_head": "33c9", - "rate": 5.025, - "_date": "2f44174311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T23:02:21 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T23:02:21+01:00", - "_body": "", - "programmed": 3.0, - "_head": "011e1e00", - "amount": 3.0, - "duration": 0, - "type": "normal", - "_date": "1542570311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:57:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:57:19+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1379164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:57:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:57:19+01:00", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "1379164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:52:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:52:52+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3474164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:52:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:52:52+01:00", - "_body": "00", - "_head": "3340", - "rate": 1.6, - "_date": "3474164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:46:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:46:10+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0a6e164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:46:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:46:10+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0a6e164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:44:16 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:44:16+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "106c164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:44:16 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:44:16+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "106c164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:41:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:41:55+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3769164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:41:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:41:55+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3769164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:29:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:29:55+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "375d164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:29:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:29:55+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "375d164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:16:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:16:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1950164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:16:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:16:25+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1950164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T22:04:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:04:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0344164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:04:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:04:03+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0344164311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T21:54:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:54:01+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0176154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:54:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:54:01+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "0176154311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T21:37:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:37:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1965154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:37:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:37:25+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1965154311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T21:28:28 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T21:28:28+01:00", - "_body": "", - "programmed": 3.0, - "_head": "011e1e00", - "amount": 3.0, - "duration": 0, - "type": "normal", - "_date": "1c5c550311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T21:19:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:19:24+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1853154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:19:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:19:24+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1853154311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T21:03:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:03:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3243154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:03:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:03:50+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3243154311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T20:57:24 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T20:57:24+01:00", - "_body": "", - "appended": [ - { - "_type": "UnabsorbedInsulinBolus", - "_description": "UnabsorbedInsulinBolus unknown head[23], body[0] op[0x5c]", - "_body": "", - "_head": "5c177894c0b4f8c07a20d0262ad0503ed07c98d0eca2d0", - "data": [ - { - "amount": 3.0, - "age": 148 - }, - { - "amount": 4.5, - "age": 248 - }, - { - "amount": 3.05, - "age": 288 - }, - { - "amount": 0.95, - "age": 298 - }, - { - "amount": 2.0, - "age": 318 - }, - { - "amount": 3.1, - "age": 408 - }, - { - "amount": 5.9, - "age": 418 - } - ], - "_date": "" - } - ], - "programmed": 7.0, - "duration": 0, - "amount": 7.0, - "_head": "01464600", - "type": "normal", - "_date": "1879540311" - }, - { - "unknown_byte[8]": 0, - "_type": "BolusWizard", - "bg": 90, - "_byte[5]": 0, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-03T20:57:24 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-03T20:57:24+01:00", - "_body": "3750091e5a003d000004003d5a", - "bg_target_high": 90, - "sensitivity": 30, - "carb_ratio": 9, - "food_estimate": 6.1, - "unabsorbed_insulin_total": 0.4, - "correction_estimate": 0.0, - "carb_input": 55, - "_head": "5b5a", - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "bolus_estimate": 6.1, - "_date": "1879140311", - "bg_target_low": 90 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-03T20:57:06 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-03T20:57:06+01:00", - "_body": "", - "_head": "0a5a", - "amount": 90, - "_date": "0679340311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T20:29:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T20:29:56+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "385d144311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T20:29:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T20:29:56+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "385d144311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T20:01:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T20:01:26+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1a41144311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T20:01:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T20:01:26+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1a41144311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T19:48:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:48:02+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0270134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:48:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:48:02+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0270134311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T19:34:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:34:24+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1862134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:34:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:34:24+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1862134311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T19:23:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:23:24+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1857134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:23:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:23:24+01:00", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "1857134311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T19:17:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:17:59+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3b51134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:17:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:17:59+01:00", - "_body": "00", - "_head": "334b", - "rate": 1.875, - "_date": "3b51134311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T19:08:00 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:08:00+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0048134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:08:00 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:08:00+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "0048134311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:57:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:57:52+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3479124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:57:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:57:52+01:00", - "_body": "00", - "_head": "335b", - "rate": 2.275, - "_date": "3479124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:54:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:54:25+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1976124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:54:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:54:25+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1976124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:48:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:48:50+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3270124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:48:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:48:50+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3270124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:45:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:45:26+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1a6d124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:45:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:45:26+01:00", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "1a6d124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:34:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:34:48+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3062124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:34:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:34:48+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3062124311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T18:30:43 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T18:30:43+01:00", - "_body": "", - "programmed": 3.0, - "_head": "011e1e00", - "amount": 3.0, - "duration": 0, - "type": "normal", - "_date": "2b5e520311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:20:35 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:20:35+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2354124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:20:35 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:20:35+01:00", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "2354124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:13:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:13:27+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1b4d124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:13:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:13:27+01:00", - "_body": "00", - "_head": "3310", - "rate": 0.4, - "_date": "1b4d124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:08:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:08:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e48124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:08:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:08:14+01:00", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "0e48124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T18:07:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:07:19+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1347124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:07:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:07:19+01:00", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1347124311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T17:55:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:55:55+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3777114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:55:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:55:55+01:00", - "_body": "00", - "_head": "33c6", - "rate": 4.95, - "_date": "3777114311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T17:43:16 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:43:16+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "106b114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:43:16 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:43:16+01:00", - "_body": "00", - "_head": "33aa", - "rate": 4.25, - "_date": "106b114311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T17:35:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:35:58+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3a63114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:35:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:35:58+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3a63114311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T17:18:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:18:03+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0352114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:18:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:18:03+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "0352114311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T17:12:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:12:52+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "344c114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:12:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:12:52+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "344c114311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:55:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:55:21+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1577104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:55:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:55:21+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1577104311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:54:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:54:10+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0a76104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:54:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:54:10+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0a76104311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T16:50:06 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T16:50:06+01:00", - "_body": "", - "appended": [ - { - "_type": "UnabsorbedInsulinBolus", - "_description": "UnabsorbedInsulinBolus unknown head[17], body[0] op[0x5c]", - "_body": "", - "_head": "5c117a29c02633c05047c07ca1c0ecabc0", - "data": [ - { - "amount": 3.05, - "age": 41 - }, - { - "amount": 0.95, - "age": 51 - }, - { - "amount": 2.0, - "age": 71 - }, - { - "amount": 3.1, - "age": 161 - }, - { - "amount": 5.9, - "age": 171 - } - ], - "_date": "" - } - ], - "programmed": 4.5, - "duration": 0, - "amount": 4.5, - "_head": "012d2d00", - "type": "normal", - "_date": "0672500311" - }, - { - "unknown_byte[8]": 0, - "_type": "BolusWizard", - "bg": 111, - "_byte[5]": 7, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-03T16:50:06 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-03T16:50:06+01:00", - "_body": "2850091e5a072c000035002c5a", - "bg_target_high": 90, - "sensitivity": 30, - "carb_ratio": 9, - "food_estimate": 4.4, - "unabsorbed_insulin_total": 5.3, - "correction_estimate": 0.7, - "carb_input": 40, - "_head": "5b6f", - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "bolus_estimate": 4.4, - "_date": "0672100311", - "bg_target_low": 90 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-03T16:49:56 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-03T16:49:56+01:00", - "_body": "", - "_head": "0a6f", - "amount": 111, - "_date": "3871300311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:36:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:36:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1664104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:36:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:36:22+01:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1664104311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:27:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:27:52+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "345b104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:27:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:27:52+01:00", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "345b104311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:11:40 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:11:40+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "284b104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:11:40 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:11:40+01:00", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "284b104311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T16:08:21 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T16:08:21+01:00", - "_body": "", - "programmed": 4.0, - "_head": "01282800", - "amount": 4.0, - "duration": 0, - "type": "normal", - "_date": "1548500311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:07:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:07:59+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3b47104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:07:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:07:59+01:00", - "_body": "00", - "_head": "338d", - "rate": 3.525, - "_date": "3b47104311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T16:02:42 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:02:42+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2a42104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:02:42 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:02:42+01:00", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "2a42104311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:55:23 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:55:23+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "17770f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:55:23 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:55:23+01:00", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "17770f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:44:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:44:53+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "356c0f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:44:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:44:53+01:00", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "356c0f4311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T15:42:20 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T15:42:20+01:00", - "_body": "", - "programmed": 2.0, - "_head": "01141400", - "amount": 2.0, - "duration": 0, - "type": "normal", - "_date": "146a4f0311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:38:37 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:38:37+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "25660f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:38:37 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:38:37+01:00", - "_body": "00", - "_head": "3376", - "rate": 2.95, - "_date": "25660f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:34:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:34:30+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1e620f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:34:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:34:30+01:00", - "_body": "00", - "_head": "3350", - "rate": 2.0, - "_date": "1e620f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:30:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:30:52+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "345e0f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:30:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:30:52+01:00", - "_body": "00", - "_head": "3334", - "rate": 1.3, - "_date": "345e0f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:17:38 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:17:38+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "26510f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:17:38 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:17:38+01:00", - "_body": "00", - "_head": "3314", - "rate": 0.5, - "_date": "26510f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:13:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:13:54+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "364d0f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:13:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:13:54+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "364d0f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T15:02:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:02:56+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "38420f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:02:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:02:56+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "38420f4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:57:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:57:53+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "35790e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:57:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:57:53+01:00", - "_body": "00", - "_head": "3312", - "rate": 0.45, - "_date": "35790e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:47:42 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:47:42+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2a6f0e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:47:42 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:47:42+01:00", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "2a6f0e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:41:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:41:21+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "15690e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:41:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:41:21+01:00", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "15690e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:24:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:24:44+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "2c580e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:24:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:24:44+01:00", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "2c580e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:13:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:13:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "164d0e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:13:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:13:22+01:00", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "164d0e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:11:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:11:22+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "164b0e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:11:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:11:22+01:00", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "164b0e4311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T14:04:52 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T14:04:52+01:00", - "_body": "", - "appended": [ - { - "_type": "UnabsorbedInsulinBolus", - "_description": "UnabsorbedInsulinBolus unknown head[11], body[0] op[0x5c]", - "_body": "", - "_head": "5c0b503bd02263d0326dd1", - "data": [ - { - "amount": 2.0, - "age": 315 - }, - { - "amount": 0.85, - "age": 355 - }, - { - "amount": 1.25, - "age": 365 - } - ], - "_date": "" - } - ], - "programmed": 9.0, - "duration": 0, - "amount": 9.0, - "_head": "015a5a00", - "type": "normal", - "_date": "34444e0311" - }, - { - "unknown_byte[8]": 0, - "_type": "BolusWizard", - "bg": 130, - "_byte[5]": 13, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-03T14:04:52 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-03T14:04:52+01:00", - "_body": "4650091e5a0d4d000000005a5a", - "bg_target_high": 90, - "sensitivity": 30, - "carb_ratio": 9, - "food_estimate": 7.7, - "unabsorbed_insulin_total": 0.0, - "correction_estimate": 1.3, - "carb_input": 70, - "_head": "5b82", - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "bolus_estimate": 9.0, - "_date": "34440e0311", - "bg_target_low": 90 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-03T14:04:35 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-03T14:04:35+01:00", - "_body": "", - "_head": "0a82", - "amount": 130, - "_date": "23442e0311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:03:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:03:56+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "38430e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:03:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:03:56+01:00", - "_body": "00", - "_head": "33a6", - "rate": 4.15, - "_date": "38430e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T14:03:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:03:01+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "01430e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:03:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:03:01+01:00", - "_body": "00", - "_head": "3372", - "rate": 2.85, - "_date": "01430e4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T13:57:33 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:57:33+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "21790d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:57:33 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:57:33+01:00", - "_body": "00", - "_head": "333e", - "rate": 1.55, - "_date": "21790d4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T13:53:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:53:14+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "0e750d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:53:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:53:14+01:00", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "0e750d4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T13:42:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:42:29+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "1d6a0d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:42:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:42:29+01:00", - "_body": "00", - "_head": "33d3", - "rate": 5.275, - "_date": "1d6a0d4311" - }, - { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-03T13:40:41 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:40:41+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "29680d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:40:41 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:40:41+01:00", - "_body": "00", - "_head": "33a8", - "rate": 4.2, - "_date": "29680d4311" - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/pumphistory-24h.json b/app/src/main/java/info/nightscout/sampleData/settings/pumphistory-24h.json deleted file mode 100644 index 4513d0796d..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/pumphistory-24h.json +++ /dev/null @@ -1,4075 +0,0 @@ -[ - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:37:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:37:57", - "_body": "", - "_head": "1601", - "_date": "3965104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:37:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:37:57", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3965104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:28:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:28:28", - "_body": "", - "_head": "1601", - "_date": "1c5c104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:28:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:28:28", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1c5c104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:21:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:21:31", - "_body": "", - "_head": "1601", - "_date": "1f55104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:21:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:21:31", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "1f55104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:15:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:15:29", - "_body": "", - "_head": "1601", - "_date": "1d4f104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:15:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:15:29", - "_body": "00", - "_head": "3362", - "rate": 2.45, - "_date": "1d4f104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:08:41 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:08:41", - "_body": "", - "_head": "1601", - "_date": "2948104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:08:41 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:08:41", - "_body": "00", - "_head": "334e", - "rate": 1.95, - "_date": "2948104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:06:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:06:50", - "_body": "", - "_head": "1601", - "_date": "3246104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:06:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:06:50", - "_body": "00", - "_head": "3332", - "rate": 1.25, - "_date": "3246104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:02:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:02:03", - "_body": "", - "_head": "1601", - "_date": "0342104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:02:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:02:03", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "0342104411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T16:01:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:01:28", - "_body": "", - "_head": "1601", - "_date": "1c41104411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:01:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:01:28", - "_body": "00", - "_head": "3396", - "rate": 3.75, - "_date": "1c41104411" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T15:58:37 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T15:58:37", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "257a4f0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:55:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:55:29", - "_body": "", - "_head": "1601", - "_date": "1d770f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:55:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:55:29", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "1d770f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:46:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:46:50", - "_body": "", - "_head": "1601", - "_date": "326e0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:46:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:46:50", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "326e0f4411" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T15:44:07 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T15:44:07", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "076c4f0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:43:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:43:50", - "_body": "", - "_head": "1601", - "_date": "326b0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:43:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:43:50", - "_body": "00", - "_head": "3341", - "rate": 1.625, - "_date": "326b0f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:41:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:41:22", - "_body": "", - "_head": "1601", - "_date": "16690f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:41:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:41:22", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "16690f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:28:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:28:24", - "_body": "", - "_head": "1601", - "_date": "185c0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:28:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:28:24", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "185c0f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:22:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:22:58", - "_body": "", - "_head": "1601", - "_date": "3a560f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:22:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:22:58", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3a560f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T15:13:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T15:13:01", - "_body": "", - "_head": "1601", - "_date": "014d0f4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T15:13:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T15:13:01", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "014d0f4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:50:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:50:21", - "_body": "", - "_head": "1601", - "_date": "15720e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:50:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:50:21", - "_body": "00", - "_head": "33fb", - "rate": 6.275, - "_date": "15720e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:38:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:38:50", - "_body": "", - "_head": "1601", - "_date": "32660e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:38:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:38:50", - "_body": "00", - "_head": "33e7", - "rate": 5.775, - "_date": "32660e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:34:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:34:03", - "_body": "", - "_head": "1601", - "_date": "03620e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:34:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:34:03", - "_body": "00", - "_head": "3344", - "rate": 1.7, - "_date": "03620e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:33:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:33:29", - "_body": "", - "_head": "1601", - "_date": "1d610e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:33:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:33:29", - "_body": "00", - "_head": "3392", - "rate": 3.65, - "_date": "1d610e4411" - }, - { - "programmed": 1.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T14:32:05 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T14:32:05", - "_body": "", - "_head": "010a0a00", - "amount": 1.0, - "_date": "05604e0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:26:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:26:30", - "_body": "", - "_head": "1601", - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:26:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:26:30", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "1e5a0e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:25:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:25:47", - "_body": "", - "_head": "1601", - "_date": "2f590e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:25:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:25:47", - "_body": "00", - "_head": "3378", - "rate": 3.0, - "_date": "2f590e4411" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T14:22:59 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T14:22:59", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "3b564e0411" - }, - { - "_type": "Prime", - "type": "manual", - "_description": "Prime 2017-01-04T14:18:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:18:15", - "_body": "", - "fixed": 0.0, - "_head": "0300000027", - "amount": 3.9, - "_date": "0f522e0411" - }, - { - "_type": "Rewind", - "_description": "Rewind 2017-01-04T14:18:03 head[2], body[0] op[0x21]", - "timestamp": "2017-01-04T14:18:03", - "_body": "", - "_head": "2100", - "_date": "03520e0411" - }, - { - "_type": "Prime", - "type": "fixed", - "_description": "Prime 2017-01-04T14:17:15 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:17:15", - "_body": "", - "fixed": 1.0, - "_head": "03000a000a", - "amount": 1.0, - "_date": "0f510e0411" - }, - { - "_type": "Prime", - "type": "fixed", - "_description": "Prime 2017-01-04T14:14:56 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T14:14:56", - "_body": "", - "fixed": 2.5, - "_head": "0300190019", - "amount": 2.5, - "_date": "384e0e0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:14:32 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:14:32", - "_body": "", - "_head": "1601", - "_date": "204e0e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:14:32 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:14:32", - "_body": "00", - "_head": "3346", - "rate": 1.75, - "_date": "204e0e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T14:09:45 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T14:09:45", - "_body": "", - "_head": "1601", - "_date": "2d490e4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T14:09:45 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T14:09:45", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "2d490e4411" - }, - { - "_type": "ClearAlarm", - "_description": "ClearAlarm 2017-01-04T14:04:16 head[2], body[0] op[0x0c]", - "timestamp": "2017-01-04T14:04:16", - "_body": "", - "_head": "0c04", - "_date": "10440e0411" - }, - { - "_type": "AlarmPump", - "_description": "AlarmPump 2017-01-04T14:04:05 head[4], body[0] op[0x06]", - "timestamp": "2017-01-04T14:04:05", - "_body": "", - "_head": "06040bff", - "_date": "05444e4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:57:38 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:57:38", - "_body": "", - "_head": "1601", - "_date": "26790d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:57:38 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:57:38", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "26790d4411" - }, - { - "programmed": 1.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T13:53:05 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T13:53:05", - "_body": "", - "_head": "010a0a00", - "amount": 1.0, - "_date": "05754d0411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:47:51 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:47:51", - "_body": "", - "_head": "1601", - "_date": "336f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:47:51 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:47:51", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "336f0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:43:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:43:53", - "_body": "", - "_head": "1601", - "_date": "356b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:43:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:43:53", - "_body": "00", - "_head": "3355", - "rate": 2.125, - "_date": "356b0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:40:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:40:04", - "_body": "", - "_head": "1601", - "_date": "04680d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:40:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:40:04", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "04680d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:27:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:46", - "_body": "", - "_head": "1601", - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:46", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "2e5b0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:27:00 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:27:00", - "_body": "", - "_head": "1601", - "_date": "005b0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:27:00 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:27:00", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "005b0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:20:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:20:49", - "_body": "", - "_head": "1601", - "_date": "31540d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:20:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:20:49", - "_body": "00", - "_head": "332d", - "rate": 1.125, - "_date": "31540d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:15:40 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:40", - "_body": "", - "_head": "1601", - "_date": "284f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:40 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:40", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "284f0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:15:31 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:15:31", - "_body": "", - "_head": "1601", - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:15:31 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:15:31", - "_body": "00", - "_head": "3373", - "rate": 2.875, - "_date": "1f4f0d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:08:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:08:29", - "_body": "", - "_head": "1601", - "_date": "1d480d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:08:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:08:29", - "_body": "00", - "_head": "332c", - "rate": 1.1, - "_date": "1d480d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T13:03:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T13:03:28", - "_body": "", - "_head": "1601", - "_date": "1c430d4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T13:03:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T13:03:28", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1c430d4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:57:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:57:44", - "_body": "", - "_head": "1601", - "_date": "2c790c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:57:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:57:44", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "2c790c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:47:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:47:29", - "_body": "", - "_head": "1601", - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:47:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:47:29", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "1d6f0c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:35:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:35:30", - "_body": "", - "_head": "1601", - "_date": "1e630c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:35:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:35:30", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1e630c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:23:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:23:47", - "_body": "", - "_head": "1601", - "_date": "2f570c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:23:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:23:47", - "_body": "00", - "_head": "33b5", - "rate": 4.525, - "_date": "2f570c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:18:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:18:48", - "_body": "", - "_head": "1601", - "_date": "30520c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:18:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:18:48", - "_body": "00", - "_head": "334a", - "rate": 1.85, - "_date": "30520c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:13:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:13:29", - "_body": "", - "_head": "1601", - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:13:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:13:29", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "1d4d0c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T12:08:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T12:08:07", - "_body": "", - "_head": "1601", - "_date": "07480c4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T12:08:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T12:08:07", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "07480c4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T11:55:46 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:55:46", - "_body": "", - "_head": "1601", - "_date": "2e770b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:55:46 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:55:46", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2e770b4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T11:42:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:42:44", - "_body": "", - "_head": "1601", - "_date": "2c6a0b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:42:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:42:44", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2c6a0b4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T11:31:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:31:27", - "_body": "", - "_head": "1601", - "_date": "1b5f0b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:31:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:31:27", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1b5f0b4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T11:19:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T11:19:25", - "_body": "", - "_head": "1601", - "_date": "19530b4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T11:19:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T11:19:25", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "19530b4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:58:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:58:19", - "_body": "", - "_head": "1601", - "_date": "137a0a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:58:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:58:19", - "_body": "00", - "_head": "33c9", - "rate": 5.025, - "_date": "137a0a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:52:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:52:44", - "_body": "", - "_head": "1601", - "_date": "2c740a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:52:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:52:44", - "_body": "00", - "_head": "33a8", - "rate": 4.2, - "_date": "2c740a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:48:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:48:19", - "_body": "", - "_head": "1601", - "_date": "13700a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:48:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:48:19", - "_body": "00", - "_head": "3380", - "rate": 3.2, - "_date": "13700a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:33:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:33:14", - "_body": "", - "_head": "1601", - "_date": "0e610a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:33:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:33:14", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "0e610a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:27:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:27:44", - "_body": "", - "_head": "1601", - "_date": "2c5b0a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:27:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:27:44", - "_body": "00", - "_head": "334a", - "rate": 1.85, - "_date": "2c5b0a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:23:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:23:49", - "_body": "", - "_head": "1601", - "_date": "31570a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:23:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:23:49", - "_body": "00", - "_head": "3310", - "rate": 0.4, - "_date": "31570a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:18:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:18:26", - "_body": "", - "_head": "1601", - "_date": "1a520a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:18:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:18:26", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1a520a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:08:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:08:25", - "_body": "", - "_head": "1601", - "_date": "19480a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:08:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:08:25", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "19480a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T10:03:08 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T10:03:08", - "_body": "", - "_head": "1601", - "_date": "08430a4411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T10:03:08 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T10:03:08", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "08430a4411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T09:45:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:45:24", - "_body": "", - "_head": "1601", - "_date": "186d094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:45:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:45:24", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "186d094411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T09:33:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:33:14", - "_body": "", - "_head": "1601", - "_date": "0e61094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:33:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:33:14", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0e61094411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T09:32:28 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:32:28", - "_body": "", - "_head": "1601", - "_date": "1c60094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:32:28 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:32:28", - "_body": "00", - "_head": "3324", - "rate": 0.9, - "_date": "1c60094411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T09:18:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:18:26", - "_body": "", - "_head": "1601", - "_date": "1a52094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:18:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:18:26", - "_body": "00", - "_head": "3336", - "rate": 1.35, - "_date": "1a52094411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T09:01:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:01:07", - "_body": "", - "_head": "1601", - "_date": "0741094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:01:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:01:07", - "_body": "00", - "_head": "3336", - "rate": 1.35, - "_date": "0741094411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T09:00:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T09:00:27", - "_body": "", - "_head": "1601", - "_date": "1b40094411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T09:00:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T09:00:27", - "_body": "00", - "_head": "33d3", - "rate": 5.275, - "_date": "1b40094411" - }, - { - "programmed": 8.5, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-04T08:53:23 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-04T08:53:23", - "_body": "", - "_head": "01555500", - "amount": 8.5, - "_date": "1775480411" - }, - { - "_type": "BolusWizard", - "bg": 98, - "bg_target_high": 90, - "correction_estimate": 0.2, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-04T08:53:23 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-04T08:53:23", - "_body": "3c50071e5a025500000000575a", - "carb_input": 60, - "_head": "5b62", - "unabsorbed_insulin_total": 0.0, - "_byte[5]": 2, - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "_date": "1775080411", - "bolus_estimate": 8.7, - "unknown_byte[8]": 0, - "carb_ratio": 7, - "food_estimate": 8.5, - "bg_target_low": 90, - "sensitivity": 30 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-04T08:53:09 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-04T08:53:09", - "_body": "", - "_head": "0a62", - "amount": 98, - "_date": "0975280411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T08:49:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:49:26", - "_body": "", - "_head": "1601", - "_date": "1a71084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:49:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:49:26", - "_body": "00", - "_head": "3397", - "rate": 3.775, - "_date": "1a71084411" - }, - { - "_type": "Prime", - "type": "manual", - "_description": "Prime 2017-01-04T08:47:41 head[5], body[0] op[0x03]", - "timestamp": "2017-01-04T08:47:41", - "_body": "", - "fixed": 0.0, - "_head": "0300000035", - "amount": 5.3, - "_date": "296f280411" - }, - { - "_type": "Rewind", - "_description": "Rewind 2017-01-04T08:46:39 head[2], body[0] op[0x21]", - "timestamp": "2017-01-04T08:46:39", - "_body": "", - "_head": "2100", - "_date": "276e080411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T08:35:51 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:35:51", - "_body": "", - "_head": "1601", - "_date": "3363084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:35:51 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:35:51", - "_body": "00", - "_head": "3364", - "rate": 2.5, - "_date": "3363084411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T08:16:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:16:25", - "_body": "", - "_head": "1601", - "_date": "1950084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:16:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:16:25", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1950084411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T08:02:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T08:02:26", - "_body": "", - "_head": "1601", - "_date": "1a42084411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T08:02:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T08:02:26", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1a42084411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T07:49:32 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:49:32", - "_body": "", - "_head": "1601", - "_date": "2071074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:49:32 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:49:32", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "2071074411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T07:37:12 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:37:12", - "_body": "", - "_head": "1601", - "_date": "0c65074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:37:12 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:37:12", - "_body": "00", - "_head": "335e", - "rate": 2.35, - "_date": "0c65074411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T07:29:09 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:29:09", - "_body": "", - "_head": "1601", - "_date": "095d074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:29:09 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:29:09", - "_body": "00", - "_head": "3341", - "rate": 1.625, - "_date": "095d074411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T07:13:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T07:13:03", - "_body": "", - "_head": "1601", - "_date": "034d074411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T07:13:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T07:13:03", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "034d074411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T06:55:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:55:25", - "_body": "", - "_head": "1601", - "_date": "1977064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:55:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:55:25", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "1977064411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T06:39:20 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:39:20", - "_body": "", - "_head": "1601", - "_date": "1467064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:39:20 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:39:20", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "1467064411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T06:13:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:13:02", - "_body": "", - "_head": "1601", - "_date": "024d064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:13:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:13:02", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "024d064411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T06:05:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T06:05:47", - "_body": "", - "_head": "1601", - "_date": "2f45064411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T06:05:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T06:05:47", - "_body": "00", - "_head": "334e", - "rate": 1.95, - "_date": "2f45064411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:57:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:57:53", - "_body": "", - "_head": "1601", - "_date": "3579054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:57:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:57:53", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "3579054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:48:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:48:01", - "_body": "", - "_head": "1601", - "_date": "0170054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:48:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:48:01", - "_body": "00", - "_head": "3351", - "rate": 2.025, - "_date": "0170054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:44:11 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:44:11", - "_body": "", - "_head": "1601", - "_date": "0b6c054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:44:11 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:44:11", - "_body": "00", - "_head": "339a", - "rate": 3.85, - "_date": "0b6c054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:42:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:42:18", - "_body": "", - "_head": "1601", - "_date": "126a054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:42:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:42:18", - "_body": "00", - "_head": "3372", - "rate": 2.85, - "_date": "126a054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:27:12 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:27:12", - "_body": "", - "_head": "1601", - "_date": "0c5b054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:27:12 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:27:12", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "0c5b054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:24:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:24:13", - "_body": "", - "_head": "1601", - "_date": "0d58054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:24:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:24:13", - "_body": "00", - "_head": "334b", - "rate": 1.875, - "_date": "0d58054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:19:49 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:19:49", - "_body": "", - "_head": "1601", - "_date": "3153054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:19:49 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:19:49", - "_body": "00", - "_head": "333c", - "rate": 1.5, - "_date": "3153054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T05:07:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T05:07:57", - "_body": "", - "_head": "1601", - "_date": "3947054411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T05:07:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T05:07:57", - "_body": "00", - "_head": "3339", - "rate": 1.425, - "_date": "3947054411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T04:58:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:58:02", - "_body": "", - "_head": "1601", - "_date": "027a044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:58:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:58:02", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "027a044411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T04:52:15 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:52:15", - "_body": "", - "_head": "1601", - "_date": "0f74044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:52:15 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:52:15", - "_body": "00", - "_head": "333e", - "rate": 1.55, - "_date": "0f74044411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T04:32:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:32:13", - "_body": "", - "_head": "1601", - "_date": "0d60044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:32:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:32:13", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0d60044411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T04:13:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:13:58", - "_body": "", - "_head": "1601", - "_date": "3a4d044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:13:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:13:58", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "3a4d044411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T04:02:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T04:02:18", - "_body": "", - "_head": "1601", - "_date": "1242044411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T04:02:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T04:02:18", - "_body": "00", - "_head": "335b", - "rate": 2.275, - "_date": "1242044411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:57:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:57:54", - "_body": "", - "_head": "1601", - "_date": "3679034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:57:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:57:54", - "_body": "00", - "_head": "3337", - "rate": 1.375, - "_date": "3679034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:50:05 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:50:05", - "_body": "", - "_head": "1601", - "_date": "0572034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:50:05 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:50:05", - "_body": "00", - "_head": "332c", - "rate": 1.1, - "_date": "0572034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:38:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:38:04", - "_body": "", - "_head": "1601", - "_date": "0466034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:38:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:38:04", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "0466034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:34:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:34:07", - "_body": "", - "_head": "1601", - "_date": "0762034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:34:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:34:07", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "0762034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:32:16 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:32:16", - "_body": "", - "_head": "1601", - "_date": "1060034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:32:16 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:32:16", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1060034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:28:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:28:18", - "_body": "", - "_head": "1601", - "_date": "125c034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:28:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:28:18", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "125c034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:23:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:23:59", - "_body": "", - "_head": "1601", - "_date": "3b57034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:23:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:23:59", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3b57034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:15:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:15:58", - "_body": "", - "_head": "1601", - "_date": "3a4f034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:15:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:15:58", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "3a4f034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:09:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:09:54", - "_body": "", - "_head": "1601", - "_date": "3649034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:09:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:09:54", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "3649034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T03:04:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T03:04:59", - "_body": "", - "_head": "1601", - "_date": "3b44034411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T03:04:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T03:04:59", - "_body": "00", - "_head": "333c", - "rate": 1.5, - "_date": "3b44034411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T02:53:05 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:53:05", - "_body": "", - "_head": "1601", - "_date": "0575024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:53:05 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:53:05", - "_body": "00", - "_head": "3332", - "rate": 1.25, - "_date": "0575024411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T02:50:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:50:55", - "_body": "", - "_head": "1601", - "_date": "3772024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:50:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:50:55", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "3772024411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T02:37:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:37:22", - "_body": "", - "_head": "1601", - "_date": "1665024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:37:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:37:22", - "_body": "00", - "_head": "3312", - "rate": 0.45, - "_date": "1665024411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T02:34:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:34:59", - "_body": "", - "_head": "1601", - "_date": "3b62024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:34:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:34:59", - "_body": "00", - "_head": "3320", - "rate": 0.8, - "_date": "3b62024411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T02:23:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:23:02", - "_body": "", - "_head": "1601", - "_date": "0257024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:23:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:23:02", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "0257024411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T02:07:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T02:07:22", - "_body": "", - "_head": "1601", - "_date": "1647024411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T02:07:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T02:07:22", - "_body": "00", - "_head": "3383", - "rate": 3.275, - "_date": "1647024411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:57:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:57:47", - "_body": "", - "_head": "1601", - "_date": "2f79014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:57:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:57:47", - "_body": "00", - "_head": "336c", - "rate": 2.7, - "_date": "2f79014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:52:18 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:52:18", - "_body": "", - "_head": "1601", - "_date": "1274014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:52:18 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:52:18", - "_body": "00", - "_head": "3351", - "rate": 2.025, - "_date": "1274014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:50:04 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:50:04", - "_body": "", - "_head": "1601", - "_date": "0472014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:50:04 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:50:04", - "_body": "00", - "_head": "338a", - "rate": 3.45, - "_date": "0472014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:38:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:38:02", - "_body": "", - "_head": "1601", - "_date": "0266014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:38:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:38:02", - "_body": "00", - "_head": "3388", - "rate": 3.4, - "_date": "0266014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:32:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:32:14", - "_body": "", - "_head": "1601", - "_date": "0e60014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:32:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:32:14", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "0e60014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:27:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:27:55", - "_body": "", - "_head": "1601", - "_date": "375b014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:27:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:27:55", - "_body": "00", - "_head": "3354", - "rate": 2.1, - "_date": "375b014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:22:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:22:27", - "_body": "", - "_head": "1601", - "_date": "1b56014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:22:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:22:27", - "_body": "00", - "_head": "3340", - "rate": 1.6, - "_date": "1b56014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:18:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:18:07", - "_body": "", - "_head": "1601", - "_date": "0752014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:18:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:18:07", - "_body": "00", - "_head": "332f", - "rate": 1.175, - "_date": "0752014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T01:13:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T01:13:54", - "_body": "", - "_head": "1601", - "_date": "364d014411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T01:13:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T01:13:54", - "_body": "00", - "_head": "3325", - "rate": 0.925, - "_date": "364d014411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:55:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:55:59", - "_body": "", - "_head": "1601", - "_date": "3b77004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:55:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:55:59", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3b77004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:44:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:44:48", - "_body": "", - "_head": "1601", - "_date": "306c004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:44:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:44:48", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "306c004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:33:20 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:33:20", - "_body": "", - "_head": "1601", - "_date": "1461004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:33:20 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:33:20", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1461004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:30:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:30:57", - "_body": "", - "_head": "1601", - "_date": "395e004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:30:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:30:57", - "_body": "00", - "_head": "3382", - "rate": 3.25, - "_date": "395e004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:23:08 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:23:08", - "_body": "", - "_head": "1601", - "_date": "0857004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:23:08 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:23:08", - "_body": "00", - "_head": "334b", - "rate": 1.875, - "_date": "0857004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:21:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:21:10", - "_body": "", - "_head": "1601", - "_date": "0a55004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:21:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:21:10", - "_body": "00", - "_head": "3334", - "rate": 1.3, - "_date": "0a55004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:17:20 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:17:20", - "_body": "", - "_head": "1601", - "_date": "1451004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:17:20 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:17:20", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "1451004411" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-04T00:07:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T00:07:10", - "_body": "", - "_head": "1601", - "_date": "0a47004411" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T00:07:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T00:07:10", - "_body": "00", - "_head": "33d2", - "rate": 5.25, - "_date": "0a47004411" - }, - { - "_type": "Model522ResultTotals", - "_description": "Model522ResultTotals 2017-01-04T00:00:00 head[1], body[41] op[0x6d]", - "timestamp": "2017-01-04T00:00:00", - "_body": "0500695a820400000c2804f82907303b00e107303b04403b00480402a8250a020002060c00e8000000", - "_head": "6d", - "_date": "0391" - }, - { - "_type": "ResultDailyTotal", - "_description": "ResultDailyTotal 2017-01-04T00:00:00 head[5], body[0] op[0x07]", - "timestamp": "2017-01-04T00:00:00", - "_body": "", - "valid_date": "2017-01-03", - "_head": "0700000c28", - "_date": "0391" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:57:37 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:57:37", - "_body": "", - "_head": "1601", - "_date": "2579174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:57:37 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:57:37", - "_body": "00", - "_head": "33aa", - "rate": 4.25, - "_date": "2579174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:53:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:53:56", - "_body": "", - "_head": "1601", - "_date": "3875174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:53:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:53:56", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "3875174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:42:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:42:13", - "_body": "", - "_head": "1601", - "_date": "0d6a174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:42:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:42:13", - "_body": "00", - "_head": "3368", - "rate": 2.6, - "_date": "0d6a174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:38:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:38:13", - "_body": "", - "_head": "1601", - "_date": "0d66174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:38:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:38:13", - "_body": "00", - "_head": "3351", - "rate": 2.025, - "_date": "0d66174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:33:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:33:48", - "_body": "", - "_head": "1601", - "_date": "3061174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:33:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:33:48", - "_body": "00", - "_head": "331e", - "rate": 0.75, - "_date": "3061174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:22:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:22:14", - "_body": "", - "_head": "1601", - "_date": "0e56174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:22:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:22:14", - "_body": "00", - "_head": "331a", - "rate": 0.65, - "_date": "0e56174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:12:12 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:12:12", - "_body": "", - "_head": "1601", - "_date": "0c4c174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:12:12 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:12:12", - "_body": "00", - "_head": "339a", - "rate": 3.85, - "_date": "0c4c174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:10:13 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:10:13", - "_body": "", - "_head": "1601", - "_date": "0d4a174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:10:13 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:10:13", - "_body": "00", - "_head": "336e", - "rate": 2.75, - "_date": "0d4a174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:08:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:08:14", - "_body": "", - "_head": "1601", - "_date": "0e48174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:08:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:08:14", - "_body": "00", - "_head": "333e", - "rate": 1.55, - "_date": "0e48174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:05:07 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:05:07", - "_body": "", - "_head": "1601", - "_date": "0745174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:05:07 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:05:07", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "0745174311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T23:04:47 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T23:04:47", - "_body": "", - "_head": "1601", - "_date": "2f44174311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T23:04:47 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T23:04:47", - "_body": "00", - "_head": "33c9", - "rate": 5.025, - "_date": "2f44174311" - }, - { - "programmed": 3.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-03T23:02:21 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-03T23:02:21", - "_body": "", - "_head": "011e1e00", - "amount": 3.0, - "_date": "1542570311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:57:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:57:19", - "_body": "", - "_head": "1601", - "_date": "1379164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:57:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:57:19", - "_body": "00", - "_head": "337c", - "rate": 3.1, - "_date": "1379164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:52:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:52:52", - "_body": "", - "_head": "1601", - "_date": "3474164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:52:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:52:52", - "_body": "00", - "_head": "3340", - "rate": 1.6, - "_date": "3474164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:46:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:46:10", - "_body": "", - "_head": "1601", - "_date": "0a6e164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:46:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:46:10", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0a6e164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:44:16 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:44:16", - "_body": "", - "_head": "1601", - "_date": "106c164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:44:16 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:44:16", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "106c164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:41:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:41:55", - "_body": "", - "_head": "1601", - "_date": "3769164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:41:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:41:55", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "3769164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:29:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:29:55", - "_body": "", - "_head": "1601", - "_date": "375d164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:29:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:29:55", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "375d164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:16:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:16:25", - "_body": "", - "_head": "1601", - "_date": "1950164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:16:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:16:25", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1950164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T22:04:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T22:04:03", - "_body": "", - "_head": "1601", - "_date": "0344164311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T22:04:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T22:04:03", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0344164311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T21:54:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:54:01", - "_body": "", - "_head": "1601", - "_date": "0176154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:54:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:54:01", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "0176154311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T21:37:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:37:25", - "_body": "", - "_head": "1601", - "_date": "1965154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:37:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:37:25", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1965154311" - }, - { - "programmed": 3.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-03T21:28:28 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-03T21:28:28", - "_body": "", - "_head": "011e1e00", - "amount": 3.0, - "_date": "1c5c550311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T21:19:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:19:24", - "_body": "", - "_head": "1601", - "_date": "1853154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:19:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:19:24", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1853154311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T21:03:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T21:03:50", - "_body": "", - "_head": "1601", - "_date": "3243154311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T21:03:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T21:03:50", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3243154311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T20:57:24 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T20:57:24", - "_body": "", - "appended": [ - { - "_type": "UnabsorbedInsulinBolus", - "_description": "UnabsorbedInsulinBolus unknown head[23], body[0] op[0x5c]", - "data": [ - { - "amount": 3.0, - "age": 148 - }, - { - "amount": 4.5, - "age": 248 - }, - { - "amount": 3.05, - "age": 288 - }, - { - "amount": 0.95, - "age": 298 - }, - { - "amount": 2.0, - "age": 318 - }, - { - "amount": 3.1, - "age": 408 - }, - { - "amount": 5.9, - "age": 418 - } - ], - "_body": "", - "_head": "5c177894c0b4f8c07a20d0262ad0503ed07c98d0eca2d0", - "_date": "" - } - ], - "programmed": 7.0, - "_head": "01464600", - "amount": 7.0, - "duration": 0, - "type": "normal", - "_date": "1879540311" - }, - { - "_type": "BolusWizard", - "bg": 90, - "bg_target_high": 90, - "correction_estimate": 0.0, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-03T20:57:24 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-03T20:57:24", - "_body": "3750091e5a003d000004003d5a", - "carb_input": 55, - "_head": "5b5a", - "unabsorbed_insulin_total": 0.4, - "_byte[5]": 0, - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "_date": "1879140311", - "bolus_estimate": 6.1, - "unknown_byte[8]": 0, - "carb_ratio": 9, - "food_estimate": 6.1, - "bg_target_low": 90, - "sensitivity": 30 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-03T20:57:06 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-03T20:57:06", - "_body": "", - "_head": "0a5a", - "amount": 90, - "_date": "0679340311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T20:29:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T20:29:56", - "_body": "", - "_head": "1601", - "_date": "385d144311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T20:29:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T20:29:56", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "385d144311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T20:01:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T20:01:26", - "_body": "", - "_head": "1601", - "_date": "1a41144311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T20:01:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T20:01:26", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "1a41144311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T19:48:02 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:48:02", - "_body": "", - "_head": "1601", - "_date": "0270134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:48:02 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:48:02", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0270134311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T19:34:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:34:24", - "_body": "", - "_head": "1601", - "_date": "1862134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:34:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:34:24", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1862134311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T19:23:24 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:23:24", - "_body": "", - "_head": "1601", - "_date": "1857134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:23:24 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:23:24", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "1857134311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T19:17:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:17:59", - "_body": "", - "_head": "1601", - "_date": "3b51134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:17:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:17:59", - "_body": "00", - "_head": "334b", - "rate": 1.875, - "_date": "3b51134311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T19:08:00 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T19:08:00", - "_body": "", - "_head": "1601", - "_date": "0048134311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T19:08:00 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T19:08:00", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "0048134311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:57:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:57:52", - "_body": "", - "_head": "1601", - "_date": "3479124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:57:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:57:52", - "_body": "00", - "_head": "335b", - "rate": 2.275, - "_date": "3479124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:54:25 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:54:25", - "_body": "", - "_head": "1601", - "_date": "1976124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:54:25 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:54:25", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1976124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:48:50 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:48:50", - "_body": "", - "_head": "1601", - "_date": "3270124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:48:50 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:48:50", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3270124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:45:26 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:45:26", - "_body": "", - "_head": "1601", - "_date": "1a6d124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:45:26 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:45:26", - "_body": "00", - "_head": "3328", - "rate": 1.0, - "_date": "1a6d124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:34:48 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:34:48", - "_body": "", - "_head": "1601", - "_date": "3062124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:34:48 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:34:48", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3062124311" - }, - { - "programmed": 3.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-03T18:30:43 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-03T18:30:43", - "_body": "", - "_head": "011e1e00", - "amount": 3.0, - "_date": "2b5e520311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:20:35 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:20:35", - "_body": "", - "_head": "1601", - "_date": "2354124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:20:35 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:20:35", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "2354124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:13:27 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:13:27", - "_body": "", - "_head": "1601", - "_date": "1b4d124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:13:27 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:13:27", - "_body": "00", - "_head": "3310", - "rate": 0.4, - "_date": "1b4d124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:08:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:08:14", - "_body": "", - "_head": "1601", - "_date": "0e48124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:08:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:08:14", - "_body": "00", - "_head": "335f", - "rate": 2.375, - "_date": "0e48124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T18:07:19 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T18:07:19", - "_body": "", - "_head": "1601", - "_date": "1347124311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T18:07:19 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T18:07:19", - "_body": "00", - "_head": "3322", - "rate": 0.85, - "_date": "1347124311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T17:55:55 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:55:55", - "_body": "", - "_head": "1601", - "_date": "3777114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:55:55 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:55:55", - "_body": "00", - "_head": "33c6", - "rate": 4.95, - "_date": "3777114311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T17:43:16 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:43:16", - "_body": "", - "_head": "1601", - "_date": "106b114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:43:16 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:43:16", - "_body": "00", - "_head": "33aa", - "rate": 4.25, - "_date": "106b114311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T17:35:58 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:35:58", - "_body": "", - "_head": "1601", - "_date": "3a63114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:35:58 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:35:58", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "3a63114311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T17:18:03 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:18:03", - "_body": "", - "_head": "1601", - "_date": "0352114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:18:03 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:18:03", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "0352114311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T17:12:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T17:12:52", - "_body": "", - "_head": "1601", - "_date": "344c114311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T17:12:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T17:12:52", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "344c114311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:55:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:55:21", - "_body": "", - "_head": "1601", - "_date": "1577104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:55:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:55:21", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1577104311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:54:10 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:54:10", - "_body": "", - "_head": "1601", - "_date": "0a76104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:54:10 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:54:10", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "0a76104311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T16:50:06 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T16:50:06", - "_body": "", - "appended": [ - { - "_type": "UnabsorbedInsulinBolus", - "_description": "UnabsorbedInsulinBolus unknown head[17], body[0] op[0x5c]", - "data": [ - { - "amount": 3.05, - "age": 41 - }, - { - "amount": 0.95, - "age": 51 - }, - { - "amount": 2.0, - "age": 71 - }, - { - "amount": 3.1, - "age": 161 - }, - { - "amount": 5.9, - "age": 171 - } - ], - "_body": "", - "_head": "5c117a29c02633c05047c07ca1c0ecabc0", - "_date": "" - } - ], - "programmed": 4.5, - "_head": "012d2d00", - "amount": 4.5, - "duration": 0, - "type": "normal", - "_date": "0672500311" - }, - { - "_type": "BolusWizard", - "bg": 111, - "bg_target_high": 90, - "correction_estimate": 0.7, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-03T16:50:06 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-03T16:50:06", - "_body": "2850091e5a072c000035002c5a", - "carb_input": 40, - "_head": "5b6f", - "unabsorbed_insulin_total": 5.3, - "_byte[5]": 7, - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "_date": "0672100311", - "bolus_estimate": 4.4, - "unknown_byte[8]": 0, - "carb_ratio": 9, - "food_estimate": 4.4, - "bg_target_low": 90, - "sensitivity": 30 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-03T16:49:56 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-03T16:49:56", - "_body": "", - "_head": "0a6f", - "amount": 111, - "_date": "3871300311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:36:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:36:22", - "_body": "", - "_head": "1601", - "_date": "1664104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:36:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:36:22", - "_body": "00", - "_head": "331b", - "rate": 0.675, - "_date": "1664104311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:27:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:27:52", - "_body": "", - "_head": "1601", - "_date": "345b104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:27:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:27:52", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "345b104311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:11:40 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:11:40", - "_body": "", - "_head": "1601", - "_date": "284b104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:11:40 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:11:40", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "284b104311" - }, - { - "programmed": 4.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-03T16:08:21 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-03T16:08:21", - "_body": "", - "_head": "01282800", - "amount": 4.0, - "_date": "1548500311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:07:59 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:07:59", - "_body": "", - "_head": "1601", - "_date": "3b47104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:07:59 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:07:59", - "_body": "00", - "_head": "338d", - "rate": 3.525, - "_date": "3b47104311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T16:02:42 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T16:02:42", - "_body": "", - "_head": "1601", - "_date": "2a42104311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T16:02:42 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T16:02:42", - "_body": "00", - "_head": "3348", - "rate": 1.8, - "_date": "2a42104311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:55:23 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:55:23", - "_body": "", - "_head": "1601", - "_date": "17770f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:55:23 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:55:23", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "17770f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:44:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:44:53", - "_body": "", - "_head": "1601", - "_date": "356c0f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:44:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:44:53", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "356c0f4311" - }, - { - "programmed": 2.0, - "_type": "Bolus", - "type": "normal", - "_description": "Bolus 2017-01-03T15:42:20 head[4], body[0] op[0x01]", - "duration": 0, - "timestamp": "2017-01-03T15:42:20", - "_body": "", - "_head": "01141400", - "amount": 2.0, - "_date": "146a4f0311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:38:37 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:38:37", - "_body": "", - "_head": "1601", - "_date": "25660f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:38:37 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:38:37", - "_body": "00", - "_head": "3376", - "rate": 2.95, - "_date": "25660f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:34:30 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:34:30", - "_body": "", - "_head": "1601", - "_date": "1e620f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:34:30 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:34:30", - "_body": "00", - "_head": "3350", - "rate": 2.0, - "_date": "1e620f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:30:52 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:30:52", - "_body": "", - "_head": "1601", - "_date": "345e0f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:30:52 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:30:52", - "_body": "00", - "_head": "3334", - "rate": 1.3, - "_date": "345e0f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:17:38 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:17:38", - "_body": "", - "_head": "1601", - "_date": "26510f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:17:38 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:17:38", - "_body": "00", - "_head": "3314", - "rate": 0.5, - "_date": "26510f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:13:54 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:13:54", - "_body": "", - "_head": "1601", - "_date": "364d0f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:13:54 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:13:54", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "364d0f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T15:02:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T15:02:56", - "_body": "", - "_head": "1601", - "_date": "38420f4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T15:02:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T15:02:56", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "38420f4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:57:53 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:57:53", - "_body": "", - "_head": "1601", - "_date": "35790e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:57:53 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:57:53", - "_body": "00", - "_head": "3312", - "rate": 0.45, - "_date": "35790e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:47:42 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:47:42", - "_body": "", - "_head": "1601", - "_date": "2a6f0e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:47:42 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:47:42", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "2a6f0e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:41:21 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:41:21", - "_body": "", - "_head": "1601", - "_date": "15690e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:41:21 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:41:21", - "_body": "00", - "_head": "3300", - "rate": 0.0, - "_date": "15690e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:24:44 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:24:44", - "_body": "", - "_head": "1601", - "_date": "2c580e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:24:44 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:24:44", - "_body": "00", - "_head": "3317", - "rate": 0.575, - "_date": "2c580e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:13:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:13:22", - "_body": "", - "_head": "1601", - "_date": "164d0e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:13:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:13:22", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "164d0e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:11:22 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:11:22", - "_body": "", - "_head": "1601", - "_date": "164b0e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:11:22 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:11:22", - "_body": "00", - "_head": "332a", - "rate": 1.05, - "_date": "164b0e4311" - }, - { - "_type": "Bolus", - "_description": "Bolus 2017-01-03T14:04:52 head[4], body[0] op[0x01]", - "timestamp": "2017-01-03T14:04:52", - "_body": "", - "appended": [ - { - "_type": "UnabsorbedInsulinBolus", - "_description": "UnabsorbedInsulinBolus unknown head[11], body[0] op[0x5c]", - "data": [ - { - "amount": 2.0, - "age": 315 - }, - { - "amount": 0.85, - "age": 355 - }, - { - "amount": 1.25, - "age": 365 - } - ], - "_body": "", - "_head": "5c0b503bd02263d0326dd1", - "_date": "" - } - ], - "programmed": 9.0, - "_head": "015a5a00", - "amount": 9.0, - "duration": 0, - "type": "normal", - "_date": "34444e0311" - }, - { - "_type": "BolusWizard", - "bg": 130, - "bg_target_high": 90, - "correction_estimate": 1.3, - "unknown_byte[10]": 0, - "_description": "BolusWizard 2017-01-03T14:04:52 head[2], body[13] op[0x5b]", - "timestamp": "2017-01-03T14:04:52", - "_body": "4650091e5a0d4d000000005a5a", - "carb_input": 70, - "_head": "5b82", - "unabsorbed_insulin_total": 0.0, - "_byte[5]": 13, - "unabsorbed_insulin_count": "??", - "_byte[7]": 0, - "_date": "34440e0311", - "bolus_estimate": 9.0, - "unknown_byte[8]": 0, - "carb_ratio": 9, - "food_estimate": 7.7, - "bg_target_low": 90, - "sensitivity": 30 - }, - { - "_type": "CalBGForPH", - "_description": "CalBGForPH 2017-01-03T14:04:35 head[2], body[0] op[0x0a]", - "timestamp": "2017-01-03T14:04:35", - "_body": "", - "_head": "0a82", - "amount": 130, - "_date": "23442e0311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:03:56 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:03:56", - "_body": "", - "_head": "1601", - "_date": "38430e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:03:56 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:03:56", - "_body": "00", - "_head": "33a6", - "rate": 4.15, - "_date": "38430e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T14:03:01 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T14:03:01", - "_body": "", - "_head": "1601", - "_date": "01430e4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T14:03:01 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T14:03:01", - "_body": "00", - "_head": "3372", - "rate": 2.85, - "_date": "01430e4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T13:57:33 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:57:33", - "_body": "", - "_head": "1601", - "_date": "21790d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:57:33 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:57:33", - "_body": "00", - "_head": "333e", - "rate": 1.55, - "_date": "21790d4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T13:53:14 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:53:14", - "_body": "", - "_head": "1601", - "_date": "0e750d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:53:14 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:53:14", - "_body": "00", - "_head": "3316", - "rate": 0.55, - "_date": "0e750d4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T13:42:29 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:42:29", - "_body": "", - "_head": "1601", - "_date": "1d6a0d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:42:29 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:42:29", - "_body": "00", - "_head": "33d3", - "rate": 5.275, - "_date": "1d6a0d4311" - }, - { - "_type": "TempBasalDuration", - "duration (min)": 30, - "_description": "TempBasalDuration 2017-01-03T13:40:41 head[2], body[0] op[0x16]", - "timestamp": "2017-01-03T13:40:41", - "_body": "", - "_head": "1601", - "_date": "29680d4311" - }, - { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-03T13:40:41 head[2], body[1] op[0x33]", - "timestamp": "2017-01-03T13:40:41", - "_body": "00", - "_head": "33a8", - "rate": 4.2, - "_date": "29680d4311" - } -] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/settings.json b/app/src/main/java/info/nightscout/sampleData/settings/settings.json deleted file mode 100644 index 5a0fc0dc17..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/settings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "low_reservoir_warn_point": 16, - "keypad_lock_status": 0, - "maxBasal": 6.3, - "temp_basal": { - "percent": 100, - "type": "Units/hour" - }, - "low_reservoir_warn_type": 1, - "insulinConcentration": 100, - "audio_bolus_enable": true, - "variable_bolus_enable": true, - "alarm": { - "volume": -1, - "mode": 1 - }, - "rf_enable": true, - "auto_off_duration_hrs": 15, - "block_enable": false, - "timeformat": 1, - "insulin_action_curve": 3, - "audio_bolus_size": 1.0, - "selected_pattern": 0, - "patterns_enabled": true, - "maxBolus": 12.0, - "paradigm_enabled": 1 -} \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/settings/temptargets.json b/app/src/main/java/info/nightscout/sampleData/settings/temptargets.json deleted file mode 100644 index 0637a088a0..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/settings/temptargets.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/app/src/main/java/info/nightscout/sampleData/upload/index.html b/app/src/main/java/info/nightscout/sampleData/upload/index.html deleted file mode 100644 index f331bc3192..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/upload/index.html +++ /dev/null @@ -1 +0,0 @@ -{"content":"148-21 16:36\n5.2U->-28-16\nTmp: 28m@0.0 at 16:40\nReq: None\nCOB: 0, Dev: -64, BGI: -8.2, ISF: 21, Target: 81; Eventual BG -28 < 81, setting -11.3U/hr, but 28m left and 0 ~ req 0U/hr: no action required\nSched: 0.60U/hr\nmealCOB: 0g\neddie\n","refresh_frequency":1} diff --git a/app/src/main/java/info/nightscout/sampleData/upload/latest-treatments.json b/app/src/main/java/info/nightscout/sampleData/upload/latest-treatments.json deleted file mode 100644 index a23d48aacb..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/upload/latest-treatments.json +++ /dev/null @@ -1,31 +0,0 @@ -[ - { - "duration": "30", - "raw_duration": { - "_type": "TempBasalDuration", - "_description": "TempBasalDuration 2017-01-04T16:37:57 head[2], body[0] op[0x16]", - "timestamp": "2017-01-04T16:37:57+01:00", - "_body": "", - "_head": "1601", - "duration (min)": 30, - "_date": "3965104411" - }, - "timestamp": "2017-01-04T16:37:57+01:00", - "absolute": "0", - "rate": 0, - "raw_rate": { - "_type": "TempBasal", - "temp": "absolute", - "_description": "TempBasal 2017-01-04T16:37:57 head[2], body[1] op[0x33]", - "timestamp": "2017-01-04T16:37:57+01:00", - "_body": "00", - "_head": "3300", - "rate": 0, - "_date": "3965104411" - }, - "eventType": "Temp Basal", - "medtronic": "mm://openaps/mm-format-ns-treatments/Temp Basal", - "created_at": "2017-01-04T16:37:57+01:00", - "enteredBy": "openaps://medtronic/522" - } -] diff --git a/app/src/main/java/info/nightscout/sampleData/upload/ns-status.json b/app/src/main/java/info/nightscout/sampleData/upload/ns-status.json deleted file mode 100644 index 3e15d231f9..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/upload/ns-status.json +++ /dev/null @@ -1 +0,0 @@ -{"device":"openaps://eddie","openaps":{"iob":{"iob":5.521,"activity":0.077,"bolussnooze":1.574,"basaliob":1.893,"netbasalinsulin":5.05,"hightempinsulin":5.1,"timestamp":"2017-01-04T15:37:36.000Z"},"suggested":{"temp":"absolute","bg":148,"tick":-21,"eventualBG":-34,"snoozeBG":17,"COB":0,"IOB":5.521,"reason":"COB: 0, Dev: -64, BGI: -8.24, ISF: 21, Target: 81; Eventual BG -34 < 81, setting -11.1U/hr","duration":30,"rate":0,"timestamp":"2017-01-04T15:37:50.000Z"},"enacted":{"bg":148,"temp":"absolute","snoozeBG":17,"recieved":true,"predBGs":{"IOB":[148,128,109,91,75,59,45,39,39,39,39,39,39]},"rate":0,"reason":"COB: 0, Dev: -64, BGI: -8.24, ISF: 21, Target: 81; Eventual BG -34 < 81, setting -11.1U/hr","COB":0,"eventualBG":-34,"timestamp":"2017-01-04T15:37:56.000Z","duration":30,"tick":-21,"IOB":5.521}},"pump":{"clock":"2017-01-04T16:37:36+01:00","battery":{"status":"normal","voltage":1.45},"reservoir":120.5,"status":{"status":"normal","bolusing":false,"suspended":false,"timestamp":"2017-01-04T15:37:43.000Z"}},"mmtune":{"scanDetails":[["868.372",4,-91],["868.384",5,-81],["868.396",5,-78],["868.408",5,-77],["868.420",5,-76],["868.432",5,-76],["868.444",5,-76],["868.456",5,-76],["868.468",5,-75],["868.480",5,-76],["868.492",5,-76],["868.504",5,-77],["868.516",5,-80],["868.528",5,-86]],"setFreq":868.468,"usedDefault":false,"timestamp":"2017-01-04T15:33:30.000Z"},"uploader":{"battery":57,"batteryVoltage":3748}} diff --git a/app/src/main/java/info/nightscout/sampleData/upload/pebble.json b/app/src/main/java/info/nightscout/sampleData/upload/pebble.json deleted file mode 100644 index f331bc3192..0000000000 --- a/app/src/main/java/info/nightscout/sampleData/upload/pebble.json +++ /dev/null @@ -1 +0,0 @@ -{"content":"148-21 16:36\n5.2U->-28-16\nTmp: 28m@0.0 at 16:40\nReq: None\nCOB: 0, Dev: -64, BGI: -8.2, ISF: 21, Target: 81; Eventual BG -28 < 81, setting -11.3U/hr, but 28m left and 0 ~ req 0U/hr: no action required\nSched: 0.60U/hr\nmealCOB: 0g\neddie\n","refresh_frequency":1} diff --git a/app/src/main/java/info/nightscout/utils/BatteryLevel.java b/app/src/main/java/info/nightscout/utils/BatteryLevel.java new file mode 100644 index 0000000000..ea55dd9e69 --- /dev/null +++ b/app/src/main/java/info/nightscout/utils/BatteryLevel.java @@ -0,0 +1,34 @@ +package info.nightscout.utils; + +import android.content.Intent; +import android.content.IntentFilter; +import android.os.BatteryManager; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import info.nightscout.androidaps.MainApp; + +/** + * Created by mike on 20.02.2017. + */ + +public class BatteryLevel { + private static Logger log = LoggerFactory.getLogger(BatteryLevel.class); + static public int lastUploadedLevel = 0; + + static public int getBatteryLevel() { + int batteryLevel = 0; + Intent batteryIntent = MainApp.instance().registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + if (batteryIntent != null) { + int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); + int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); + if (level != -1 && scale != -1) { + batteryLevel = (int) (((float) level / (float) scale) * 100.0f); + } + } + log.debug("Battery level: " + batteryLevel); + return batteryLevel; + } + +} diff --git a/app/src/main/java/info/nightscout/utils/BolusWizard.java b/app/src/main/java/info/nightscout/utils/BolusWizard.java index 80e907bb6f..f9d3748f3a 100644 --- a/app/src/main/java/info/nightscout/utils/BolusWizard.java +++ b/app/src/main/java/info/nightscout/utils/BolusWizard.java @@ -2,11 +2,15 @@ package info.nightscout.utils; import org.json.JSONObject; +import java.util.Date; + import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.data.GlucoseStatus; import info.nightscout.androidaps.interfaces.TempBasalsInterface; import info.nightscout.androidaps.interfaces.TreatmentsInterface; import info.nightscout.androidaps.data.IobTotal; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; /** * Created by mike on 11.10.2016. @@ -20,11 +24,15 @@ public class BolusWizard { Double correction; Boolean includeBolusIOB = true; Boolean includeBasalIOB = true; + Boolean superBolus = false; + Boolean trend = false; // Intermediate public Double sens = 0d; public Double ic = 0d; + public GlucoseStatus glucoseStatus; + public Double targetBGLow = 0d; public Double targetBGHigh = 0d; public Double bgDiff = 0d; @@ -37,18 +45,23 @@ public class BolusWizard { public Double insulingFromBolusIOB = 0d; public Double insulingFromBasalsIOB = 0d; public Double insulinFromCorrection = 0d; + public Double insulinFromSuperBolus = 0d; + public Double insulinFromCOB = 0d; + public Double insulinFromTrend = 0d; // Result public Double calculatedTotalInsulin = 0d; public Double carbsEquivalent = 0d; - public Double doCalc(JSONObject specificProfile, Integer carbs, Double bg, Double correction, Boolean includeBolusIOB, Boolean includeBasalIOB) { + public Double doCalc(JSONObject specificProfile, Integer carbs, Double cob, Double bg, Double correction, Boolean includeBolusIOB, Boolean includeBasalIOB, Boolean superBolus, Boolean trend) { this.specificProfile = specificProfile; this.carbs = carbs; this.bg = bg; this.correction = correction; + this.superBolus = superBolus; + this.trend = trend; - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile(); // Insulin from BG sens = profile.getIsf(specificProfile, NSProfile.secondsFromMidnight()); @@ -61,17 +74,28 @@ public class BolusWizard { } insulinFromBG = bg != 0d ? bgDiff / sens : 0d; + // Insulin from 15 min trend + glucoseStatus = GlucoseStatus.getGlucoseStatusData(); + if (glucoseStatus != null && trend) { + insulinFromTrend = (NSProfile.fromMgdlToUnits(glucoseStatus.short_avgdelta, profile.getUnits()) * 3) / sens; + } + // Insuling from carbs ic = profile.getIc(specificProfile, NSProfile.secondsFromMidnight()); insulinFromCarbs = carbs / ic; + insulinFromCOB = cob / ic; // Insulin from IOB - TreatmentsInterface treatments = MainApp.getConfigBuilder().getActiveTreatments(); - TempBasalsInterface tempBasals = MainApp.getConfigBuilder().getActiveTempBasals(); + // IOB calculation + TreatmentsInterface treatments = ConfigBuilderPlugin.getActiveTreatments(); treatments.updateTotalIOB(); - tempBasals.updateTotalIOB(); - bolusIob = treatments.getLastCalculation(); - basalIob = tempBasals.getLastCalculation(); + IobTotal bolusIob = treatments.getLastCalculation(); + TempBasalsInterface tempBasals = ConfigBuilderPlugin.getActiveTempBasals(); + IobTotal basalIob = new IobTotal(new Date().getTime()); + if (tempBasals != null) { + tempBasals.updateTotalIOB(); + basalIob = tempBasals.getLastCalculation().round(); + } insulingFromBolusIOB = includeBolusIOB ? -bolusIob.iob : 0d; insulingFromBasalsIOB = includeBasalIOB ? -basalIob.basaliob : 0d; @@ -79,8 +103,16 @@ public class BolusWizard { // Insulin from correction insulinFromCorrection = correction; + // Insulin from superbolus for 2h. Get basal rate now and after 1h + if (superBolus) { + insulinFromSuperBolus = profile.getBasal(NSProfile.secondsFromMidnight()); + long timeAfter1h = new Date().getTime(); + timeAfter1h += 60L * 60 * 1000; + insulinFromSuperBolus += profile.getBasal(NSProfile.secondsFromMidnight(new Date(timeAfter1h))); + } + // Total - calculatedTotalInsulin = insulinFromBG + insulinFromCarbs + insulingFromBolusIOB + insulingFromBasalsIOB + insulinFromCorrection; + calculatedTotalInsulin = insulinFromBG + insulinFromTrend + insulinFromCarbs + insulingFromBolusIOB + insulingFromBasalsIOB + insulinFromCorrection + insulinFromSuperBolus + insulinFromCOB; if (calculatedTotalInsulin < 0) { carbsEquivalent = -calculatedTotalInsulin * ic; diff --git a/app/src/main/java/info/nightscout/utils/HardLimits.java b/app/src/main/java/info/nightscout/utils/HardLimits.java new file mode 100644 index 0000000000..ff92cf2e87 --- /dev/null +++ b/app/src/main/java/info/nightscout/utils/HardLimits.java @@ -0,0 +1,24 @@ +package info.nightscout.utils; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; + +/** + * Created by mike on 22.02.2017. + */ + +public class HardLimits { + final static double MAXBOLUS_ADULT = 17d; + final static double MAXBOLUS_TEENAGE = 10d; + final static double MAXBOLUS_CHILD = 5d; + + public static double maxBolus() { + String age = SP.getString(R.string.key_age, ""); + + if (age.equals(MainApp.sResources.getString(R.string.key_adult))) return MAXBOLUS_ADULT; + if (age.equals(MainApp.sResources.getString(R.string.key_teenage))) return MAXBOLUS_TEENAGE; + if (age.equals(MainApp.sResources.getString(R.string.key_child))) return MAXBOLUS_CHILD; + return MAXBOLUS_ADULT; + } + +} diff --git a/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java b/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java index 567e5e412b..1e501fbdf0 100644 --- a/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java +++ b/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java @@ -3,7 +3,6 @@ package info.nightscout.utils; import android.Manifest; import android.app.Activity; import android.app.AlertDialog; -import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.pm.PackageManager; @@ -11,6 +10,9 @@ import android.os.Environment; import android.preference.PreferenceManager; import android.support.v4.app.ActivityCompat; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; @@ -22,12 +24,14 @@ import java.util.Map; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventAppExit; /** * Created by mike on 03.07.2016. */ public class ImportExportPrefs { + private static Logger log = LoggerFactory.getLogger(ImportExportPrefs.class); static File path = new File(Environment.getExternalStorageDirectory().toString()); static final File file = new File(path, MainApp.sResources.getString(R.string.app_name) + "Preferences"); @@ -52,7 +56,7 @@ public class ImportExportPrefs { } } - public static void exportSharedPreferences(final Context c) { + public static void exportSharedPreferences(final Activity c) { new AlertDialog.Builder(c) .setMessage(MainApp.sResources.getString(R.string.export_to) + " " + file + " ?") @@ -82,7 +86,7 @@ public class ImportExportPrefs { .show(); } - public static void importSharedPreferences(final Context c) { + public static void importSharedPreferences(final Activity c) { new AlertDialog.Builder(c) .setMessage(MainApp.sResources.getString(R.string.import_from) + " " + file + " ?") .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @@ -109,7 +113,18 @@ public class ImportExportPrefs { } reader.close(); editor.commit(); - ToastUtils.showToastInUiThread(c, MainApp.sResources.getString(R.string.setting_imported)); + OKDialog.show(c, MainApp.sResources.getString(R.string.setting_imported), MainApp.sResources.getString(R.string.restartingapp), new Runnable() { + @Override + public void run() { + log.debug("Exiting"); + MainApp.instance().stopKeepAliveService(); + MainApp.bus().post(new EventAppExit()); + MainApp.closeDbHelper(); + c.finish(); + System.runFinalization(); + System.exit(0); + } + }); } catch (FileNotFoundException e) { ToastUtils.showToastInUiThread(c, MainApp.sResources.getString(R.string.filenotfound) + " " + file); e.printStackTrace(); diff --git a/app/src/main/java/info/nightscout/utils/LocaleHelper.java b/app/src/main/java/info/nightscout/utils/LocaleHelper.java index 1d89c7d689..c8faa83b9d 100644 --- a/app/src/main/java/info/nightscout/utils/LocaleHelper.java +++ b/app/src/main/java/info/nightscout/utils/LocaleHelper.java @@ -40,8 +40,7 @@ public class LocaleHelper { } private static String getPersistedData(Context context, String defaultLanguage) { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); - return preferences.getString(SELECTED_LANGUAGE, defaultLanguage); + return SP.getString(SELECTED_LANGUAGE, defaultLanguage); } private static void persist(Context context, String language) { diff --git a/app/src/main/java/info/nightscout/utils/OKDialog.java b/app/src/main/java/info/nightscout/utils/OKDialog.java new file mode 100644 index 0000000000..19fbe7c62a --- /dev/null +++ b/app/src/main/java/info/nightscout/utils/OKDialog.java @@ -0,0 +1,44 @@ +package info.nightscout.utils; + +import android.app.Activity; +import android.content.DialogInterface; +import android.support.v7.app.AlertDialog; +import android.support.v7.view.ContextThemeWrapper; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import info.nightscout.androidaps.MainApp; +import info.nightscout.androidaps.R; + +/** + * Created by mike on 31.03.2017. + */ + +public class OKDialog { + private static Logger log = LoggerFactory.getLogger(OKDialog.class); + + public static void show(final Activity activity, String title, String message, final Runnable runnable) { + try { + AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(activity, R.style.AppTheme)); + builder.setTitle(title); + builder.setMessage(message); + builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + if (runnable != null) { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + } + activity.runOnUiThread(runnable); + } + } + }); + + builder.create().show(); + } catch (Exception e) { + log.debug("show_dialog exception: " + e); + } + } +} diff --git a/app/src/main/java/info/nightscout/utils/PasswordProtection.java b/app/src/main/java/info/nightscout/utils/PasswordProtection.java index 2b8d7a59c1..1af10eb2d2 100644 --- a/app/src/main/java/info/nightscout/utils/PasswordProtection.java +++ b/app/src/main/java/info/nightscout/utils/PasswordProtection.java @@ -3,8 +3,6 @@ package info.nightscout.utils; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; @@ -19,7 +17,6 @@ import info.nightscout.androidaps.R; public class PasswordProtection { static public boolean isLocked(String preference) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); final String password = SP.getString(preference, ""); if (password.equals("")) { return false; @@ -28,7 +25,6 @@ public class PasswordProtection { } static public void QueryPassword(final Context context, int stringID, String preference, final Runnable ok, final Runnable fail) { - SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); final String password = SP.getString(preference, ""); if (password.equals("")) { if (ok != null) ok.run(); diff --git a/app/src/main/java/info/nightscout/utils/SP.java b/app/src/main/java/info/nightscout/utils/SP.java new file mode 100644 index 0000000000..9bed316195 --- /dev/null +++ b/app/src/main/java/info/nightscout/utils/SP.java @@ -0,0 +1,106 @@ +package info.nightscout.utils; + +import android.content.SharedPreferences; +import android.preference.PreferenceManager; + +import info.nightscout.androidaps.MainApp; + +/** + * Created by mike on 17.02.2017. + */ + +public class SP { + static SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); + + static public boolean contains(String key) { + return sharedPreferences.contains(key); + } + + static public String getString(int resourceID, String defaultValue) { + return sharedPreferences.getString(MainApp.sResources.getString(resourceID), defaultValue); + } + + static public String getString(String key, String defaultValue) { + return sharedPreferences.getString(key, defaultValue); + } + + static public boolean getBoolean(int resourceID, boolean defaultValue) { + try { + return sharedPreferences.getBoolean(MainApp.sResources.getString(resourceID), defaultValue); + } catch (Exception e) { + return defaultValue; + } + } + + static public boolean getBoolean(String key, boolean defaultValue) { + try { + return sharedPreferences.getBoolean(key, defaultValue); + } catch (Exception e) { + return defaultValue; + } + } + + static public Double getDouble(int resourceID, Double defaultValue) { + return SafeParse.stringToDouble(sharedPreferences.getString(MainApp.sResources.getString(resourceID), defaultValue.toString())); + } + + static public Double getDouble(String key, Double defaultValue) { + return SafeParse.stringToDouble(sharedPreferences.getString(key, defaultValue.toString())); + } + + static public int getInt(int resourceID, Integer defaultValue) { + return SafeParse.stringToInt(sharedPreferences.getString(MainApp.sResources.getString(resourceID), defaultValue.toString())); + } + + static public int getInt(String key, Integer defaultValue) { + return SafeParse.stringToInt(sharedPreferences.getString(key, defaultValue.toString())); + } + + static public long getLong(int resourceID, Long defaultValue) { + return SafeParse.stringToLong(sharedPreferences.getString(MainApp.sResources.getString(resourceID), defaultValue.toString())); + } + + static public long getLong(String key, Long defaultValue) { + try { + return sharedPreferences.getLong(key, defaultValue); + } catch (Exception e) { + return SafeParse.stringToLong(sharedPreferences.getString(key, defaultValue.toString())); + } + } + + static public void putBoolean(String key, boolean value) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(key, value); + editor.apply(); + } + + static public void putBoolean(int resourceID, boolean value) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean(MainApp.sResources.getString(resourceID), value); + editor.apply(); + } + + static public void removeBoolean(int resourceID) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.remove(MainApp.sResources.getString(resourceID)); + editor.apply(); + } + + static public void putLong(String key, long value) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putLong(key, value); + editor.apply(); + } + + static public void putString(int resourceID, String value) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putString(MainApp.sResources.getString(resourceID), value); + editor.apply(); + } + + static public void removeString(int resourceID) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.remove(MainApp.sResources.getString(resourceID)); + editor.apply(); + } +} diff --git a/app/src/main/java/info/nightscout/utils/SafeParse.java b/app/src/main/java/info/nightscout/utils/SafeParse.java index 470e649005..8697daeebd 100644 --- a/app/src/main/java/info/nightscout/utils/SafeParse.java +++ b/app/src/main/java/info/nightscout/utils/SafeParse.java @@ -1,15 +1,20 @@ package info.nightscout.utils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Created by mike on 23.06.2016. */ public class SafeParse { + private static Logger log = LoggerFactory.getLogger(SafeParse.class); public static Double stringToDouble(String input) { Double result = 0d; input = input.replace(",", "."); try { result = Double.parseDouble(input); } catch (Exception e) { + log.error("Error parsing " + input + " to double"); } return result; } @@ -20,6 +25,7 @@ public class SafeParse { try { result = Integer.parseInt(input); } catch (Exception e) { + log.error("Error parsing " + input + " to int"); } return result; } @@ -30,6 +36,7 @@ public class SafeParse { try { result = Long.parseLong(input); } catch (Exception e) { + log.error("Error parsing " + input + " to long"); } return result; } diff --git a/app/src/main/java/info/nightscout/utils/XdripCalibrations.java b/app/src/main/java/info/nightscout/utils/XdripCalibrations.java index 338304d790..53c3bf45ec 100644 --- a/app/src/main/java/info/nightscout/utils/XdripCalibrations.java +++ b/app/src/main/java/info/nightscout/utils/XdripCalibrations.java @@ -17,7 +17,7 @@ import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.Services.Intents; -import info.nightscout.client.data.NSProfile; +import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile; /** * Created by mike on 10.02.2017. diff --git a/app/src/main/res/drawable/ic_more_vert_black_24dp.xml b/app/src/main/res/drawable/ic_more_vert_black_24dp.xml new file mode 100644 index 0000000000..5176d8a4b1 --- /dev/null +++ b/app/src/main/res/drawable/ic_more_vert_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/loopmodeborder.xml b/app/src/main/res/drawable/loopmodeborder.xml index 86d49ae55d..95f3c114e6 100644 --- a/app/src/main/res/drawable/loopmodeborder.xml +++ b/app/src/main/res/drawable/loopmodeborder.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/drawable/loopmodedisabledborder.xml b/app/src/main/res/drawable/loopmodedisabledborder.xml index 1d312404e0..2326b5ca14 100644 --- a/app/src/main/res/drawable/loopmodedisabledborder.xml +++ b/app/src/main/res/drawable/loopmodedisabledborder.xml @@ -1,5 +1,5 @@ - + diff --git a/app/src/main/res/drawable/loopmodesuspendedborder.xml b/app/src/main/res/drawable/loopmodesuspendedborder.xml new file mode 100644 index 0000000000..9caa1789c1 --- /dev/null +++ b/app/src/main/res/drawable/loopmodesuspendedborder.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/notification_icon.png b/app/src/main/res/drawable/notification_icon.png deleted file mode 100644 index cde69bccce..0000000000 Binary files a/app/src/main/res/drawable/notification_icon.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi-v11/temptargetborder.xml b/app/src/main/res/drawable/temptargetborder.xml similarity index 100% rename from app/src/main/res/drawable-mdpi-v11/temptargetborder.xml rename to app/src/main/res/drawable/temptargetborder.xml diff --git a/app/src/main/res/drawable-mdpi-v11/temptargetborderdisabled.xml b/app/src/main/res/drawable/temptargetborderdisabled.xml similarity index 100% rename from app/src/main/res/drawable-mdpi-v11/temptargetborderdisabled.xml rename to app/src/main/res/drawable/temptargetborderdisabled.xml diff --git a/app/src/main/res/layout/actions_fragment.xml b/app/src/main/res/layout/actions_fragment.xml index 7eb751ac1d..45c57e0107 100644 --- a/app/src/main/res/layout/actions_fragment.xml +++ b/app/src/main/res/layout/actions_fragment.xml @@ -4,6 +4,10 @@ android:layout_height="match_parent" tools:context="info.nightscout.androidaps.plugins.Actions.ActionsFragment"> + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 930d3f897b..91681d5ef2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -11,20 +11,19 @@ android:layout_height="match_parent" android:orientation="vertical"> - + android:layout_marginBottom="10dp" /> + android:layout_weight="1" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/circadianpercentageprofile_fragment.xml b/app/src/main/res/layout/circadianpercentageprofile_fragment.xml index 9ac9b0d026..a1dd3634cc 100644 --- a/app/src/main/res/layout/circadianpercentageprofile_fragment.xml +++ b/app/src/main/res/layout/circadianpercentageprofile_fragment.xml @@ -7,7 +7,7 @@ android:focusable="true" android:focusableInTouchMode="true" android:descendantFocusability="beforeDescendants" - tools:context=".plugins.CircadianPercentageProfile.CircadianPercentageProfileFragment"> + tools:context=".plugins.ProfileCircadianPercentage.CircadianPercentageProfileFragment"> + + + + + + tools:context="info.nightscout.androidaps.plugins.PumpDanaR.DanaRFragment"> - + android:layout_height="wrap_content"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +