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); }
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); }