Beispiel #1
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            //Parse HTTP Request Body
            string    requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            HeartData data        = JsonConvert.DeserializeObject <HeartData>(requestBody);

            //Make Prediction
            //var predictionResult = ConsumerModel.Predict(data);

            HeartPrediction prediction = _predictionEnginePool.Predict(modelName: "HeartModel", example: data);

            Debug.WriteLine("WTF");


            //Convert prediction to string
            //TODO udkommenteres fordi vores prediction er en string og ikke en bool.
            //string sentiment = Convert.ToBoolean(prediction.Prediction) ? "Healthy heart" : "Unhealthy Heart";
            string sentiment = prediction.Prediction;

            //Return Prediction
            return((ActionResult) new OkObjectResult(sentiment));
        }
Beispiel #2
0
        internal static Tuple <List <HeartRateDayData>, List <HeartrateIntraDayData> > GetHeartrateForDay(DateTimeOffset day)
        {
            Tuple <HeartData, bool> result = GetDataFromFitbit <HeartData>(String.Format(HEARTRATE_URL, day.ToString(Settings.FITBIT_FORMAT_DAY)));
            HeartData heartrateData        = result.Item1;
            bool      retry = result.Item2;

            if (heartrateData == null && retry)
            {
                heartrateData = GetDataFromFitbit <HeartData>(String.Format(HEARTRATE_URL, day.Year + "-" + day.Month + "-" + day.Day)).Item1;
            }

            List <HeartRateDayData> data = new List <HeartRateDayData>();

            if (heartrateData.Activities.Count > 0)
            {
                foreach (HeartRateZone zone in heartrateData.Activities[0].Value.CustomHeartrateZones)
                {
                    data.Add(new HeartRateDayData {
                        Date             = DateTime.ParseExact(heartrateData.Activities[0].DateTime, Settings.FITBIT_FORMAT_DAY, CultureInfo.InvariantCulture),
                        RestingHeartrate = heartrateData.Activities[0].Value.RestingHeartrate,
                        CaloriesOut      = zone.CaloriesOut,
                        Max          = zone.Max,
                        Min          = zone.Min,
                        MinutesSpent = zone.Minutes,
                        Name         = zone.Name
                    });
                }

                foreach (HeartRateZone zone in heartrateData.Activities[0].Value.HeartRateZones)
                {
                    data.Add(new HeartRateDayData
                    {
                        Date             = DateTime.ParseExact(heartrateData.Activities[0].DateTime, Settings.FITBIT_FORMAT_DAY, CultureInfo.InvariantCulture),
                        RestingHeartrate = heartrateData.Activities[0].Value.RestingHeartrate,
                        CaloriesOut      = zone.CaloriesOut,
                        Max          = zone.Max,
                        Min          = zone.Min,
                        MinutesSpent = zone.Minutes,
                        Name         = zone.Name
                    });
                }
            }

            List <HeartrateIntraDayData> intradayData = new List <HeartrateIntraDayData>();

            foreach (HeartrateIntradayData d in result.Item1.IntradayActivities.HeartrateIntradayData)
            {
                intradayData.Add(new HeartrateIntraDayData
                {
                    Day   = new DateTime(day.Year, day.Month, day.Day),
                    Time  = d.Time,
                    Value = d.Value
                });
            }

            return(Tuple.Create <List <HeartRateDayData>, List <HeartrateIntraDayData> >(data, intradayData));
        }
        public IActionResult Predict(HeartData input)
        {
            var model = new MLModel();

            model.Build();
            var result = model.Consume(input);

            ViewBag.HeartPrediction = result;
            return(View());
        }
        public PredictionModel GetPrediction([FromBody] HeartData heartData)
        {
            MLContext    mlContext        = new MLContext();
            string       modelPath        = AppDomain.CurrentDomain.BaseDirectory + "MLModel.zip";
            ITransformer mlModel          = mlContext.Model.Load(modelPath, out var modelInputSchema);
            var          predictionEngine = mlContext.Model.CreatePredictionEngine <HeartData, PredictionModel>(mlModel);
            var          prediction       = predictionEngine.Predict(heartData);


            return(prediction);
        }
Beispiel #5
0
        private string SendHeartData(Dictionary <string, string> args)
        {
            Dictionary <string, List <HeartData> > heartData = HttpContext.Application[args["projectKey"]] as Dictionary <string, List <HeartData> >;

            if (args["type"] == "1")
            {
                if (heartData.Keys.Contains(args["mqName"] + "_" + (int.Parse(args["index"]) + 1)))
                {
                    List <HeartData> list = heartData[args["mqName"] + "_" + (int.Parse(args["index"]) + 1)];

                    if (list.Count(p => p.Type == "1") >= 5)
                    {
                        HeartData data = list.First(p => p.Type == "1");
                        list.Remove(data);
                    }

                    list.Add(new HeartData
                    {
                        Type    = "1",
                        Message = "heart",
                        Time    = DateTime.Now.ToString()
                    });
                }
            }
            else if (args["type"] == "2")
            {
                if (heartData.Keys.Contains(args["ConsumerTag"]))
                {
                    List <HeartData> list = heartData[args["ConsumerTag"]];

                    if (list.Count(p => p.Type == "2") >= 5)
                    {
                        HeartData data = list.First(p => p.Type == "2");
                        list.Remove(data);
                    }

                    list.Add(new HeartData
                    {
                        Type    = "2",
                        Message = args["ip"] + "|" + args["tag"] + "|" + args["url"] + "|" + args["logType"],
                        Time    = args["ct"]
                    });
                }
            }



            return("");
        }
 public void Run(IBackgroundTaskInstance taskInstance)
 {
     this.taskInstance      = taskInstance;
     Deferral               = taskInstance.GetDeferral();
     heartData              = new HeartData();
     MinRate                = heartData.MinRate;
     MaxRate                = heartData.MaxRate;
     taskInstance.Canceled += OnCanceled;
     while (flag)
     {
         if (isSent)
         {
             if (bandClient != null)
             {
                 bandClient.Dispose();
                 bandClient = null;
             }
             isSent = false;
             InitBand().Wait();
         }
     }
 }
        private async Task InitInterface()
        {
            heartData        = new HeartData();
            this.DataContext = heartData;
            device           = (await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(new Guid("A502CA9A-2BA5-413C-A4E0-13804E47B38F"))))).FirstOrDefault();

            VisualStateManager.GoToState(this, "Loading", false);

            if ((heartData.IsStarted) && (IsBackgroundRunning()))
            {
                VisualStateManager.GoToState(this, "NormalStarted", false);
                _deviceUseBackgroundTaskRegistration.Progress += _deviceUseBackgroundTaskRegistration_Progress;
                return;
            }

            KillBackground();

            heartData.IsStarted     = false;
            heartData.IsMaxNotified = false;
            heartData.IsMinNotified = false;

            await InitBand();
        }
Beispiel #8
0
        public HeartPrediction Consume(HeartData input)
        {
            var predictionEngine = mlContext.Model.CreatePredictionEngine <HeartData, HeartPrediction>(trainedModel);

            return(predictionEngine.Predict(input));
        }
        // For more info on consuming ML.NET models, visit https://aka.ms/mlnet-consume
        // Method for consuming model in your app
        public static HeartPrediction Predict(HeartData input)
        {
            HeartPrediction result = PredictionEngine.Value.Predict(input);

            return(result);
        }