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()); } }
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; } }
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"; } }
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; } }