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); } } }
public static void Log(int locationId, int degrees) { ThermostatMonitorLib.OutsideCondition oc = new OutsideCondition(); oc.Degrees = degrees; oc.LocationId = locationId; oc.LogDate = DateTime.Now; ThermostatMonitorLib.OutsideCondition.SaveOutsideCondition(oc); }
public static void Log(int locationId, int degrees) { ThermostatMonitorLib.OutsideCondition oc = new OutsideCondition(); oc.Degrees = degrees; oc.LocationId = locationId; oc.LogDate = DateTime.Now; ThermostatMonitorLib.OutsideCondition.SaveOutsideCondition(oc); }
internal static OutsideCondition GetOutsideCondition(DataRow row) { OutsideCondition result = new OutsideCondition(); if (row.Table.Columns.Contains("Id")) { if (Convert.IsDBNull(row["Id"])) { result._isIdNull = true; } else { result._id = Convert.ToInt32(row["Id"]); result._isIdNull = false; } } if (row.Table.Columns.Contains("Degrees")) { if (Convert.IsDBNull(row["Degrees"])) { result._isDegreesNull = true; } else { result._degrees = Convert.ToInt32(row["Degrees"]); result._isDegreesNull = false; } } if (row.Table.Columns.Contains("LogDate")) { if (Convert.IsDBNull(row["LogDate"])) { result._isLogDateNull = true; } else { result._logDate = Convert.ToDateTime(row["LogDate"]); result._isLogDateNull = false; } } if (row.Table.Columns.Contains("LocationId")) { if (Convert.IsDBNull(row["LocationId"])) { result._isLocationIdNull = true; } else { result._locationId = Convert.ToInt32(row["LocationId"]); result._isLocationIdNull = false; } } return(result); }
public static void CheckAndLog(int locationId, int degrees) { OutsideCondition previous = OutsideCondition.LoadCurrentCondition(locationId); if (previous == null || previous.Degrees != degrees) { Log(locationId, degrees); } }
public static int SaveOutsideCondition(OutsideCondition outsideCondition) { int result = 0; SqlCommand cmd = new SqlCommand("SaveOutsideCondition", ThermostatMonitorLib.Global.Connection); cmd.CommandType = CommandType.StoredProcedure; if (outsideCondition._isIdNull) { cmd.Parameters.AddWithValue("@Id", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@Id", outsideCondition._id); } if (outsideCondition._isDegreesNull) { cmd.Parameters.AddWithValue("@Degrees", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@Degrees", outsideCondition._degrees); } if (outsideCondition._isLogDateNull) { cmd.Parameters.AddWithValue("@LogDate", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@LogDate", outsideCondition._logDate); } if (outsideCondition._isLocationIdNull) { cmd.Parameters.AddWithValue("@LocationId", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@LocationId", outsideCondition._locationId); } cmd.Connection.Open(); try { result = Convert.ToInt32(cmd.ExecuteScalar()); } finally { cmd.Connection.Close(); } outsideCondition.Id = result; return(result); }
public OutsideCondition GetByTime(DateTime time) { OutsideCondition result = null; foreach (ThermostatMonitorLib.OutsideCondition c in this) { if (c.LogDate <= time) { result = c; } } return(result); }
protected void Page_Load(object sender, EventArgs e) { int id = Convert.ToInt32(Request["Id"]); ThermostatMonitorLib.Thermostat thermostat = ThermostatMonitorLib.Thermostat.LoadThermostat(id); ThermostatMonitorLib.Location location = ThermostatMonitorLib.Location.LoadLocation(thermostat.LocationId); if (location.UserId != AppUser.Current.UserData.Id) { Response.Redirect("/login.aspx"); } TimezoneDifference = AppUser.TimezoneDifference(location.Timezone, location.DaylightSavings); ThermostatName.Text = thermostat.DisplayName + " (" + thermostat.IpAddress + ")"; //ThermostatMonitorLib.Cycle currentCycle=ThermostatMonitorLib.Cycle.LoadOpenCycle(thermostat.Id); ThermostatMonitorLib.OutsideCondition currentCondition = ThermostatMonitorLib.OutsideCondition.LoadCurrentCondition(location.Id); ThermostatMonitorLib.Temperature currentTemperature = ThermostatMonitorLib.Temperature.LoadCurrentTemperature(thermostat.Id); CurrentConditionsLit.Text = "Currently: "; //if (currentCycle == null) CurrentConditionsLit.Text += "Off"; else CurrentConditionsLit.Text += currentCycle.CycleType; if (currentTemperature != null && currentCondition != null) { CurrentConditionsLit.Text += " - Inside: " + currentTemperature.Degrees.ToString() + "°"; CurrentConditionsLit.Text += " - Outside: " + currentCondition.Degrees.ToString() + "°"; } else { CurrentConditionsLit.Text = "No data has been gathered for this thermostat."; } ThermostatMonitorLib.Cycles cycles = ThermostatMonitorLib.Cycles.LoadRange(id, DateTime.Now.AddDays(-1).AddHours(AppUser.TimezoneDifference(location.Timezone, location.DaylightSavings)), DateTime.Now.AddHours(AppUser.TimezoneDifference(location.Timezone, location.DaylightSavings))); DataTable dt = ThermostatMonitorLib.Cycles.LoadFullSummary(thermostat.LocationId, thermostat.Id, DateTime.Today.AddDays(-7), DateTime.Today, AppUser.TimezoneDifference(location.Timezone, location.DaylightSavings)); HistorySummary1.Populate(dt, thermostat); }
internal static OutsideCondition GetOutsideCondition(DataRow row) { OutsideCondition result = new OutsideCondition(); if (row.Table.Columns.Contains("Id")) { if (Convert.IsDBNull(row["Id"])) { result._isIdNull = true; } else { result._id = Convert.ToInt32(row["Id"]); result._isIdNull = false; } } if (row.Table.Columns.Contains("Degrees")) { if (Convert.IsDBNull(row["Degrees"])) { result._isDegreesNull = true; } else { result._degrees = Convert.ToInt32(row["Degrees"]); result._isDegreesNull = false; } } if (row.Table.Columns.Contains("LogDate")) { if (Convert.IsDBNull(row["LogDate"])) { result._isLogDateNull = true; } else { result._logDate = Convert.ToDateTime(row["LogDate"]); result._isLogDateNull = false; } } if (row.Table.Columns.Contains("LocationId")) { if (Convert.IsDBNull(row["LocationId"])) { result._isLocationIdNull = true; } else { result._locationId = Convert.ToInt32(row["LocationId"]); result._isLocationIdNull = false; } } return result; }
public static int SaveOutsideCondition(OutsideCondition outsideCondition) { int result = 0; SqlCommand cmd = new SqlCommand("SaveOutsideCondition", ThermostatMonitorLib.Global.Connection); cmd.CommandType = CommandType.StoredProcedure; if (outsideCondition._isIdNull) { cmd.Parameters.AddWithValue("@Id", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@Id", outsideCondition._id); } if (outsideCondition._isDegreesNull) { cmd.Parameters.AddWithValue("@Degrees", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@Degrees", outsideCondition._degrees); } if (outsideCondition._isLogDateNull) { cmd.Parameters.AddWithValue("@LogDate", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@LogDate", outsideCondition._logDate); } if (outsideCondition._isLocationIdNull) { cmd.Parameters.AddWithValue("@LocationId", System.DBNull.Value); } else { cmd.Parameters.AddWithValue("@LocationId", outsideCondition._locationId); } cmd.Connection.Open(); try { result = Convert.ToInt32(cmd.ExecuteScalar()); } finally { cmd.Connection.Close(); } outsideCondition.Id = result; return result; }