From b9091495fc32c460231e93efb57d9822a0ff5085 Mon Sep 17 00:00:00 2001 From: djnitehawk Date: Sun, 16 Mar 2025 10:47:52 +0530 Subject: [PATCH] charging stage --- src/Client/Pages/Index.razor | 2 +- src/Server/Endpoints/GetStatus/Endpoint.cs | 1 + src/Server/InverterService/FelicityInverter.cs | 3 +-- src/Shared/Models/InverterSetting.cs | 15 +++++++++++++-- src/Shared/Models/InverterStatus.cs | 5 +++++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Client/Pages/Index.razor b/src/Client/Pages/Index.razor index 274c5d2..9b65116 100644 --- a/src/Client/Pages/Index.razor +++ b/src/Client/Pages/Index.razor @@ -145,7 +145,7 @@
-
Voltage
+
@status?.ChargeMode
@status?.BatteryVoltage
V
@GetCRate() C
diff --git a/src/Server/Endpoints/GetStatus/Endpoint.cs b/src/Server/Endpoints/GetStatus/Endpoint.cs index 32f75e4..6081604 100644 --- a/src/Server/Endpoints/GetStatus/Endpoint.cs +++ b/src/Server/Endpoints/GetStatus/Endpoint.cs @@ -35,6 +35,7 @@ public class Endpoint : EndpointWithoutRequest { var status = new InverterStatus { + ChargeMode = ChargeMode.ABSORPTION, OutputVoltage = Random.Shared.Next(240), LoadWatts = Random.Shared.Next(3500), LoadPercentage = Random.Shared.Next(100), diff --git a/src/Server/InverterService/FelicityInverter.cs b/src/Server/InverterService/FelicityInverter.cs index 909824b..9096dc8 100644 --- a/src/Server/InverterService/FelicityInverter.cs +++ b/src/Server/InverterService/FelicityInverter.cs @@ -63,9 +63,8 @@ public sealed class FelicitySolarInverter return; } - // BatteryChargingStage = regs[1], // 0x1102: Battery charging stage (offset 1) - Status.WorkingMode = (WorkingMode)regs[0]; // 0x1101: Working mode (offset 0) + Status.ChargeMode = (ChargeMode)regs[1]; // 0x1102: Battery charging stage (offset 1) Status.BatteryVoltage = Math.Round(regs[7] / 100.0, 1); // 0x1108: Battery voltage (offset 0x1108 - 0x1101 = 7) var disCur = ChargeStatus(regs[8]); // 0x1109: Battery current (offset 8) -- signed value diff --git a/src/Shared/Models/InverterSetting.cs b/src/Shared/Models/InverterSetting.cs index 629369f..391debd 100644 --- a/src/Shared/Models/InverterSetting.cs +++ b/src/Shared/Models/InverterSetting.cs @@ -1,4 +1,6 @@ -namespace InverterMon.Shared.Models; +using System.Diagnostics.CodeAnalysis; + +namespace InverterMon.Shared.Models; public enum Setting : ushort { @@ -13,7 +15,8 @@ public enum Setting : ushort BackToBattery = 0x2159 } -public enum WorkingMode : short +[SuppressMessage("ReSharper", "InconsistentNaming")] +public enum WorkingMode : ushort { POWER = 0, STANDBY = 1, @@ -22,4 +25,12 @@ public enum WorkingMode : short FAULT = 4, LINE = 5, CHARGING = 6 +} + +[SuppressMessage("ReSharper", "InconsistentNaming")] +public enum ChargeMode : ushort +{ + BULK = 1, + ABSORPTION = 2, + FLOAT = 3 } \ No newline at end of file diff --git a/src/Shared/Models/InverterStatus.cs b/src/Shared/Models/InverterStatus.cs index 6e035f5..1e68db2 100644 --- a/src/Shared/Models/InverterStatus.cs +++ b/src/Shared/Models/InverterStatus.cs @@ -1,5 +1,7 @@ using System.Text.Json.Serialization; +// ReSharper disable InconsistentNaming + namespace InverterMon.Shared.Models; public class InverterStatus @@ -83,6 +85,9 @@ public class InverterStatus [JsonPropertyName("u")] public int PVPotential => PVInputWatt > 0 ? Convert.ToInt32(Convert.ToDouble(PVInputWatt) / PV_MaxCapacity * 100) : 0; + [JsonPropertyName("v")] + public ChargeMode ChargeMode { get; set; } + int pvInputWatt; DateTime pvInputWattHourLastComputed;