Пример #1
0
        public static SensorValLogBag <T> GetLogBag <T>(bool isROSensor = false) where T : SensorValLog
        {
            SensorValLogBag <T> bag = new SensorValLogBag <T>(CurrentAquariumName);

            bag.IsTdsVal   = typeof(T) == typeof(TDSLog);
            bag.IsRoSensor = isROSensor;


            //string filePrefix = CurrentAquariumName + "_";
            //string roFilePrefix = "ROSensor_";

            //DateTime lastSave = _lastPhSave.AddMinutes(Globals.SaveLogEveryMin);//ph
            //List<SensorValLog> rawLogs = _rawPHLogs.Cast<SensorValLog>().ToList();//ph
            //string logFile = filePrefix + Globals.PHLogFileName;

            //bool isTdsVal = typeof(T) == typeof(TDSLog);

            if (bag.IsTdsVal)
            {
                bag.LastSave = _lastTdsSave.AddMinutes(Globals.SaveLogEveryMin); //tds
                bag.RawLogs  = _rawTdsLogs.Cast <T>().ToList();                  //tds
                bag.LogFile  = bag.AquariumFilePrefix + Globals.TDSLogFileName;
            }
            else
            {
                bag.LastSave = _lastPhSave.AddMinutes(Globals.SaveLogEveryMin); //ph
                bag.RawLogs  = _rawPHLogs.Cast <T>().ToList();                  //ph
                bag.LogFile  = bag.AquariumFilePrefix + Globals.PHLogFileName;
            }

            if (isROSensor)
            {
                if (bag.IsTdsVal)
                {
                    bag.LastSave = _lastROTdsSave.AddMinutes(Globals.SaveLogEveryMin); //tds
                    bag.RawLogs  = _rawROTdsLogs.Cast <T>().ToList();                  //tds
                    bag.LogFile  = bag.RoFilePrefix + Globals.TDSLogFileName;
                }
                else
                {
                    bag.LastSave = _lastROPhSave.AddMinutes(Globals.SaveLogEveryMin);
                    bag.RawLogs  = _rawROPHLogs.Cast <T>().ToList();
                    bag.LogFile  = bag.RoFilePrefix + Globals.PHLogFileName;
                }
            }

            return(bag);
        }
Пример #2
0
        public static List <T> GetLogs <T>(bool isROSensor = false) where T : SensorValLog
        {
            SensorValLogBag <T> bag = GetLogBag <T>(isROSensor);

            List <T> logs = FileIO.GetJson <T>(bag.LogFile);

            if (logs.Count > 0)
            {
                if (isROSensor)
                {
                    if (bag.IsTdsVal)
                    {
                        CurrentRoTds = logs.OrderBy(x => x.LogDate).Last().Val;
                    }
                    else
                    {
                        CurrentRoPh = logs.OrderBy(x => x.LogDate).Last().Val;
                    }
                }
                else
                {
                    if (bag.IsTdsVal)
                    {
                        CurrentTDS = logs.OrderBy(x => x.LogDate).Last().Val;
                    }
                    else
                    {
                        CurrentPH = logs.OrderBy(x => x.LogDate).Last().Val;
                    }
                }
            }

            return(logs);
            //var cnvLogs = logs.Select(x => new SensorValLog { LogDate = x.LogDate, Val = x.Val }).ToList();
            //var cnvLogs2 = cnvLogs.Cast<T>().ToList();
            //return cnvLogs2;

            //var logs = _rawPHLogs.GroupBy(x => new DateTime(x.LogDate.Year, x.LogDate.Month, x.LogDate.Day, 0, 0, 0))
            //     .Select(g => new PHLog
            //     {
            //         LogDate = g.Key,
            //         PhVal = g.Average(i => i.PhVal)
            //     }).OrderBy(x => x.LogDate).ToList();
        }
Пример #3
0
        public static void Log <T>(double val, bool isROSensor = false) where T : SensorValLog, new()
        {
            //SensorValLogBag bag = new SensorValLogBag(CurrentAquariumName);
            //bag.LastSave = _lastPhSave.AddMinutes(Globals.SaveLogEveryMin);//ph
            //bag.RawLogs = _rawPHLogs.Cast<SensorValLog>().ToList();//ph
            //bag.LogFile = bag.AquariumFilePrefix + Globals.PHLogFileName;
            //bag.IsTdsVal = typeof(T) == typeof(TDSLog);
            //string filePrefix = CurrentAquariumName + "_";
            //string roFilePrefix = "ROSensor_";

            //DateTime lastSave = _lastPhSave.AddMinutes(Globals.SaveLogEveryMin);//ph
            //List<SensorValLog> rawLogs = _rawPHLogs.Cast<SensorValLog>().ToList();//ph
            //string logFile = filePrefix + Globals.PHLogFileName;

            //bool isTdsVal = typeof(T) == typeof(TDSLog);



            //if (bag.IsTdsVal)
            //{
            //    bag.LastSave = _lastTdsSave.AddMinutes(Globals.SaveLogEveryMin);//tds
            //    bag.RawLogs = _rawTdsLogs.Cast<SensorValLog>().ToList();//tds
            //    bag.LogFile = bag.AquariumFilePrefix + Globals.TDSLogFileName;
            //}

            //if (isROSensor)
            //{
            //    bag.LastSave = _lastROPhSave.AddMinutes(Globals.SaveLogEveryMin);
            //    bag.RawLogs = _rawROPHLogs.Cast<SensorValLog>().ToList();
            //    bag.LogFile = bag.RoFilePrefix + Globals.PHLogFileName;

            //    if (bag.IsTdsVal)
            //    {
            //        bag.LastSave = _lastROTdsSave.AddMinutes(Globals.SaveLogEveryMin);//tds
            //        bag.RawLogs = _rawROTdsLogs.Cast<SensorValLog>().ToList();//tds
            //        bag.LogFile = bag.RoFilePrefix + Globals.TDSLogFileName;
            //    }
            //}

            SensorValLogBag <T> bag = GetLogBag <T>(isROSensor);

            if (DateTime.Now > bag.LastSave)
            {
                if (bag.RawLogs.Count > Globals.MaxLogs)
                {
                    bag.RawLogs.RemoveRange(0, Globals.MaxLogs / 2);
                    FileIO.SaveJson(bag.RawLogs, bag.LogFile);
                }

                var log = new T()
                {
                    LogDate = DateTime.Now, Val = val
                };
                var logs = GetLogs <T>(isROSensor);

                bag.RawLogs = logs;//.Cast<SensorValLog>().ToList();
                bag.RawLogs.Add((T)log);

                //log hourly avg to file.
                //var hourlyPHAverage = GetHourlyPhAverage();
                //var phLogFileEntry = new PHLog { LogDate = DateTime.Now, PhVal = hourlyPHAverage };
                //var phFileLogs = GetPHLogs();
                //phFileLogs.Add(phLogFileEntry);

                FileIO.SaveJson <T>(bag.RawLogs, bag.LogFile);

                if (isROSensor)
                {
                    if (bag.IsTdsVal)
                    {
                        _lastROTdsSave = DateTime.Now;
                        _rawROTdsLogs  = bag.RawLogs.Select(l => new TDSLog {
                            LogDate = l.LogDate, TdsVal = l.Val
                        }).ToList();
                    }
                    else
                    {
                        _lastROPhSave = DateTime.Now;
                        _rawROPHLogs  = bag.RawLogs.Select(l => new PHLog {
                            LogDate = l.LogDate, PhVal = l.Val
                        }).ToList();
                    }
                }
                else
                {
                    if (bag.IsTdsVal)
                    {
                        _lastTdsSave = DateTime.Now;
                        _rawTdsLogs  = bag.RawLogs.Select(l => new TDSLog {
                            LogDate = l.LogDate, TdsVal = l.Val
                        }).ToList();
                    }
                    else
                    {
                        _lastPhSave = DateTime.Now;
                        _rawPHLogs  = bag.RawLogs.Select(l => new PHLog {
                            LogDate = l.LogDate, PhVal = l.Val
                        }).ToList();
                    }
                }
            }
        }