Innovenergy_trunk/csharp/Lib/Devices/BatteryDeligreen/BatteryDeligreenRecords.cs

46 lines
2.3 KiB
C#

using InnovEnergy.Lib.Units;
using InnovEnergy.Lib.Units.Composite;
using InnovEnergy.Lib.Units.Power;
namespace InnovEnergy.Lib.Devices.BatteryDeligreen;
public class BatteryDeligreenRecords
{
//public required DcBus Dc { get; init; }
public required Current Current { get; init; }
public required Voltage Voltage { get; init; }
public required Percent Soc { get; init; }
public required Double Soh { get; init; }
public required Percent CurrentMinSoc { get; init; }
public required Temperature TemperatureCell1 { get; init; }
public required Double Power { get; init; }
// public required Temperature TemperatureCell2 { get; init; }
// public required Temperature TemperatureCell3 { get; init; }
// public required Temperature TemperatureCell4 { get; init; }
// to continue other temperature
public required IReadOnlyList<BatteryDeligreenRecord> Devices { get; init; }
public static BatteryDeligreenRecords? FromBatteries(IReadOnlyList<BatteryDeligreenRecord>? records)
{
if (records is null || records.Count == 0)
{
Console.WriteLine("FromBatteries: either record is null or empty");
return null;
}
return new BatteryDeligreenRecords
{
Devices = records,
Soc = records.Average(r => r.BatteryDeligreenDataRecord.Soc.Value),
Soh = records.Average(r => r.BatteryDeligreenDataRecord.Soh),
CurrentMinSoc = records.Min(r => r.BatteryDeligreenDataRecord.Soc.Value),
TemperatureCell1 = records.Average(b => b.BatteryDeligreenDataRecord.TemperaturesList.CellTemperature1),
Current = records.Sum(r =>r.BatteryDeligreenDataRecord.BusCurrent),
Voltage = records.Average(r =>r.BatteryDeligreenDataRecord.BusVoltage),
Power = records.Sum(r => r.BatteryDeligreenDataRecord.Power),
};
}
}