Example #1
0
        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);
        }
Example #8
0
    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;
        }