Пример #1
0
 public void AddMeasurement(Measurement measurement)
 {
     //Adds a serializable measurement to the List
     measurementsList.Add(measurement);
 }
Пример #2
0
        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
            }
        }
Пример #3
0
        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
            }
        }