private static void LogOffCycle(int thermostatId, Cycle cycle, DateTime lastCycleEndDate, Temperatures allTemperatures, OutsideConditions allConditions) { Temperatures temperatures = allTemperatures.GetRange(lastCycleEndDate, cycle.StartDate); OutsideConditions conditions = allConditions.GetRange(lastCycleEndDate, cycle.StartDate); Temperature previousTemperature = allTemperatures.GetByTime(lastCycleEndDate); OutsideCondition previousCondition = allConditions.GetByTime(lastCycleEndDate); temperatures.Insert(0, previousTemperature); conditions.Insert(0, previousCondition); if (cycle.StartDate <= lastCycleEndDate) { return; } if (conditions.Count > 0 && temperatures.Count > 0) { DateTime endDate = cycle.StartDate; Snapshot s = new Snapshot(); s.StartTime = lastCycleEndDate; s.Seconds = Convert.ToInt32(new TimeSpan(cycle.StartDate.Ticks - lastCycleEndDate.Ticks).TotalSeconds); s.ThermostatId = thermostatId; s.Mode = "Off"; s.InsideTempAverage = Convert.ToInt32(temperatures.GetTempAverage(lastCycleEndDate, cycle.StartDate)); s.InsideTempHigh = Convert.ToInt32(temperatures.GetTempHigh()); s.InsideTempLow = Convert.ToInt32(temperatures.GetTempLow()); s.OutsideTempAverage = Convert.ToInt32(conditions.GetTempAverage(lastCycleEndDate, cycle.StartDate)); s.OutsideTempHigh = Convert.ToInt32(conditions.GetTempHigh()); s.OutsideTempLow = Convert.ToInt32(conditions.GetTempLow()); if (s.Seconds > 10 && s.Seconds < 86400) //if significant and less than a day { Snapshot.SaveSnapshot(s); } } }
private static void LogOnCycle(int thermostatId, Cycle cycle, Temperatures allTemperatures, OutsideConditions allConditions) { Temperatures temperatures = allTemperatures.GetRange(cycle.StartDate, cycle.EndDate); OutsideConditions conditions = allConditions.GetRange(cycle.StartDate, cycle.EndDate); Temperature previousTemperature = allTemperatures.GetByTime(cycle.StartDate); OutsideCondition previousCondition = allConditions.GetByTime(cycle.StartDate); if (previousTemperature!=null) temperatures.Insert(0, previousTemperature); if (previousCondition != null) conditions.Insert(0, previousCondition); if (conditions.Count > 0 && temperatures.Count > 0) { Snapshot s = new Snapshot(); s.StartTime = cycle.StartDate; s.Seconds = Convert.ToInt32(new TimeSpan(cycle.EndDate.Ticks - cycle.StartDate.Ticks).TotalSeconds); s.ThermostatId = thermostatId; s.Mode = cycle.CycleType; s.InsideTempAverage = Convert.ToInt32(temperatures.GetTempAverage(cycle.StartDate, cycle.EndDate)); s.InsideTempHigh = Convert.ToInt32(temperatures.GetTempHigh()); s.InsideTempLow = Convert.ToInt32(temperatures.GetTempLow()); s.OutsideTempAverage = Convert.ToInt32(conditions.GetTempAverage(cycle.StartDate, cycle.EndDate)); s.OutsideTempHigh = Convert.ToInt32(conditions.GetTempHigh()); s.OutsideTempLow = Convert.ToInt32(conditions.GetTempLow()); if (s.Seconds > 10 && s.Seconds < 86400) //if significant and less than a day { Snapshot.SaveSnapshot(s); } } }