Configuring Automatic Sensitivity and Meal Assist ModeΒΆ

For more information review https://github.com/openaps/oref0/issues/58

  1. Install the latest dev branch of oref0:
sudo npm install -g git://github.com/openaps/oref0.git'#dev'
  1. Next in order for the new auto-sensitivity report to run, you need to have at least 24 hours worth of pump history data and enough bg readings (24 hours). In your openaps.ini apply the following changes:
[report "monitor/glucose.json"]
device = cgm
use = iter_glucose
reporter = JSON
count = 288

(NOTE: if using Nightscout, add count=288 to your entries.json API call as a querystring parameter)

One way to do this is to go to your openaps directory and edit the ns-glucose.ini file. Depending on how you’ve implemented it, it should look something like this (please note the ?count=288):

[device "curl"]
fields = 
cmd = bash
vendor = openaps.vendors.process
args = -c "curl -s https://[Your URL]/api/v1/entries.json?count=288 | json -e 'this.glucose = this.sgv'"

If your glucose.json does not have enough entries you will see a warning when running your auto-sens.json report:

Error: not enough glucose data to calculate autosens.
  1. After applying the above change you need to add a new auto-sens device and an auto-sens report. Run this command to create the auto-sens report:

openaps device add auto-sens process --require "glucose pumphistory insulin_sensitivities basal_profile profile" oref0 detect-sensitivity

If the command exectuted properly, the contents of openaps.ini should contain:

[device "auto-sens"]
vendor = openaps.vendors.process
extra = auto-sens.ini

Another new file named auto-sens.ini should have been created, and it should contain:

[device "auto-sens"]
fields = glucose pumphistory insulin_sensitivities basal_profile profile
cmd = oref0
args = detect-sensitivity
  1. In order for auto-sens to run properly, you need to make sure you pull enough history from your pump - 24 hours plus however many yours you have set for your DIA. To do this, you will create a new report called pumphistory-24h.json:
openaps report add settings/pumphistory-24h.json JSON pump iter_pump_hours 28

(NOTE: the 28 assumes a 4h DIA - please adjust accordingly if your DIA is longer.)

  1. Once the device is created, we need to create the auto-sens.json report. Run this command to create the auto-sens.json report:
openaps report add settings/auto-sens.json text auto-sens shell monitor/glucose.json settings/pumphistory-24h.json settings/insulin_sensitivities.json settings/basal_profile.json settings/profile.json

Now invoke the report to test:

openaps invoke report settings/auto-sens.json
  1. Next we need to add the auto-sens.json report to the oref0-determine-basal device. In openaps.ini make sure your oref0-determine-basal looks similar to this:
[device "oref0-determine-basal"]
fields = iob current-temps glucose profile **auto-sens** meal
cmd = oref0-determine-basal
vendor = openaps.vendors.process
args = 

(NOTE: in the fields above, meal should only be present if meal assist is configured)

  1. At this point, in the process you should already have an enact/suggested.json report. Edit your openaps.ini file and add the bottom line to that report:
[report "enact/suggested.json"]
profile = settings/profile.json
use = shell
reporter = text
current-temps = monitor/temp-basal-status.json
device = oref0-determine-basal
iob = monitor/iob.json
glucose = monitor/glucose.json
meal = monitor/meal.json
auto-sens = settings/auto-sens.json

(NOTE: as stated above, if you do not have meal assist enabled, do not include the meal line)

  1. Based on the configuration of the basic loop, it is recommended that the settings/auto-sens.json be added to the gather-profile alias:
gather-profile report invoke settings/settings.json settings/bg_targets.json settings/insulin_sensitivities.json settings/basal_profile.json settings/profile.json monitor/auto-sens.json

and that the gather alias be adjusted to make sure gather-profile is at the end. This is because the settings/auto-sens.json report depends upon elements from the preceding two aliases to run.

gather ! bash -c "rm -f monitor/*; openaps monitor-cgm && openaps monitor-pump && openaps gather-profile"

Note. Your loop should run without auto-sens.json report but if you don’t pass that as an input you will see the following message while executing oref0-determine-basal.js:

Optional feature Auto Sensitivity not enabled:  { [Error: ENOENT: no such file or directory, open 'online'] errno: -2, code: 'ENOENT', syscall: 'open', path: 'online' }

Here is an example of running the loop with Auto Sensitivity feature enabled:

reporting oref0-prepare/mm-normalized.json
...............................................................................................................................................................................................................................................................................................
p=0.51: -0.33, -0.33, 0.22
p=0.50: -0.33, -0.33, 0.13
p=0.49: -0.67, -0.36, -0.03
p=0.48: -0.67, -0.39, -0.11
p=0.47: -0.67, -0.46, -0.24
p=0.46: -0.67, -0.50, -0.38
p=0.45: -1.00, -0.54, -0.42
p=0.44: -1.24, -0.57, -0.47
p=0.43: -1.33, -0.58, -0.63
p=0.42: -1.49, -0.60, -0.67
p=0.41: -1.67, -0.62, -0.78
p=0.40: -1.67, -0.65, -0.88
p=0.39: -1.67, -0.66, -0.95
p=0.38: -2.00, -0.67, -1.12
p=0.37: -2.00, -0.68, -1.57
p=0.36: -2.00, -0.69, -1.67
p=0.35: -2.33, -0.69, -1.73
p=0.34: -2.33, -0.70, -1.89
p=0.33: -2.43, -0.74, -2.03
p=0.32: -2.67, -0.76, -2.16
p=0.31: -3.00, -0.77, -2.36
p=0.30: -3.00, -0.82, -2.55
Mean deviation: 0.76
Sensitivity within normal ranges
Basal adjustment 0.00U/hr
Ratio: 100%: new ISF: 42.0mg/dL/U
{"carbs":0,"boluses":0,"mealCOB":10}
{"ratio":1}
{"delta":-4,"glucose":129,"avgdelta":-6}
{"duration":17,"rate":1.125,"temp":"absolute"}
{"iob":0.089,"activity":0.0119,"bolussnooze":0,"basaliob":0.089,"netbasalinsulin":1.4,"hightempinsulin":1.8}
{"max_iob":3,"type":"current","dia":3,"current_basal":1.15,"max_daily_basal":1.15,"max_basal":3,"min_bg":100,"max_bg":120,"sens":42,"carb_ratio":10}
oref0-get-profile://text/shell/oref0-predict/profile.json
reporting oref0-predict/profile.json
oref0-calculate-iob://text/shell/oref0-predict/iob.json
reporting oref0-predict/iob.json
auto-sens://text/shell/oref0-monitor/auto-sens.json
reporting oref0-monitor/auto-sens.json
oref0-determine-basal://text/shell/oref0-predict/oref0.json
reporting oref0-predict/oref0.json
{
"temp": "absolute",
"bg": 129,
"tick": -4,
"eventualBG": 104,
"snoozeBG": 104,
"mealAssist": "Off: Carbs: 0 Boluses: 0 Target: 110 Deviation: -21 BGI: -2.5",
"reason": "Eventual BG 104>100 but Avg. Delta -6.00 < Exp. Delta -2.3, temp 1.125 ~ req 1.15U/hr"
}
No recommendation to send