Example #1
0
        public IEnumerable <MeasureViewModel> Read(SensorTypeEnum sensorType, int currentProductionUnitId)
        {
            IList <MeasureViewModel> result = new List <MeasureViewModel>();

            var fewDaysAgo = DateTime.Now.AddDays(-4);

            result = entities.Measures.OrderByDescending(m => m.captureDate)
                     .Where(m => m.sensor.Id == (int)sensorType && m.productionUnit.Id == currentProductionUnitId && m.captureDate > fewDaysAgo)
                     .Select(meas => new MeasureViewModel
            {
                Id          = meas.Id,
                captureDate = meas.captureDate,
                value       = meas.value,
                sensorId    = meas.sensor.Id,
                sensor      = new SensorTypeViewModel()
                {
                    Id   = meas.sensor.Id,
                    name = meas.sensor.name
                },
                productionUnitId = meas.productionUnit.Id,
                productionUnit   = new ProductionUnitViewModel()
                {
                    Id                = meas.productionUnit.Id,
                    info              = meas.productionUnit.info,
                    locationLatitude  = meas.productionUnit.locationLatitude,
                    locationLongitude = meas.productionUnit.locationLongitude
                },
            }).ToList();

            return(result);
        }
Example #2
0
 public Sensor(int sensorID, SensorTypeEnum type, AlarmState state, string value)
 {
     this.sensorID = sensorID;
     this.type     = type;
     this.state    = state;
     this.value    = value;
 }
Example #3
0
        public async Task <Decimal> GetLastMesure(SensorTypeEnum sensorType)
        {
            using (await asyncLock.LockAsync())
            {
                var rslt = await(from m in db.Measures.Include(m => m.sensor)
                                 .Where(m => m.sensor.Id == (int)sensorType)
                                 .OrderByDescending(m => m.Id)
                                 select m).FirstOrDefaultAsync();

                if (rslt != null)
                {
                    if (sensorType == SensorTypeEnum.humidity)
                    {
                        return(Math.Round(rslt.value, 0));
                    }
                    else
                    {
                        return(Math.Round(rslt.value, 1));
                    }
                }
                else
                {
                    return(0);
                }
            }
        }
Example #4
0
 public async Task <List <Measure> > GetLastWeeksMesures(SensorTypeEnum sensorType)
 {
     using (await asyncLock.LockAsync())
     {
         return(await(from m in db.Measures.OrderByDescending(m => m.captureDate).Include(m => m.sensor).Take(7 * 24 * 6 * 4)
                      select m).Where(m => m.sensor.Id == (int)sensorType).ToListAsync());
     }
 }
Example #5
0
        public static SensorValueSet GetSensorValueSet(int currentProductionUnitId, SensorTypeEnum sensor, ApplicationDbContext db)
        {
            var currentValue     = 0M;
            var averageHourValue = 0M;
            var averageDayValue  = 0M;

            var currentCaptureTime = String.Empty;
            var lastDayCaptureTime = String.Empty;

            var lastValue = db.Measures.Where(m => m.productionUnit.Id == currentProductionUnitId &&
                                              m.sensor.Id == (int)sensor)
                            .OrderByDescending(m => m.captureDate).FirstOrDefault();

            if (lastValue != null)
            {
                TimeZoneInfo rst = TimeZoneInfo.FindSystemTimeZoneById("Romance Standard Time");
                currentCaptureTime = TimeZoneInfo.ConvertTimeFromUtc(lastValue.captureDate, rst).ToShortTimeString();

                currentValue = lastValue.value;

                var lastHour = lastValue.captureDate.AddHours(-1);

                var averageHourValueRslt = db.Measures.Where(m => m.productionUnit.Id == currentProductionUnitId &&
                                                             m.sensor.Id == (int)sensor &&
                                                             m.captureDate >= lastHour)
                                           .OrderByDescending(m => m.captureDate);

                averageHourValue = Math.Round(averageHourValueRslt.Average(m => m.value), 1);

                var lastDay = lastValue.captureDate.AddDays(-1);
                lastDayCaptureTime = lastDay.ToShortDateString();

                var averageDayValueRslt = db.Measures.Where(m => m.productionUnit.Id == currentProductionUnitId &&
                                                            m.sensor.Id == (int)sensor &&
                                                            m.captureDate >= lastDay)
                                          .OrderByDescending(m => m.captureDate);

                averageDayValue = Math.Round(averageDayValueRslt.Average(m => m.value), 1);

                return(new SensorValueSet()
                {
                    CurrentValue = currentValue,
                    CurrentCaptureTime = currentCaptureTime,
                    AverageHourValue = averageHourValue,
                    AverageDayValue = averageDayValue,
                    LastDayCaptureTime = lastDayCaptureTime
                });
            }

            return(new SensorValueSet()
            {
                CurrentValue = 0,
                CurrentCaptureTime = "-",
                AverageHourValue = 0,
                AverageDayValue = 0,
                LastDayCaptureTime = "-"
            });
        }
Example #6
0
        public decimal RecordSensorsMeasure(SensorTypeEnum sensorType, bool isSleepModeActivated)
        {
            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                StringBuilder strResult         = new StringBuilder();
                decimal       sumCapturedMesure = 0;

                //if (isSleepModeActivated)
                //{
                //    var taskWakeUp = Task.Run(async () =>
                //    {
                //        await WriteAsync(wakeupCommand, currentSensor);

                //        await Task.Delay(1000);
                //    });

                //    taskWakeUp.Wait();
                //}

                for (int i = 0; i < 4; i++)
                {
                    Task.Run(async() =>
                    {
                        var str = await SendCommand(currentSensor.currentSerialPort, readValueCommand);
                        strResult.Append(str);
                    }).Wait();

                    decimal capturedMesure = 0;
                    var     boolMeasure    = Decimal.TryParse(strResult.ToString().Replace("\r", "")
                                                              .Replace(answersSleepMode, "")
                                                              .Replace(answersWakeUpMode, "")
                                                              , out capturedMesure);

                    sumCapturedMesure += capturedMesure;
                    strResult.Clear();
                }

                //if (isSleepModeActivated)
                //{
                //    var taskSleep = Task.Run(async () =>
                //    {
                //        await WriteAsync(sleepModeCommand, currentSensor);
                //    });

                //    taskSleep.Wait();
                //}

                return(sumCapturedMesure / 4);
            }
            return(0);
        }
Example #7
0
 public async Task <List <Measure> > GetLastTwoMonthsMesures(SensorTypeEnum sensorType)
 {
     using (await asyncLock.LockAsync())
     {
         return(await(from m in db.Measures.Include(m => m.sensor).Where(m => m.sensor.Id == (int)sensorType).Take(7 * 30 * 2)
                      group m by new { m.captureDate.Year, m.captureDate.DayOfYear } into groupedDay
                      select new Measure
         {
             captureDate = groupedDay.FirstOrDefault().captureDate,
             value = groupedDay.Average(x => x.value),
         }).ToListAsync());
     }
 }
Example #8
0
        public SensorConfiguration(SensorTypeEnum sensorType, SensorMeasurementTypeEnum measurementType)
        {
            ReadPipe = new ReadPipeConfiguration
            {
                SensorType      = sensorType,
                MeasurementType = measurementType
            };

            AnalyticsPipe = new AnalyticsPipeConfiguration();
            RulesPipe     = new RulesPipeConfiguration();
            WindowPipe    = new WindowPipeConfiguration();
            FilterPipe    = new FilterPipeConfiguration();
            SendPipe      = new SendPipeConfiguration();
        }
Example #9
0
        public decimal RecordSensorsMeasure(SensorTypeEnum sensorType, bool isSleepModeActivated)
        {
            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                decimal capturedMesure = 0;
                string  strResult      = String.Empty;

                //if (isSleepModeActivated)
                //{
                //    var taskWakeUp = Task.Run(async () =>
                //    {
                //        await WriteAsync(wakeupCommand, currentSensor);

                //        await Task.Delay(1000);
                //    });

                //    taskWakeUp.Wait();
                //}

                var taskMeasure = Task.Run(async() => {
                    await WriteAsync(readValueCommand, currentSensor)
                    .ContinueWith((a) => strResult = ReadAsync(ReadCancellationTokenSource.Token, currentSensor).Result);

                    var boolMeasure = Decimal.TryParse(strResult.Replace("\r", "")
                                                       .Replace(answersSleepMode, "")
                                                       .Replace(answersWakeUpMode, "")
                                                       , out capturedMesure);
                });

                taskMeasure.Wait();

                //if (isSleepModeActivated)
                //{
                //    var taskSleep = Task.Run(async () =>
                //    {
                //        await WriteAsync(sleepModeCommand, currentSensor);
                //    });

                //    taskSleep.Wait();
                //}

                return(capturedMesure);
            }

            return(0);
        }
Example #10
0
        public async Task <String> GetLastCalibrationDate(SensorTypeEnum sensorType)
        {
            using (await asyncLock.LockAsync())
            {
                var currentDateTime = await(from m in db.SensorTypes where m.Id == (int)sensorType select m.lastCalibration).FirstOrDefaultAsync();

                if (currentDateTime.Value == null)
                {
                    return("No yet calibrated");
                }
                else
                {
                    return(currentDateTime.Value.ToString("d"));
                }
            }
        }
Example #11
0
        public async Task <Decimal> GetLastDayAverageMesure(SensorTypeEnum sensorType)
        {
            using (await asyncLock.LockAsync())
            {
                if (await db.Measures.CountAsync() == 0)
                {
                    return(0);
                }

                var rslt = await(from m in db.Measures.Include(m => m.sensor)
                                 .Where(m => m.sensor.Id == (int)sensorType)
                                 .OrderByDescending(m => m.Id)
                                 select m).Take(6 * 24).AverageAsync(m => m.value);

                return(Math.Round(rslt, 1));
            }
        }
Example #12
0
        public async Task <Decimal> GetYesterdayMesure(SensorTypeEnum sensorType)
        {
            using (await asyncLock.LockAsync())
            {
                if (await db.Measures.CountAsync() == 0)
                {
                    return(0);
                }

                var rslt = await(from m in db.Measures.Include(m => m.sensor)
                                 .Where(m => m.sensor.Id == (int)sensorType)
                                 .OrderBy(m => m.Id)
                                 select m.value).Take(6 * 24).FirstOrDefaultAsync();


                return(Math.Round(rslt, 1));
            }
        }
Example #13
0
        public void ResetCalibration(SensorTypeEnum sensorType)
        {
            if (!isInitialized)
            {
                return;
            }

            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                var tsk = Task.Run(async() =>
                {
                    await SendCommand(currentSensor.currentSerialPort, clearCalibrationCommand);
                });
                tsk.Wait();
            }
        }
Example #14
0
        public string GetSensorStatus(SensorTypeEnum sensorType, bool isSleepModeActivated)
        {
            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                string strResult = String.Empty;

                //if (isSleepModeActivated)
                //{
                //    var taskWakeUp = Task.Run(async () =>
                //    {
                //        await WriteAsync(wakeupCommand, currentSensor);

                //        await Task.Delay(1000);
                //    });

                //    taskWakeUp.Wait();
                //}

                var taskStatus = Task.Run(async() => {
                    await WriteAsync(getStatusCommand, currentSensor)
                    .ContinueWith((a) => strResult = ReadAsync(ReadCancellationTokenSource.Token, currentSensor).Result);
                });

                taskStatus.Wait();

                //if (isSleepModeActivated)
                //{
                //    var taskSleep = Task.Run(async () =>
                //    {
                //        await WriteAsync(sleepModeCommand, currentSensor);
                //    });

                //    taskSleep.Wait();
                //}

                return(strResult);
            }

            return(string.Empty);
        }
Example #15
0
                // Public Methods
                public bool Add(SensorDesignatorEnum Designator, SensorTypeEnum SensorType)
                {
                    if (_sensors.ContainsKey(Designator))
                    {
                        return(false);
                    }

                    switch (SensorType)
                    {
                    case SensorTypeEnum.Peak_80350A:
                        _sensors.Add(Designator, new PeakSensor80350AClass(_parentGigatronics854x, Designator, SensorTypeEnum.Peak_80350A));
                        break;

                    case SensorTypeEnum.Regular:
                        _sensors.Add(Designator, new SensorClass(_parentGigatronics854x, Designator, SensorTypeEnum.Regular));
                        break;
                    }

                    return(true);
                }
Example #16
0
        public void SetCalibration(SensorTypeEnum sensorType, int calibrationValue)
        {
            if (!isInitialized)
            {
                return;
            }

            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                string strQuery = String.Format(setCalibrationCommand, calibrationValue);

                var taskCal = Task.Run(async() => {
                    await WriteAsync(strQuery, currentSensor);
                });

                taskCal.Wait();
            }
        }
Example #17
0
        public void ResetCalibration(SensorTypeEnum sensorType)
        {
            if (!isInitialized)
            {
                return;
            }

            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                string strResult = String.Empty;

                var taskCal = Task.Run(async() => {
                    await WriteAsync(clearCalibrationCommand, currentSensor);
                });

                taskCal.Wait();
            }
        }
Example #18
0
        public void SetCalibration(SensorTypeEnum sensorType, int calibrationValue)
        {
            if (!isInitialized)
            {
                return;
            }

            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                string strQuery = String.Format(setCalibrationCommand, calibrationValue);

                var tsk = Task.Run(async() =>
                {
                    await SendCommand(currentSensor.currentSerialPort, strQuery);
                });
                tsk.Wait();
            }
        }
Example #19
0
        public async Task SetLastCalibrationDate(SensorTypeEnum sensorType, DateTime currentDate)
        {
            using (await asyncLock.LockAsync())
            {
                try
                {
                    var currentSensorType = await(from m in db.SensorTypes where m.Id == (int)sensorType select m).FirstOrDefaultAsync();

                    if (currentSensorType != null)
                    {
                        currentSensorType.lastCalibration = currentDate;
                        await db.SaveChangesAsync();
                    }
                }
                catch (Exception ex)
                {
                    logModel.AppendLog(Log.CreateErrorLog("Exception on Database - Set Last Calibration Date", ex));
                }
            }
        }
Example #20
0
        public string GetSensorStatus(SensorTypeEnum sensorType, bool isSleepModeActivated)
        {
            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                string strResult = String.Empty;

                //if (isSleepModeActivated)
                //{
                //    var taskWakeUp = Task.Run(async () =>
                //    {
                //        await WriteAsync(wakeupCommand, currentSensor);

                //        await Task.Delay(1000);
                //    });

                //    taskWakeUp.Wait();
                //}

                var tsk = Task.Run(async() =>
                {
                    strResult = await SendCommand(currentSensor.currentSerialPort, getStatusCommand);
                });
                tsk.Wait();

                //if (isSleepModeActivated)
                //{
                //    var taskSleep = Task.Run(async () =>
                //    {
                //        await WriteAsync(sleepModeCommand, currentSensor);
                //    });

                //    taskSleep.Wait();
                //}

                return(strResult);
            }

            return(string.Empty);
        }
Example #21
0
        public void SetCalibration(SensorTypeEnum sensorType, CalibrationType calibrationType)
        {
            if (!isInitialized)
            {
                return;
            }

            var calibrationCommand = String.Empty;

            switch (calibrationType)
            {
            case CalibrationType.Mid:
                calibrationCommand = midCalibrationCommand;
                break;

            case CalibrationType.Low:
                calibrationCommand = lowCalibrationCommand;
                break;

            case CalibrationType.High:
                calibrationCommand = highCalibrationCommand;
                break;

            default:
                return;
            }

            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                string strResult = String.Empty;

                var taskCal = Task.Run(async() => {
                    await WriteAsync(calibrationCommand, currentSensor);
                });

                taskCal.Wait();
            }
        }
Example #22
0
        public void SetCalibration(SensorTypeEnum sensorType, CalibrationType calibrationType)
        {
            if (!isInitialized)
            {
                return;
            }

            var calibrationCommand = String.Empty;

            switch (calibrationType)
            {
            case CalibrationType.Mid:
                calibrationCommand = midCalibrationCommand;
                break;

            case CalibrationType.Low:
                calibrationCommand = lowCalibrationCommand;
                break;

            case CalibrationType.High:
                calibrationCommand = highCalibrationCommand;
                break;

            default:
                return;
            }

            var currentSensor = this.GetSensor(sensorType);

            if (currentSensor != null)
            {
                var tsk = Task.Run(async() =>
                {
                    await SendCommand(currentSensor.currentSerialPort, calibrationCommand);
                });
                tsk.Wait();
            }
        }
Example #23
0
        /// <summary>
        /// Send The sensor data to the backend
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="data"></param>
        /// <param name="sensorTypeEnum"></param>
        /// <returns></returns>
        public async Task <bool> SendSensorData <T>(Dictionary <long, T> data, SensorTypeEnum sensorTypeEnum)
        {
            SetUp();
            var d = await CompressDataAsync(data);

            httpClient.DefaultRequestHeaders.Remove("Accept-Encoding");
            httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip");
            httpClient.DefaultRequestHeaders.Add("DeviceId", App.DeviceId);
            var sessionId = cache.Get <string>(Config.SessionDataKey);

            httpClient.DefaultRequestHeaders.Add("SessionId", sessionId);
            var byteContent = new ByteArrayContent(d.ToArray());
            var t           = d.ToArray().Length;

            //Commented just for development purpose
            var response = await httpClient.PostAsync(Config.DataPushUrl + sensorTypeEnum.ToString(), byteContent);

            if (response.IsSuccessStatusCode)
            {
                return(true);
            }
            return(false);
        }
Example #24
0
 public Sensor(int sensorID, SensorTypeEnum type, string value)
 {
     this.sensorID = sensorID;
     this.type     = type;
     this.value    = value;
 }
Example #25
0
 public AtlasSensor GetSensor(SensorTypeEnum currentSensorType)
 {
     return(sensorsList.Where(s => s.sensorType == currentSensorType).FirstOrDefault());
 }
Example #26
0
 public bool isSensorOnline(SensorTypeEnum currentSensorType)
 {
     return((sensorsList.Where(s => s.sensorType == currentSensorType).FirstOrDefault() != null) ? true : false);
 }
Example #27
0
        public async Task <bool> AddMesure(DateTime currentDate, decimal capturedValue, SensorTypeEnum sensorType)
        {
            using (await asyncLock.LockAsync())
            {
                var task = Task.Run(async() =>
                {
                    try
                    {
                        var currentSensor = db.SensorTypes.Where(s => s.Id == (int)sensorType).FirstOrDefault();

                        db.Measures.Add(new Measure()
                        {
                            value = capturedValue, captureDate = currentDate, sensor = currentSensor
                        });
                        await db.SaveChangesAsync();
                    }
                    catch (Exception ex)
                    {
                        logModel.AppendLog(Log.CreateErrorLog("Exception on Database - Add Mesure", ex));
                    }
                });
                task.Wait();
            }

            return(true);
        }
Example #28
0
 // Constructor
 internal PeakSensor80350AClass(Gigatronics854x ParentGigatronics854x, SensorDesignatorEnum Designator, SensorTypeEnum Type)
     : base(ParentGigatronics854x, Designator, Type)
 {
 }
Example #29
0
 public IEnumerable <MeasureViewModel> Read(SensorTypeEnum sensorType, double productionUnitLat, double productionUnitLong)
 {
     return(GetAll().Where(m => m.sensorId == (int)sensorType &&
                           m.productionUnit.locationLatitude == productionUnitLat &&
                           m.productionUnit.locationLongitude == productionUnitLong).Take(24));
 }
Example #30
0
        public IEnumerable <MeasureViewModel> Read(SensorTypeEnum sensorType, int currentProductionUnitId, string range)
        {
            IList <MeasureViewModel> result = new List <MeasureViewModel>();

            var fewDaysAgo = DateTime.Now.AddDays(-6);

            var aWeekAgo = DateTime.Now.AddDays(-14);

            var threeMonthsAgo = DateTime.Now.AddDays(-90);

            var selectedTimeFrame = new DateTime();

            if (range == "thisLastDays" || range == null)
            {
                selectedTimeFrame = fewDaysAgo;
            }

            if (range == "thisWeek")
            {
                selectedTimeFrame = aWeekAgo;
            }

            if (range == "lastThreeMonths")
            {
                selectedTimeFrame = threeMonthsAgo;
            }

            if (range == "lastThreeMonths")
            {
                result = entities.Measures.OrderByDescending(m => m.captureDate)
                         .Where(m => m.sensor.Id == (int)sensorType && m.productionUnit.Id == currentProductionUnitId && m.captureDate > selectedTimeFrame && m.captureDate.Hour == 9 && m.captureDate.Minute < 15)
                         .Select(meas => new MeasureViewModel
                {
                    Id          = meas.Id,
                    captureDate = meas.captureDate,
                    value       = meas.value,
                    sensorId    = meas.sensor.Id,
                    sensor      = new SensorTypeViewModel()
                    {
                        Id   = meas.sensor.Id,
                        name = meas.sensor.name
                    },
                    productionUnitId = meas.productionUnit.Id,
                    productionUnit   = new ProductionUnitViewModel()
                    {
                        Id                = meas.productionUnit.Id,
                        info              = meas.productionUnit.info,
                        locationLatitude  = meas.productionUnit.locationLatitude,
                        locationLongitude = meas.productionUnit.locationLongitude
                    },
                }).ToList();
            }
            else
            {
                result = entities.Measures.OrderByDescending(m => m.captureDate)
                         .Where(m => m.sensor.Id == (int)sensorType && m.productionUnit.Id == currentProductionUnitId && m.captureDate > selectedTimeFrame)
                         .Select(meas => new MeasureViewModel
                {
                    Id          = meas.Id,
                    captureDate = meas.captureDate,
                    value       = meas.value,
                    sensorId    = meas.sensor.Id,
                    sensor      = new SensorTypeViewModel()
                    {
                        Id   = meas.sensor.Id,
                        name = meas.sensor.name
                    },
                    productionUnitId = meas.productionUnit.Id,
                    productionUnit   = new ProductionUnitViewModel()
                    {
                        Id                = meas.productionUnit.Id,
                        info              = meas.productionUnit.info,
                        locationLatitude  = meas.productionUnit.locationLatitude,
                        locationLongitude = meas.productionUnit.locationLongitude
                    },
                }).ToList();
            }

            return(result);
        }