Esempio n. 1
0
        public Izby findRoom(Pohyb pohyb)
        {
            float x = 0; float y = 0;

            try {
                x = pohyb.Xhodnota;
                y = pohyb.Yhodnota;
            }
            catch (Exception e)
            {
                return(null);
            }
            DatabaseContext context = new DatabaseContext();

            var izby = context.Rooms.ToList();

            foreach (var izba in izby)
            {
                if ((x >= izba.LavaXhodnota * 10) && (x <= izba.PravaXhodnota * 10) && (y >= izba.LavaYhodnota * 10) && (y <= izba.PravaYhodnota * 10))
                {
                    return(izba);
                }
            }

            return(null);
        }
        public void LoadMovementDataset(DatabaseContext context)
        {
            var    assembly = typeof(LoadMovement).GetTypeInfo().Assembly;
            Stream stream   = assembly.GetManifestResourceStream("Xamarin.Forms_EFCore.movementDataset.txt");

            List <Xamarin.Forms_EFCore.Models.HelpModels.Json> objects = new List <Xamarin.Forms_EFCore.Models.HelpModels.Json>();

            int index = 1;

            if (!context.Movement.Any())
            {
                index = 1;
            }
            else
            {
                Pohyb poh = context.Movement.FirstOrDefault(p => p.PohybId == context.Movement.Max(t => t.PohybId));
                index = poh.PohybId;
                index++;
            }
            int i = 0;

            using (StreamReader sr = new StreamReader(stream))
            {
                while (sr.Peek() >= 0)
                {
                    MovementJson obj = Newtonsoft.Json.JsonConvert.DeserializeObject <MovementJson>(sr.ReadLine());
                    //objects.Add(obj);
                    //System.Diagnostics.Debug.WriteLine("************** + " + obj.x + " " + obj.y);

                    Pohyb pohyb = new Pohyb
                    {
                        PohybId   = index++,
                        Xhodnota  = obj.x * 10,
                        Yhodnota  = obj.y * 10,
                        TimeStamp = obj.timestamp.ToString()
                    };
                    context.Movement.Add(pohyb);
                }
            }
            try
            {
                context.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }

            /*Vypis tabulky z DB*/

            /*var all = context.Movement.ToList();
             * foreach (var a in all)
             * {
             *  System.Diagnostics.Debug.WriteLine(a.Xhodnota + " " + a.TimeStamp + " " + a.Yhodnota);
             *
             *
             * }*/
        }
        public async void readLineFromDatasetFile()
        {
            try
            {
                DatabaseContext context = new DatabaseContext();

                IFileSystem fileSystem = FileSystem.Current;
                IFolder     rootFolder = fileSystem.LocalStorage;

                IFile movFile = await rootFolder.GetFileAsync("movementDataset.txt");

                string newFileText; string line;
                string fileText = await movFile.ReadAllTextAsync();

                using (System.IO.StringReader reader = new System.IO.StringReader(fileText))
                {
                    line = reader.ReadLine();
                    //System.Diagnostics.Debug.WriteLine("READ from file pulse " + line);
                    newFileText = reader.ReadToEnd();
                }

                movFile.WriteAllTextAsync(newFileText);

                MovementJson obj = Newtonsoft.Json.JsonConvert.DeserializeObject <MovementJson>(line);

                int index = 1;
                if (!context.Movement.Any())
                {
                    index = 1;
                }
                else
                {
                    Pohyb tmp = context.Movement.FirstOrDefault(t => t.PohybId == context.Movement.Max(x => x.PohybId));
                    index = tmp.PohybId;
                    index++;
                }

                Pohyb POH = new Pohyb
                {
                    PohybId   = index,
                    TimeStamp = obj.timestamp.ToString(),
                    Xhodnota  = obj.x * 10,
                    Yhodnota  = obj.y * 10
                };



                context.Movement.Add(POH);
                System.Diagnostics.Debug.WriteLine("****** VLOZENIE MOVEMENT DO DB: " + POH.PohybId + " " + POH.Xhodnota + " " + POH.Yhodnota + " " + POH.TimeStamp);


                context.SaveChanges();
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("Citanie movement suboru zo zariadenia: " + nameof(LoadPulse) + e.ToString());
            }
        }
Esempio n. 4
0
        public int checkIfOutside(DatabaseContext context, Pohyb pohyb)
        {
            Hranice_Pohyb hpoh = context.MovementLimit.FirstOrDefault(t => t.HranicePohybId == context.MovementLimit.Max(x => x.HranicePohybId));

            if ((pohyb.Xhodnota < 0) || (pohyb.Yhodnota < 0) || (pohyb.Xhodnota > hpoh.Xhranica) || (pohyb.Yhodnota > hpoh.Yhranica))
            {
                return(1);
            }
            else
            {
                return(0);
            }
        }
        public void GenerateMovementOneSample()
        {
            DatabaseContext context = new DatabaseContext();
            int             index   = 1;

            if (!context.Movement.Any())
            {
                index = 1;
            }
            else
            {
                Pohyb poh = context.Movement.FirstOrDefault(p => p.PohybId == context.Movement.Max(t => t.PohybId));
                index = poh.PohybId;
                index++;
            }



            Random rnd = new Random();


            Pohyb pohyb = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = rnd.Next(0, 160),
                Yhodnota  = rnd.Next(0, 160),
                TimeStamp = DateTime.Now.ToShortTimeString()
            };

            context.Movement.Add(pohyb);



            System.Diagnostics.Debug.WriteLine("pohyb " + pohyb.PohybId);


            try
            {
                context.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }
        }
Esempio n. 6
0
        public void setMovementValue()
        {
            if (_context.MovementSekv.Any())
            {
                Pohyb pohyb = _context.Movement.FirstOrDefault(t => t.PohybId == _context.Movement.Max(x => x.PohybId));

                RoomsDetection roomsDetection = new RoomsDetection();
                Izby           izba           = roomsDetection.findRoom(pohyb);
                if (izba == null)
                {
                    MotionValue = "Vonku";
                }
                else
                {
                    MotionValue = roomsDetection.findRoom(pohyb).Nazov;
                }
            }
            else
            {
                MotionValue = "NA";
            }
        }
Esempio n. 7
0
        public bool checkMovementValue(DatabaseContext context, Pohyb p, Pohyb_Sekvencia pohS)
        {
            Hranice_Pohyb hpoh    = context.MovementLimit.FirstOrDefault(t => t.HranicePohybId == context.MovementLimit.Max(x => x.HranicePohybId));
            float         hranica = hpoh.OkruhHranica / 10;

            if (((pohS.Xhodnota - hranica) <= p.Xhodnota) && ((pohS.Xhodnota + hranica) >= p.Xhodnota) && ((pohS.Yhodnota - hranica) <= p.Yhodnota) && ((pohS.Yhodnota + hranica) >= p.Yhodnota))
            {//neprekracuje limit vo vzdialenosti
                //skontroluj ci patri do rovnakej izby
                Izby izba = new RoomsDetection().findRoom(p);

                if (izba == null)
                {
                    if (pohS.IzbyFK == null)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    if (pohS.IzbyFK == izba.IzbaID)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else
            {
                return(false);
            }
        }
        public void MovementSequencer(DatabaseContext context)
        {
            var        allMovements = context.Movement.Where(t => t.PohSekvFK == null).ToList();
            LimitCheck limitCheck   = new LimitCheck();

            Hranice_Pohyb hpoh = context.MovementLimit.FirstOrDefault(t => t.HranicePohybId == context.MovementLimit.Max(x => x.HranicePohybId));

            foreach (var mov in allMovements)
            {
                Izby izba = new RoomsDetection().findRoom(mov);


                /*Inicializacia ak ziadna sekvencia neexistuje*/
                if (!context.MovementSekv.Any())
                {
                    Pohyb_Sekvencia pohS = null;
                    if (izba == null)
                    {
                        pohS = new Pohyb_Sekvencia
                        {
                            PohSekvId           = 1,
                            Xhodnota            = mov.Xhodnota,
                            Yhodnota            = mov.Yhodnota,
                            TimeStamp           = mov.TimeStamp,
                            Cas_Zotrvania       = "",
                            TimeStop            = mov.TimeStamp,
                            Upozornenie_Cas     = 0,
                            Upozornenie_Hranica = limitCheck.checkIfOutside(context, mov),
                            //Hranice_Pohyb = hpoh,
                            HranicePohybFK = hpoh.HranicePohybId,
                        };
                    }
                    else
                    {
                        pohS = new Pohyb_Sekvencia
                        {
                            PohSekvId           = 1,
                            Xhodnota            = mov.Xhodnota,
                            Yhodnota            = mov.Yhodnota,
                            TimeStamp           = mov.TimeStamp,
                            Cas_Zotrvania       = "",
                            TimeStop            = mov.TimeStamp,
                            Upozornenie_Cas     = 0,
                            Upozornenie_Hranica = limitCheck.checkIfOutside(context, mov),
                            //Hranice_Pohyb = hpoh,
                            HranicePohybFK = hpoh.HranicePohybId,
                            //Izby = izba,
                            IzbyFK = izba.IzbaID
                        };
                    }


                    if (pohS.Upozornenie_Hranica == 1)
                    {
                        new NotificationGenerator().GenerateNotificationMovement(pohS.TimeStamp, pohS.PohSekvId);
                    }

                    Pohyb p = context.Movement.Where(c => c.PohybId == mov.PohybId).First();
                    p.PohSekvFK = 1;
                    System.Diagnostics.Debug.WriteLine("POHYB Inicializacia ak ziadna sekvencia neexistuje");

                    context.MovementSekv.Add(pohS);
                    //context.Movement.Remove(mov);

                    context.Movement.Update(p);

                    try
                    {
                        context.SaveChanges();
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine("Exception: " + nameof(SequenceCreator) + " " + e.ToString());
                    }
                }
                /*Ak existuju sekvencie*/
                else
                {
                    /*Najdi otvorenu sekvenciu*/
                    Pohyb_Sekvencia pohS = null;
                    try
                    {
                        pohS = context.MovementSekv.FirstOrDefault(p => p.PohSekvId == context.MovementSekv.Max(x => x.PohSekvId));
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine("POHYB EXC Nemozem najst otvorenu sekvenciu");
                    }
                    double minutes = 0;
                    try
                    {
                        DateTime startTime = DateTime.Parse(pohS.TimeStop);
                        DateTime endTime   = DateTime.Parse(mov.TimeStamp);
                        TimeSpan finalTime = endTime - startTime;
                        minutes = finalTime.TotalMinutes;
                        System.Diagnostics.Debug.WriteLine("/////////////////////// TIME DIFF movement " + finalTime.Hours + ":" + finalTime.Minutes + ":" + finalTime.Seconds + ":" + finalTime.Milliseconds);
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine("Exception: " + nameof(SequenceCreator) + " " + e.ToString());
                    }


                    /*Spracovavana hodnota patri do aktualne otvorenej sekvencie*/
                    if (limitCheck.checkMovementValue(context, mov, pohS) && minutes <= 1)
                    {
                        System.Diagnostics.Debug.WriteLine("**********POHYB Spracovavana hodnota patri do aktualne otvorenej sekvencie" + mov.Xhodnota + " " + mov.Yhodnota + " " + mov.TimeStamp);
                        //mov.Pohyb_Sekvencia = pohS;//naviaz pohyb
                        mov.PohSekvFK = pohS.PohSekvId;

                        //cas zotrvania
                        DateTime convertedDate = DateTime.Parse(pohS.TimeStamp);
                        String   durationTime  = null;
                        DateTime endtime       = DateTime.Parse(pohS.TimeStamp);
                        try
                        {
                            endtime      = DateTime.Parse(mov.TimeStamp);
                            durationTime = (endtime - convertedDate).TotalMinutes.ToString();
                        }
                        catch (Exception e)
                        {
                            System.Diagnostics.Debug.WriteLine("Exception parse date " + e.ToString());
                            durationTime = "NA";
                        }

                        pohS.Cas_Zotrvania   = durationTime;
                        pohS.Upozornenie_Cas = limitCheck.checkTimeLimitMovement(context, pohS);


                        if (pohS.Upozornenie_Hranica == 1)
                        {
                            new NotificationGenerator().GenerateNotificationMovement(pohS.TimeStamp, pohS.PohSekvId);
                        }


                        if (pohS.Upozornenie_Cas == 1)
                        {
                            RoomsDetection roomsDetection = new RoomsDetection();
                            string         roomName       = roomsDetection.findRoom(mov).Nazov;
                            //call sleep detection
                            SleepDetection sleepDetection = new SleepDetection();
                            Boolean        sleep          = sleepDetection.DetectSleepSeq(context, roomName, convertedDate, endtime, 0);
                            if (sleep = false)
                            {
                                new NotificationGenerator().GenerateNotificationMovementTime(roomName, pohS.TimeStamp, pohS.Cas_Zotrvania, pohS.PohSekvId);
                            }
                        }
                        pohS.TimeStop = mov.TimeStamp;
                        context.MovementSekv.Update(pohS);
                        //context.Movement.Remove(mov);
                        context.Movement.Update(mov);
                        try
                        {
                            context.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            System.Diagnostics.Debug.WriteLine("Exception: " + nameof(SequenceCreator) + " " + e.ToString());
                        }
                    }
                    else /*Spracovavana hodnota nepatri do aktualne otvorenej sekvencie*/
                    {
                        Pohyb_Sekvencia last   = context.MovementSekv.FirstOrDefault(t => t.PohSekvId == context.MovementSekv.Max(x => x.PohSekvId));
                        Pohyb_Sekvencia pohnew = null;
                        if (izba == null)
                        {
                            pohnew = new Pohyb_Sekvencia
                            {
                                PohSekvId           = last.PohSekvId + 1,
                                Xhodnota            = mov.Xhodnota,
                                Yhodnota            = mov.Yhodnota,
                                TimeStamp           = mov.TimeStamp,
                                Cas_Zotrvania       = "",
                                TimeStop            = mov.TimeStamp,
                                Upozornenie_Cas     = 0,
                                Upozornenie_Hranica = limitCheck.checkIfOutside(context, mov),
                                //Hranice_Pohyb = hpoh,
                                HranicePohybFK = hpoh.HranicePohybId,
                            };
                        }
                        else
                        {
                            pohnew = new Pohyb_Sekvencia
                            {
                                PohSekvId           = last.PohSekvId + 1,
                                Xhodnota            = mov.Xhodnota,
                                Yhodnota            = mov.Yhodnota,
                                TimeStamp           = mov.TimeStamp,
                                Cas_Zotrvania       = "",
                                TimeStop            = mov.TimeStamp,
                                Upozornenie_Cas     = 0,
                                Upozornenie_Hranica = limitCheck.checkIfOutside(context, mov),
                                //Hranice_Pohyb = hpoh,
                                HranicePohybFK = hpoh.HranicePohybId,
                                //Izby = izba,
                                IzbyFK = izba.IzbaID
                            };
                        }


                        if (pohS.Upozornenie_Hranica == 1)
                        {
                            new NotificationGenerator().GenerateNotificationMovement(pohS.TimeStamp, pohS.PohSekvId);
                        }
                        if (minutes <= 1)
                        {
                            last.TimeStop = mov.TimeStamp;
                        }

                        //Pohyb p = context.Movement.Where(c => c.PohybId == mov.PohybId).First();
                        //p.PohSekvFK = last.PohSekvId + 1;

                        //var toDelete = context.Movement.Where(c => c.PohSekvFK == last.PohSekvId).ToList();
                        //p.Pohyb_Sekvencia = pohnew;

                        System.Diagnostics.Debug.WriteLine("POHYB Spracovavana hodnota nepatri do aktualne otvorenej sekvencie" + mov.Xhodnota + " " + mov.Yhodnota + " " + mov.TimeStamp);

                        context.MovementSekv.Update(last);

                        context.MovementSekv.Add(pohnew);
                        //context.Movement.Remove(mov);
                        //context.RemoveRange(toDelete);
                        //context.Movement.Update(p);

                        try
                        {
                            context.SaveChanges();
                        }
                        catch (Exception e)
                        {
                            System.Diagnostics.Debug.WriteLine("Exception: " + nameof(SequenceCreator) + " " + e.ToString());
                        }
                    }
                }
                var toDelete = context.Movement.Where(c => c.PohybId == mov.PohybId).First();
                context.Movement.Remove(toDelete);
                try
                {
                    context.SaveChanges();
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine("Exception on value removing: " + nameof(SequenceCreator) + " " + e.ToString());
                }
            }
        }
        public void GenerateMovementData(DatabaseContext context)
        {
            int index = 1;

            if (!context.Movement.Any())
            {
                index = 1;
            }
            else
            {
                insertNearPoints(context);
                Pohyb poh = context.Movement.FirstOrDefault(p => p.PohybId == context.Movement.Max(t => t.PohybId));
                index = poh.PohybId;
                index++;
            }



            for (int i = 0; i <= 100; i++)
            {
                Random rnd = new Random();


                Pohyb pohyb = new Pohyb
                {
                    PohybId   = index++,
                    Xhodnota  = rnd.Next(1, 150),
                    Yhodnota  = rnd.Next(1, 150),
                    TimeStamp = DateTime.Now.AddMinutes(i).ToShortTimeString()
                };
                context.Movement.Add(pohyb);
            }

            Pohyb pohyba = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = 160,
                Yhodnota  = 15,
                TimeStamp = DateTime.Now.AddMinutes(101).ToShortTimeString()
            };

            context.Movement.Add(pohyba);


            try
            {
                context.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }

            insertNearPoints(context);

            /*Vypis tabulky z DB*/

            var all = context.Movement.ToList();

            foreach (var a in all)
            {
                System.Diagnostics.Debug.WriteLine(a.Xhodnota + " " + a.TimeStamp + " " + a.Yhodnota);
            }
        }
        public void insertNearPoints(DatabaseContext context)
        {
            int index = 1;

            if (!context.Movement.Any())
            {
                index = 1;
            }
            else
            {
                Pohyb poh = context.Movement.FirstOrDefault(p => p.PohybId == context.Movement.Max(t => t.PohybId));
                index = poh.PohybId;
                index++;
            }

            Pohyb pohyb = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = 10,
                Yhodnota  = 10,
                TimeStamp = DateTime.Now.AddMinutes(1).ToShortTimeString()
            };

            context.Movement.Add(pohyb);

            pohyb = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = 20,
                Yhodnota  = 20,
                TimeStamp = DateTime.Now.AddMinutes(2).ToShortTimeString()
            };
            context.Movement.Add(pohyb);

            pohyb = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = 10,
                Yhodnota  = 20,
                TimeStamp = DateTime.Now.AddMinutes(2).ToShortTimeString()
            };
            context.Movement.Add(pohyb);

            pohyb = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = 0,
                Yhodnota  = 30,
                TimeStamp = DateTime.Now.AddMinutes(2).ToShortTimeString()
            };
            context.Movement.Add(pohyb);

            pohyb = new Pohyb
            {
                PohybId   = index++,
                Xhodnota  = 15,
                Yhodnota  = 25,
                TimeStamp = DateTime.Now.AddMinutes(2).ToShortTimeString()
            };
            context.Movement.Add(pohyb);

            try
            {
                context.SaveChanges();
            }
            catch (Exception e)
            {
                throw e;
            }
        }