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);
                }
            }
        }
        internal static Snapshot GetSnapshot(DataRow row)
        {
            Snapshot result = new Snapshot();
            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("thermostat_id"))
            {
                if (Convert.IsDBNull(row["thermostat_id"]))
                {
                    result._isThermostatIdNull = true;
                }
                else
                {
                    result._thermostatId = Convert.ToInt32(row["thermostat_id"]);
                    result._isThermostatIdNull = false;
                }
            }

            if (row.Table.Columns.Contains("start_time"))
            {
                if (Convert.IsDBNull(row["start_time"]))
                {
                    result._isStartTimeNull = true;
                }
                else
                {
                    result._startTime = Convert.ToDateTime(row["start_time"]);
                    result._isStartTimeNull = false;
                }
            }

            if (row.Table.Columns.Contains("seconds"))
            {
                if (Convert.IsDBNull(row["seconds"]))
                {
                    result._isSecondsNull = true;
                }
                else
                {
                    result._seconds = Convert.ToInt32(row["seconds"]);
                    result._isSecondsNull = false;
                }
            }

            if (row.Table.Columns.Contains("mode"))
            {
                if (Convert.IsDBNull(row["mode"]))
                {
                    result._isModeNull = true;
                }
                else
                {
                    result._mode = Convert.ToString(row["mode"]);
                    result._isModeNull = false;
                }
            }

            if (row.Table.Columns.Contains("inside_temp_high"))
            {
                if (Convert.IsDBNull(row["inside_temp_high"]))
                {
                    result._isInsideTempHighNull = true;
                }
                else
                {
                    result._insideTempHigh = Convert.ToInt32(row["inside_temp_high"]);
                    result._isInsideTempHighNull = false;
                }
            }

            if (row.Table.Columns.Contains("inside_temp_low"))
            {
                if (Convert.IsDBNull(row["inside_temp_low"]))
                {
                    result._isInsideTempLowNull = true;
                }
                else
                {
                    result._insideTempLow = Convert.ToInt32(row["inside_temp_low"]);
                    result._isInsideTempLowNull = false;
                }
            }

            if (row.Table.Columns.Contains("inside_temp_average"))
            {
                if (Convert.IsDBNull(row["inside_temp_average"]))
                {
                    result._isInsideTempAverageNull = true;
                }
                else
                {
                    result._insideTempAverage = Convert.ToInt32(row["inside_temp_average"]);
                    result._isInsideTempAverageNull = false;
                }
            }

            if (row.Table.Columns.Contains("outside_temp_high"))
            {
                if (Convert.IsDBNull(row["outside_temp_high"]))
                {
                    result._isOutsideTempHighNull = true;
                }
                else
                {
                    result._outsideTempHigh = Convert.ToInt32(row["outside_temp_high"]);
                    result._isOutsideTempHighNull = false;
                }
            }

            if (row.Table.Columns.Contains("outside_temp_low"))
            {
                if (Convert.IsDBNull(row["outside_temp_low"]))
                {
                    result._isOutsideTempLowNull = true;
                }
                else
                {
                    result._outsideTempLow = Convert.ToInt32(row["outside_temp_low"]);
                    result._isOutsideTempLowNull = false;
                }
            }

            if (row.Table.Columns.Contains("outside_temp_average"))
            {
                if (Convert.IsDBNull(row["outside_temp_average"]))
                {
                    result._isOutsideTempAverageNull = true;
                }
                else
                {
                    result._outsideTempAverage = Convert.ToInt32(row["outside_temp_average"]);
                    result._isOutsideTempAverageNull = false;
                }
            }

            return result;
        }
Example #3
0
        public static int SaveSnapshot(Snapshot snapshot)
        {
            int          result = 0;
            MySqlCommand cmd    = new MySqlCommand("snapshots_save", ThermostatMonitorLib.Global.MySqlConnection);

            cmd.CommandType = CommandType.StoredProcedure;
            if (snapshot._isIdNull)
            {
                cmd.Parameters.AddWithValue("@id", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@id", snapshot._id);
            }

            if (snapshot._isThermostatIdNull)
            {
                cmd.Parameters.AddWithValue("@thermostat_id", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@thermostat_id", snapshot._thermostatId);
            }

            if (snapshot._isStartTimeNull)
            {
                cmd.Parameters.AddWithValue("@start_time", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@start_time", snapshot._startTime);
            }

            if (snapshot._isSecondsNull)
            {
                cmd.Parameters.AddWithValue("@seconds", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@seconds", snapshot._seconds);
            }

            if (snapshot._isModeNull)
            {
                cmd.Parameters.AddWithValue("@mode", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@mode", snapshot._mode);
            }

            if (snapshot._isInsideTempHighNull)
            {
                cmd.Parameters.AddWithValue("@inside_temp_high", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@inside_temp_high", snapshot._insideTempHigh);
            }

            if (snapshot._isInsideTempLowNull)
            {
                cmd.Parameters.AddWithValue("@inside_temp_low", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@inside_temp_low", snapshot._insideTempLow);
            }

            if (snapshot._isInsideTempAverageNull)
            {
                cmd.Parameters.AddWithValue("@inside_temp_average", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@inside_temp_average", snapshot._insideTempAverage);
            }

            if (snapshot._isOutsideTempHighNull)
            {
                cmd.Parameters.AddWithValue("@outside_temp_high", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@outside_temp_high", snapshot._outsideTempHigh);
            }

            if (snapshot._isOutsideTempLowNull)
            {
                cmd.Parameters.AddWithValue("@outside_temp_low", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@outside_temp_low", snapshot._outsideTempLow);
            }

            if (snapshot._isOutsideTempAverageNull)
            {
                cmd.Parameters.AddWithValue("@outside_temp_average", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@outside_temp_average", snapshot._outsideTempAverage);
            }

            cmd.Connection.Open();
            try
            {
                result = Convert.ToInt32(cmd.ExecuteScalar());
            }
            finally
            {
                cmd.Connection.Close();
            }
            snapshot.Id = result;
            return(result);
        }
        public static int SaveSnapshot(Snapshot snapshot)
        {
            int result = 0;
            MySqlCommand cmd = new MySqlCommand("snapshots_save", ThermostatMonitorLib.Global.MySqlConnection);
            cmd.CommandType = CommandType.StoredProcedure;
            if (snapshot._isIdNull)
            {
                cmd.Parameters.AddWithValue("@id", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@id", snapshot._id);
            }

            if (snapshot._isThermostatIdNull)
            {
                cmd.Parameters.AddWithValue("@thermostat_id", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@thermostat_id", snapshot._thermostatId);
            }

            if (snapshot._isStartTimeNull)
            {
                cmd.Parameters.AddWithValue("@start_time", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@start_time", snapshot._startTime);
            }

            if (snapshot._isSecondsNull)
            {
                cmd.Parameters.AddWithValue("@seconds", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@seconds", snapshot._seconds);
            }

            if (snapshot._isModeNull)
            {
                cmd.Parameters.AddWithValue("@mode", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@mode", snapshot._mode);
            }

            if (snapshot._isInsideTempHighNull)
            {
                cmd.Parameters.AddWithValue("@inside_temp_high", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@inside_temp_high", snapshot._insideTempHigh);
            }

            if (snapshot._isInsideTempLowNull)
            {
                cmd.Parameters.AddWithValue("@inside_temp_low", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@inside_temp_low", snapshot._insideTempLow);
            }

            if (snapshot._isInsideTempAverageNull)
            {
                cmd.Parameters.AddWithValue("@inside_temp_average", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@inside_temp_average", snapshot._insideTempAverage);
            }

            if (snapshot._isOutsideTempHighNull)
            {
                cmd.Parameters.AddWithValue("@outside_temp_high", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@outside_temp_high", snapshot._outsideTempHigh);
            }

            if (snapshot._isOutsideTempLowNull)
            {
                cmd.Parameters.AddWithValue("@outside_temp_low", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@outside_temp_low", snapshot._outsideTempLow);
            }

            if (snapshot._isOutsideTempAverageNull)
            {
                cmd.Parameters.AddWithValue("@outside_temp_average", System.DBNull.Value);
            }
            else
            {
                cmd.Parameters.AddWithValue("@outside_temp_average", snapshot._outsideTempAverage);
            }

            cmd.Connection.Open();
            try
            {
                result = Convert.ToInt32(cmd.ExecuteScalar());
            }
            finally
            {
                cmd.Connection.Close();
            }
            snapshot.Id = result;
            return result;
        }
Example #5
0
        internal static Snapshot GetSnapshot(DataRow row)
        {
            Snapshot result = new Snapshot();

            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("thermostat_id"))
            {
                if (Convert.IsDBNull(row["thermostat_id"]))
                {
                    result._isThermostatIdNull = true;
                }
                else
                {
                    result._thermostatId       = Convert.ToInt32(row["thermostat_id"]);
                    result._isThermostatIdNull = false;
                }
            }

            if (row.Table.Columns.Contains("start_time"))
            {
                if (Convert.IsDBNull(row["start_time"]))
                {
                    result._isStartTimeNull = true;
                }
                else
                {
                    result._startTime       = Convert.ToDateTime(row["start_time"]);
                    result._isStartTimeNull = false;
                }
            }

            if (row.Table.Columns.Contains("seconds"))
            {
                if (Convert.IsDBNull(row["seconds"]))
                {
                    result._isSecondsNull = true;
                }
                else
                {
                    result._seconds       = Convert.ToInt32(row["seconds"]);
                    result._isSecondsNull = false;
                }
            }

            if (row.Table.Columns.Contains("mode"))
            {
                if (Convert.IsDBNull(row["mode"]))
                {
                    result._isModeNull = true;
                }
                else
                {
                    result._mode       = Convert.ToString(row["mode"]);
                    result._isModeNull = false;
                }
            }

            if (row.Table.Columns.Contains("inside_temp_high"))
            {
                if (Convert.IsDBNull(row["inside_temp_high"]))
                {
                    result._isInsideTempHighNull = true;
                }
                else
                {
                    result._insideTempHigh       = Convert.ToInt32(row["inside_temp_high"]);
                    result._isInsideTempHighNull = false;
                }
            }

            if (row.Table.Columns.Contains("inside_temp_low"))
            {
                if (Convert.IsDBNull(row["inside_temp_low"]))
                {
                    result._isInsideTempLowNull = true;
                }
                else
                {
                    result._insideTempLow       = Convert.ToInt32(row["inside_temp_low"]);
                    result._isInsideTempLowNull = false;
                }
            }

            if (row.Table.Columns.Contains("inside_temp_average"))
            {
                if (Convert.IsDBNull(row["inside_temp_average"]))
                {
                    result._isInsideTempAverageNull = true;
                }
                else
                {
                    result._insideTempAverage       = Convert.ToInt32(row["inside_temp_average"]);
                    result._isInsideTempAverageNull = false;
                }
            }

            if (row.Table.Columns.Contains("outside_temp_high"))
            {
                if (Convert.IsDBNull(row["outside_temp_high"]))
                {
                    result._isOutsideTempHighNull = true;
                }
                else
                {
                    result._outsideTempHigh       = Convert.ToInt32(row["outside_temp_high"]);
                    result._isOutsideTempHighNull = false;
                }
            }

            if (row.Table.Columns.Contains("outside_temp_low"))
            {
                if (Convert.IsDBNull(row["outside_temp_low"]))
                {
                    result._isOutsideTempLowNull = true;
                }
                else
                {
                    result._outsideTempLow       = Convert.ToInt32(row["outside_temp_low"]);
                    result._isOutsideTempLowNull = false;
                }
            }

            if (row.Table.Columns.Contains("outside_temp_average"))
            {
                if (Convert.IsDBNull(row["outside_temp_average"]))
                {
                    result._isOutsideTempAverageNull = true;
                }
                else
                {
                    result._outsideTempAverage       = Convert.ToInt32(row["outside_temp_average"]);
                    result._isOutsideTempAverageNull = false;
                }
            }

            return(result);
        }