diff --git a/csharp/App/KacoCommunication/Topology.cs b/csharp/App/KacoCommunication/Topology.cs index 3f6dce2ad..d1a952e44 100644 --- a/csharp/App/KacoCommunication/Topology.cs +++ b/csharp/App/KacoCommunication/Topology.cs @@ -32,40 +32,6 @@ namespace InnovEnergy.App.KacoCommunication; // └──────┘ // -// New (simplified) topology: -// -// ┌────┐ -// │ PV │ -// └────┘ -// V -// V -// (i) 13.2 kW -// V -// V -// ┌─────────┐ ┌─────────┐ (h) ┌────────┐ (k) ┌───────┐ (l) ┌────────────┐ ┌────────────┐ ┌────────────┐ -// │ Grid │<<<│ AC/DC │<<<<<<<<<<<<<│ Dc Bus │>>>>>>>>│ DC/DC │>>>>>>>>│ Battery K1 │ │ Battery K2 │ │ Battery K3 │ -// ├─────────┤ ├─────────┤ ├────────┤ ├───────┤ ├────────────┤ ├────────────┤ ├────────────┤ -// │ -3205 W │ │ -6646 W │ │ 776 V │ │ 56 V │ │ 52.3 V ... │ │ 52.3 V ... │ │ 52.3 V ... │ -// │ -3507 W │ │ -5071 W │ └────────┘ └───────┘ └────────────┘ └────────────┘ └────────────┘ -// │ -3605 W │ -// └─────────┘ -// -// V -// V -// (j) 0 W -// V -// V -// ┌──────┐ -// │ Load │ -// └──────┘ -// -// Notes: -// - (a) is grid power (to/from grid) -// - (h) is AC/DC -> DC link power (or your chosen link variable) -// - (i) PV -> DC bus -// - (j) DC load -// - (k) DC bus -> DC/DC link -// - (l) DC/DC -> battery power (or total battery power) public static class SimpleTopology { @@ -74,17 +40,17 @@ public static class SimpleTopology // Keep the same variable letters as your diagrams (where possible) var a = status.GridMeterRecord?.ActivePowerTotal; - // In your existing code, "AC/DC column" shows per-device AC power; // and "h" is a separate link (AcDcToDcLink?.Power.Value). - var h = 0; + var h = status.InverterRecord?.ActivePowerW; var i = 0; var j = 0; - var k = 0; + var k = status.DcDc?.Dc.Battery.Power.Value; // You mentioned this changed: l is now equal total battery power - var l = status.BatteryKabinet1.Power; + + var l = status.ListOfBatteriesRecord?.Sum(r => r.Power); var grid = status.CreateGridColumn(a); var acdc = status.CreateAcDcColumn(h); @@ -138,7 +104,7 @@ public static class SimpleTopology // └─────────┘ (h) flow to DC Bus var acdcBox = TextBlock - .AlignLeft(status.InverterRecord?.ActivePowerSetPercent.ToString() ?? "???") + .AlignLeft(status.InverterRecord?.ActivePowerW.ToString() ?? "???") .TitleBox("AC/DC"); var flowToDcBus = Flow.Horizontal(h); @@ -175,7 +141,7 @@ public static class SimpleTopology var pvToBus = Flow.Vertical(i); // DC bus box (voltage from your DcDc record matches your existing code) - var dcBusVoltage = 0.0; + var dcBusVoltage = status.DcDc.Dc.Link.Voltage.Value; var dcBusBox = dcBusVoltage .ToString(CultureInfo.InvariantCulture) .Apply(TextBlock.FromString) @@ -203,7 +169,7 @@ public static class SimpleTopology // │ 56 V │ // └───────┘ (l) flow to batteries - var dc48Voltage =0.0; + var dc48Voltage = status.DcDc?.Dc.Battery.Voltage; var dcdcBox = TextBlock .AlignLeft(dc48Voltage) @@ -219,13 +185,13 @@ public static class SimpleTopology // Battery K1 | Battery K2 | Battery K3 (side-by-side) // Each box: voltage, soc, current, temp, etc. (you can tailor) - var bat = status.BatteryKabinet1; + var bat = status.ListOfBatteriesRecord; if (bat is null) return TextBlock.AlignLeft("no battery").Box(); // If you actually have relay names K1/K2/K3 per battery, wire them here. // For now we label by index as "Battery K{n}" to match your picture. - var boxes = bat.Devices + var boxes = bat .Select((b, idx) => CreateBatteryKBox(b, idx)) .ToReadOnlyList(); @@ -235,30 +201,24 @@ public static class SimpleTopology : TextBlock.AlignLeft("no battery devices").Box(); } - private static TextBlock CreateBatteryKBox(BatteryDeligreenRecord battery, int idx) + private static TextBlock CreateBatteryKBox(BatteryDeligreenRecords battery, int idx) { - // Minimal “K-style” battery box matching your diagram fields - var data = battery.BatteryDeligreenDataRecord; // Some of your sample screen values look like: // 52.3 V, 99.1 %, 490 mA, 250 °C, 445 A // Map these to whatever fields you trust in your record. - var voltage = data.BusVoltage.ToDisplayString(); - var soc = data.Soc.ToDisplayString(); - var current = data.BusCurrent.ToDisplayString(); - var temp = data.TemperaturesList.PowerTemperature.ToDisplayString(); + var voltage = battery.Voltage.ToDisplayString(); + var soc = battery.Soc.ToDisplayString(); + var current = battery.Current.ToDisplayString(); + var count = battery.Devices.Count; - // If you have a better “pack current” field, replace this line. - // Keeping it as a separate line to mimic the picture’s extra current-like line. - var extraCurrent = data.BusCurrent.ToDisplayString(); return TextBlock .AlignLeft( voltage, soc, current, - temp, - extraCurrent + count ) .TitleBox($"Battery K{idx + 1}"); }