public static void SaveSolarValues(IViessmannDbContext dbContext, DateTime time, int solarWhTotal, double solarCollectorTemp, double solarHotwaterTemp, bool solarPumpState, bool solarSuppression)
        {
            var day = time.Date;

            var dbSolarSeries = dbContext.ViessmannSolarTimeseries.Where(x => x.Key == day).FirstOrDefault();

            if (dbSolarSeries == null)
            {
                dbContext.ViessmannSolarTimeseries.Add(dbSolarSeries = new ViessmannSolarMidresData()
                {
                    Key = day
                });
            }

            var oldSolarWhTotal = dbSolarSeries.SolarWhTotal;
            var series1         = dbSolarSeries.SolarWhSeries;

            series1.Accumulate(time, oldSolarWhTotal.HasValue ? solarWhTotal - oldSolarWhTotal.Value : 0);
            dbSolarSeries.SetSeries(0, series1);
            dbSolarSeries.SolarWhTotal = solarWhTotal;

            var series2 = dbSolarSeries.SolarCollectorTempSeries;

            series2[time] = solarCollectorTemp;
            dbSolarSeries.SetSeries(1, series2);

            var series3 = dbSolarSeries.SolarHotwaterTempSeries;

            series3[time] = solarHotwaterTemp;
            dbSolarSeries.SetSeries(2, series3);

            var series4 = dbSolarSeries.SolarPumpStateSeries;

            series4[time] = solarPumpState;
            dbSolarSeries.SetSeries(3, series4);

            var series5 = dbSolarSeries.SolarSuppressionSeries;

            series5[time] = solarSuppression;
            dbSolarSeries.SetSeries(4, series5);

            SaveLowresSolarValues(dbContext, day, series1, series2, series3, series4, series5);

            dbContext.SaveChanges();
        }
예제 #2
0
 private static void SaveLowresSolarValues(IViessmannDbContext dbContext, DateTime day, ViessmannSolarMidresData midRes)
 {
     var dbSolarSeries = TimeSeriesDbEntityBase.LoadOrCreateMonth(dbContext.ViessmannSolarLowresTimeseries, day);