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); }
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(); }
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(); } } } }