示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }