From 5245df237fce6fec094c1d48a72f0c9c1c9bb6e9 Mon Sep 17 00:00:00 2001 From: atef Date: Wed, 10 Jan 2024 16:28:25 +0100 Subject: [PATCH] update the Create Avreage function --- .../src/AggregationService/Aggregator.cs | 76 ++++++++++++++----- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/csharp/App/SaliMax/src/AggregationService/Aggregator.cs b/csharp/App/SaliMax/src/AggregationService/Aggregator.cs index 421f55966..690dbaf04 100644 --- a/csharp/App/SaliMax/src/AggregationService/Aggregator.cs +++ b/csharp/App/SaliMax/src/AggregationService/Aggregator.cs @@ -98,10 +98,15 @@ public static class Aggregator private static AggregatedData CreateAverage(String myDirectory, Int64 afterTimestamp, Int64 beforeTimestamp) { // Get all CSV files in the specified directory - var csvFiles = Directory.GetFiles(myDirectory, "*.csv"); - var socAverage = new List(); - var pvPowerAverage = new List(); - var batteryPowerAverage = new List(); + var csvFiles = Directory.GetFiles(myDirectory, "*.csv"); + var batterySoc = new List(); + var batteryAvgSoc = new List(); // this is only used for the daily data. + var pvPowerAverage = new List(); + var gridPowerImport = new List(); + var gridPowerExport = new List(); + var batteryDischargePower = new List(); + var batteryChargePower = new List(); + Console.WriteLine("-----------------------------------------------------------------------------------------------------------------"); Console.WriteLine("File timestamp should start after "+ afterTimestamp); @@ -132,18 +137,41 @@ public static class Aggregator { switch (variableName) { - case "/Battery/Soc" or "/AvgSoc": - socAverage.Add(value); + case "/Battery/Soc" or "/MinSoc" or "/MaxSoc": + batterySoc.Add(value); break; - - case "/PvOnDc/Dc/Power" or "/AvgPvPower": + + case "/AvgSoc": + batteryAvgSoc.Add(value); + break; + + case "/PvOnDc/Dc/Power" or "/SumPvPower": pvPowerAverage.Add(value); break; - case "/Battery/Dc/Power" or "/BatteryPowerAverage": - batteryPowerAverage.Add(value); - break; + case "/Battery/Dc/Power" or "/SumDischargingBatteryPower" or "/SumChargingBatteryPower": + if (value < 0) + { + batteryDischargePower.Add(value); + } + else + { + batteryChargePower.Add(value); + } + break; + + case "/GridMeter/Ac/Power/Active" or "/SumGridExportPower" or "/SumGridImportPower": + if (value < 0) + { + gridPowerExport.Add(value); + } + else + { + gridPowerImport.Add(value); + + } + break; // Add more cases as needed default: // Code to execute when variableName doesn't match any condition @@ -169,15 +197,29 @@ public static class Aggregator AggregatedData aggregatedData = new AggregatedData { - AvgSoc = socAverage.Any() ? socAverage.Average() : 0.0, - AvgPvPower = pvPowerAverage.Any() ? pvPowerAverage.Average() : 0.0, - BatteryPowerAverage = batteryPowerAverage.Any() ? batteryPowerAverage.Average() : 0.0 + MaxSoc = batterySoc.Any() ? batterySoc.Max() : 0.0, + MinSoc = batterySoc.Any() ? batterySoc.Min() : 0.0, + AvgSoc = batteryAvgSoc.Any() ? batteryAvgSoc.Average() : 0.0, + SumDischargingBatteryPower = batteryDischargePower.Any() ? batteryDischargePower.Sum() : 0.0, + SumChargingBatteryPower = batteryChargePower.Any() ? batteryChargePower.Sum() : 0.0, + SumGridExportPower = gridPowerExport.Any() ? gridPowerExport.Sum() : 0.0, + SumGridImportPower = gridPowerImport.Any() ? gridPowerImport.Sum() : 0.0, + SumPvPower = pvPowerAverage.Any() ? pvPowerAverage.Sum() : 0.0, }; // Print the stored CSV data for verification - Console.WriteLine($"SOC: {aggregatedData.AvgSoc}"); - Console.WriteLine($"PvPower: {aggregatedData.AvgPvPower}"); - Console.WriteLine($"Battery: {aggregatedData.BatteryPowerAverage}"); + Console.WriteLine($"Max SOC: {aggregatedData.MaxSoc}"); + Console.WriteLine($"Min SOC: {aggregatedData.MinSoc}"); + + Console.WriteLine($"ChargingBatteryPower: {aggregatedData.SumDischargingBatteryPower}"); + Console.WriteLine($"DischargingBatteryBattery: {aggregatedData.SumChargingBatteryPower}"); + + Console.WriteLine($"SumGridExportPower: {aggregatedData.SumGridExportPower}"); + Console.WriteLine($"SumGridImportPower: {aggregatedData.SumGridImportPower}"); + + Console.WriteLine($"Min SOC: {aggregatedData.MinSoc}"); + + Console.WriteLine("CSV data reading and storage completed."); Console.WriteLine("-----------------------------------------------------------------------------------------------------------------");