public static async Task <PebbleData> GetNightscoutPebbleDataAsync(string url) { var client = new HttpClient(); var pebbleData = new PebbleData(); string urlContents = await client.GetStringAsync(url); Bg bgs = null; //urlContents = "{ \"status\":[{\"now\":1471947452808}],\"bgs\":[],\"cals\":[]"; //urlContents = "{}" var parsed = pebbleData.NsData = JsonConvert.DeserializeObject <GeneratedNsData>(urlContents); try { bgs = parsed.bgs.First(); pebbleData.Direction = bgs.direction; pebbleData.Glucose = Double.Parse(bgs.sgv, NumberStyles.Any, PebbleData.Culture); pebbleData.Date = DateTimeOffset.FromUnixTimeMilliseconds(bgs.datetime).DateTime; pebbleData.Delta = Double.Parse(bgs.bgdelta, NumberStyles.Any, PebbleData.Culture); } catch (InvalidOperationException ex) { //this exception might be hit when the nightscout installation is brand new or contains no recent data; throw new MissingDataException("No data"); } return(pebbleData); }
public static double CalculateRawGlucose(Cal cal, Bg bg, double actualGlucose) { double number; double curBG = actualGlucose; int specialValue = 0; if (IsMmol) { if ((actualGlucose < 2.2) || (actualGlucose > 22.2)) { specialValue = 1; } curBG = curBG * 18.01559; } else { if ((actualGlucose < 40) || (actualGlucose > 400)) { specialValue = 1; } } //this special value is only triggered when the dexcom upload is brand new //from a brand new sensor? if (specialValue == 1) { number = cal.scale * (bg.unfiltered - cal.intercept) / cal.slope; } else { number = cal.scale * (bg.filtered - cal.intercept) / cal.slope / curBG; number = cal.scale * (bg.unfiltered - cal.intercept) / cal.slope / number; } if (IsMmol) { number = number / 18.01559; } return(number); }
public static async Task <PebbleData> GetNightscoutPebbleDataAsync(string uri) { var client = new HttpClient(); var pebbleData = new PebbleData(); string urlContents; if (Default.AllowFileURIScheme && uri.ToLower().StartsWith("file:///")) { using (var reader = File.OpenText(new Uri(uri).LocalPath)) { urlContents = await reader.ReadToEndAsync(); } } else { urlContents = await client.GetStringAsync(uri); } Bg bgs = null; //urlContents = "{ \"status\":[{\"now\":1471947452808}],\"bgs\":[],\"cals\":[]"; //urlContents = "{}" var parsed = pebbleData.NsData = JsonConvert.DeserializeObject <GeneratedNsData>(urlContents); try { bgs = parsed.bgs.First(); pebbleData.Direction = bgs.direction; pebbleData.Glucose = Double.Parse(bgs.sgv, NumberStyles.Any, PebbleData.Culture); pebbleData.Date = DateTimeOffset.FromUnixTimeMilliseconds(bgs.datetime).DateTime; pebbleData.Delta = Double.Parse(bgs.bgdelta, NumberStyles.Any, PebbleData.Culture); } catch (InvalidOperationException ex) { //this exception might be hit when the nightscout installation is brand new or contains no recent data; throw new MissingDataException("No data"); } return(pebbleData); }