示例#1
0
 public EnergySummaryEntity(EnergySummary entity, int version) : base(
         intervalEndExcluded: entity.IntervalEndExcluded,
         intervalStartIncluded: entity.IntervalStartIncluded,
         batteryPercentageFull: entity.BatteryPercentageFull,
         gridExportWatts: entity.GridExportWatts,
         gridExportWattEnergy: entity.GridExportWattEnergy,
         gridImportWatts: entity.GridImportWatts,
         gridImportWattEnergy: entity.GridImportWattEnergy,
         estimateConsumptionWatts: entity.ConsumptionWatts,
         estimateConsumptionWattEnergy: entity.ConsumptionWattEnergy,
         batteryReportedSolarPowerGenerationWatts: entity.SolarPowerGenerationWatts,
         batteryReportedSolarPowerGenerationWattEnergy: entity.SolarPowerGenerationWattEnergy,
         batteryChargeWatts: entity.BatteryChargeWatts,
         batteryChargeWattEnergy: entity.BatteryChargeWattEnergy,
         batteryDischargeWatts: entity.BatteryDischargeWatts,
         batteryDischargeWattEnergy: entity.BatteryDischargeWattEnergy,
         solarInverterPowerGenerationWattEnergy: entity.SolarInverterPowerGenerationWattEnergy,
         solarInverterPowerGenerationWatts: entity.SolarInverterPowerGenerationWatts,
         powerMovementSummary: entity.PowerMovementSummary,
         secondsBatteryCharging: entity.SecondsBatteryCharging,
         secondsBatteryDischarging: entity.SecondsBatteryDischarging,
         secondsWithoutData: entity.SecondsWithoutData)
 {
     Id        = this.GetKey();
     Partition = "ES_" + this.GetKey();
     Version   = version;
 }
        private EnergySummary BuildVoltageSummary(ConcurrentDictionary <long, string> collection, DateTimeOffset intervalStart, DateTimeOffset intervalEnd, List <string> removedTexts)
        {
            Dictionary <long, decimal> solarValues = null !;
            var list = _summaryFunctions.FillSummary <MomentEnergy, SenecEntities.Energy>(collection, intervalStart, intervalEnd,
                                                                                          (moment, energy) => _gridMeterAdapter.Convert(moment, energy).GetMomentEnergy(),
                                                                                          removedTexts,
                                                                                          (lowerBound, upperBound) => solarValues = GetSolarValues(lowerBound, upperBound),
                                                                                          (momentEnergy, instant) =>
            {
                if (solarValues.TryGetValue(instant, out decimal solarValue))
                {
                    momentEnergy.SolarInvertorsPowerGeneration = solarValue;
                }
                momentEnergy.PowerMovements = PowerMovementsBuilder.Build(momentEnergy);
            });

            var maximumValues = (int)(intervalEnd - intervalStart).TotalSeconds;
            var stats         = new EnergySummary(
                intervalStartIncluded: intervalStart,
                intervalEndExcluded: intervalEnd,
                batteryPercentageFull: CreateStatistics(list, l => l.BatteryPercentageFull),
                gridExportWatts: CreateStatistics(list, l => l.GridExportWatts),
                gridExportWattEnergy: TimeseriesSummary(list, l => l.GridExportWatts, intervalStart, intervalEnd),
                gridImportWatts: CreateStatistics(list, l => l.GridImportWatts),
                gridImportWattEnergy: TimeseriesSummary(list, l => l.GridImportWatts, intervalStart, intervalEnd),
                estimateConsumptionWatts: CreateStatistics(list, l => l.HomeInstantPowerConsumption),
                estimateConsumptionWattEnergy: TimeseriesSummary(list, l => l.HomeInstantPowerConsumption, intervalStart, intervalEnd),
                batteryReportedSolarPowerGenerationWatts: CreateStatistics(list, l => l.SolarPowerGeneration),
                batteryReportedSolarPowerGenerationWattEnergy: TimeseriesSummary(list, l => l.SolarPowerGeneration, intervalStart, intervalEnd),
                solarInverterPowerGenerationWatts: CreateStatistics(solarValues.Values.ToList()),
                solarInverterPowerGenerationWattEnergy: TimeseriesSummary(solarValues, intervalStart, intervalEnd),
                batteryChargeWatts: CreateStatistics(list, l => l.BatteryCharge),
                batteryChargeWattEnergy: TimeseriesSummary(list, l => l.BatteryCharge, intervalStart, intervalEnd),
                batteryDischargeWatts: CreateStatistics(list, l => l.BatteryDischarge),
                batteryDischargeWattEnergy: TimeseriesSummary(list, l => l.BatteryDischarge, intervalStart, intervalEnd),
                powerMovementSummary: CreatePowerSummary(list, intervalStart, intervalEnd),
                secondsBatteryCharging: list.Count(a => a.IsBatteryCharging),
                secondsBatteryDischarging: list.Count(a => a.IsBatteryDischarging),
                secondsWithoutData: maximumValues - list.Count
                );

            return(stats);
        }
示例#3
0
        public Func <CancellationToken, Task <ItemResponse <EnergySummaryEntity> > > CreateItemAsync(EnergySummary energySummary)
        {
            var persistedValue = new EnergySummaryEntity(energySummary, _version.Number);
            Func <CancellationToken, Task <ItemResponse <EnergySummaryEntity> > > obj = (CancellationToken c) =>
                                                                                        _container.CreateItemAsync(persistedValue,
                                                                                                                   cancellationToken: c);

            return(obj);
        }
        public async Task <bool> AddAsync(EnergySummary notification, CancellationToken cancellationToken)
        {
            var result = await _context.CreateItemAsync(notification)(cancellationToken);

            return(result.StatusCode == HttpStatusCode.Created);
        }