示例#1
0
 public IGetResponse GetMeasuredData()
 {
     Log.Trace("GetMeasuredData");
     return(new GetResponse(
                GetResponse.ResponseStatus.OK,
                MeasuredData.GetMeasuredData()));
 }
        public void Stop()
        {
            switch (LoggingSourceType)
            {
            case LoggingTypeSourceEnum.Console:

                _calculationCancellationTokenSource?.Cancel();
                if (ConsoleProcess != null && !ConsoleProcess.HasExited)
                {
                    ConsoleProcess.Kill();
                    ConsoleProcess = null;
                }

                break;

            case LoggingTypeSourceEnum.RabbitMQ:

                bus?.Dispose();

                break;
            }

            // delete not finished measurements
            MeasuredData.Where(x => x.IsRunning).ToList().ForEach(x => MeasuredData.Remove(x));

            InProgress = false;
        }
示例#3
0
 static void PrintSensorData(MeasuredData data)
 {
     Console.WriteLine($"Sensor data:");
     Console.WriteLine($"\t\tBMP180\t\tBME280\t\tDHT22");
     Console.WriteLine($"Temperature\t{FormatTemperature(data.Bmp180Temperature)}\t\t{FormatTemperature(data.Bme280Temperature)}\t\t{FormatTemperature(data.DhtTemperature)}");
     Console.WriteLine($"Humidity\t{FormatHumidity(data.Bme280Humidity)}\t\t\t\t{FormatHumidity(data.DhtHumidity)}");
     Console.WriteLine($"Pressure\t{FormatPressure(data.Bmp180Pressure)}\t{FormatPressure(data.Bme280Pressure)}");
 }
示例#4
0
        public ActionResult DeleteConfirmed(int id)
        {
            MeasuredData measuredData = db.MeasuredDatas.Find(id);

            db.MeasuredDatas.Remove(measuredData);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#5
0
 public SensorsWorker(int delay)
 {
     readingWorker = new BackgroundWorker();
     readingWorker.WorkerSupportsCancellation = true;
     readingWorker.DoWork += ReadingWorker_DoWork;
     this.readingDelay     = delay;
     basicData             = OverviewData.GetOverviewData();
     detailData            = MeasuredData.GetMeasuredData();
 }
示例#6
0
 public ActionResult Edit([Bind(Include = "ID,From,To,duration,dateTime")] MeasuredData measuredData)
 {
     if (ModelState.IsValid)
     {
         db.Entry(measuredData).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(measuredData));
 }
示例#7
0
 public void Update(MeasuredData measuredData)
 {
     Bmp180Temperature = measuredData.Bmp180Temperature;
     Bmp180Pressure    = measuredData.Bmp180Pressure;
     Bme280Temperature = measuredData.Bme280Temperature;
     Bme280Humidity    = measuredData.Bme280Humidity;
     Bme280Pressure    = measuredData.Bme280Pressure;
     DhtTemperature    = measuredData.DhtTemperature;
     DhtHumidity       = measuredData.DhtHumidity;
     Status            = measuredData.Status;
 }
示例#8
0
        public ActionResult Create([Bind(Include = "ID,From,To,duration,dateTime")] MeasuredData measuredData)
        {
            if (ModelState.IsValid)
            {
                db.MeasuredDatas.Add(measuredData);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(measuredData));
        }
示例#9
0
        // GET: MeasuredDatas/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            MeasuredData measuredData = db.MeasuredDatas.Find(id);

            if (measuredData == null)
            {
                return(HttpNotFound());
            }
            return(View(measuredData));
        }
示例#10
0
        // GET: MeasuredDatas/Details/5
        public async Task <IActionResult> Details(long?id,
                                                  string SortOrder,
                                                  int?MeasuredParameterIdFilter,
                                                  DateTime?DateTimeFromFilter,
                                                  DateTime?DateTimeToFilter,
                                                  int?MonitoringPostIdFilter,
                                                  int?PollutionSourceIdFilter,
                                                  bool?AveragedFilter,
                                                  int?PageSize,
                                                  int?PageNumber)
        {
            ViewBag.SortOrder  = SortOrder;
            ViewBag.PageSize   = PageSize;
            ViewBag.PageNumber = PageNumber;
            ViewBag.MeasuredParameterIdFilter = MeasuredParameterIdFilter;
            ViewBag.DateTimeFromFilter        = DateTimeFromFilter;
            ViewBag.DateTimeToFilter          = DateTimeToFilter;
            ViewBag.MonitoringPostIdFilter    = MonitoringPostIdFilter;
            ViewBag.PollutionSourceIdFilter   = PollutionSourceIdFilter;
            ViewBag.AveragedFilter            = AveragedFilter;
            if (id == null)
            {
                return(NotFound());
            }

            MeasuredData        measuredData = null;
            HttpResponseMessage response     = await _HttpApiClient.GetAsync($"api/MeasuredDatas/{id.ToString()}");

            if (response.IsSuccessStatusCode)
            {
                measuredData = await response.Content.ReadAsAsync <MeasuredData>();
            }
            if (measuredData == null)
            {
                return(NotFound());
            }

            return(View(measuredData));
        }
示例#11
0
        public MeasuredData GetMeasuredData(EnumDataStringElements Elements)
        {
            MeasuredData result = new MeasuredData();

            result.Voltage    = double.NaN;
            result.Current    = double.NaN;
            result.Resistance = double.NaN;
            result.Timestamp  = double.NaN;
            result.Status     = UInt32.MinValue;

            var ret = Fetch();

            if (Elements == EnumDataStringElements.ALL)
            {
                var retArray = ret.Split(',');
                // get voltage
                if (double.TryParse(retArray[0], out double v))
                {
                    result.Voltage = v;
                }

                // get current
                if (double.TryParse(retArray[1], out double c))
                {
                    result.Current = c;
                }

                // get resistance
                if (double.TryParse(retArray[2], out double r))
                {
                    result.Resistance = r;
                }

                // get timestamps
                if (double.TryParse(retArray[3], out double t))
                {
                    result.Timestamp = t;
                }

                // get status
                if (UInt32.TryParse(retArray[4], out UInt32 s))
                {
                    result.Status = s;
                }
            }
            else if (Elements == EnumDataStringElements.VOLT)
            {
                // get voltage
                if (double.TryParse(ret, out double v))
                {
                    result.Voltage = v;
                }
            }
            else if (Elements == EnumDataStringElements.CURR)
            {
                // get current
                if (double.TryParse(ret, out double c))
                {
                    result.Current = c;
                }
            }
            else if (Elements == EnumDataStringElements.RES)
            {
                // get resistance
                if (double.TryParse(ret, out double r))
                {
                    result.Resistance = r;
                }
            }
            else if (Elements == EnumDataStringElements.TIME)
            {
                // get timestamps
                if (double.TryParse(ret, out double t))
                {
                    result.Timestamp = t;
                }
            }
            else if (Elements == EnumDataStringElements.STAT)
            {
                // get status
                if (UInt32.TryParse(ret, out UInt32 s))
                {
                    result.Status = s;
                }
            }

            return(result);
        }
        public OverviewViewModel(MainWindow mainWindow)
        {
            MqttReceivedData = new MQTTCollection(this);
            SensorsList = new ObservableCollection<AggregatedSensors>();

            ChartIntervalType = DateTimeIntervalType.Auto;

            //Creating the data layer
            MqttDl = new MqttDataLayer("WPF Client", "192.168.2.122");
            MqttDl.OnConnected += MqttDL_OnConnected;
            MqttDl.Connect();

            As1 = new AggregatedSensors("cabinet", "Cabinet");
            As1.AddSensor("temperature", "C");
            As1.AddSensor("humidity", "%");

            SensorsList.Add(As1);

            MeasuredData=new MeasuredData();

            As2 = new AggregatedSensors("cave", "Cave");
            As2.AddSensor("temperature", "C");
            As2.AddSensor("humidity", "%");

            SensorsList.Add(As2);

            As3 = new AggregatedSensors("outside", "Outside");
            As3.AddSensor("temperature", "C");
            As3.AddSensor("humidity", "%");
            SensorsList.Add(As3);

            As4 = new AggregatedSensors("sleeping_room", "Sleeping room");
            As4.AddSensor("temperature", "C");
            As4.AddSensor("humidity", "%");

            SensorsList.Add(As4);
            //note that the sensors listen to the collection events not the data layer events
            //the collection takes care to parse the received data so that the agregated sensors can use it directly
            MqttReceivedData.DataReceived += As1.MqttReceivedData;
            MqttReceivedData.DataReceived += As2.MqttReceivedData;
            MqttReceivedData.DataReceived += As3.MqttReceivedData;
            MqttReceivedData.DataReceived += As4.MqttReceivedData;

            As1.NewReading += MeasuredData.NewReading;
            As2.NewReading += MeasuredData.NewReading;
            As3.NewReading += MeasuredData.NewReading;
            As4.NewReading += MeasuredData.NewReading;

            Dht22SensorControl dht22;
            foreach (var aggregatedSensor in SensorsList)
            {
                dht22 = new Dht22SensorControl();
                dht22.DataContext = aggregatedSensor;
                dht22.Margin = new Thickness(5);
                Binding myBinding = new Binding
                {
                    Source = aggregatedSensor.Sensors["temperature"],
                    Path = new PropertyPath("LastUpdated"),
                    UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
                };

                dht22.SetBinding(Dht22SensorControl.LastUpdatedProperty, myBinding);
                    mainWindow.SensorsContainerPanel.Children.Add(dht22);

            }
        }
示例#13
0
		public void DataFromSensor(SensorData sensorData) {
			var measuredData = sensorData.Data;
			var sensorName = sensorData.SensorName;
			var browserConnectionId = BrowserStateRepository.ConnectionId;


			if (statisticsService.UnorderedPerson == null) {
				statisticsService.AssignNewUnorderedPerson();
			}

			//data from sensors logic
			if (sensorName.StartsWith("Weight")) {
				var data = new MeasuredData<float>() { Data = Convert.ToSingle(measuredData), MeasureTime = DateTime.Now };
				sensorsRepository.WeightSensor.AddMeasuredData(data);

				statisticsService.UnorderedPersonWeight = data.Data;

				if (!String.IsNullOrEmpty(browserConnectionId))
					Clients.Client(browserConnectionId).onNewSensorDataReceived("weight", data);
				//weight is a trigger
				RequestDataFromSensors();

			} else if (sensorName.StartsWith("Crippled")) {
				var data = new MeasuredData<bool>() { Data = Convert.ToBoolean(measuredData), MeasureTime = DateTime.Now };
				sensorsRepository.CrippledSensor.AddMeasuredData(data);

				statisticsService.UnorderedPersonCrippled = data.Data;

				if (!String.IsNullOrEmpty(browserConnectionId))
					Clients.Client(browserConnectionId).onNewSensorDataReceived("crippled", data);
			} else if (sensorName.StartsWith("Temperature")) {
				var data = new MeasuredData<float>() { Data = Convert.ToSingle(measuredData), MeasureTime = DateTime.Now };
				sensorsRepository.TemperatureSensor.AddMeasuredData(data);

				statisticsService.UnorderedPersonTemperature = data.Data;

				if (!String.IsNullOrEmpty(browserConnectionId))
					Clients.Client(browserConnectionId).onNewSensorDataReceived("temperature", data);
			} else if (sensorName.StartsWith("Pregnant")) {
				var data = new MeasuredData<bool>() { Data = Convert.ToBoolean(measuredData), MeasureTime = DateTime.Now };
				sensorsRepository.PregnantSensor.AddMeasuredData(data);

				statisticsService.UnorderedPersonPregnant = data.Data;

				if (!String.IsNullOrEmpty(browserConnectionId))
					Clients.Client(browserConnectionId).onNewSensorDataReceived("pregnant", data);
			}

			if (statisticsService.CheckIfUnorderedPersonCanBeDirected()) {
				var person = statisticsService.GetUnorderedPersonComplete();
				var queue = queuesRepository.ChooseQueueForPerson(person);

				Clients.Client(queue.ConnectionId).AddPersonToQueue(person.Guid);

				if (!String.IsNullOrEmpty(browserConnectionId))
					Clients.Client(browserConnectionId).updateQueueLogs(queue);

				StatisticsService.Instance.HandledPeople.Add(person.Guid, new HandledPerson() {
					Person = person,
					QueueId = queue.Id,
					WaitingStartedAt = DateTime.Now
				});

				statisticsService.UnorderedPerson = null;
				statisticsService.UnorderedPersonCrippled = null;
				statisticsService.UnorderedPersonPregnant = null;
				statisticsService.UnorderedPersonTemperature = null;
				statisticsService.UnorderedPersonWeight = null;
			}
		}
示例#14
0
        public void PopulateEcoserviceData()
        {
            Random   rnd   = new Random();
            DateTime start = (DateTime)_context.MeasuredData
                             .Where(m => m.MonitoringPostId == 39)
                             .Max(m => m.DateTime);

            decimal?previousValue = _context.MeasuredData
                                    .Where(m => m.MonitoringPostId == 39 && m.MeasuredParameterId == 2)
                                    .OrderByDescending(m => m.DateTime)
                                    .FirstOrDefault()
                                    .Value;
            List <MeasuredData> measuredDatas = new List <MeasuredData>();

            for (DateTime dateTime = start; dateTime < DateTime.Now; dateTime = dateTime.AddMinutes(1))
            {
                if (measuredDatas.Count > 0)
                {
                    previousValue = measuredDatas.Last().Value;
                }
                decimal?newValue = -1;
                while (newValue < 0 || newValue > 400)
                {
                    newValue = previousValue + rnd.Next(-20, 20);
                }
                MeasuredData measuredData = new MeasuredData()
                {
                    DateTime            = dateTime,
                    MeasuredParameterId = 2,
                    MonitoringPostId    = 39,
                    Value = newValue
                };
                measuredDatas.Add(measuredData);
            }
            _context.MeasuredData.AddRange(measuredDatas);
            _context.SaveChanges();

            previousValue = _context.MeasuredData
                            .Where(m => m.MonitoringPostId == 40 && m.MeasuredParameterId == 2)
                            .OrderByDescending(m => m.DateTime)
                            .FirstOrDefault()
                            .Value;
            measuredDatas = new List <MeasuredData>();
            for (DateTime dateTime = start; dateTime < DateTime.Now; dateTime = dateTime.AddMinutes(1))
            {
                if (measuredDatas.Count > 0)
                {
                    previousValue = measuredDatas.Last().Value;
                }
                decimal?newValue = -1;
                while (newValue < 0 || newValue > 400)
                {
                    newValue = previousValue + rnd.Next(-20, 20);
                }
                MeasuredData measuredData = new MeasuredData()
                {
                    DateTime            = dateTime,
                    MeasuredParameterId = 2,
                    MonitoringPostId    = 40,
                    Value = newValue
                };
                measuredDatas.Add(measuredData);
            }
            _context.MeasuredData.AddRange(measuredDatas);
            _context.SaveChanges();

            previousValue = _context.MeasuredData
                            .Where(m => m.MonitoringPostId == 39 && m.MeasuredParameterId == 3)
                            .OrderByDescending(m => m.DateTime)
                            .FirstOrDefault()
                            .Value;
            measuredDatas = new List <MeasuredData>();
            for (DateTime dateTime = start; dateTime < DateTime.Now; dateTime = dateTime.AddMinutes(1))
            {
                if (measuredDatas.Count > 0)
                {
                    previousValue = measuredDatas.Last().Value;
                }
                decimal?newValue = -1;
                while (newValue < 0 || newValue > 200)
                {
                    newValue = previousValue + rnd.Next(-12, 12);
                }
                MeasuredData measuredData = new MeasuredData()
                {
                    DateTime            = dateTime,
                    MeasuredParameterId = 3,
                    MonitoringPostId    = 39,
                    Value = newValue
                };
                measuredDatas.Add(measuredData);
            }
            _context.MeasuredData.AddRange(measuredDatas);
            _context.SaveChanges();

            previousValue = _context.MeasuredData
                            .Where(m => m.MonitoringPostId == 40 && m.MeasuredParameterId == 3)
                            .OrderByDescending(m => m.DateTime)
                            .FirstOrDefault()
                            .Value;
            measuredDatas = new List <MeasuredData>();
            for (DateTime dateTime = start; dateTime < DateTime.Now; dateTime = dateTime.AddMinutes(1))
            {
                if (measuredDatas.Count > 0)
                {
                    previousValue = measuredDatas.Last().Value;
                }
                decimal?newValue = -1;
                while (newValue < 0 || newValue > 200)
                {
                    newValue = previousValue + rnd.Next(-12, 12);
                }
                MeasuredData measuredData = new MeasuredData()
                {
                    DateTime            = dateTime,
                    MeasuredParameterId = 3,
                    MonitoringPostId    = 40,
                    Value = newValue
                };
                measuredDatas.Add(measuredData);
            }
            _context.MeasuredData.AddRange(measuredDatas);
            _context.SaveChanges();
        }