예제 #1
0
        public static void SaveChargerValues(ISonnenDbContext dbContext, DateTime time, double chargedEnergyTotal, double activePower, double current, bool connected, bool charging, bool smartMode)
        {
            var dbChargerSeries = TimeSeriesDbEntityBase.LoadOrCreateDay(dbContext.SonnenChargerDataSet, time.Date);

            var oldChargedEnergyTotal = dbChargerSeries.ChargedEnergyTotal;
            var series1 = dbChargerSeries.ChargedEnergySeries;

            series1.Accumulate(time, oldChargedEnergyTotal.HasValue ? Math.Round(chargedEnergyTotal, 1) - Math.Round(oldChargedEnergyTotal.Value, 1) : 0);
            dbChargerSeries.SetSeries(0, series1);
            dbChargerSeries.ChargedEnergyTotal = Math.Round(chargedEnergyTotal, 1);

            dbChargerSeries.SetSeriesValue(1, time, activePower);
            dbChargerSeries.SetSeriesValue(2, time, current);
            dbChargerSeries.SetSeriesValue(3, time, connected);
            dbChargerSeries.SetSeriesValue(4, time, charging);
            dbChargerSeries.SetSeriesValue(5, time, smartMode);

            SaveLowresChargerValues(dbContext, time.Date, dbChargerSeries);

            dbContext.SaveChanges();
        }
예제 #2
0
        private void SaveSolarValues(DateTime time, int solarWhTotal, double solarCollectorTemp, double solarHotwaterTemp, bool solarPumpState, bool solarSuppression)
        {
            var dbSolarSeries = TimeSeriesDbEntityBase.LoadOrCreateDay(_dbContext.ViessmannSolarTimeseries, time.Date);

            var oldSolarWhTotal = dbSolarSeries.SolarWhTotal;
            var solarWhDiff     = oldSolarWhTotal.HasValue ? solarWhTotal - oldSolarWhTotal.Value : 0;
            var series1         = dbSolarSeries.SolarWhSeries;

            series1.Accumulate(time - series1.Span.Duration, solarWhDiff / 2);
            series1.Accumulate(time, solarWhDiff / 2);
            dbSolarSeries.SetSeries(0, series1);
            dbSolarSeries.SolarWhTotal = solarWhTotal;

            dbSolarSeries.SetSeriesValue(1, time, solarCollectorTemp);
            dbSolarSeries.SetSeriesValue(2, time, solarHotwaterTemp);
            dbSolarSeries.SetSeriesValue(3, time, solarPumpState);
            dbSolarSeries.SetSeriesValue(4, time, solarSuppression);

            SaveLowresSolarValues(_dbContext, time.Date, dbSolarSeries);

            _dbContext.SaveChanges();
        }
예제 #3
0
        private void SaveHeatingValues(DateTime time, double burnerHoursTotal, int burnerStartsTotal, int burnerModulation, double outsideTemp, double boilerTemp, double boilerTempMain, double circuit0Temp, double circuit1Temp, double dhwTemp, bool burnerActive, bool circuit0Pump, bool circuit1Pump, bool dhwPrimPump, bool dhwCircPump)
        {
            var dbHeatingSeries = TimeSeriesDbEntityBase.LoadOrCreateDay(_dbContext.ViessmannHeatingTimeseries, time.Date);

            var oldHours = dbHeatingSeries.BurnerHoursTotal;
            var minutes  = (burnerHoursTotal - oldHours) * 60;
            var series1  = dbHeatingSeries.BurnerMinutesSeries;

            series1.Accumulate(time, minutes > 10 || minutes < 0 ? 0 : minutes);
            dbHeatingSeries.SetSeries(0, series1);
            dbHeatingSeries.BurnerHoursTotal = burnerHoursTotal;

            var oldStarts  = dbHeatingSeries.BurnerStartsTotal;
            var startsDiff = burnerStartsTotal - oldStarts;
            var series2    = dbHeatingSeries.BurnerStartsSeries;

            series1.Accumulate(time, startsDiff > 10 || startsDiff < 0 ? 0 : startsDiff);
            dbHeatingSeries.SetSeries(1, series2);
            dbHeatingSeries.BurnerStartsTotal = burnerStartsTotal;

            dbHeatingSeries.SetSeriesValue(2, time, burnerModulation);
            dbHeatingSeries.SetSeriesValue(3, time, outsideTemp);
            dbHeatingSeries.SetSeriesValue(4, time, boilerTemp);
            dbHeatingSeries.SetSeriesValue(5, time, boilerTempMain);
            dbHeatingSeries.SetSeriesValue(6, time, circuit0Temp);
            dbHeatingSeries.SetSeriesValue(7, time, circuit1Temp);
            dbHeatingSeries.SetSeriesValue(8, time, dhwTemp);
            dbHeatingSeries.SetSeriesValue(9, time, burnerActive);
            dbHeatingSeries.SetSeriesValue(10, time, circuit0Pump);
            dbHeatingSeries.SetSeriesValue(11, time, circuit1Pump);
            dbHeatingSeries.SetSeriesValue(12, time, dhwPrimPump);
            dbHeatingSeries.SetSeriesValue(13, time, dhwCircPump);

            SaveLowresHeatingValues(time.Date, dbHeatingSeries);

            _dbContext.SaveChanges();
        }
예제 #4
0
 private static void SaveLowresChargerValues(ISonnenDbContext dbContext, DateTime day, SonnenChargerMidresData midRes)
 {
     TimeSeriesDbEntityBase.LoadOrCreateMonth(dbContext.SonnenChargerLowresDataSet, day).ResampleFromAll(midRes);
 }
예제 #5
0
 private static void SaveLowresSolarValues(IViessmannDbContext dbContext, DateTime day, ViessmannSolarMidresData midRes)
 {
     var dbSolarSeries = TimeSeriesDbEntityBase.LoadOrCreateMonth(dbContext.ViessmannSolarLowresTimeseries, day);
예제 #6
0
 private void SaveLowresHeatingValues(DateTime day, ViessmannHeatingMidresData midRes)
 {
     TimeSeriesDbEntityBase.LoadOrCreateMonth(_dbContext.ViessmannHeatingLowresTimeseries, day).ResampleFromAll(midRes);
 }