package info.nightscout.androidaps.plugins.Loop;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
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.Services.Intents;
import info.nightscout.androidaps.plugins.NSClientInternal.data.DbLogger;
/*
{
"_id": "576cfd15217b0bed77d63641",
"device": "openaps://indy2",
"pump": {
"battery": {
"status": "normal",
"voltage": 1.56
},
"status": {
"status": "normal",
"timestamp": "2016-06-24T09:26:38.000Z",
"bolusing": false,
"suspended": false
},
"reservoir": 31.25,
"clock": "2016-06-24T02:26:16-07:00"
},
"openaps": {
"suggested": {
"bg": 173,
"temp": "absolute",
"snoozeBG": 194,
"timestamp": "2016-06-24T09:27:40.000Z",
"predBGs": {
"IOB": [173, 178, 183, 187, 191, 194, 196, 197, 198, 197, 197, 195, 192, 190, 187, 184, 181, 178, 175, 172, 169, 167, 164, 162, 160, 158, 156, 154, 152, 151, 149, 148, 147, 146, 146, 145]
},
"reason": "COB: 0, Dev: 46, BGI: -1.92, ISF: 80, Target: 115; Eventual BG 194>=115, adj. req. rate:2.7 to maxSafeBasal:2.3, temp 2.25 >~ req 2.3U/hr",
"COB": 0,
"eventualBG": 194,
"tick": "+6",
"IOB": 0.309
},
"iob": [{
"netbasalinsulin": -0.3,
"activity": 0.0048,
"basaliob": 0.078,
"time": "2016-06-24T09:26:16.000Z",
"hightempinsulin": 0.25,
"bolussnooze": 0,
"iob": 0.309
}, {
"netbasalinsulin": -0.15,
"activity": 0.0041,
"basaliob": 0.238,
"time": "2016-06-24T09:31:16.000Z",
"hightempinsulin": 0.4,
"bolussnooze": 0,
"iob": 0.438
}, {
"netbasalinsulin": 0,
"activity": 0.0036,
"basaliob": 0.345,
"time": "2016-06-24T09:36:16.000Z",
"hightempinsulin": 0.5,
"bolussnooze": 0,
"iob": 0.52
}, {
"netbasalinsulin": 0.2,
"activity": 0.0036,
"basaliob": 0.5,
"time": "2016-06-24T09:41:16.000Z",
"hightempinsulin": 0.65,
"bolussnooze": 0,
"iob": 0.653
}, {
"netbasalinsulin": 0.35,
"activity": 0.0038,
"basaliob": 0.602,
"time": "2016-06-24T09:46:16.000Z",
"hightempinsulin": 0.75,
"bolussnooze": 0,
"iob": 0.734
}, {
"netbasalinsulin": 0.45,
"activity": 0.0042,
"basaliob": 0.651,
"time": "2016-06-24T09:51:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.763
}, {
"netbasalinsulin": 0.45,
"activity": 0.0045,
"basaliob": 0.647,
"time": "2016-06-24T09:56:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.74
}, {
"netbasalinsulin": 0.5,
"activity": 0.0048,
"basaliob": 0.639,
"time": "2016-06-24T10:01:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.716
}, {
"netbasalinsulin": 0.5,
"activity": 0.0052,
"basaliob": 0.628,
"time": "2016-06-24T10:06:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.691
}, {
"netbasalinsulin": 0.5,
"activity": 0.0055,
"basaliob": 0.614,
"time": "2016-06-24T10:11:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.663
}, {
"netbasalinsulin": 0.5,
"activity": 0.0059,
"basaliob": 0.596,
"time": "2016-06-24T10:16:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.633
}, {
"netbasalinsulin": 0.55,
"activity": 0.0063,
"basaliob": 0.575,
"time": "2016-06-24T10:21:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.602
}, {
"netbasalinsulin": 0.55,
"activity": 0.0067,
"basaliob": 0.549,
"time": "2016-06-24T10:26:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.568
}, {
"netbasalinsulin": 0.55,
"activity": 0.0071,
"basaliob": 0.521,
"time": "2016-06-24T10:31:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.533
}, {
"netbasalinsulin": 0.6,
"activity": 0.0074,
"basaliob": 0.489,
"time": "2016-06-24T10:36:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.496
}, {
"netbasalinsulin": 0.6,
"activity": 0.0075,
"basaliob": 0.456,
"time": "2016-06-24T10:41:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.458
}, {
"netbasalinsulin": 0.6,
"activity": 0.0075,
"basaliob": 0.42,
"time": "2016-06-24T10:46:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.421
}, {
"netbasalinsulin": 0.6,
"activity": 0.0073,
"basaliob": 0.384,
"time": "2016-06-24T10:51:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.384
}, {
"netbasalinsulin": 0.65,
"activity": 0.0071,
"basaliob": 0.349,
"time": "2016-06-24T10:56:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.349
}, {
"netbasalinsulin": 0.65,
"activity": 0.0069,
"basaliob": 0.314,
"time": "2016-06-24T11:01:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.314
}, {
"netbasalinsulin": 0.65,
"activity": 0.0066,
"basaliob": 0.281,
"time": "2016-06-24T11:06:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.281
}, {
"netbasalinsulin": 0.65,
"activity": 0.0062,
"basaliob": 0.25,
"time": "2016-06-24T11:11:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.25
}, {
"netbasalinsulin": 0.65,
"activity": 0.0059,
"basaliob": 0.221,
"time": "2016-06-24T11:16:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.221
}, {
"netbasalinsulin": 0.65,
"activity": 0.0055,
"basaliob": 0.193,
"time": "2016-06-24T11:21:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.193
}, {
"netbasalinsulin": 0.65,
"activity": 0.0052,
"basaliob": 0.167,
"time": "2016-06-24T11:26:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.167
}, {
"netbasalinsulin": 0.7,
"activity": 0.0049,
"basaliob": 0.143,
"time": "2016-06-24T11:31:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.143
}, {
"netbasalinsulin": 0.7,
"activity": 0.0045,
"basaliob": 0.12,
"time": "2016-06-24T11:36:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.12
}, {
"netbasalinsulin": 0.7,
"activity": 0.0041,
"basaliob": 0.1,
"time": "2016-06-24T11:41:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.1
}, {
"netbasalinsulin": 0.7,
"activity": 0.0037,
"basaliob": 0.081,
"time": "2016-06-24T11:46:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.081
}, {
"netbasalinsulin": 0.75,
"activity": 0.0034,
"basaliob": 0.064,
"time": "2016-06-24T11:51:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.064
}, {
"netbasalinsulin": 0.75,
"activity": 0.003,
"basaliob": 0.049,
"time": "2016-06-24T11:56:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.049
}, {
"netbasalinsulin": 0.8,
"activity": 0.0026,
"basaliob": 0.036,
"time": "2016-06-24T12:01:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.036
}, {
"netbasalinsulin": 0.8,
"activity": 0.0021,
"basaliob": 0.026,
"time": "2016-06-24T12:06:16.000Z",
"hightempinsulin": 0.8,
"bolussnooze": 0,
"iob": 0.026
}, {
"netbasalinsulin": 0.75,
"activity": 0.0017,
"basaliob": 0.017,
"time": "2016-06-24T12:11:16.000Z",
"hightempinsulin": 0.75,
"bolussnooze": 0,
"iob": 0.017
}, {
"netbasalinsulin": 0.75,
"activity": 0.0013,
"basaliob": 0.011,
"time": "2016-06-24T12:16:16.000Z",
"hightempinsulin": 0.75,
"bolussnooze": 0,
"iob": 0.011
}, {
"netbasalinsulin": 0.65,
"activity": 0.0009,
"basaliob": 0.006,
"time": "2016-06-24T12:21:16.000Z",
"hightempinsulin": 0.65,
"bolussnooze": 0,
"iob": 0.006
}],
"enacted": {
"bg": 161,
"temp": "absolute",
"snoozeBG": 181,
"recieved": true,
"predBGs": {
"IOB": [161, 164, 166, 168, 170, 172, 174, 175, 176, 177, 177, 176, 175, 175, 174, 173, 173, 172, 172, 171, 171, 171, 171, 170, 170, 170, 170, 170, 169, 169, 169, 169, 169, 168]
},
"reason": "COB: undefined, Dev: 33, BGI: -2.56, ISF: 80, Target: 115; Eventual BG 181>=115, adj. req. rate:2.4 to maxSafeBasal:2.3, temp 1<2.3U/hr",
"rate": 2.25,
"eventualBG": 181,
"timestamp": "2016-06-24T09:19:06.000Z",
"duration": 30,
"tick": "+5",
"IOB": 0.166
}
},
"mmtune": {
"scanDetails": [
["916.564", 5, -78],
["916.588", 3, -80],
["916.612", 4, -68],
["916.636", 5, -65],
["916.660", 5, -60],
["916.684", 5, -67],
["916.708", 5, -71]
],
"setFreq": 916.66,
"timestamp": "2016-06-24T09:26:22.000Z",
"usedDefault": false
},
"created_at": "2016-06-24T09:27:49.230Z"
}
*/
public class DeviceStatus {
private static Logger log = LoggerFactory.getLogger(DeviceStatus.class);
public String device = null;
public JSONObject pump = null;
public JSONObject enacted = null;
public JSONObject suggested = null;
public JSONObject iob = null;
public int uploaderBattery = 0;
public String created_at = null;
public JSONObject mongoRecord () {
JSONObject record = new JSONObject();
try {
if (device != null) record.put("device" , device);
if (pump != null) record.put("pump" , pump);
if (suggested != null) {
JSONObject openaps = new JSONObject();
if (enacted != null) openaps.put("enacted", enacted);
if (suggested != null) openaps.put("suggested", suggested);
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();
}
return record;
}
public void sendToNSClient() {
Context context = MainApp.instance().getApplicationContext();
Bundle bundle = new Bundle();
bundle.putString("action", "dbAdd");
bundle.putString("collection", "devicestatus");
bundle.putString("data", mongoRecord().toString());
Intent intent = new Intent(Intents.ACTION_DATABASE);
intent.putExtras(bundle);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
context.sendBroadcast(intent);
DbLogger.dbAdd(intent, mongoRecord().toString(), DeviceStatus.class);
}
}