public void AddMeasurement(Measurement measurement) { //Adds a serializable measurement to the List measurementsList.Add(measurement); }
static void InitializeData() { using (var context = new DataContext()) { #region Init admin user var admin = context.Users.FirstOrDefault(x => x.Username == "admin" && x.Password == "admin"); if (admin == null) { context.Users.Add(new User("admin", "admin") { FirstName = "Boza", LastName = "Adminic", isAdmin = true }); context.SaveChanges(); } #endregion #region Init test data if (context.Substations.Count() <= 0) { Substation s1 = new Substation() { Id = 1, Name = "Plava kapa", Location = "Podlugovi" }; Substation s2 = new Substation() { Id = 2, Name = "Plinara", Location = "Novi Becej" }; context.Substations.Add(s1); context.Substations.Add(s2); context.SaveChanges(); } Random r = new Random(); if (context.Devices.Count() <= 0) { Substation[] substations = context.Substations.ToArray(); int subsNumber = substations.Length; Device d1 = new Device() { Id = "dev1", Name = "Kuvalo", Device_Substation = substations[r.Next(subsNumber)].Id }; Device d2 = new Device() { Id = "dev2", Name = "Kotao", Device_Substation = substations[r.Next(subsNumber)].Id }; Device d3 = new Device() { Id = "devic1", Name = "Pumpa", Device_Substation = substations[r.Next(subsNumber)].Id }; Device d4 = new Device() { Id = "devic2", Name = "Kompresor", Device_Substation = substations[r.Next(subsNumber)].Id }; context.Devices.Add(d1); context.Devices.Add(d2); context.Devices.Add(d3); context.Devices.Add(d4); context.SaveChanges(); } if (context.Measurements.Count() <= 0) { Device[] devices = context.Devices.ToArray(); int devNumber = devices.Length; Measurement m1 = new Measurement() { Id = 1, Type = "Local", Unit = "Volt", Value = 12.5F, DateTime = DateTime.Now, Measurement_Device = devices[r.Next(devNumber)].Id }; Measurement m2 = new Measurement() { Id = 2, Type = "Global", Unit = "Ohm", Value = 3000F, DateTime = DateTime.Today.AddDays(-50), Measurement_Device = devices[r.Next(devNumber)].Id }; Measurement m3 = new Measurement() { Id = 3, Type = "Suman", Unit = "Volt", Value = 3.5F, DateTime = DateTime.Today.AddDays(-120), Measurement_Device = devices[r.Next(devNumber)].Id }; Measurement m4 = new Measurement() { Id = 4, Type = "Local", Unit = "Pascal", Value = 5000.35F, DateTime = DateTime.Today.AddDays(-300), Measurement_Device = devices[r.Next(devNumber)].Id }; context.Measurements.Add(m1); context.Measurements.Add(m2); context.Measurements.Add(m3); context.Measurements.Add(m4); context.SaveChanges(); } #endregion } }
private void SaveMeasurementInDB(string payload /*,DatabaseContext context*/) { // Wat er binnenkomt via MQTT // TAG{nr};ANCHOR{nr};{distance};{unix_timestamp} // TAG5;ANCHOR1;-4;1557475973 string[] data = payload.Split(';'); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")); // Aanmaken nieuw databasecontext object using (var context = new DatabaseContext(optionsBuilder.Options)) { // Verglijken mac van de anchors en opslaan in measure indien ze overeenkomen try { Measurement measure = context.Measurements.Where(a => a.Mac_Anchor == data[1]).Where(a => a.Mac_Tag == data[0]).FirstOrDefault(); if (measure != null) { // Opslaan van afstand en timestamp measure.Distance = int.Parse(data[2]); measure.Unix_Timestamp = data[3]; } // Indien de mac anchor niet gevonden wordt, word er een nieuw object aangemaakt else { context.Measurements.Add( new Measurement() { Mac_Tag = data[0], Mac_Anchor = data[1], Distance = int.Parse(data[2]), Unix_Timestamp = data[3] } ); } // Alle measurements zoeken van de meegegeven mac tag var measurements = context.Measurements.Where(a => a.Mac_Tag == data[0]).ToList(); string firstMeasurementTimestamp = measurements[0].Unix_Timestamp; bool checkAllMeasurements = false; // Controleren of alle measurements van hetzelfde tijdstip zijn foreach (var measurement in measurements) { if (measurement.Unix_Timestamp != firstMeasurementTimestamp) { checkAllMeasurements = true; } if (checkAllMeasurements == true) { break; } } // Indien alle measurements van hetzelfde tijdstip zijn, wordt de locatie van de tag berekend List <Data> dataList = new List <Data>(); if (!checkAllMeasurements) { foreach (var measurement in measurements) { Anchor anchor = context.Anchors.Where(a => a.Mac == measurement.Mac_Anchor).LastOrDefault(); if (anchor != null) { dataList.Add(new Data { Distance = measurement.Distance, X_Pos = anchor.XPos, Y_Pos = anchor.YPos }); } } // Berekenen van de locatie van de tag double[] pos = Algorithm.Algorithm.Calculate(dataList); // Opslaan van de locatie van de tag Tag tag = context.Tags.Where(a => a.Mac == data[0]).LastOrDefault(); if (tag != null) { tag.XPos = Convert.ToInt32(pos[0]); tag.YPos = Convert.ToInt32(pos[1]); context.Tags.Update(tag); } } context.SaveChanges(); } catch { } // Opslaan van veranderingen } }